}
//**************************************************** //1602初始化
void LCD_Initial() {
write_com(0x38); //设置16*2显示,5*7点阵,8位数据接口 delay_nms(1);
write_com(0x0c); //设置开显示,不显
示光标 delay_nms(1); write_com(0x06); //写一个字符地址指针自动加1 delay_nms(1); write_com(0x01); //显示清0,数据指针清0 delay_nms(1); }
五、键盘电路
键盘扫描概述:首先,确定键盘编码方案:采用编码键盘或非编码键盘。随后,确定键盘工作方式:采用中断或查询方式输入键操作信息。然后,设计硬件电路。非编码键盘系统中,键闭合和键释放的信息的获取,键抖动的消除,键值查找及一些保护措施的实施等任务,均由软件来完成。
1.监测有无键按下;键的闭合与否,反映在电压上就是呈现出高电平或低电平,所以通过电平的高低状态的检测,便可确认按键按下与否。
2.判断是哪个键按下。一.编程扫描方式:当单片机空闲时,才调用键盘扫描子程序,反复的扫描键盘,等待用户从键盘上输入命令或数据,来响应键盘的输入请求。二.定时扫描工作方式:单片机对键盘的扫描也可用定时扫描方式,即每隔一定的时间对键盘扫描一次。三.中断工作方式:只有在键盘有键按下时,才执行键盘扫描程序并执行该按键功能程序,如果无键按下,单片机将不理睬键盘 3.完成键处理任务。
(二)从电路或软件的角度应解决的问题
1.消除抖动影响。键盘按键所用开关为机械弹性开关,利用了机械触点的合、断作用。由于机械触点的的弹性作用,一个按键开关在闭合和断开的瞬间均有一连串的抖动、
抖动时间的长短由按键的机械特性决定,一般为5~10ms,这是一个很重要的参数。抖动过程引起电平信号的波动,有可能令CPU误解为多次按键操作,从而引起误处理。 为了确保CPU对一次按键动作只确认一次按键,必须消除抖动的影响。按键的消抖,通常有软件,硬件两种消除方法。 这种方法只适用于键的数目较少的情况。
软件消抖:如果按键较多,硬件消抖将无法胜任,常采用软件消抖。通常采用软件延时的方法:在第一次检测到有键按下时,执行一段延时10ms的子程序后,再确认
3
电平是否仍保持闭合状态电平,如果保持闭合状态电平,则确认真正有键按下,进行相应处理工作,消除了抖动的影响。(这种消除抖动影响的软件措施是切实可行的。) 2.采取串键保护措施。串键:是指同时有一个以上的键按下,串键会引起CPU错误响应。
通常采取的策略:单键按下有效,多键同时按下无效。
3.处理连击。连击:是一次按键产生多次击键的效果。要有对按键释放的处理,为了消除连击,使得一次按键只产生一次键功能的执行(不管一次按键持续的时间多长,仅采样一个数据)。否则的话,键功能程序的执行次数将是不可预知,由按键时间决定。连击是可以利用的。连击对于用计数法设计的多功能键特别有效。 按键电路图: 程序流程图:
六、串口电路
MAX232电平转换、串口的硬件电路图和串口的程序下载功能
2
MAX232电平转换:
MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的接口电路,使用+5v单电源供电。
内部结构基本可分三个部分:
第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DP9插头;DP9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。
第三部分是供电。15脚DNG、16脚VCC(+5v)。
STC89C52RC是宏晶公司的产品 一个8位单片机,232在单片机上用作下载程序和电平转换,STC89C52RC就是控制器相当于人的大脑。 串口硬件电路图:
串口的程序下载功能:
先等待ISP提示MCU上电,然后再开启单片机电源,这时可能也不能连上,然后再关闭开启一次电源,这时就可以读出晶振频率,如果还是不能连上,再重复以上步骤,亦或是改变波特率(11.0592用19200成功率较大)。
七、系统调试
硬件调试比较简单,首先采用PROTELSE99软件绘制原理图,并进行了仿真,确认无误的情况下将图纸打印出来,以便电路的排布。由于前期对电路的分析不够彻底,导致电路图排版存在缺陷,最后导致焊接过程中出现很多差错,也贻误了许多的时间。
3
焊接完毕,开始调试硬件,先按要求接入正5伏的电压,发现蜂鸣器会响,但是灯没有亮,先检查了下线路,发现无误,后检查了三极管,也没有发现烧坏,最后通过理论的计算,发现是与灯串联的电阻阻值不够,换了一个较大的电阻之后,灯泡亮了。然后是对串口电路进行检查,第一次发现程序始终无法写入单片机,经过仔细检查,发现是串口线路接错,重新修改之后,程序顺利写入。
软件调试在编写显示程序并进行硬件的正确性检验之后进行,分别进行主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和显示子程序等的编程及调试。由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读/写编程时必须严格地保证读/写时序;否则将无法读取测量结果。本程序采用单片机c语言编写用Keil编译器编程调试。软件调试到能显示温度值,并且在有温度变化时显示温度能改变,温度的上下限可以设置,同时添加了附加功能,手动调整时间值,就基本完成。
八、总结
本次的设计使我们进一步巩固了书本上的知识,做到了学以致用。这是我们第二次自己动手设计的电路,通过电路图绘制软件protel,系统仿真软件protues和编译软件keil,使我们进一步了解了单片机的设计制作过程,其中最为困难的是软件部分,即编程部分,我们上网找了好多资料,最终借助同学的帮助,经过自己的修改,基本上完成了功能,但还是有部分功能不能实现,最主要的温度显示始终存在问题。另外,对于程序中关于温度转换部分不清楚,在老师提问时没有办法进行回答解释。而在焊接硬件时也遇到了不少麻烦,如液晶显示引脚的对应焊接,max232的焊接,三极管的的极性识读等。总结经验的时候我们得出这样的结论,学习应该学以致用,有目的的去学习,如果学了不用等于没学。其次,要学以致用,理论联系实际,这样才会取得事半功倍的效果。 主要参考文献:
[1] 周立功.ARM&WinCE实践与实验:基于S3C2410[M]北京:北京航空航天大学出版社,
2007.
[2] 李朝青.PC机及单片机数据通信技术[M].北京:北京航空航天大学出版社,2000 [3] 马春华,于莉莉.SMS方式远程监控软件的设计与实现[J].广东通信技术,2003,23 .
4