定时闹钟单片机专业课程设计_第1页
定时闹钟单片机专业课程设计_第2页
定时闹钟单片机专业课程设计_第3页
定时闹钟单片机专业课程设计_第4页
定时闹钟单片机专业课程设计_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

题目:定期闹钟目录TOC\o"1-4"\h\z\u一、概述 11.1设计目及意义 11.2设计任务 11.3设计系统重要功能 1二、系统总体方案及硬件设计 22.1系统总体方案 22.2系统设计总框图 22.3硬件设计 22.3.1单片机最小系统设计 22.3.2报警模块设计 62.3.3显示模块设计 72.3.4调时模块设计 9三、软件设计 103.1主程序流程图 103.2定期中断子程序流程图 113.3程序设计 11四、系统仿真与调试 124.1proteus软件仿真 124.2系统调试 11五、设计总结与体会 13参照文献 13附录1:源程序代码 14附录2:系统原理图 24一、概述1.1设计目及意义学习和巩固单片机技术、电子技术、传感器技术及智能仪器等知识,使对已学过基本知识能有更进一步理解,并融会贯通。学会独立思考、独立工作,培养一定自学能力和独立分析问题能力,以及增强系统地运用已学理论知识去解决实际问题能力,同步培养成良好科学态度和严谨设计习惯。1.2设计任务完毕所选题目分析与设计,达到技术性能规定。提交正式课程设计总结报告一份。本文设计定期闹钟核心模块采用AT89C51芯片,时、分、秒用6位LED数码管显示。在电路中通过四个按键S1、S2、S3和S4来进行定期、调时和复位,定期时间到通过蜂鸣器发出报警声。1.3设计系统重要功能(1)能显示时时-分分-秒秒。(2)可以设立定期时间、修改定期时间。(3)定期时间到能发出报警声。二、系统总体方案及硬件设计2.1系统总体方案(1)由于LED显示屏相对于其他显示屏(如LCD显示屏)来说其价格要便宜许多,并且亮度更高,耐温范畴较广,因此采用6位数码管来显示“时时-分分-秒秒”。(2)时间定期用单片机内部时钟电路,在一定期间内能使其误差较小,如通过一年其误差才仅有数秒。修改时间和定期用手动按键控制,报警声通过蜂鸣器发出。这样可以使得硬件电路设计较为简朴,且软件设计也易于实现,并可以减少成本。(3)核心模块采用AT89C51单片机,功能强、通用性好、价格便宜,且易于控制。加上外围器件(数码管、排阻、按键和蜂鸣器)和应用程序,便构成了相应应用系统。2.2系统设计总框图数码管显示(如图1所示)数码管显示时钟电路和复位电路单片机AT89C51时钟电路和复位电路单片机AT89C51键盘(按钮)键盘(按钮)蜂鸣器图1定期闹钟系统设计总框图蜂鸣器2.3硬件设计2.3.1单片机最小系统设计(1)芯片:AT89C51由于51单片机是各单片机中最为典型和最有代表性一种,在20世纪70年代问世以来,以其极高性能价格比,受到人们注重和关注,应用广泛,发展不久,推广率和市场利润率较高,且适合于本设计系统中CPU内存和I/O等资源规定,因此本设计采用AT89C51作为核心控制芯片。AT89C51是一种带4KB闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)单片机,可稳定地工作于5V电源下。其集成度高、功能强、能耗低、通用性好、价格便宜。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业原则MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMELAT89C51是一种高效微控制器。其组合而成配件产品在寻常生活使用过程中非常以便、简朴且实用,深受着广大消费者爱慕。AT89C51管脚阐明如下:

:供电电压端。

:接地端。

P0口:P0口为三态双向口,能带8个TTL电路。有两种功能:第一功能是一种8位漏极开路型双向I/O口,这时P0口可看做数据总线;第二功能是在访问外部存储器时,分时提供低8位地址和8位双向数据总线,这时先用做地址总线再用做数据总线。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必要被拉高。P0口内部无上拉电阻,作为I/O口使用时,必要外接上拉电阻。

P1口:P1口是一种内部带上拉电阻8位准双向I/O口(使用前有一种准备动作),负载能力为4个TTL电路。在FLASH编程和校验时,P1口作为第八位地址接受。

