《基于单片机的电子时钟设计报告(LCD显示)(共12页).doc》由会员分享,可在线阅读,更多相关《基于单片机的电子时钟设计报告(LCD显示)(共12页).doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上单片机原理及应用课程设计任务书 题目:电子时钟(LCD显示)1、设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间:使用字符型LCD显示器显示当前时间。显示格式为“时时:分分:秒秒”。用3个功能键操作来设置当前时间。功能键K1K4功能下。K1设置小时。K2设置分钟。K3设置秒。程序执行后工作指示灯LED发光,表示程序开始执行,LCD显示“23:59:00”,然后开始计时。2、工作原理本课题难点在于键盘的指令输入,由于每个按键都具有相应的一种功能,程序中有较多的循环结构用以判断按键是否按下,以及判断按键是否抬起,以及LCD显示器的初始化。3、参考
2、电路硬件设计电路图如下图所示:硬件电路原理图单片机原理及应用课程设计任务书 题目:电子时钟(LCD显示)1、设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间:使用字符型LCD显示器显示当前时间。显示格式为“时时:分分:秒秒”。用3个功能键操作来设置当前时间。功能键K1K4功能下。K1设置小时。K2设置分钟。K3设置秒。程序执行后工作指示灯LED发光,表示程序开始执行,LCD显示“23:59:00”,然后开始计时。2、工作原理本课题难点在于键盘的指令输入,由于每个按键都具有相应的一种功能,程序中有较多的循环结构用以判断按键是否按下,以及判断按键是否抬起,以及LCD显示器
3、的初始化。3、参考电路硬件设计电路图如下图所示:硬件电路原理图基于AT89C51单片机的电子时钟设计报告一、设计要求与目的 1)设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间。2)、使用字符型LCD显示器显示当前时间。显示格式为“时时:分分:秒秒”。3)、用3个功能键操作来设置当前时间。4)、熟悉掌握proteus编成软件以及keil软件的使用二、本设计原理本设计以AT89C51单片机为核心,通过时钟程序的编写,并在LCD显示器上显示出来。该编程的核心在于定时器中断及循环往复判断是否有按键操作,并对每个按键的操作在LCD显示器上作出相应的反应。由于LCD显示器每八位
4、对应一个字符,故把秒、分、时的个位和十位分开表示。该课题中有三个控制开关KM1、KM2、KM3分别控制时、分、秒的调整,时间按递增的方式调整,每点一次按钮则相应的时间个位加以,且时间调整不干扰其他为调整时间的显示。三、硬件设计原理(电路)硬件电路原理图四、软件设计(流程图)设置T0为方式1设中断次数为20清计时单元开中断启动T0调用显示子程序按键程序调用按键显示子程序时钟主程序流程LCD显示保护现场设置计数初值1S到?(40H)=10?0 (40H)(40H)+1 (40H)(41H)+1 (41H)(46H)=4?0 (46H)(0) (47H)恢复现场返回NN中断服务流程图(41H)=5?
5、0 (41H)(43H)=10?0 (43H)(43H)+1 (43H)(44H)+1 (44H)(44H)=5?0 (44H)(46H)+1 (46H)(47H)=2?(46H)+1 (46H)NN(46H)=10?0 (46H)(47)+1 (47)NN五、仿真结果与结论5.仿真结果与结论初始运行显示效果如下 :用按键调节时分秒从而设置时间:结论:采用12MHZ晶振采用方式1定时,选取50ms采用20次中断达到一秒,采用查表方式控制LCD显示。根据仿真结果可知该编程及硬件电路符合要求。附录程序设计如下: KM1 BIT P1.0 KM2 BIT P1.1 KM3 BIT P1.2 RS E
6、QU P2.0 RW EQU P2.1 E EQU P2.2 IN_0 EQU P0 SECL EQU 40H ;秒低位 SECH EQU 41H ;秒高位 MH1 EQU 42H ;冒号 MINL EQU 43H ;分低位 MINH EQU 44H ;分高位 MH2 EQU 45H ;冒号 HOURL EQU 46H ;时低位 HOURH EQU 47H ;时高位 ORG 0000H AJMP MAIN ORG 000BH AJMP INTT_0MAIN: MOV R2,#20 ACALL INIT_LCD ;初始化液晶 MOV R5,#00H MOV IN_0,#84H ;写入显示起始地址
7、(第一行第五个位置) ACALL ENABLE MOV TH0,#3CH ;50MS MOV TL0,#0B0H MOV TMOD,#01H ACALL SJCZ SETB EA SETB ET0 SETB TR0LCALL A1START1: LCALL WDATA1LCALL WDATA2AJMP START1;*控制键* A1: LCALL WDATA2 LCALL WDATA1JNB KM1,S1JNB KM2,S2JNB KM3,S3AJMP A1;*调整小时*S1: LCALL DELAYL JB KM1,A1 MOV A,HOURH CJNE A,#02H,ST1MOV A,HO
8、URLCJNE A,#03H,ST2MOV HOURH,#00HMOV HOURL,#00HAJMP J1ST1: MOV A,HOURL CJNE A,#09H,ST2INC HOURHMOV HOURL,#00HAJMP J1ST2: INC HOURL AJMP J1J1: JB KM1,S1LCALL WDATA1AJMP J1;*调整分钟*S2: LCALL DELAYL JB KM2,A1 MOV A,MINH CJNE A,#05H,ST3MOV A,MINLCJNE A,#09H,ST4MOV MINH,#00HMOV MINL,#00HAJMP J2ST3: MOV A,MI
9、NL CJNE A,#09H,ST4INC MINHMOV MINL,#00HAJMP J2ST4: INC MINL AJMP J2J2: JB KM2,S2LCALL WDATA1AJMP J2;*调整秒*S3: LCALL DELAYL JB KM3,A1 MOV A,SECH CJNE A,#05H,ST5MOV A,SECLCJNE A,#09H,ST6MOV SECH,#00HMOV SECL,#00HAJMP J3ST5: MOV A,SECL CJNE A,#09H,ST6INC SECHMOV SECL,#00HAJMP J3ST6: INC SECL AJMP J3J3:
10、JB KM3,S3LCALL WDATA1AJMP J3;*设定显示初值*SJCZ: MOV 40H,#0 ;显示初值是 23:59:00 MOV 41H,#0 MOV 42H,#10 MOV 43H,#9 MOV 44H,#5 MOV 45H,#10 MOV 46H,#3 MOV 47H,#2 RETINTT_0: PUSH PSW PUSH ACC ;T0定时器中断 MOV TL0,#0B0H ;送定时初值 MOV TH0,#3CH DJNZ R2,TT MOV R2,#20 INC SECL ;秒记数,到60S就清0 MOV A,SECL CJNE A,#0AH,TT INC SECH
11、MOV SECL,#00H MOV A,SECH CJNE A,#06H,TT MOV SECH,#00H INC MINL ;分记数,到60分请0 MOV A,MINL CJNE A,#0AH,TT MOV MINL,#00H INC MINH MOV A,MINH CJNE A,#06H,TT MOV MINH,#00H INC HOURL ;时记数,到24时清0 MOV A,HOURL CJNE A,#04H,TT2 MOV A,HOURH CJNE A,#02H,TT1 MOV HOURL,#00H MOV HOURH,#00H AJMP TT TT2: CJNE A,#0AH,TT
12、MOV HOURL ,#00H INC HOURH AJMP TT TT1: CJNE A,#02H,TT MOV HOURL,#00H MOV HOURH,#00H AJMP TT TT: POP ACC POP PSW RETI;*液晶初始化*INIT_LCD:ACALL DELAYL ;延时,等待LCD完成电源的启动 MOV IN_0,#01H ;清屏并光标复位 ACALL ENABLE MOV IN_0,#38H ;设置显示模式:8位2行5x7点阵 ACALL ENABLE MOV IN_0,#0CH ;显示器开、光标关、光标不闪烁 ACALL ENABLE MOV IN_0,#06H
13、 ;文字不动,光标自动右移 ACALL ENABLE MOV IN_0,#0C0H ;写入显示起始地址(第二行第一个位置) ACALL ENABLE RET;*写数据程序*WDATA1: MOV IN_0,#84H ;写入显示起始地址(第一行第五个位置) ACALL ENABLE MOV R1,#08H MOV R0,#47HWDATA_1: MOV A,R0 MOV DPTR,#TABLE MOVC A,A+DPTR MOV IN_0,A ;写入数据 SETB RS CLR RW CLR E ACALL CHECKBUSY SETB E ; 忙检测 DEC R0 DJNZ R1,WDATA_
14、1 MOV R1,#08H RETWDATA2: MOV IN_0,#0C0H ;写入显示起始地址(第二行第一个位置) ACALL ENABLE MOV R1,#10H MOV R0,#00H MOV DPTR,#TABWDATA_2: MOV A,R0 MOV DPTR,#TAB MOVC A,A+DPTR MOV IN_0,A ;写入数据 SETB RS CLR RW CLR E ACALL CHECKBUSY SETB E ;忙检测 INC R0 DJNZ R1,WDATA_2 MOV R1,#08H RET;*显示符号表*TABLE: DB 30H,31H,32H,33H,34H,35
15、H ;0 1 2 3 4 5 DB 36H,37H,38H,39H,3AH,80H,2EH ;6 7 8 9 : 空格 .TAB: DB MADE IN CHINA ;*写指令*ENABLE: CLR RS ;写入控制命令的子程序 CLR RW CLR E ACALL CHECKBUSY SETB E RETCHECKBUSY:MOV IN_0,#0FFH ;判断液晶显示器是否忙的子程序 CLR RS SETB RW CLR E NOP SETB E JB P0.7,CHECKBUSY ;如果P0.7为高电平表示忙就循环等待 RETDELAYL: MOV R7,#100 ;延时程序 D1: MOV R6,#200 DJNZ R6,$ DJNZ R7,D1 RET END专心-专注-专业