金属探测器论文设计 联系客服

发布时间 : 星期日 文章金属探测器论文设计更新完毕开始阅读b65f61ce370cba1aa8114431b90d6c85ec3a8818

5.1.3 单片机系统的焊接与调试

单片机系统的焊接与调试往往是放在最后一个环节,这是由于单片机系统的作用是进行控制和数据的处理,因此在对它进行调试之前,被控制的功能电路必须已经调试完毕,并能将信号发送给单片机供单片机进行分析判断,最后将控制信号从I/O口输出。

1)所需器件

AT89C20511个、30pf陶瓷电容两个、12MHz石英晶体振荡器1个用于振荡电路,按钮1个、10μf铝电解1个、10K电阻1个用于复位电路,1个蜂鸣器用于声音报警、2个发光二极管用于发光报警。

2)调试

要使单片机系统进行工作,必须要有振荡电路,以提供时钟信号给单片机。这里采用石英晶振,它有6MHz、12MHz、11.059MHz的不同类型,用户可以根据需要进行选择,一旦确定,单片机的主频就确定,机器周期为主频的1/12。这里用到的无论是前端探测的单片机系统还是外围数据处理与显示的单片机系统都选用12MHz的石英晶振。单片机系统的测试与其它电路的测试不同,需写一段小的测试程序,编译后烧写到单片机的程序存储器中,看其运行情况,这里做了一个小小的灯光闪烁程序。

3)AT89C2051介绍

AT89C2051是ATMEL公司生产的低电压,高CMOS8位单片机,片内含有2KB的可反复察写的只读程序存储器和128BYTES的随机存取数据存储器(RAM),15个I/O口线,两个16位定时计数器,一个5向量两级中断结构,一个全双工串行通信口,内置一个精密比较器,片内振荡器及时钟电路。同时,AT89C2051可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容MCS-51指令系统,片内置通用8位中央处理器和flash存储单元。(AT89C2051的其他参数和指标限于篇幅,不赘述)

4)出现的问题与解决方法

要让单片机执行程序存储器内的指令,必须使单片机的EA/Vpp管脚置为高电平。开始没有注意这一点,直接将闪烁程序烧入单片机,发现灯一直亮但不闪烁(复位后个管脚将置4为高电平),开始还以为是延时的问题,但到后来延时已设的很长还是没有闪烁。最终才发现上由于该管脚没有接高电平。该管脚要是接地的话执行的是片外的程序。

-37-

5.1.4 外围数据处理与显示模块的焊接与调试

1)所需器件

单片机系统与前面焊接的单片机系统一样,只不过这里的CPU用的是AT89S52,另外还需要型号为SMC1602A,容量为16×2个字符的液晶显示器,和用于输入用户需求的2×3按键阵列。

2)AT89S52介绍

AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8K字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。(AT89S52的其他参数和指标限于篇幅,不赘述)

3)调试

液晶和键盘的调试都是建立在单片机系统的基础之上的,也就是说它们需要单片机执行程序来进行控制。在保证单片机系统正常运行后首先调试的是液晶,这样是为了调试键盘做准备。液晶显示器的调试主要在于编写的液晶驱动程序,因为不同的液晶显示器它的控制时序和控制字是不同的,因此必须针对不同型号的液晶显示器采用与之匹配的驱动程序。

1602A液晶显示器的操作时序为: 读状态:输入:RS=L,RW=H,E=H, 读数据:输入:RS=H,RW=H,E=H, 1602A的初始化过程为: (1)延时15ms;

(2)写指令38H(不检测忙信号); (3)延时5ms;

-38-

输出:D0~D7=状态字 输出:无

输出:D0~D7=数据 输出:无

写指令:输入:RS=L,RW=L,E=高脉冲H, 写数据:输入:RS=H,RW=L,E=高脉冲,

(4)写指令38H(不检测忙信号); (5)延时5ms;

(6)写指令38H(不检测忙信号以后每次读/写操作之前均要检测忙信号); (7)写指令38H显示模式设置; (8)写指令08H显示关闭; (9)写指令01H显示清屏; (10)写指令6H显示光标移动设置; (11)写指令0CH显示开及光标设置[11]

