马培:单片机照明灯智能控制器
用,通常有12864和19264两种规格。 硬件电路部分:
图9 标准时钟显示电路
本液晶显示模块(LCD1602)采用模拟口线方式,该连接方式简单。微处理器AT89C/S52的P0口通过数据锁存器(74HC573)分别与液晶显示模块(LCD1602)的数据端(DB)相连接,数据命令选择端(RS)、读写选择端(R/W)、使能信号端(E)分别与微处理器AT89C/S52的P2.3口、P2.4口、P2.5口相连接。
3.3 光敏接收电路
该部分电路是通过AT89C2051里面的模拟信号比较器,R7为光敏电阻,其电阻值随着光线的增强而减少,当照度较小时P1.0口的电位,P3.6口输出高电平。变可变电阻RP1的1.1口的电位小于P阻值可调整照度的控制阈值,如图7所示。由于微处理器AT89C2051的P3.7口与AT89C/S52的P3.7口相连接,所以只要在AT89C2051的ROM中写入相就的程序,就可以控制到AT89C/S52,从而可以采取一系统的动作(照明和电铃电路)。
图10 光敏接收电路
3.4 接键可调部分
由于本系统设置功能部分要求比较简单(标准系统调时和),所以采用独立式按钮调节,端口用
第 12 页 共 27 页
P1.0、P1.2、P1.1、P1.3,如图11所示:
图11 独立式接键可调电路
3.5 系统照明和报警部分
照明部分由Q1、R11、R10、R12、K、DS组成,当口输出高电平时,三极管Q1截止,双向可控硅DS因没有触发电流处于阻断状态,电灯LAMP关闭;当P1.7口输出低电平时,三极管Q1导通饱和,向双向可控硅DS提供触发电流使其进入导通状态,电灯LAMP点亮。P3.6口的输出状态由程序控制。
报警部分由Q2、U9、R20组成,当P3.5口输出高电平时Q2截止,U9有微电流或者无电流通过,BELL不工作。P3.5口的输出状态由程序控制。
图12 照明和报警电路
3.6 系统复位与晶振电路
该电路为AT89C2051和AT89C/S52提供时钟基准与复位,如图13所示:
3.7 软件设计部分
第 13 页 共 27 页
马培:单片机照明灯智能控制器
图13 系统复位与晶振电路
3.8 程序源程序:见附页1
4 调 试
4.1 硬件调试
1. 首先是焊接的顺序问题。当初板子做好以后,焊接的顺序很重要,应该是应该按功能划分的 器件进行焊接,顺序是功能部件的焊接--调试--另一功能部件的焊接,这样容易找到问题的所在。
2. 如果在调试按功能划分的器件上出现问题,可以按以下步骤进行: 1)检查原理图连接是否正确 2)检查原理图与PCB图是否一致
3)检查PCB板上的封装引脚是否与实际采购的器件引脚一致 4)用万用表检查是否有虚焊,引脚短路现象
5)检测各器件的电路输出端口的输出是否与理论值相等或者接近。(在测光敏电阻电压的时候,其引脚1,7的输出很小,原来是电位器的调节引起的)。
3. 多观察,多思考。在调试过程中,对于出现的任何现象都不要放过,问题的解决就是从一些小的 现象入手的。
4. 有可能的情况下,最好做两块板子以上,因为焊好的板子不便于查看其导线的走向,这样才好有个比较,硬件上很小的问题有很多时候是很难发现的。
4.2 软件的调试
[11]
源程序编好以后,验证其正确性,MCS-51单片机可以通过常用的仿真软件Keil C51来调试,它可以对汇编或者C语言编的程序进行调试。
1建立工程文件
1)点击菜单project,选择new project:
2)然后选择要保存的路径,输入工程文件的名字,比如保存到论文目录里,工程文件的名字为hjycar.uv2.
3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keil
第 14 页 共 27 页
c51几乎支持所有的51核的单片机,这里选AT89S52。
开 始P3_7=0 (At89s52) P3.6=0灯亮 T1开始计时 P3_6=0 ? P3_7=0 (At89c2051) First? Hour=4? 存取时间(天黑) BELL打铃 P3.6=1灯灭 天亮? 12V 5V BELL打铃 存取时间(天亮) BELL打铃 亮-1? P3.6=0灯亮 天亮? P3.6=1灯灭 图14 单片机照明灯智能控制器流程图
4)这时要新建一个源程序文件,建立一个汇编或c文件,输入编写好的程序。
5)保存。选择要保存的路径,在文件名里输入文件名,注意一定要输入扩展名,如果是c程序文件,扩展名为.c,如果是汇编文件,扩展名为.a51,这里有汇编语言,文件名为:hjycar.asm。
2 调试程序
1)点击Target 1前面的+号,展开里面的内容source Group1:
2)用右键点击Sourece Group 1(注意用鼠标的右键,而不是左键),将弹出一个菜单,选择Add Files to Guoup'Source Group 1'.
3)选择刚才的文件hjycar.asm.这时在source group 1 里就有hjycar.asm文件
第 15 页 共 27 页
马培:单片机照明灯智能控制器
4)单击“Project”菜单,再在下拉菜单中单击“Built Target”选项(或者使用快捷键F7),
编译成功后,再单击“Project”菜单,在下拉菜单中单击“Start/Stop Debug Session”(或者使用快
捷键Ctrl+F5),
5)单击“Debug”菜单,在下拉菜单中单击“Go”选项,(或者使用快捷键F5),然后再单击“Debug”菜单,在下拉菜单中单击“Stop Running”选项(或者使用快捷键Esc);再单击“View”菜单,再在下拉菜单中单击“Serial Windows #1”选项,就可以看到程序运行后的结果.
3 程序的加载
单击“Project”菜单,再在下拉菜单中单击“ ” 在下图中,单击“Output”中单击“Create HEX File” 选项,使程序编译后产生HEX代码,供下载器软件使用。把程序下载到AT89C52单片机中。
5.总结与展望
5. 1工作总结
经过三个多月的努力,我基本上完成了基于AT89C2051和AT89C/S52微处理器控制的单片机夜用照明显示系统。所完成的工作主要包括以下几个方面:
1 准备阶段的工作
准备阶段的工作主要包括:查阅国内外相关文献,了解微控制器的发展过程及发展趋势,了解LCD显示屏的工作原理、主要作用。
2 对显示系统的硬件设计
本文采用单片机与液晶显示模块(LCD1602)模拟口线方式。该模拟口线方式简单,比较容易控制液晶显示模块(LCD1602)。
3 系统软件设计
软件主要包含时钟判断和显示程序,调用不同指令来完成相应的功能。本单片机夜用照明系统 采用单片机C语言来编写,在其编写过程当中比较方便的调用单片机内部的资源,从而比较容易控制与单片机相联系的外围电路。
5. 2展望
尽管本系统能够完成我们所要求的任务来控制照明系统,并且体现出了物优价廉的优越性,但由于本人水平和开发时间有限,离一个完全实用的,能够完全符合市场需求的单片机夜用照明显示系统还有一定的差距。因此,在以后的研制过程中,还需要在系统抗干扰方面、增强显示效果、提高其灵敏度及功能上做大量工作,以满足更高使用要求。
第 16 页 共 27 页