P2口:P2口为一种内部带上拉电阻8位准双向I/O口,P2口缓冲器可接受、输出4个TTL门电流。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址高八位。P2口在FLASH编程和校验时接受高八位地址信号和控制信号。

P3口:P3口是一种内部带上拉电阻准双向I/O口,可接受输出4个TTL门电流。同步为闪烁编程和编程校验接受某些控制信号。P3口8个引脚均有各自第二功能,可作为AT89C51某些特殊功能口,如表1所示。

表1P3口第二功能P3口引脚第二功能注释P3.0串行输入口P3.1串行输出口P3.2外部中断0输入P3.3外部中断1输入P3.4定期/计时器0外部输入P3.5定期/计时器1外部输入P3.6外部数据存储器写信号P3.7外部数据存储器读信号

:为复位信号输入端。当振荡器复位器件时,要保持RST脚两个机器周期(24个时钟周期)以上高电平时间。为内部备用电源输入端。当主电源一旦发生断电或电压降到一定值时,可通过为单片机内部提供电源,以保护片内中信息不丢失,使上电后能继续正常运营。

:为地址锁存容许信号,当访问外部存储器时,用来锁存口送出低8位地址信号。在编程期间,用于输入编程脉冲。在平时,端以不变频率周期输出正脉冲信号,此频率为振荡器频率1/6。因而它可用作对外部输出脉冲或用于定期目。然而要注意是:每当用作外部数据存储器时,将跳过一种脉冲。如想禁止输出可在8EH地址上置0。此时,只有在执行MOVX,MOVC指令时才起作用。此外,该引脚被略微拉高。如果微解决器在外部执行状态禁止,置位无效。

:外部程序存储器读选通信号。在由外部程序存储器取指期间,产生负脉冲做为外部选通信号,每个机器周期两次有效。但在访问外部数据存储器时,不会产生有效信号。可驱动8个门输入端。

:访问外部程序存储器控制信号。当保持低电平时,则在此期间只访问外部程序存储器(0000H-FFFFH),不论与否有内部程序存储器。注意加密方式1时,将内部锁定为。当端保持高电平时,访问程序存储器有两种状况:一是访问地址空间在0到4KB范畴内,访问片内程序存储器;二是访问地址超过4KB时,将自动执行外部程序存储器程序。在编程期间,此引脚也用于施加12V编程电源()。:晶体振荡电路反向器输入端。

:晶体振荡电路反向器输出端。(2)时钟电路单片机时钟产生办法有两种:内部时钟方式和外部时钟方式。本系统中AT89C51单片机采用内部时钟方式。最惯用内部时钟方式是采用外接晶体和电容构成并联谐振回路。振荡晶体可在1.2MHz~12MHz之间。电容值无严格规定,但电容取值对振荡频率输出稳定性、大小和振荡电路起振速度有少量影响,普通可在20pF~100pF之间取值。AT98C51单片机时钟电路如图3所示。图3AT98C51单片机时钟电路(3)复位电路复位是单片机初始化操作。单片机系统在上电启动运营时,都需要先复位。其作用是使CPU和系统中其她部件都处在一种拟定初始状态,并从这个状态开始工作。单片机外部复位电路有上电自动复位和按键手动复位两种。本系统中AT89C51单片机采用上电加按键手动复位电路,如图4所示。图4AT89C51单片机复位电路2.3.2报警模块设计为实现设计定期闹钟系统在定期时间届时发出报警声,采用蜂鸣器作为报警发声装置。在本设计中有各种报警声可供选取,可选取报警时播放音乐。报警电路设计如图5所示。图5定期闹钟系统报警电路2.3.3显示模块设计本系统中采用6位LED数码管显示时、分、秒,用两片74HC573分别对段码和位码进行锁存,实现动态扫描方式显示,节约单片机I/O口资源,简化硬件电路。(1)LED显示屏单片机中普通使用8段LED,LED是发光二极管显示屏缩写。LED显示屏由于构造简朴,价格便宜,体积小,亮度高,电压低,耐温范畴广,可靠性高,寿命长,响应速度快,颜色鲜艳,配备灵活,与单片机接口以便而得到广泛应用。LED显示屏是由若干个发光二极管构成显示字段显示部件,当发光二极管导通时,相应一种点或一种笔划发光,控制不同组合二极管导通,就能显示出各种字符。LED显示屏有各种形式,如:“米”字型显示屏,点阵显示屏和七段数码显示屏等。在本系统中采用八段数码显示屏。由于共阴极LED数码管它驱动电流是分开,在单片机进行动态扫描时候不会影响彼此电流,故本系统中6位LED数码管均用共阴极数码管。(2)74HC573芯片特点:三态总线驱动输出,置数全并行存取,缓冲控制输入,使能输入有改进抗扰度滞后作用。

