单片机 时间显示论文及程序.docx
《单片机 时间显示论文及程序.docx》由会员分享,可在线阅读,更多相关《单片机 时间显示论文及程序.docx(18页珍藏版)》请在冰豆网上搜索。
单片机时间显示论文及程序
基于单片机的最小系统LED时钟显示
【摘要】本设计是一个基于AT89C51系列单片机的LED时钟显示,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个显示时,分,秒的LED装置。
该音乐盒主要由开关电路、中断电路、定时电路以及LED显示电路。
使用三个开关来控制,一个用来开始调时间,一个用来时间的加,一个用来把时间向上调。
本LED显示三个时间状态,即:
时,分,秒。
本设计利用KEIL编程软件对LED显示源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间。
【关键字】LED;AT89C51单片机;KEIL;PROTEUS;时间调制开关
序言....................................................................................................3
1概述..................................................................................................4
1.2设计方案.......................................................................................5
1.3设计内容.......................................................................................5
2主要软件介绍..................................................................................5
2.1PROTEUS软件简介.....................................................................5
2.2KEIL简介......................................................................................6
3.硬件设计.........................................................................................7
3.1AT89C51简介...............................................................................7
3.2LED显示电路设计与原理.........................................................10
4.系统总体方案绍.........................................10
5.汇编源程序...................................................................................11
6电路原理图...................................................................................19
6.1LED电路原理图.........................................................................19
6.2LED电路PCB板.................................................................20
6.3PCB顶层..............................................................................20
6.4PCB电路底层......................................................................21
6.5最小系统原理图..................................................................21
6.6最小系统PCB版.................................................................22
7实验电路运行图....................................................................22
8参考文献................................................................................23
序言:
1世纪,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。
单片机应用的重要意义还在于它从根本上改变了传统的控制系统设计思想和设计方法。
从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。
这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,时间、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
随着科学技术的进步和社会的发展,人类所接触的信息也在不断增加并且日益复杂。
面对浩如烟海的信息,人们已经能够利用计算机等工具高效准确地对之进行处理,但要想将处理完的信息及时,清晰地传递给别人,还必须通过寻求更加卓越的显示技术来实现。
单片机技术与液晶显示技术的结合,使信息传输交流向着智能可视化方向迅速发展。
随着人类社会的发展,人们的时间观念越来越强,对于时间器件也越来越重视,这次用最小系统完成时间的显示及叠加。
1概述
本设计是以8051芯片的电路为基础,外部加上LED显示设备,以此来实现时间显示及调试的硬件电路,通过软件程序来控制单片机内部的定时器使LED显示时间。
用户可以按照自己的喜好选择设置时间初始值存入单片机的存储器中。
对于不同型号的单片机只需要相应的改变一下地址即可。
该软、硬件系统具有很好的通用性,很高的实际使用价值,为广大的单片机爱好者提供了很好的借鉴。
1.2设计方案
设计一个基于AT89C51系列单片机的时间显示电路,利用开关来控制LED显示时间的调节。
1.3研究内容
1)电路有两种工作模式:
正常工作模式和调节时间模式。
调节时间模式:
当发现时间有误,开始调节时间。
2)按下开关1进入调节时间模式。
3)按下开关2进入时间向上调节模式。
4)按下开关3进入时间向下调节模式。
2.主要软件介绍
本设计利用KEIL编程软件对源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,两种软件的简介如下:
2.1PROTEUS软件简介
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
2.2KEIL简介
单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。
机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。
运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。
掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
3.硬件设计
3.1 AT89C51简介
在了解原理之前,首先让我们思考一个问题,什么是单片机,单片机有什么用?
这是一个有意思的问题,因为任何人都不能给出一个被大家都认可的概念,那到底什么是单片机呢?
普遍来说,单片机又称单片微控制器,是在一块芯片中集成了CPU(中央处理器)、RAM(数据存储器)、ROM(程序存储器)、定时器/计数器和多种功能的I/O(输入/输出)接口等一台计算机所需要的基本功能部件,从而可以完成复杂的运算、逻辑控制、通信等功能。
在这里,我们没必要去找到明确的概念来解析什么是单片机,特别在使用C语言编写程序的时,不用太多的去了解单片机的内部结构以及运行原理等。
从应用的角度来说,通过从简单的程序入手,慢慢的熟悉然后逐步深入精通单片机。
AT89C51
我们先了解下89C51单片机的在最小系统中要用的相关存储器。
(1)89C51的程序存储器
89C51具有64KB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。
89C51片内有64KB的程序存储单元,其地址为0000H--0FFFH,这些程序存储单元用于存放中断向量,用户不能访问。
在单片机启动复位后,程序计数的内容为0000H,所以系统将从0000H单元开始执行程序。
但在程序存储中有些特殊的单元,这在使用中应加以注意:
其中,一组特殊单元是0000H--0002H,系统复位后,PC为0000H,单片机从0000H单元开始执行程序,如果程序不是从0000H开始,则应在这三个单元中存放一条无条件转移指令,让CPU直接去执行用户指定的程序。
另一组特殊单元是0003H--002AH,这40个单元各有用途,它们被均匀地分为五段,它们的的定义如下:
0003H--000AH外部中断0中断地址区。
000BH--0012H定时/计数器T0中断地址区。
0013H--001AH外部中断T1中断地址区。
001BH--0022H定时/计数器1中断地址区。
0023H--002AH串行口中断地址区。
以上的40个单元是专门用于存放中断处理程序地址单元,中断响应后,按中断的类型,自动转到各自的中断区去执行程序。
因此以上地址单元不能用于存放程序的其他内容,只能存放中断服务程序。
但是通常情况下,每段只有8个地址单元是存不下完整的中断服务程序的,因而一般也在中断响应的地址安放一条无条件转移指令,指向程序存储器的其他真正存放中断服务的空间去执行,这样中断响应后,CPU读到这条转移指令,便转向其他地方继续去执行中断服务程序。
数据存储器
8051内部RAM共有256个单元,它们是用于存放执行的中间结果和过程的程序数据存储器均可读写,部分单元还可以位寻址。
这256个单元共分为两部分。
其一是地址从00--7FH单元(共128字节)为用户RAM。
从80H--FFH地址单元(也是128
字节)为特殊寄存器SFR单元。
在00H--1FH共32个单元中被均匀的分为四块,每块包含八个8位寄存器,均以R0--R7来命名,称这些寄存器为通用寄存器。
内部RAM的20H--2FH单元为位寻址区,既可作为一般单元用字节寻址,也可对它们的位进行寻址。
位寻址共有16字节,128位,位地址为00H--7FH。
3.2LED显示电路设计与原理
LED
LED显示电路是由6个LED发光二极管组成,连接方式为共阴极,LED接到单片机的P1口,若为低电平,取反一次即可使LED亮起。
发光二极管的亮、灭由内部程序控制,6个LED发光二极管分别对应不同的开关程序,所以LED会随着时间的变化按规律而变化。
5.系统总体方案介绍
AT89C51
4.2系统组成框图
复位电路
LED显示电路
晶振电路
系统组成框图
4.3时间显示功能结构图
开始
调节时间
时间正确
功能结构图
5.汇编程序
/*********************************
功能:
显示时间
时间:
2013-6-15
作者:
刘孟媛
班级:
物电11级励志班
学院:
宜宾学院
*************************************/
HOUREQU38H;小时寄存初值
MINEQU39H;分钟寄存初值
SECEQU3AH;秒寄存初值
TEMPEQU3BH
COUNTEQU3CH
K1BITP0.0;开关1
K2BITP0.1;开关2
K3BITP0.2;开关3
ORG0000H
AJMPMAIN
ORG000BH
LJMPTIMER
ORG0100H;初始化操作
MAIN:
MOVHOUR,#15;预置小时显示数
MOVMIN,#53;预置分显示数
MOVSEC,#56;预置秒显示数
MOVTMOD,#01H;设置定时T0
MOVTL0,#0DCH;定时50ms
MOVTH0,#0
SETBTR0;开定时器0
SETBEA;开总中断
SETBET0;开定时器0中断
MAIN1:
LCALLKEYPLAY;调用按键检测
LCALLFEN;分离时分秒,为十位,个位
LCALLDISPLAY;显示程序
SJMPMAIN1
/**********************************************/
;功能:
按键检测
KEYPLAY:
MOVA,P0
CPLA
JZRETN
MOVR7,#4
LCALLDELAY
JNBK1,KEY1;判断K1
JNBK2,KEY2;判断K2
JNBK3,KEY3;判断K3
SJMPRETN;
/********调节键按下******************/
KEY1:
INCCOUNT;
MOVA,COUNT
CLRTR0;
CJNEA,#4,RETN;
MOVCOUNT,#0;
SETBTR0
SJMPRETN
/**********"+"键按下*****************/
KEY2:
MOVA,COUNT;调制时间,向上加
CJNEA,#1,W1;判断秒
INCSEC;调制时间秒
MOVR5,SEC
CJNER5,#60,WW1;如果秒超过秒清零
WW1:
JCW1
MOVSEC,#0;;
W1:
CJNEA,#2,W2;
INCMIN;
MOVR6,MIN;判断秒
CJNER6,#60,WW2;如果分超过分清零
WW2:
JCW2
MOVMIN,#0;
W2:
CJNEA,#3,W3;
INCHOUR;调制时
MOVR7,HOUR;
CJNER7,#24,WW3;如果时超过时清零
WW3:
JCW3
MOVHOUR,#0;
W3:
SJMPRETN
/*********"-"号键按下***************/
KEY3:
MOVA,COUNT;时间向下调
CJNEA,#1,Y1;判断是否调秒
DECSEC;开始调秒
MOVR5,SEC;把秒暂存
CJNER5,#255,Y1;
MOVSEC,#59;把秒向下减1
Y1:
CJNEA,#2,Y2;判断是否调分
DECMIN;
MOVR5,MIN;把分暂存
CJNER5,#255,Y2;
MOVMIN,#59;给时间分赋最大值
Y2:
CJNEA,#3,RETN;判断是否调小时
DECHOUR;把小时向下调
MOVR5,HOUR;暂存时间小时
CJNER5,#255,RETN
MOVMIN,#23;时间小时的最大值
RETN:
RET
;功能:
显示6位
;入口参数:
30H为首地址的
;使用寄存器:
DPTR,A,R0,R3,R4,R5,R6,R7
DISPLAY:
MOVDPTR,#TAB;
MOVR4,#20H;
MOVR3,#6;
MOVR0,#30H;
BB:
MOVP2,R4
MOVA,R4
RRA
MOVR4,A
MOVA,@R0
MOVCA,@A+DPTR
CPLA
MOVP1,A
MOVR7,#2
LCALLDELAY
INCR0
DJNZR3,BB
RET
;功能:
变量分离
;入口参数:
SEC,MIN,HOUR
;返回参数:
30h-35h内容
FEN:
MOVA,SEC;分离时间秒
MOVB,#10
DIVAB
MOV30H,B
MOV31H,A;
MOVA,MIN;分离时间分
MOVB,#10
DIVAB
MOV32H,B
MOV33H,A
MOVA,HOUR;分离时间小时
MOVB,#10
DIVAB
MOV34H,B
MOV35H,A
RET
;功能:
延时2ms
DELAY:
MOVR6,#50
LOP1:
MOVR5,#20
DJNZR5,$
DJNZR6,LOP1
DJNZR7,DELAY
RET
;定时器0定时1s程序
TIMER:
MOVTL0,#09EH;定时50ms
MOVTH0,#058H
INCTEMP
MOVA,TEMP
CJNEA,#20,RETEND
MOVTEMP,#0
INCSEC
MOVA,SEC
CJNEA,#60,RETEND
INCMIN
MOVSEC,#0
MOVA,MIN
CJNEA,#60,RETEND
INCHOUR
MOVMIN,#0
MOVA,HOUR
CJNEA,#24,RETEND
MOVHOUR,#0
RETEND:
RETI
TAB:
DB3fH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,00,0FFH
END
6.电路原理图
6.1LED电路原理图
6.2LED电路PCB板
6.3PCB顶层
6.4PCB电路底层
6.5最小系统原理图
6.6最小系统PCB版
6.7最小系统PCB电路
7实验电路运行图
7.1
7.2
最后感谢xxx老师在这一学期的悉心教导,让我重新认识了单片机这门课,并掌握了单片机的编程及应用。
参考文献
[1]李建忠.单片机原理及应用[M],西安电子科技大学出版社2008.2.[2]黄智伟.全国大学生电子设计竞赛系统设计[M],北京:
北京航空航天大学出版社,2006.6.
[3]黄智伟.凌阳单片机课程设计指导[M],北京:
北京航空航天大学出版社,2006.11.
[4]李广弟,朱月秀,王秀山.单片机基础[M],北京:
北京航空航天大学出版社,2001.7.
[5]赵曙光,郭万有,杨颂华.可编程逻辑器件原理开发与应用[M],西安:
西安电子科技大学,2000.
[6]候伯亨.VHDL硬件描述语言与数字逻辑电路设计[M],西安:
西安电子科技大学出版社,1999.
[7]康华光.模拟电子技术基础(第四版)[M],武汉:
华中理工大学出版社,1999.