课程设计报告宗丽丽.doc_第1页
课程设计报告宗丽丽.doc_第2页
课程设计报告宗丽丽.doc_第3页
课程设计报告宗丽丽.doc_第4页
课程设计报告宗丽丽.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计报告课程: 单片机与接口技术 姓名: 宗丽丽 班级: 09通信1 教师: 高雪飞 河北联合大学信息工程学院一、设计名称:基于AT89C51的数字钟的设计二、设计目的及要求:利用51单片机设计一个电子时钟,要求能够实时显示时间,并可以通过按键校时。时间显示格式:【hh:mm】3、 设计原理说明:(1)STC89C52RC 单片机具有低价,高速(0-80M)、高可靠性的优点,是具有真正的看门狗的MCU,缺省时为关闭,启动后无法关闭,可放心省去外部看门狗电路。内部FLASH 可擦写100000 次以上,由于出厂时就已经加密且无法解密,因此具有很好的保密性。(2)DS12887 内部自带晶振和电源,可省去外部晶振电路,并可在没有外部电源的情况下工作十年。通过MOT 引脚外接电源或地可分别选择MOTOROLA 和INTEL 两种时序。模式。具有24 小时和12 小时两种计时模式,其中12 小时模式具有AM 和PM 提示。SQW引脚为可编程方波输出端,通过设置寄存器A 的低四位和寄存器B 的SQWE 位可输出不同频率的方波。本设计中采用了INTEL 时序和24 小时制,没有用到方波输出。另外,初次使用DS12887 时必须先进行初始化,即写入指令启动计时,设定时间。DS12887 上电后延时200ms 时间才可进行初始化操作。四、硬件设计图:讲解:1、时钟显示用七段LED数码管来实现,采用共阳管和PNP驱动方式。PNP工作于开关状态,基极通过1K的电阻连到单片机的P2口。因为四位管的段被并接只能通过动态扫描的方式来显示,即利用管子的余晖和人眼的视觉残留实现六位管子在“同一时间”显示不同的值,而扫描这是靠位选的轮流有效实现。2.校时、定时 此部分由3个按键控制,校时键:进入、退出校时状态,选择被校位。(被校位要闪烁显示)第1次按下:进入校时状态,选择小时的十位为被校位;第2次按下:选择小时的个位为被校位;第3次按下:选择分钟的十位为被校位;第4次按下:选择分钟的个位为被校位;第4次按下:退出校时状态。再1次被按下则重新开始进入校时状态校时调整键:被校位加减调整。3.单片机最小系统本实验采用AT89C52RC单片机,指令系统完全与51兼容。其最小系统包含电源电路、晶振电路、复位电路。其中晶振频率为12MHz,震荡部分电容为30pF的瓷片电容。复位电路采用图示的兼有上电复位和按键复位功能的方式,其中的电容为10uF电解电容。五、软件设计流程图:源程序:;使用DS12C887的电子钟程序HOUR1 EQU 30H ;30H作为小时的十位数存储单元HOUR2 EQU 31H ;31H作为小时的个位数存储单元MINUTE1 EQU 32H ;32H作为分钟的十位数存储单元MINUTE2 EQU 33H ;33H作为分钟的个位数存储单元WEISHU EQU 21H ;21H存放被校位数,1小时十位,2小时个位,3分钟十位,4分钟个位ADJUST BIT 23H.0;校时标志,23H.0=1正在校时,23H.0=0未校时FLASH0 BIT 22H.0;校时位闪耀标志,22H.0=1,送亮,22H.0=0,送黑FLASH1 BIT 22H.1 ;秒点闪耀标志;20H存放T0溢出中断次数,每中断5次去处理被校位闪耀;2CH单元为键值暂存单元,按键时2CH单元为键值,处理键值后将2CH清0,如果按键时2CH单元不为0,中断返回,待按键结束时去处理键值.;40H,41H,42H,43H分别存放小时高位,小时低位,分钟高位,分钟低位的最大数2,9,5,9ORG 0000HLJMP MAIN ;转主程序ORG 000BHLJMP T0ZD ;转T0中断服务程序,每50ms中断一次ORG 0013HLJMP INT1ZD; 转INT1中断服务程序,DS12C887每隔1秒引起一次INT1中断ORG 00E0HTAB: DB 18H,7EH,94H,34H,72H ;0,1,2,3,4的显示字形码 DB 31H,11H,7CH,10H,30H ;5,6,7,8,9的显示字形码 DB 0FFH ;全黑的显示字形ORG 0100HMAIN:MOV SP,#60H ;设置堆栈MOV R0,#50H ;0到50H单元清0CLR AKK: MOV R0,ADJNZ R0,KKMOV R3,#20 ;延时200ms等待DS12C887启动KK1: LCALL DEL10mSDJNZ R3,KK1MOV DPH,#00H ;DS12C887初始化MOV DPL,#0AH ;寄存器AMOV A,#20H ;初始化为20H MOVX DPTR,AMOV DPL,#0cH ;读C寄存器(必须)MOVX A,DPTRMOV DPL,#0BH ;寄存器BMOV A,#22H ;初始化为1AH MOVX DPTR,AMOV DPL,#05H ;时,分,秒报警单元0001H,0003H,0005H单元送FFH,1秒1次中断(要引起中断就必须有)MOV A,#0FFHMOVX DPTR,A MOV DPL,#03HMOVX DPTR,AMOV DP1l,#01HMOCX DPTR,A MOV P1,#0FFH ;输入端口锁存器预置1 MOV TMOD,#01H ;T0工作于方式1 MOV SCON,#00H ;串口为工作方式0-移位寄存器方式CLR ES ;串口不产生中断SETB EA ;开总中断SETB EX1 ;开INT1中断 MOV 40H,#2 ;小时高位最大数为2 MOV 41H,#9 ;小时低位最大数为9 MOV 42H,#5 ;分钟高位最大数为5 MOV 43H,#9 ;分钟低位最大数为9LCALL QUSHIJ ;将DS12C887的时间存入单片机的存储单元中 LCALL DISP ;显示时间MAIN1: JB ADJUST,MAIN1 ;校时标志为1,正在校时,原地等待 MOV A,P1 ;校时标志为0,不在校时状态,输入键值 JB ACC.0,MAIN1 ;有按键,为1则未按键,返回 MOV 2CH,a ;有按键,键值送2CH LCALL DEL10mS ;延时 MOV A, P1 ;再读键值 CJNE A,2CH,MAIN1 ;与上次键值不同则返回 LCALL XIAOSHI ;调校时开始程序,在T0中断处去处理 SJMP MAIN1 ;返回QUSHIJ:PUSH ACC ;将DS12C887的时间存入30H,31H,32H,33H的子程序 PUSH PSW PUSH DPH PUSH DPL MOV DPTR,#000CH ;读C寄存器(必须) MOVX A,DPTR MOV DPTR,#0002H ;DS12C887中分钟的存放地址 MOV R0,#33H ;CPU中分钟个位的存放地址 LCALL DIVIDE DEC R0 INC DPL INC DPL LCALL DIVIDE POP DPH POP DPL POP PSW POP ACC RETDIVIDE:PUSH ACC ;从DS12C887中取出数据,将十位和个位拆分后送入R0指定位置子程序 PUSH PSW MOVX A,DPTR ANL A,#0FH MOV R0,A DEC R0 MOVX A,DPTR ANL A,#0F0H SWAP A MOV R0,A POP PSW POP ACC RETDISP: PUSH ACC ;送显示子程序 PUSH PSW CLR RS0 CLR RS1 SETB P1.7 ;向外传送数据时关掉显示,避免引起闪烁 MOV DPTR,#00E0H MOV R0,#30H ;要显示的数 LCALL ZIXING ;对应其字形 LCALL FS ;从串口送出 INC R0 LCALL ZIXING LCALL FS INC R0 LCALL ZIXING MOV C,22H.1 MOV ACC.4,C LCALL FS INC R0 LCALL ZIXING LCALL FS CLR P1.7 ;传送完数据,开显示 POP PSW POP ACC RETZIXING:MOV A,R0 ;寻找要显示的数的字形码子程序 MOVC A,A+DPTR RETFS: MOV SBUF,A ;数据送串口子程序 JNB TI,$ ;未送完等待 CLR TI ;送完清标志 RET ;返回INT1ZD:PUSH ACC ;INT1中断服务程序 PUSH PSW PUSH DPL PUSH DPH CLR EA ;关总中断 CPL 22H.1 ;秒点闪耀标志取反 LCALL QUSHIJ ;调用取时间子程序 LCALL DISP ;调用送显示子程序 SETB EA ;开中断 POP DPH POP DPL POP PSW POP ACC RETI ;中断返回;启动校时子程序,即开T0中断,关INT0中断XIAOSHI: MOV TH0,#3CH ;送时间常数 MOV TL0,#0B0H CLR EX1 ;关INT1中断 SETB TR0 ;启动T0 SETB ET0 ;开T0中断 SETB EA ;开总中断 SETB ADJUST ;置校时标志 MOV WEISHU,#0 ;被校位数送0OVER: RET ;返回T0ZD: PUSH ACC PUSH PSW SETB RS0 ;1#寄存器 CLR RS1 CLR EA ;关中断 MOV TH0,#3CH ;重送时间常数 MOV TL0,#0B0H MOV A, P1 ;读键值 MOV R7,A ;键值暂存 ORL A, #80H ;判断是否有键按下 CPL A JZ KEYUP ;无键按下,即按键结束则进行键值处理 MOV A,2cH ;如有键按下,则先判断键值暂存单元是否为0 JNZ MM ;不为0,则已存有键值,返回 MOV 2cH,R7 ;为0,则将新键值存入2CH, LJMP MM ;返回KEYUP: MOV R6,2CH ;键值处理,判断键值暂存单元是否为0 CJNE R6, #0,HH ;不为0则转至HH处理 LJMP MM ;为0则返回HH: MOV 2CH,#0 ;不为0,存有键值,则进行键值处理,处理后清0 MOV A,R6 ORL A,#80H CPL A JZ MM ;判断是否有键按下,没有则返回 MOV A,R6 JNB ACC.0, LL0 ;有键按下,是否是P1.0位,如P1.0位为0,则其按下,转去LL0调整被校位数 JNB ACC.1,XDYJIA1 ;如P1.0没按下,判断P1.1是否按下,是,则转去XDYJIA1使被校位加1 LJMP MM ;P1.0和P1.1没按下则返回LL0: MOV A,WEISHU ;被校位数调整 INC A MOV WEISHU,A CLR C ;判断被校位数是否小于等于4 SUBB A,#5 JC MM ;是,则返回 CLR 23H.0 ;被校位数达到5,则退出校时 CLR ET0 ;关闭T0中断 CLR TR0 ;关闭T0 SETB EX1 ;开INT1,恢复1秒1次的中断 LCALL HF1 ;调用HF1,将校后的时间存回DS12C887 LJMP END1 ;中断返回MM: MOV A,20H ;以下判断T0中断是否到5次 INC A MOV 20H,A CJNE A,#5,END1 ;不等于5,则返回 MOV A,#0 ;等于5,中断次数清0, MOV 20H,A LCALL DISP1 ;调被校位闪耀显示子程序END1: CLR RS0 ;恢复现场 POP PSW POP ACC SETB EA RETI ;中断返回XDYJIA1:SETB RS1 ;被校位加1处理 SETB RS0 ;选择3寄存器区 MOV A,WEISHU ;被校位数送A ADD A,#2FH ;得到被校位地址 MOV R0,A ;被校位地址存入R0 MOV A,WEISHU ;被校位数送A ADD A,#3FH ;得到被校位的最大数存放地址 MOV R1,A ;被校位的最大允许数存放地址存入R1 MOV A,R0 ;取出被校位数据送A CLR C ;判断其是否达到其最大允许数 SUBB A,R1 JNC BACK ;达到,则转至BACK,回0 MOV A,R0 ;没达到,则加1 INC A MOV R0,A LJMP PP1BACK: MOV R0,#0 ;被校位回0PP1: MOV A,HOUR1 ;小时位不能大于等于24,因此如下判断:判断小时的高位是否为2 CJNE A,#2,PP ;不为2,则转至PP送显示后中断返回 CLR C ;为2,则判断小时低位是否小于等于3 MOV A,HOUR2 SUBB A,#4 JC PP ;小于等于3则转至PP送显示后中断返回 MOV HOUR1,#0 ;否则小时的高低位都回0 MOV HOUR2,#0PP: CLR RS1 ;选择0寄存器区 CLR RS0 LCALL DISP ;显示加1后结果 LJMP END1 ;中断返回DISP1: CPL 22H.0 ;被校位闪耀显示子程序:闪耀标志取反 JB 22H.0,MM2 ;闪耀标志为1,转至MM2送亮,闪耀标志为0,送黑 MOV A,WEISHU ;被校位数送A ADD A,#2FH ;得到被校位地址 MOV R0,A ;被校位地址存入R0 MOV 25H,R0 ;被校位数据暂存入25H MOV R0,#0AH ;使被校位数据变为0AH,通过查TAB表, LCALL DISP ;送显示,调用显示子程序时,通过查TAB表得到0AH的字形码为FFH,使被校位黑 MOV R0,25H ;被校位显示黑后,从25H取回原来数据 SJMP OVER1 ;返回MM2: LCALL DISP ;闪耀标志为1,显示亮OVER1: RET ;返回HF1: PUSH ACC ;将CPU中30H到33H的数据送入DS12887子程序 PUSH PSW PUSH DPL MOV DPTR,#0004H ;DS12C887中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论