原理阐明:74HC573八个锁存器都是透明D型锁存器,当使能(G)为高时,Q输出将随数据(D)输入而变。当使能为低时,输出将锁存在已建立数据电平上。输出控制不影响锁存器内部工作,即老数据可以保持,甚至当输出被关闭时,新数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。特别合用于缓冲寄存器,I/O通道,双向总线驱动器和工作寄存器。74HC573引脚阐明:OE:3态输出使能输入(低电平有效)。D0-D7:数据输入端。Q0-Q7:3态锁存输出。LE:锁存使能输入。GND:接地。VCC:电源电压。74HC573引脚图、逻辑图及真值表如下:图6

74HC573引脚图图774HC573逻辑图表274HC573真值表OELEDQHXXZLLXNOCHANGELHLLLHHH(3)显示电路将两片74HC573数据输入端D0-D7都分别与AT89C51单片机P0.0-P0.7和RESPACK-8排阻2-9引脚连接,两片74HC573锁存使能端L分别接至P2.6和P2.7,74HC573输出端接至数码管2.3.4调时模块设计本系统要进行时间调节和定期,因而用4个手动按键对其进行控制。键盘电路设计如图9所示。当按下时间调节键S1时,系统可进行时间调节小时设立;当再按下S1时,可进行时间调节分钟设立;再按下S1时,可进行时间调节秒钟设立;再次按下S1时,系统恢复正常时间显示。当按下设立定期键S2时,系统可进行闹钟定期时间小时设立,此时S1作为报警声选取键,可通过S1选取报警声;再按下S2时,可进行定期时间分钟设立,此时也可通过S1选取报警声;第三次按下S2时,系统恢复正常时间显示,此时S1恢复为时间调节按键。设立时间时都通过加时按键S3和减时按键S4进行控制。图9定期闹钟系统键盘电路三、软件设计3.1主程序流程图开始开始初始化初始化显示时间显示时间NNS1S1按下?YYNS2按下?NS2按下?调节时间调节时间NNYNNYS1按下?S1按下?S3按下?YYYY选取报警声加时调节选取报警声加时调节NNNNS3按下?S4按下?S3按下?S4按下?YYYY定期加时减时调节定期加时减时调节NNS4按下?S4按下?YY定期减时定期减时图10主程序流程图3.2定期中断子程序流程图开始开始N1秒到?N1秒到?YY秒变量加1秒变量加1N60秒到?N60秒到?YY分变量加1,秒变量清零分变量加1,秒变量清零NN60分到?60分到?YY时变量加1,分变量清零时变量加1,分变量清零NN24时到?24时到?YY时变量清零时变量清零蜂鸣器响Y定期到?蜂鸣器响Y定期到?NN结束结束图11定期中断子程序流程图3.3程序设计依照程序流程图采用汇编语言进行程序设计,其中主程序可依照系统实现功能划分为如下几种子程序模块。(程序源代码见附录1)(1)时间调节子程序模块;(2)闹钟时间设立子程序模块;(3)蜂鸣器报警子程序模块;(4)数码管显示子程序模块。系统仿真与调试4.1proteus软件仿真使用WAVE软件编辑程序,在仿真设立中选取E6000/T仿真器,选取POD-51仿真头。为以便系统在proteus中进行仿真,选取了7SEG-MPX6-CC-BLUE数字显示屏,并变化了某些I/O连接,然后选取80C51CPU进行汇编程序编辑。通过仿真得知,通过S1、S2、S3和S4四个按键,可以对时间进行修改和闹钟设立,定期时间到能发出报警声,系统非常完善地实现了所有规定功能。4.2系统调试将所编程序在KEIL软件里进行编译,编译对的后生成HEX文献。在AT89C51芯片中加载此文献后,对完毕实物作品进行调试。系统运营后,能精确显示时间,并能通过S1、S2、S3和S4四个按键对时间进行修改和闹钟定期时间设立,定期时间到能发出报警声。五、设计总结与体会设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力重要环节,是对学生实际工作能力详细训练和考察过程。随着科学技术发展日新日异,单片机已经成为当今计算机应用中空前活跃领域,在生活中可以说得是无处不在,作为21世纪大学生来说掌握单片机开发技术是十分重要。通过本次单片机原理及应用设计使我充分结识到了设计重要性和必要性,本次设计使我对已学过基本知识有了更进一步理解,学会了独立思考、独立工作以及相应用所学基本理论分析和解决实际问题能力有了很大提高。此外,本次设计使我实际操作技能得到了训练,同步也进一步培养了我严谨科学作风。回顾起本次单片机课程设计,从选题到定稿,从理论到实践,可以说得是有苦有甜,但是从中却学到诸多诸多东西,不但巩固了此前所学过知识,并且对单片机原理课外知识也得到了拓展。做过程中,开始确遇到了不少困难问题,例如说芯片管脚不熟悉怎么放置等,同步在这过程中也发现了自己许多局限性之处,对此前所学过知识理解得不够深刻,掌握得不够牢固。通过单片机设计之后,我不但加深了对单片机理论理解,将理论较好地应用到实际当中去,并且咱们还学会了如何去培养创新精神和严谨科学作风,从而不断地战胜自己,超越自己。更重要是,我在这一设计过程中,学会了坚持不懈,绝不放弃。参照文献[1]张毅刚.单片机原理及应用.北京:高等教诲出版社,

