单片机开发 课程设计 数字钟.docx
- 文档编号:4353630
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:26
- 大小:685.52KB
单片机开发 课程设计 数字钟.docx
《单片机开发 课程设计 数字钟.docx》由会员分享,可在线阅读,更多相关《单片机开发 课程设计 数字钟.docx(26页珍藏版)》请在冰豆网上搜索。
单片机开发课程设计数字钟
广州大学松田学院
课程设计说明书
题目基于AT89C52单片机的数字电子钟
姓名李廷顺
专业电子信息工程
班级06计控
系(部信息科学与工程
指导教师汪全
2009年6月6日
广州大学松田学院
单片机课程设计、课程(学年论文任务书
课程编号课内/外周数(学时数1周指导地点1-201集中□分散□.
注:
本表打印,一式三份,学生个人、系(部(归档、教务处(备案各一份
基于AT89C51单片机的数字电子钟
摘要
本设计是基于单片机的定时闹钟设计。
单片机是在一块半导体芯片上集成了CPU、存储器以及输入和输出接口电路的微型计算机;其集成度高、功能强、通用性好,特别是它具有体积小、重量轻、能耗低、价格便宜、抗扰、能力强和使用方便等特点。
它不仅仅是一项技术性上的突破,同时也是对能源方面的有效节约与有效利用,因此深受国家有关技术部门和能源部门的重视和支持。
其组合而成的配件产品在日常生活的使用过程中非常方便、简单且实用,深受着广大消费者的喜爱,从而使单片机技术在社会中得到了广泛的发展和应用。
目前,已成为测量控制应用系统中的优选机种和新电子产品的关键部件。
特别是20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快,推广率高,市场利润率高。
而51单片机是各单片机中最为典型和最有代表性的一种。
本次设计的定时闹钟在硬件方面就采用了AT89C52芯片,用6位LED数码管来进行显示。
LED用P0口进行驱动,采用的是动态扫描显示,能够比较准确显示时时.分分.秒秒。
通过P2.4功能按键可以实现对时钟和闹钟时间的修改和定时,P2.5功能按键实现闹钟的开关,定时时间到喇叭可以发出报警声并自动关闭。
在软件方面采用汇编语言编程。
整个定时闹钟系统能完成时间的显示,调时和定时闹钟、闹钟开关,复位等功能,并经过系统仿真后得到了正确的结果。
Key:
XXXXX
1概述(1
1.1设计意义(1
1.2设计任务(1
1.3设计系统的主要功能(1
2系统总体方案及硬件设计(2
2.1系统总体方案(2
2.2系统设计方框图(2
2.3硬件设计(2
2.3.1芯片:
AT89C52(2
2.3.2蜂鸣器:
BUZZER(5
2.3.3时钟电路(5
2.3.4显示器模块的设计(6
3软件设计(9
3.1程序流程图(9
3.2系统的软件构成及功能(10
3.2.1显示时间,闹钟时间的设置程序(10
3.2.2中断程序设计............................................................错误!
未定义书签。
3.2.3定时时间的相应及关闭............................................错误!
未定义书签。
4课程设计体会(12
参考文献(12
附1:
系统原理图......................................................................错误!
未定义书签。
附2:
源程序代码(14
1概述
1.1设计目的
本设计是一个定时闹钟,它使用单片的40引脚单片机完成闹钟的全部功能。
设计目的是为了学习和巩固单片机知识,使对已学过的基础知识能有更深入的理解,学会独立思考、独立思考、独立工作,以及提高对所学应用基本理论分析和解决实际问题的能力。
1.2设计任务
本文设计的定时闹钟采用AT89C52芯片,用汇编语言进行编程,时、分、秒用6位LED数码管显示。
在电路中通过P2.4按键进行定时和调时,P2.5按键决定闹钟的开关,定时时间到通过喇叭发出报警声并在一定时间后自动关闭。
1.3设计系统的主要功能
·能显示时时.分分.秒秒,以及闹钟开关标识
·能够设置修改时钟时间、修改闹钟时间。
·修改时间时相应位置以闪烁作为标志
·开闹钟时,到定时时间能发出报警声并自动关闭或手动关闭。
2系统总体方案及硬件设计
2.1系统总体方案
1由于要显示数字时间,所以需要6位数码管。
2时间的定时用时钟电路,修改时间和定时用手动按键控制,报警声通过喇叭发出。
3AT89C51单片机加上外围器件(数字显示器7SEG-MPX6-CC-BLUE,RESPACK-8排阻和BUZZER蜂鸣器和应用程序(STC-ISPV38A软件和KeiluVision2编译软件,构成相应的应用系统。
2.2系统设计方框图
图1
2.3硬件设计
2.3.1芯片:
AT89C52
AT89C52是一种带16K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory的低电压,可稳定地工作于5V的电源下.该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C52是一种高效微控制器.
AT89C52管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当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口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL这是由于上拉的缘故。
P3口也可作为AT89C52的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口
P3.1TXD(串行输出口
P3.2/INT0(外部中断0
P3.3/INT1(外部中断1
P3.4T0(记时器0外部输入
P3.5T1(记时器1外部输入
P3.6/WR(外部数据存储器写选通
P3.7/RD(外部数据存储器读选通
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH,不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
如图2所示
图2
2.3.2蜂鸣器:
BUZZER
由P3.3口控制蜂鸣器,使其定时时间到能发出报警声。
如图3所示Array
图3
2.3.3时钟电路
单片机的时钟产生方法有两种:
内部时钟方式和外部时钟方式。
本系统中AT89C51单片机采用内部时钟方式。
最常用的内部时钟方式是采用外接晶体和电容组成的并联谐振回路。
振荡晶体可在1.2MHz~12MHz之间。
电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小和振荡电路起振速度有少许影响,一
般可在20pF~100pF之间取值。
AT98C51单片机的时钟电路。
如图4所示
图4
2.3.4显示模块的设计
利用八位LED数码管的1-8引脚连接AT89C52单片机P1.0–P1.7接口,其他8个引脚分别与AT89C51单片机的P0.0-P0.7和共阳极管RESPACK-8排阻的2-9引脚分别连接。
单片机中通常使用7段LED,LED是发光二极管显示器的缩写。
LED显示器由于结构简单,价格便宜,体积小,亮度高,电压低,可靠性高,寿命长,响应速度快,颜色鲜艳,配置灵活,与单片机接口方便而得到广泛应用。
LED显示器是由若干个发光二极管组成显示字段的显示部件,当发光二极管导通时,相应的一个点或一个笔划发光,控制不同组合的二极管导通,就能显示出各种字符。
LED显示器有多种形式,如:
“米”字型显示器,点阵显示器和七段数码显示器等,在单片机系统中使用最多的是七段数码显示器。
LED有共阴极和共阳极两种。
如图5所示。
二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V的电压。
一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段a~g,另一个小数点为dp发光二极管。
当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。
为了保护各段LED不被损坏,需外加限流电阻。
图5LED数码管结构原理图
众所周知,LED显示数码管通常由硬件7段译码集成电路,完成从数字到显示码的译码驱动。
本系统采用软件译码,以减小体积,降低成本和功耗,软件译
码的另一优势还在于比硬件译码有更大的灵活性。
所谓软件译码,即由单片机软
件完成从数字到显示码的转换。
从LED数码管结构原理可知,为了显示字符,要为LED显示数码管提供显示段码,组成一个“8”字形字符的7段,再加上1个小数点位,共计8段,因此提供给LED数码管的显示段码为1个字节。
各段码位
与显示段的对应关系如表1。
表1各段码位的对应关系
需说明的是当用数据口连接LED数码管a~dp引脚时,不同的连接方法,各段码位与显示段有不同的对应关系。
通常数据口的D0位与a段连接,D1位与b段连接,……D7位与dp段连接,如表1所示,表2为用于LED数码管显示的十六进制数和空白字符与P的显示段码。
表2LED显示段码
注:
(1本表所列各字符的显示段码均为小数点不亮的情况。
(2“空白”字符即没有任何显示。
根据AT89C2051单片机灌电流能力强,拉电流能力弱的特点,我们选用共阳数码管。
将AT89C2051的P1.0~P1.7分别与共阳数码管的a~g及dp相连,高电平的位对应的LED数码管的段暗,低电平的位对应的LED数码管的段亮,这样,当P0口输出不同的段码,就可以控制数码管显示不同的字符。
例如:
当P0口输出的段码为11000000,数码管显示的字符为0。
数码管显示器有二种工作方式,即静态显示方式和动态扫描显示方式。
为节省端口及降低功耗,本系统采用动态扫描显示方式。
动态扫描显示方式需解决多位LED数码管的“段控”和“位控”问题,本电路的“段控”(即要显示的段码的控制通过P0口实现;而每一位的公共端,即LED数码管的“位控”,则由P3口控制。
这种连接方式由于多位字段线连在一起,因此,要想显示不同的内容,必然要采取轮流显示的方式,即在某一瞬间,只让其中的某一位的字位线处于选通状态,其它各位的字位线处于断开状态,同时字段线上输出这一位相应要显示字符的字段码。
在这一瞬时,只有这一位在显示,其他几位则暗。
在本系统中,字位线的选通与否是通过PNP三极管的导通与截止来控制,即三极管处于“开关”状态。
系统的时分显示部件由6只7段共阳LED数码管构成。
值得一提的是,在设计中需要实现时,分,秒之间的间隔,以及闹钟开关的标识,故在相应的位置均
加上了dp显示。
如图6所示
图6
3软件设计
主程序流程图(图7
中断子程序流程图(图8
3.2系统的软件构成及功能
本系统的软件系统在程序设计过程中,加入了时间调整位闪烁标识和闹钟开关。
程序优化解决了按键时LED显示的不稳定,以及在定闹时间到达后蜂鸣器警报时LED不显示的问题。
根据设计要求,定时闹钟程序可分为以下几个模块:
3.2.1显示时间,闹钟时间的设置
主程序的功能是完成系统的初始化,调用时间显示子程序,将时间的时分秒发送显示,当按下P2.4大于1秒时,相应的时钟/闹钟调整位闪烁及退出,当按下P2.4小于1秒时,时钟显示子程序跳到闹钟显示子程序及时针,分针位加一3.2.2中断程序设计
中断程序(如图8所示完成时间计数,时间调整,等功能。
中断采用AT89C52内部T0中断实现,定时时间为50ms,当时间到达50ms×20,即1秒钟时,秒计数增加1,1分钟时,分计数增加1,到达1小时,则时计数增加1,并将秒、分、时的个位、十位放入显示缓冲器。
当秒、分、时计数缓冲器分别到达60sec、
60min、24h时,则对它们清零,以便从新计数。
3.2.3定时时间的响应及关闭
在时间显示子程序调用显示后调用闹钟服务子程序,检测闹钟开关状态以及是否到达定闹时间,若到达,则开蜂鸣器,调用5s延时子程序后自动关闭蜂鸣器
5课程设计体会
课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在,作为二十一世纪的大学生来说掌握单片机的开发技术是十分重要的。
通过本次单片机原理及应用课程设计使我充分认认到了课程设计的理要性和必要性,本次设计使我对已学过的基础知识有了更深入的理解,学会了独立思考、独立工作以及对应用所学基本理论分析和解决实际问题的能力有了很大的提高。
另外,本次设计使我的实际操作技能得到了训练,同时也进一步培养了我严谨的科学作风。
回顾起此次单片机课程设计,从选题到定稿,从理论到实践,在整整一星期的日子里,可以说得是苦多于甜,但是从中却学到很多很多的的东西,不但巩固了以前所学过的知识,而且对单片机原理课外知识也的到了拓展。
做的过程中,开始的确遇到了不少困难的问题,比如说芯片管脚不熟悉怎么放置,对单片机汇编语言掌握得不好等等,同时在这过程中也发现了自己的许多不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
通过单片机课程设计之后,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我们还学会了如何去培养创新精神和严谨的科学作风,从而不断地战胜自己,超越自己。
更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。
参考文献
[1].李朝青.单片机原理及接口技术(修订版.北京:
北京航空航天大学出版社,1998
[2].杨欣.51单片机应用从零开始.北京:
清华大学出版社,2008
[3].何立民.单片机应用技术大全.北京:
北京航空航天大学出版社,1994
[4].谭浩强.单片机课程设计.北京:
清华大学出版社,1989
[5].余发山主编,单片机原理及应用技术,中国矿业大学出版社2003.12
参考电路原理图
数字电子钟参考程序清单;;;;;;;;;;;;;;;;;;;;;;;;;
;;AT89C52时钟定闹程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;定时器T0、T1溢出周期为50MS,T0为秒计数用,T1为调整时闪烁用,
;P2.4为调整按钮,P0口为段显输出口,P1口为位显输出口,采用共阳显示管。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;部分寄存器定义说明:
;00H时钟调分闪动标志
;01H时钟调时闪动标志70H-75H位显缓存寄存器
;02H闪烁标志76H-79H时钟显示寄存器
;03H闹钟识别标志7AH熄灭符寄存器
;04H闹钟调分闪动标志6AH-6FH时钟显示寄存器
;05H闹钟调时闪动标志;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG0000H;程序执行开始地址
LJMPSTART;跳到标号START执行
ORG000BH;定时器T0中断程序入口
LJMPINTT0;跳至INTTO执行
ORG001BH;定时器T1中断程序入口
LJMPINTT1;跳至INTT1执行
ORG0100H;闹钟执行开始地址
LJMPALARM
;;;;;;;;;;;;;;
;;主程序;;
;;;;;;;;;;;;;;
START:
MOV70H,#05H;初始化时钟秒针个位
MOV71H,#05H;初始化时钟秒针十位
MOV76H,#08H;初始化时钟分针个位
MOV77H,#05H;初始化时钟分针十位
MOV78H,#03H;初始化时钟时针个位
MOV79H,#02H;初始化时钟时针十位
MOV7AH,#0AH;放入第十位——"熄灭符"数据,使闪烁熄灭时不显示任何数据
MOV6AH,#00H;初始化闹钟秒针个位
MOV6BH,#00H;初始化闹钟秒针十位
MOV6CH,#09H;初始化闹钟分针个位
MOV6DH,#05H;初始化闹钟分针十位
MOV6EH,#03H;初始化闹钟时针个位
MOV6FH,#02H;初始化闹钟时针十位
MOVTMOD,#11H;设T0、T1为16位定时器
MOVTCON,#00000101B;开T0、T1中断
MOVTL0,#0B0H;50MS定时初值(T0计时用
MOVTH0,#3CH;50MS定时初值
MOVTL1,#0B0H;50MS定时初值(T1闪烁定时用
MOVTH1,#3CH;50MS定时初值
SETBEA;总中断开放
SETBET0;允许T0中断
SETBTR0;开启T0定时器
SETBP3.3;关蜂鸣器
MOVR4,#14H;1秒定时用初值(50MS×20
START1:
LCALLDISPLAY;调用显示子程序
LCALLALARM;调用检测是否开闹钟
JNBP2.4,SETMM1;P2.4口为0时转时间调整程序
SJMPSTART1;P2.4口为1时跳回START1
SETMM1:
LJMPSETMM;转到时间调整程序SETMM
;;;;;;;;;;;;;;;;;;;;;;
;;闹钟服务子程序程序;;;;;;;;;;;;;;;;;;;;;;;;
ALARM:
LJMPALARMKG;检测闹钟开关状态
ALARM_BJ:
MOVA,6FH;检测是否到闹钟时间
CJNEA,79H,A_FH
MOVA,6EH
CJNEA,78H,A_FH
MOVA,6DH
CJNEA,77H,A_FH
MOVA,6CH
CJNEA,76H,A_FH
MOVA,#0
CJNEA,71H,A_FH
MOVA,#0
CJNEA,70H,A_FH
MOV60H,#5;蜂鸣器定时5s
CLRP3.3;开蜂鸣器
A_FH1:
LCALLDL_BEEP;调用蜂鸣器延时子程序
JBP2.5,A_FH2
DJNZ60H,A_FH1;若还没到5s,则继续蜂鸣
A_FH2:
SETBP3.3;关蜂鸣器
A_FH:
RET
;;;;;;;闹钟开关标志;;;;;;;;;
ALARMKG:
;检测蜂鸣器开关状态
JNBP2.5,KG
AJMPA_FH2
KG:
MOVDPTR,#TAB;蜂鸣器开则加dp标志
MOVA,#0AH
MOVCA,@A+DPTR
CLRACC.7
MOVP0,A
MOVp1,#11101111B
LCALLDL1MS
MOVp1,#0FFH
AJMPALARM_BJ
;;;;;;;;;;;;;;;;;;;
;;1秒计时子程序;;;T0中断服务程序;;;;;;;;;;;;;;;;;;;
INTT0:
PUSHACC;累加器入栈保护
PUSHPSW;状态字入栈保护
CLRET0;关T0中断允许
CLRTR0;关闭定时器T0
MOVA,#0B0H;中断响应时间同步修正
ADDA,TL0;低8位初值修正
MOVTL0,A;重装初值(低8位修正值
MOVA,#3CH;高8位初值修正
ADDCA,TH0;
MOVTH0,A;重装初值(高8位修正值
SETBTR0;开启定时器T0
DJNZR4,OUTT0;20次中断未到中断退出
ADDSS:
MOVR4,#14H;20次中断到(1秒重赋初值
MOVR0,#71H;指向秒计时单元(70H-71H
ACALLADD1;调用加1程序(加1秒操作
MOVA,R3;秒数据放入A(R3为2位十进制数组合
CLRC;清进位标志(作为是否满60的标志
CJNEA,#60H,ADDMM;若满60,则转到分加一程序
ADDMM:
JCOUTT0;小于60秒时中断退出,继续计数
ACALLCLR0;大于或等于60秒时对秒计时单元清0
MOVR0,#77H;指向分计时单元(76H-77H
ACALLADD1;分计时单元加1分钟
MOVA,R3;分数据放入A
CLRC;清进位标志(作为是否满60的标志
CJNEA,#60H,ADDHH;
ADDHH:
JCOUTT0;小于60分时中断退出,继续计数
ACALLCLR0;大于或等于60分时分计时单元清0
MOVR0,#79H;指向小时计时单元(78H-79H
ACALLADD1;小时计时单元加1小时
MOVA,R3;时数据放入A
CLRC;清进位标志(作为是否满24的标志
CJNEA,#24H,HOUR;
HOUR:
JCOUTT0;小于24小时中断退出
ACALLCLR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机开发 课程设计 数字钟 单片机 开发 数字