电子时钟LCD显示
- 格式:docx
- 大小:197.50 KB
- 文档页数:19
电子时钟(LCD显示)
作者:日期:
电气工程及自动化专业
单片机原理及应用课程设计报告
姓名:XXXXXX
学号:XXXXXXX
专业班级:XXXXXX
题目:电子时钟(LCD显示)
电气与电子工程学院
二◦一四年十二月三十日
目录
一、设计目的 (2)
二、设计任务和要求 (2)
三、设计原理分析 (2)
四、硬件资源及其分配 (3)
五、硬件图 (4)
六、程序框图 (5)
七、程序 (7)
八、调试运行13
九、仿真截图13
十、设计心得体会14
一、 设计目的
1、设计要求以AT89C51单片机为核心的时钟,在 LCD 显示器上显 示当
前的时间。
2、 使用字符型LCD 显示器显示当前时间。显示格式为“时时:分 分:
秒秒”。
3、 用4个功能键操作来设置当前时间。
4、 熟悉掌握proteus 编成软件以及keil 软件的使用
二、 设计任务与要求
本设计以AT89C51单片机为核心,通过时钟程序的编写,并在LCD 显示器上显示出来。该编程的核心在于定时器中断及循环往复判断是 否有按键操作,并对每个按键的操作在
LCD 显示器上作出相应的反
应。由于LCD 显示器每八位对应一个字符,故把秒、分、时的个位和 十位分开表示。
该课题中有四个控制开关 KM1 KM2 KM3 KM4分别控制时、分、 秒、确定的调整,时间按递增的方式调整,每点一次按钮则相应的时 间个位加以,且时间调整不干扰其他为调整时间的显示。 三、 设计原理分析
1、按照系统的设计功能要求,本时钟系统的设计必须采用单片 机软件
系统实现,用单片机的自动控制能力配合按键控制, 来控制时
钟的调整及显示。
图一系统总原理图
微
型控制器
时钟电路
按键调时
2、软件主要完成功能
(1)显示时间程序
用软件调节时间,通过程序的调节,最后用LED现实时钟
(2)调节时间程序
按键调节时间,能实现时、分的调节
3、软件设计主要流程
时间控制程序
时间控制程序,用中断准确的控制时间,采用60进制,60秒为一分钟,60分钟为一个小时,全天设置为24小时。
四、硬件资源及原理图
AT89C51 芯片
AT89C51是美国ATMEL公司生产的8位Flash ROM单片机。其最突出的优点是片内ROM为Flash ROM可擦写1000次以上,应用并不复杂的通用ROM写入器就能方便的擦写,读取也很方便,价格低廉,具有片程序ROM二级保密系统。因此可灵活应用于各种控制领域。
AT89C51包含以下一些功能部件:
1. 一个8 位CPU;
2. 一个片内振荡器和时钟电路;
3. 4KB Flash ROM ;
4. 128B 内RAM
5. 可寻址64KB的外ROM和外RAM控制电路;
6. 两个16位定时/计数器;
7. 21个特殊功能寄存器;
8. 4个8位并行I/O 口;
9. 一个可编程全双工串行口;
10. 5个中断源,可设置成2个优先级。
AT89C51单片机一般采用双列直插DIP封装,共40个引脚,图2-1为其引脚排列图。40个引脚大致可分为4类:电源、时钟、控制各I/O引脚
五、硬件图
题目2时钟电路(LCD 显
示)
— 11 -------- 1
o
F
KEY
vcc
7
P.S1 C
亘
7
F
三
r 7
口]
HAL
PIY
财
Pl.l K.0 P]2
6
K.1 J]J
PU M.3 P]J PU ?]J 6 K.= Pl' Kd m K PjjOW EA
Pj.lT^_ AI£PF J Q& P 口 20 P£E1;
P J 3>11
F *.7
PL47ft
P :.
K.i
P JJ S^ P2.4
MF K.l
:江心 HZ
XTAL1 抵L 辄
K.P
兰 S4
VC C VO RS
M2 二 BB : K
期
DBS
DB5
2? _
六、程序框图
时钟主程序流程
+
1
N N
___ 保 呆护
保
置^
(4叩)+1 (46H )
Io
(40H )
(4JH ) 0 (43^) +1 (43H )
o :
(44H )+1
(4^H )
中断服务
(46
盯 +1
----- ►
(46H)
o ;
(47) +1
七、程序
#in elude
#i nclude vintrin s.h>
#defi ne uchar un sig ned char
#defi ne uint un sig ned int
#define DelayNOP()匕nop_();_nop_();_nop_();_nop_();}
sbit K1 二POP;
sbit K2 二POX;
sbit K3 =P0A2;
sbit K4 =P0A3;
sbit SPK=P3A0;
sbit RS =P2A0;
sbit RW =P2A1;
sbit E =P2A2;
uchar code Str1[] = " Curre nt Time "; // 一下两个字符串的串长均为16
uchar code Str2[] = "Set New Time...";
uchar HMS_Stri ng[]=" 00:00:00 ";// 带显示的时间串
bit Settime=0; // 是否修改时间
bit Change_H_or_M =1;//1 表示修改时.0表示修改分
uchar MilliSec on d,Hour =0,Mi nute=0, Seco nd =0;
//延时函数
void DelayMS(ui nt x)
{
uchar i;
while(x--) for(i=0;i<120;i++);
}
//LCD忙状态检测
bit LCD_Busy_Check()