[2]王幸之.单片机应用系统电磁干扰与抗干扰技术.北京:北京航空航天大学出版社,

[3]何立民.单片机应用技术大全.北京:北京航空航天大学出版社,1994

[4]张毅刚.单片机原理及接口技术.哈尔滨:哈尔滨工业大学出版社,1990

[5]谭浩强.单片机课程设计.北京:清华大学出版社,1989[6]余锡纯.单片机原理与接口技术.西安:电子科技大学出版社,

[7]Mak.S,

Radford.

D.‘Design

considerations

for

implementation

of

large

scale

automatic

meter

reading

systems’.Power

Delivery,

IEEE

Transactions

on,Volume

10,

Issue

1,

Jan.

1995

附录1:源程序代码汇编语言程序:;************引脚及变量定义***************S1 BITP3.2;按键1S2 BITP3.3;按键2S3 BITP3.4;按键3S4 BITP3.5;按键4SPEAKER BITP2.0;蜂鸣器DULA BITP2.6;段选锁存器锁存端WELA BITP2.7;位选锁存器锁存端HOUR1 EQU20H;小时MIN1 EQU21H;分钟SEC1 EQU22H;秒钟HOUR2 EQU23H;小时定期变量MIN2 EQU24H;分钟定期变量A1 EQU25H;显示变量B1 EQU26HC1 EQU27HD1 EQU28HE1 EQU29HF1 EQU30HA2 EQU31HB2 EQU32HC2 EQU33HD2 EQU34HNUM1 EQU35H;按键计数变量1NUM2 EQU36H;按键计数变量2COUNT EQU37H;计时变量 ORG0000H LJMPMAIN ORG000BH LJMPTIME;************MAINPROGRAM*************** ORG1000HMAIN: MOVSP,#50HSTART: MOVHOUR1,#00H;初始化时间变量 MOVMIN1,#00HMOVSEC1,#00HMOVHOUR2,#01H;初始化定期变量MOVMIN2,#01HMOVCOUNT,#00H;初始化计时变量MOVNUM1,#00H;初始化按键计数变量MOVNUM2,#00H MOVTMOD,#01H;16位计数器MOVTH0,#0D8H;赋初值MOVTL0,#0EFHSETBET0;中断容许 SETBEASETBTR0;启动T0LOOP:MOVA,NUM2 JNZLOOP1 ;A不为0时转移 LCALLDISPLAY1;显示当前时间LCALLKEYTIME;调用时间调节子程序LCALLSETTIME;调用定期设立子程序LJMPLOOPLOOP1:LCALLDISPLAY2;显示定期时间LCALLKEYTIME;调用时间调节子程序LCALLSETTIME;调用定期设立子程序LJMPLOOP;************SETTIMEPROGRAM***************SETTIME:;定期设立子程序LL1: JBS2,LL3;P3.3=1时转移LCALLDELAY5;延时5MSMSTOP1:JBS2,LL3;P3.3=1时转移MOVC,S2JNCMSTOP1;P3.3=0时转移 INCNUM2;按键计数变量加1 MOVA,NUM2 CJNEA,#1,LL2;判断按键计数与否为1 CLRTR0;定期器中断关闭LL2:CJNEA,#3,LL;判断按键计数与否为3 MOVNUM2,#0;按键计数变量清0 SETBTR0;定期器中断打开LL: LCALLDISPLAY2;显示定期时间LL3: MOVA,NUM2 JZLL5;A为0时转移 JBS3,KK2;P3.4=1时转移LCALLDELAY5;延时5MSKK1: JBS3,KK2;P3.4=1时转移MOVC,S3 JNCKK1 ;P3.4=0时转移 MOVA,NUM2 CJNEA,#1,MM1;判断按键计数与否为1 INCHOUR2;小时定期变量加1 MOVA,HOUR2 CJNEA,#24,MM1;判断小时定期变量与否为24 MOVHOUR2,#0;小时定期变量为24则复位0 LCALLDISPLAY2;显示定期时间MM1: LCALLDISPLAY2;显示定期时间 MOVA,NUM2 CJNEA,#2,KK2;判断按键计数与否为2 INCMIN2;分钟定期变量加1 MOVA,MIN2 CJNEA,#60,KK2;分钟定期变量与否为60 MOVMIN2,#0;分钟定期变量为60则复位0 LCALLDISPLAY2;显示定期时间KK2: LCALLDISPLAY2;显示定期时间 JBS4,LL5;P3.5=1时转移LCALLDELAY5;延时5MSKK3: JBS4,LL5;P3.5=1时转移MOVC,S4 JNCKK3;P3.5=0时转移 MOVA,NUM2 CJNEA,#1,MM2;判断按键计数与否为1DECHOUR2;小时定期变量减1 MOVA,HOUR2 CJNEA,#0,MM2 MOVHOUR2,#24 LCALLDISPLAY2;显示定期时间MM2: LCALLDISPLAY2;显示定期时间 MOVA,NUM2 CJNEA,#2,LL5;判断按键计数与否为2 DECMIN2 MOVA,MIN2;分钟定期变量减1 CJNEA,#0,LL5 MOVMIN2,#60LL5:LCALLDISPLAY2;显示定期时间 RET;************KEYTIMEPROGRAM***************KEYTIME:;时间调节子程序L1: JBS2,L3;P3.2=1时转移LCALLDELAY5;延时5MSMSTOP2:JBS2,L3;P3.2=1时转移MOVC,S2 JNCMSTOP2;P3.2=0时转移 INCNUM1 MOVA,NUM1 CJNEA,#1,L2;判断按键计数与否为1 CLRTR0;定期器中断关闭L2: CJNEA,#4,L3;判断按键计数与否为4MOVNUM1,#0 SETBTR0;定期器中断打开L3: MOVA,NUM1 JNZFF;A不为0时转移 LJMPL5FF: JBS3,K2;P3.4=1时转移LCALLDELAY5;延时5MSK1: JBS3,K2;P3.4=1时转移MOVC,S3 JNCK1;P3.4=0时转移 MOVA,NUM1 CJNEA,#1,M1;判断按键计数与否为1 INCHOUR1;小时设立加1 MOVA,HOUR1 CJNEA,#24,M1 MOVHOUR1,#0 LCALLDISPLAY1;显示调节时间M1: LCALLDISPLAY1;显示调节时间 MOVA,NUM1 CJNEA,#2,M2;判断按键计数与否为2 INCMIN1;分钟设立加1 MOVA,MIN1 CJNEA,#60,M2 MOVMIN1,#0 LCALLDISPLAY1;显示调节时间M2: LCALLDISPLAY1;显示调节时间 MOVA,NUM1 CJNEA,#3,K2;判断按键计数与否为3 INCSEC1 MOVA,SEC1 CJNEA,#60,K2 MOVSEC1,#0 LCALLDISPLAY1;显示调节时间K2: LCALLDISPLAY1;显示调节时间 JBS4,L5;P3.5=1时转移LCALLDELAY5;延时5MSK3: JBS4,L5 ;P3.5=1时转移MOVC,S4 JNCK3 ;P3.5=0时转移 MOVA,NUM1 CJNEA,#1,M3;判断按键计数与否为1 DECHOUR1 MOVA,HOUR1 CJNEA,#0,M3 MOVHOUR1,#24 LCALLDISPLAY1;显示调节时间M3: LCALLDISPLAY1;显示调节时间 MOVA,NUM1 CJNEA,#2,M4;判断按键计数与否为2 DECMIN1 MOVA,MIN1 CJNEA,#0,M4 MOVMIN1,#60 LCALLDISPLAY1;显示调节时间M4: LCALLDISPLAY1;显示调节时间 MOVA,NUM1 CJNEA,#3,L5;判断按键计数与否为3 INCSEC1 MOVA,SEC1 CJNEA,#0,L5 MOVSEC1,#60L5:LCALLDISPLAY1;显示调节时间 RET;************TIMEPROPROGRAM***************TIMEPRO:MOVR7,#50;蜂鸣器报警子程序 CLRSPEAKER ;启动蜂鸣器报警 LCALLDELAYN;延时50MS SETBSPEAKER LCALLDELAYN CLRSPEAKER LCALLDELAYN SETBSPEAKER;************DISPLAY1PROGRAM***************DISPLAY1:;显示子程序1 PUSHACC;保护现场 MOVA,HOUR1;将时间十位和个位分别赋给显示变量MOVB,#10DIVABMOVA1,AMOVB1,BMOVA,MIN1MOVB,#10DIVABMOVC1,AMOVD1,B MOVA,SEC1MOVB,#10DIVABMOVE1,AMOVF1,B MOVDPTR,#TABLE ;指向7段编码表首地址 CLRDULA ;关闭段选锁存器锁存端 MOVA,A1 MOVCA,@A+DPTR MOVP0,A ;显示小时十位 SETBDULA ;打开段选锁存器锁存端 CLRDULA CLRWELA ;关闭位选锁存器锁存端 MOVP0,#0FEH ;选取第1位数码管 SETBWELA ;打开位选锁存器锁存端 CLRWELA LCALLDELAY5 CLRDULA ;关闭段选锁存器锁存端 MOVA,B1 MOVCA,@A+DPTR MOVP0,A ;显示小时个位 SETBDULA ;打开段选锁存器锁存端 CLRDULA CLRWELA ;关闭位选锁存器锁存端 MOVP0,#0FDH ;选取第2位数码管 SETBWELA ;打开位选锁存器锁存端 CLRWELA LCALLDELAY5 CLRDULA ;关闭段选锁存器锁存端 MOVA,C1 MOVCA,@A+DPTR MOVP0,A ;显示分钟十位 SETBDULA ;打开段选锁存器锁存端 CLRDULA CLRWELA ;关闭位选锁存器锁存端 MOVP0,#0FBH ;选取第3位数码管 SETBWELA ;打开位选锁存器锁存端 CLRWELA LCALLDELAY5 CLRDULA ;关闭段选锁存器锁存端 MOVA,D1 MOVCA,@A+DPTR MOVP0,A ;显示分钟个位 SETBDULA ;打开段选锁存器锁存端 CLRDULA CLRWELA ;关闭位选锁存器锁存端 MOVP0,#0F7H ;选取第4位数码管 SETBWELA ;打开位选锁存器锁存端 CLRWELA LCALLDELAY5 CLRDULA ;关闭段选锁存器锁存端 MOVA,E1 MOVCA,@A+DPTR MOVP0,A ;显示秒钟十位 SETBDULA ;打开段选锁存器锁存端 CLRDULA CLRWELA ;关闭位选锁存器锁存端 MOVP0,#0EFH ;选取第5位数码管 SETBWELA ;打开位选锁存器锁存端 CLRWELA LCALLDELAY5 CLRDULA ;关闭段选锁存器锁存端 MOVA,F1 MOVCA,@A+DPTR MOVP0,A ;显示秒钟个位 SETBDULA ;打开段选锁存器锁存端 CLRDULA CLRWELA ;关闭位选锁存器锁存端 MOVP0,#0DFH ;选取第6位数码管 SETBWELA ;打开位选锁存器锁存端 CLRWELA LCALLDELAY5 POPACC;恢复现场 RET;************DISPLAY2PROGRAM***************DISPLAY2:;显示子程序2 PUSHACC;保护现场 MOVA,HOUR2;将时间十位和个位分别赋给显示变量MOVB,#10DIVABMOVA2,AMOVB2,B MOVA,MIN2MOVB,#10DIVABMOVC2,AMOVD2,B MOVDPTR,#TABLE ;指向7段编码表首地址 CLRDULA ;关闭段选锁存器锁存端 MOVA,A2 MOVCA,@A+DPTR MOVP0,A ;显示定期时间小时十位 SETBDULA ;打开段选锁存器锁存端 CLRDULA CLRWELA ;关闭位选锁存器锁存端 MOVP0,#0FEH ;选取第1位数码管 SETBWELA ;打开位选锁存器锁存端 CLRWELA LCALLDELAY5 CLRDULA ;关闭段选锁存器锁存端 MOVA,B2 MOVCA,@A+DPTR MOVP0,A ;显示定期时间小时个位 SETBDULA ;打开段选锁存器锁存端 CLRDULA CLRWELA ;关闭位选锁存器锁存端 MOVP0,#0FDH ;选取第2位数码管 SETBWELA ;打开位选锁存器锁存端 CLRWELA LCALLDELAY5 CLRDULA ;关闭段选锁存器锁存端 MOVA,C2 MOVCA,@A+DPTR MOVP0,A ;显示定期时间分钟十位 SETBDULA ;打开段选锁存器锁存端 CLRDULA CLRWELA ;关闭位选锁存器锁存端 MOVP0,#0FBH ;选取第3位数码管 SETBWELA ;打开位选锁存器锁存端 CLRWELA LCALLDELAY5 CLRDULA ;关闭段选锁存器锁存端 MOVA,D2 MOVCA,@A+DPTR MOVP0,A ;显示定期时间分钟个位 SETBDULA ;打开段选锁存器锁存端 CLRDULA CLRWELA ;关闭位选锁存器锁存端 MOVP0,#0F7H ;选取第4位数码管 SETBWELA ;打开位选锁存器锁存端 CLRWELA LCALLDELAY5 POPACC;恢复现场 RET;************DELAYPROGRAM***************DELAYN:;Nms延时子程序,R7为参数NDL00:MOVR5,#05HDL11:MOVR6,#0DFHDL22:DJNZR6,DL22DJNZR5,DL11DJNZR7,DL00RETDELAY5:MOVR4,#14H;5ms延时子程序DL001:MOVR5,#0FFHDL111:DJNZR5,DL111DJNZR4,DL001RET;***********TIMEPROCESS**************TIME:PUSHACC;定期中断子程序PUSHPSW;保护现场MOVTH0,#0D8H;初值 MOVTL0,#0EFH INCCOUNT;计时变量加1 MOVA,COUNT CJNEA,#18,RET0;1秒到否 MOVCOUNT,#0 INCSEC1 MOVA,HOUR1;判断定期时间到否 MOVB,HOUR2 CJNEA,B,HTHT MOVA,MIN1 MOVB,MIN2 CJNEA,B,HTHT LCALLTIMEPRO;调用蜂鸣器报警子程序HTHT: MOVA,SEC1 CJNEA,#60,RET0;1分到否 MOVSEC1,#0 INCMIN1 MOVA,MIN1 CJNEA,#60,RET0;1小时到否 MOVMIN1,#0 INCHOUR1 MOVA,HOUR1 CJNEA,#24,RET0 MOVHOUR1,#0 RET0:POPPSW;恢复现场POPACCRETITABLE:DB3FH,06H,5BH,4FH,66H;七段码表DB6DH,7DH,07H,7FH,6FH END附录2:系统原理图附录三液晶显示实验目理解液晶工作原理熟悉12232F液晶引脚功能、工作时序及工作方式掌握如何依照时序图编写程序办法。实验内容用实验箱上提供12232F液晶模块,编写程序,静态显示“·······”字样。实验原理1.12232F是一种图形点阵液晶显示屏,它重要由行驱动器/列驱动器及122×32全点阵液晶显示屏构成.可完毕图形显示,也可以显示7×2个(16×16点阵)中文.与外部CPU接口可采用串行或并行方式控制。2.外部接口信号如下表4-1所示:表4-1:管脚号管脚名称LEVER管脚功能描述1GND0V电源地2VCC5.0V电源电压3VEE-液晶显示屏驱动电压4RSH/LD/I=“H”,表达DB7~DB0为显示数据D/I=“L”,表达DB7~DB0为显示指令数据5R/WH/LR/W=“H”,E=“H”,数据被读到DB7~DB0R/W=“L”,E=“H→L”,DB7~DB0数据被写到IR或DR6EH/L使能信号7DB0H/L数据线8DB1H/L数据线9DB2H/L数据线10DB3H/L数据线11DB4H/L数据线12DB5H/L数据线13DB6H/L数据线14DB7H/L数据线15LED+5V背光源电压16LED-0V背光源电源地3.12232F提供两套控制命令,基本指令和扩充指令如下:指令表4-2:(RE=1:基本指令)指令指令码功能RSR/WD7D6D5D4D3D2D1D0清除显示0000000001地址归位000000001X显示状态开/关0000001DCBD=1:整体显示ONC=1:游标ONB=1:游标位置ON进入点设定00000001I/DS指定在数据读取与写入时,设定游标移动方向及指定显示移位游标或显示移位控制000001S/CR/LXX设定游标移动与显示移位控制位;这个指令不变化DDRAM内容功能设定00001DLX0REXXDL=1(必要设为1)RE=1:扩充指令操作RE=0:基本指令操作设定CGRAM地址0001AC5AC4AC3AC2AC1AC0设定DDRAM地址到地址计数器设定DDRAM地址001AC6AC5AC4AC3AC2AC1AC0设定CGRAM地址到地址计数器读取忙标志和地址01BFAC6AC5AC4AC3AC2AC1AC0读取忙标志(BF)可以确认内部动作与否完毕,同步可以读出地址计数器(AC)值写数据到RAM10数据将数据D7~D0写入到内部RAM(DDRAM/CGRAM/IRAM/GRAM)读出RAM值11数据从内部RAM读取数据D7~D0(DDRAM/CGRAM/IRAM/GRAM)指令表4-3:(RE=0:扩充指令)指令指令码功能RSR/WD7D6D5D4D3D2D1D0待命模式0000000001进入待命模式,执行其她指令都棵终结待命模式000000001SR反白选取00000001R1R0选取4行中任一行作反白显示,并可决定反白与否睡眠模式0000001SLXXSL=0:进入睡眠模式SL=1:脱离睡眠模式点距书面移位控制000001OALRL1L0OA=1:选取单行移位OA=0:所有4行一起移位LR=1:点距右移LR=0:点距左移L1,L0:选取移位行扩充功能设定00001CLX1REGGPCL=1(必要设为1)RE=1:扩充指令操作RE=0:基本指令操作G=0:(必要设为0)GP=0:(必要设为0)设定IRAM地址或是卷动地址0001AC5AC4AC3AC2AC1AC0SR=1:AC5~AC0为卷动地址SR=0:AC5~AC0为ICONRAM地址设定绘图RAM地址001AC6AC5AC4AC3AC2AC1AC0本版本不提供此功能04.并行时序图:图4-1写数据图4-2读数据5.12232F与单片机连接电路图实验环节1.将三档开关LCD拨到最下(指向89S51),其他开关都拨到中间,插上USB下载线,打开电源。2.打开KEIL软件,在所建项目文献中输入源程序,进行编译,编译无误后,将生成.HEX文献用Proisp下载到单片机中。3.观测实验板上液晶显示内容,看与否符合实验规定。如果未到达实验规定,修改程序,重复2操作,直至达到实验规定。程序代码#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintucharcodetable[]="-12-30";ucharcodetable1[]="14:52:00";ucharcodetable2[]="星期一";ucharcodetable3[]="陈莹";sbitlcden=P2^4; sbitlcdrs=P2^2;sbitlcdrw=P2^3;//sbitdula=P2^6;//sbitwela=P2^7;sbits1=P3^0;sbits2=P3^1;sbits3=P3^2;sbitrd=P3^7;ucharshi=10;ucharfen=9;ucharcount,shi,fen,miao,add,s1num=0;ucharnum;voiddelay(uintz){ uintx,y; for(x=z;x>0;x--) for(y

温馨提示

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

评论

0/150

提交评论