《电子时钟(LCD显示)课程设计.doc》由会员分享,可在线阅读,更多相关《电子时钟(LCD显示)课程设计.doc(16页珍藏版)》请在金锄头文库上搜索。
1、题目2 电子时钟(LCD显示)1. 设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间:使用字符型LCD显示器显示当前时间。显示格式为“时时:分分:秒秒”。用4个功能键操作来设置当前时间。功能键K1K4功能如下。K1进入设置现在的时间。K2加1。K3减1。K4确认完成设置。程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:00:00”,然后开始计时。1.时钟的总体设计思路按照系统的设计功能要求,本时钟系统的设计必须采用单片机软件系统实现,用单片机的自动控制能力配合按键控制,来控制时钟的调整及显示。微型控制器时钟电路按键调时数据显示 图一系统总原理图3.
2、系统硬件设计 3.1 单片机控制系统本次设计时钟电路,使用了ATC89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的时、分、秒,同时使用C语言程序来控制整个时钟显示,使得编程变得更容易,这样通过三个模块:键盘、芯片、显示屏即可满足设计要求。原理如图一所示。 ATC89C51单片机芯片 VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0
3、 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序
4、存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口
5、) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用
6、于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保
7、持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。1) 复位电路复位电路有两种方式:上电复位和按钮复位,我们主要用按钮复位方式。如图二所示: 图二 复位电路2) 晶振电路晶振电路原理图三: 图三 晶振模块原理图 选取原则:电容选取20pF,晶振为12MHz。3) 电源AT89S51单片机的供电电源是5V的直流电。4) EA非/Vpp 脚我们没有用外部扩展ROM,因此EA非/Vpp为高电平,即接+5V电源。3.2.2键盘控制系统设计按键需要4个,分别实现为
8、时间调整、时间的加、时间的减、退出四个功能。用单片机的4个I/O口接收控制信号,其电路如图四下: 图四 按键调时电路通过控制键来控制所要调节的是时、分、还是秒。在控制键按下后LCD中会在相应的位置出现光标,这时在通过加数键或减数键来控制时分秒的加或减。3.2.3.显示电路。显示电路如图五所示: 图五 显示电路4.软件设计4.1 软件主要要完成的功能(1)显示时间程序用软件调节时间,通过程序的调节,最后用LCD现实时钟(2)调节时间程序按键调节时间,能实现时、分的调节4.2软件设计的主要流程(1)系统总的流程图主要功能是负责时间的显示,通过写地址和写数据来实现时间的调节和控制,最后通过调用显示子
9、程序显示出来 如图六所示。(2)时间控制程序时间控制程序,用中断准确的控制时间,采用60进制,60秒为一分钟,60分钟为一个小时,全天设置为24小时。程序流程图如图七所示。程序用C语言编写,代码见附录二。编程时采用KEIL C,而仿真用PROTUES,仿真时仿真图如图八所示开始定时器及中断定时器初始化按键调时是否设定参数执行显示程序NY 图六 总程序流程图 图七 时钟流程图5软件程序清单:#include #include #define uchar unsigned char#define uint unsigned int#define DelayNOP() _nop_();_nop_()
10、;_nop_();_nop_();sbit K1 =P10; /选择调整小时,分钟sbit K2 =P11; /增加sbit K3 =P12; /减少sbit K4 =P13;sbit SPK=P30;sbit RS =P20;sbit RW =P21;sbit E =P22;uchar code Str1 = Current Time ; /以下两个字符串的串长均为16uchar code Str2 = Set New Time. ; /uchar HMS_String = 00:00:00 ; /待显示的时间串bit Settime= 0; /是否修改时间bit Change_H_or_M
11、 =1; /1表示修改时,0表示修改分uchar MilliSecond, Hour =0, Minute =0, Second =0;/-/延时函数/-void DelayMS(uint x) uchar i; while(x-) for (i = 0; i 120; i+);/-/LCD忙状态检测/-bit LCD_Busy_Check() bit result; RS = 0; RW = 1; E = 1; DelayNOP();result = (bit)(P0 & 0x80); E = 0; return result;/-/写LCD命令/-void LCD_Write_Command(uchar cmd) while( LCD_Busy_Check();/判断LCD是否忙碌 RS = 0; RW = 0; E = 0;_nop_();_nop_(); P0 =cmd; DelayNOP(); E = 1; DelayNOP(); E = 0;/-/设置LCD显示位置/-void LCD_Set_Pos(uchar pos) LCD_Write_Command(pos | 0x80);/-/写LCD数据/-