单片机控制的可调LCD时钟
2011-12-20范礼平
范礼平
摘要:单片机到底是什么呢?就是一个电脑,只不过是微型的,麻雀虽小,五脏俱全:它内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机,排烟罩、VCD等等的家电里面都可以看到它的身影!它主要是作为控制部分的核心部件。
关键词单片机、字符型LCD显示器、可调时钟
利用单片机的控制程序结合LCD设计一个简易的微电脑时钟,可以告知现在的时间或记录完成一件工作花费的时间(通过重置计时),设计过程中可以学习利用单片机定时器设计时间计时处理,这是许多电子装置最基本的功能。LCD在电子产品设计中使用率相当的高,普通的七段显示器只能用来显示数字若遇到要显示英文文字时,则一定会选用LCD。通常我们在电子商城买到的LCD,其背面都含有控制电路,其上面有专门的IC来完成LCD的动作控制,在自行设计的接口中,只要送入适当的命令码和欲显示的数据,LCD便会将其字符显示出来,在控制上非常方便。本次设计是利用单片机8051的控制程序结合LCD设计一个简易的可调微电脑时钟。
一、设计思路
定时器0计时中断程序每隔5ms中断一次当作一次中断完成,每中断一次计数器加1,计数200次,表示1秒依次判断1min、1h,计数到了相关变量清零;用K1、K2、K3、K4进行时间调节:K1(P2.4)---进入时间调节;K2(P2.5)---调节小时;K3(P2.6)---调节分钟;K4(P2.7)---调节完成。
工作流程图:
1、主程序控制流程图2、计时中断程序流程图
二、硬件电路
1、原理图
其中LCD引脚说明如下:
D0----D7:双向数据总线
RS:寄存器选择控制线
R/W:读写控制线
EN:启用控制线
VCC:电源正端
VO:字符显示亮度控制引脚
GND:电源地端
值得注意的是:有的第1脚是接+5V,第2脚接地;有的第1脚是接地的,第2脚接+5V(最好能拿到原厂的引脚图)。
2、实物电路
三、开发环境
开发环境选择Keil C51 Vision2,Keil C51软件是德国Keil Software/Keil Elektronik 公司开发的功能完善的C51开发软件,近年来在国内得到了迅速普及。
在keil的uV2集成环境下使用伟福仿真器需要在keil环境中做如下设定:1、设置“编译后运行程序”,以便初始化伟福仿真器;2、设置硬件调试方式,并设置串口参数。
四、软件原理
1、使用定时器0模式0
INIT_TIMER:
MOV TMOD,#00000000B
MOV IE,#10000010B
MOV TL0,#LO
MOV TH0,#HI
SETB TR0
RET
2、设置目前的时间
SZSJ:
CLR TR0
MOV SEC,#0
L0:
JB K2,L1
INC HOUR
MOV A,HOUR
CJNE A,#24,L2
MOV HOUR,#0
L2:
CALL CONV
MOV R5,#20
CALL DELAY
JMP L0
L1:
JB K3,L3
INC MIN
MOV A,MIN
CJNE A,#60,L4
MOV MIN,#0
L4:
CALL LCDZB
MOV R5,#20
CALL DELAY
JMP L0
L3:
JB K4,L0
JNB K4,$
SETB TR0
RET
3、一秒中断子程序
INT:
PUSH ACC
MOV TL0,#24
MOV TH0,#99
INC DEDA
MOV A,DEDA
CJNE A,#200,K
K:
POP ACC
RETI
4、将时分秒的数据转换成数字数据显示在LCD上
LCDZB:
MOV A,HOUR
MOV X,#5
CALL SZZA
INC X
MOV A,#':'
MOV B,X
CALL LCDXS
MOV A,MIN
INC X
CALL SZZA
INC X
MOV A,#':'
MOV B,X
CALL LCDXS
MOV A,SEC
INC X
CALL SZZA
RET
5、在LCD上显示数字
SZZA:
MOV B,#10
DIV AB
ADD A,#30H
PUSH B
MOV B,X
CALL LCDXS
POP B
MOV A,B
ADD A,#30H
INC X
MOV B,X
CALL LCDXS
RET
6、以4位控制方式将命令写至LCD
MDL:
MOV P0,A
CLR RS
CALL DMC
RLC A
RLC A
RLC A
RLC A
MOV P0,A
CLR RS
CALL DMC
RET
7、以4位控制方式將数据写入LCD
SDL:
MOV P0,A
SETB RS
CALL DMC
RLC A
RLC A
RLC A
RLC A
MOV P0,A
SETB RS
CALL DMC
RET
8、更新时分秒数据
TIMERGX:
MOV A,SEC
MOV B,SEC0
CJNE A,B,W1
JMP W2
W1:
CALL LCDZB
MOV SEC0,SEC
W2:RET
9、在LCD上显示字符
LCDXS:
PUSH ACC
MOV A,B
ADD A,#0C0H
CALL MDL
POP ACC
CALL SDL
RET
10、总延迟时间(R5*10ms)
DELAY:
MOV R6,#50
LOOP:
MOV R7,#100
DJNZ R7,$
DJNZ R6,LOOP
DJNZ R5,DELAY
RET
其中:DMC-----短脉冲信
结语:本次设计使用了一般的LCD显示器来显示字符数据,尤其是在教学中不仅能使学生L灵活掌握定时器的应用,而且能掌握模块化的设计思路。另外根据本设计可以自行扩充其他的功能,如:增加闹铃、产生音乐声、启动继电器控制家电等。
参考文献
[1] 单片机实践与应用.吴金成.清华大学出版社
[2] 单片机实用技术.陶春鸣.人民邮电出版社
[3] 单片机原理与应用.李群芳.武汉大学出版社
注:文章内所有公式及图表请以PDF形式查看。