液晶显示器的VDD和VO之间接了一个10K的电位器是用来调节对比度用的,在对液晶调试的过程中应尽量使对比度大,也就是使VO端的输出端电压低。其次,液晶显示器在没有给它输入正确的数据的时候,屏幕的一半是黑屏,这不能说液晶显示器坏了,恰恰相反,它说明了液晶显示器是好的你需要检查你的程序。最后液晶显示器的初试化也很重要,应按照datasheet上面所给的初始化顺序和延时时间来严格进行,如有不慎,也会出现半边黑屏的情况。

键盘采用的是2×3的按键阵列,键盘的调试,是在液晶调试完毕后,这样可以借助于液晶来判断键盘按下是否会有响应。一遇到键盘都会涉及到键盘的防抖动问题,键盘的防抖动有两种方法:一种是硬件方法,那就是在硬件电路里加延时来去掉抖动。另一种方法是软件方法,就是在对键盘扫描采用一定的方法和延时来防止抖动。本次设计采用的是软件的方法,将在软件调试中进行详细的论述。

4)出现的问题和解决方法

①在一开始调试液晶时发现液晶屏幕上即没有显示的字符,也没有出现半边黑屏的现象,以为是接法不当将液晶显示器给烧了,其实事实不是这样,每个1602的使用电路中都会要求配一个电位器,它是用来调整液晶的偏压的,最后的结果是可以提高或降低液晶的对比度,必须选择适当的偏压,因为偏压过大就会出现刚才所说的现象,偏压过小就会出现“鬼影现象”[31],两个都不是我们所期望的。但是在一开始调试液晶的时候,建议将偏压调制最小,这样无论如何它会有所显示,当你将液晶全都验证好时再将偏压调制适中。

②也是液晶问题,出现黑屏[32]以后,发现无论送给液晶什么数据它都是黑屏,没显示任何字符串,最终决定让它只显示一个字符,但是还是黑屏。检查电路后发现,原来是将P0_9接为P0_10,由于P0_10是管脚EA/VPP它是接电源的,也就是说给液晶显示器第8位数据管脚的电平时刻为高,这样在你将要显示的字符送给液晶显示器时,这个字符很可能就不是ASCII字符,所以无法显示出现黑屏。因此总结出调试液晶时应该注意的问

-39-

题,首先,若在在调试时液晶出现黑屏,那说明液晶显示器是好的,你应检查你的程序和电路,如果没有出现黑屏,你应该调节电位器使偏压减小以至有所显示。其次,如果出现黑屏你应该检查三点两点,一个是液晶显示器的初始化,看初始化指令字调用的顺序对不对,中间必要的延时加没加。另一个是保证向液晶传入数据的数据端口无误。最后一个是,看你读写的时序和控制字的电平是否严格按照产品说明书上的要求。

5.2 软件模块的调试与集成

程序部分的调试采用的是从下到上逐步集成的思想,先将各个小的模块验证成功,在将它们集成为一个大的模块进行验证,最后到整个系统的集成调试。这里进行程序开发所使用的工具是keil第二版。在进行调试时程序要不停的写入单片机进行即时的验证,所以必备烧写程序的工具,这里使用的是TOP2000烧写器和它的配套烧写软件。 5.2.1 前端金属探测模块的调试与集成

程序的作用是对硬件电路传过来的电信号进行分析、处理、判断最后发出控制信号。这一部分软件的主要功能是频率的检测与报警。由于这一部分所用的单片机编程存储空间比较小,且程序的数据来自于底层的电路信号所以选用MCS—51汇编指令来进行编程。

1)频率检测

从示波器上可以看到振荡的频率大约为33KHz,这里的频率探测是以50ms为一个单位,也就是50ms内计数器1所记录的脉冲数。并以此值作为判断有无金属的依据。在程序中将每次获得的频率值存到两个内存单元中,一个存高8位,一个存低8位,使用的时候只需到固定的内存单元中进行读取。

2)频率的分析计算

由于频率值分存在两个内存单元,为16位,因此对它的处理都是另外编写的16位运算,其中包括加法、比较。比较程序的程序流程图详见第二章,比较程序的结果保存在自定义的标记中,主程序中就是根据比较子程序的结果来判断是否有金属。

3)数据通信

外围与前端单片机之间通信的信息多为16位的频率值,在进行数据接受时,使用一标志,用来完整的接受16为数据。串口通讯的方式选择方式2(异步通讯),无奇偶校验。

4)出现的问题与解决方法

(1)在用MCS—51编写程序时,立即寻址时,一定要在立即数前加“#”否则的程序将以直接寻址的方式对待,造成不可预料的错误。

-40-