单片机60秒倒计时Word文件下载.docx
- 文档编号:19080256
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:16
- 大小:937.88KB
单片机60秒倒计时Word文件下载.docx
《单片机60秒倒计时Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机60秒倒计时Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
(1)用单片机AT89C51的定时器实现60s倒计时。
本例中用两位数码管静态显示倒计时秒值。
(2)用PROTEUS软件设计,仿真基于AT89c51单片机60s倒计时实验。
2.2设计的目标
通过课程设计,使自己深刻理解并掌握基本概念,掌握单片机的基本应用程序设计及综合应用程序设计的方法。
通过做一个综合性训练题目,达到对内容的消化、理解并提高解决问题的能力的目的。
2.3设计的内容
本设计由硬件设计和软件设计两部分组成,硬件设计主要包括单片机芯片选择,数码管选择及晶振,电容,电阻等元器件的选择及其参数的确定;
软件设计主要是实现60秒倒计时程序的编写,包括利用中断实现1秒的定时及60秒的倒计时。
具体设计:
通过AT89C51型号单片机,由P1和P2两组I/O引脚分别控制两个7SEG–COM–ANODE型号数码管,分十位控制和个位控制,达到显示60秒倒计时的目的。
通过复位电路,在仿真过程中点击开关实现60复位。
2.3.1AT89C51单片机介绍
AT89C51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
其工作电压在4.5-5V,一般我们选用+5V电压。
外形及引脚排列如图2所示
图1:
89C51的核心电路框图
AT89C51的主要特性:
·
与MCS-51兼容
·
4K字节可编程闪烁存储器
寿命:
1000写/擦循环
数据保留时间:
10年
全静态工作:
0Hz-24MHz
三级程序存储器锁定
128×
8位内部RAM
32可编程I/O线
两个16位定时器/计数器
5个中断源
可编程串行通道
低功耗的闲置和掉电模式
片内振荡器和时钟电路
AT89C51管脚说明:
(1)电源及时钟引脚(4个)
Vcc:
电源接入引脚
Vss:
接地引脚
XTAL1:
晶振震荡器接入的一个引脚(采用外部振荡器时,此引脚接地);
XTAL2:
晶体振荡器的另一个引脚(采用外部振荡器时,此引脚作为外部振荡器信号的输入端)。
(2)控制线引脚(4个)
RRST——复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
ALE/PROG——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令(3)并行I/O引脚
经综合对本系统的分析,选用AT89C51单片机就非常合适,
AT89C51有P0,P1,P2,P3四个外部接口,介绍如下:
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入端用。
在访问外部数据存储器或程序存储器时,P0口被分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。
在flash编程和校验时,P1口接收低8位地址字节。
P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
此时,被外部拉低的P3口将用上拉电阻输出电流。
所需器件如下表所列:
表1设计所选器件
序号
元件类型
元件参数
元件个数
备注
1
芯片
AT89C51
2
晶振
12M
3
电源电容
10UF
4
电容
30PF
5
电阻
10K
6
470
14
7
数码管
8段
共阳
2.3.2LED数码管显示器
本设计中采用的是7SEG–COM–ANODE型号数码管,它是一种半导体发光器件,其基本单元是发光二极管。
实物如图2所示:
图27SEG–COM–ANODE型号数码管
(1)数码管的分类
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);
按能显示多少个“8”可分为1位、2位、4位等等数码管;
按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
(2)LED数码管有两种连接方法
共阳极接法。
把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接+5V,每个发光二极管的阴极通过电阻与输入端相连。
共阴极接法。
把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地。
每个发光二极管的阳极通过电阻与输入端相连。
图3LED数码管有两种连接方法
(3)数码管引脚测量
找公共共阴和公共共阳:
首先,我们找个电源(3到5伏)和1个1K(几百欧的也行)的电阻,VCC串接个电阻后和GND接在任意2个脚上,组合有很多,但总有一个LED会发光的,找到一个就够了,然后GND不动,VCC(串电阻)逐个碰剩下的脚,如果有多个LED(一般是8个),那它就是共阴的了。
相反用VCC不动,GND逐个碰剩下的脚,如果有多个LED(一般是8个),那它就是共阳的。
也可以直接用数字万用表,红表笔是电源的正极,黑表笔是电源的负极。
图4程序流程图
2.4定时/计数器初值计算
(1)本电路应用TIMER0MODE16位计数器的计时中断法。
(2)1秒等于1000000微秒,而每一计时脉冲是1微秒,因此需输入100000个计时脉冲,方可达到1秒的时间。
本设计中,设定中断每次溢出时间50ms。
(3)由上式得知,循环20次即可达到1秒定时,即:
N=t/Tcy=0.05s/0.000001=5000
X=65536-5000=15536=3CB0H
(4)由上式得知5000个脉冲,首先需设定TL0=3CH,TH0=0B0H,此时第1次只要输入5000个脉冲输入,就会溢出;
第2次至第20次,则需每1000000个计时脉冲,定时1秒。
(5)上电时,显示60,开始倒数计时按下开关实现复位。
2.5软件调试过程
2..5.1系统调试工具keil
KeilC51仿真器是一款利用KEILC51的IDE集成开发环境作为仿真环境的廉价仿真器,是利用SST公司具有IAP功能的单片机SST89C58制作而成,主要是利用了SST89C58的IAP功能,所谓IAP功能是Inapplicationprogram的英文缩写,是在应用编程的意思,通俗一点讲就是:
它可以通过串口将用户的程序下载到单片机中,可以通过串口对单片机进行编程。
它之所以具有这种功能,实际上它有两块程序flash区,其中一块flash中运行的程序可以更改另外的一块程序flash区中的程序,正是利用这一特性才用它作成了仿真器,我们把仿真器的监控程序事先烧入SST89C58,监控程序通过SST89C58的串口和PC通讯,当使用KEILC51的IDE环境仿真时,用户的程序通过串口被监控程序写入flash程序区中,当用户设置断点等操作仿真程序时,flash程序中的用户程序也在相应的更改,从而实现了仿真功能。
调试的主要方法:
1.启动Keilc51
2.新建一个工程。
Project菜单—〉Newproject,选择好我们要保存的文件夹后,键入Frist保存。
接着弹出CPU类型选择框,我们选择最常用的AT89C51,按确定。
3.在工程中加入文件。
新建一个文件,文件菜单File—〉New,我们再选择:
文件菜单File—〉SaveAs?
(另存为)弹出对话框后,我们文件名框中键入First.c(注意文件后缀名是.c)保存。
C文件建好啦。
现在我们把文件加入到工程中去。
点击Target1前面的+号,右键单击SourceGroup1—〉选择AddFilestoGroup,SourceGroup1选择添加Add编译运行,检查程序是否有错误。
图5Keil软件设置截图
图6Keil软件程序运行无误截图
2.5.2系统调试工具PROTEUS
Proteus是一款EDA软件,该软件具有模拟电路仿真,数字电路仿真,单片机以及外围电路组成的系统的仿真,RS-232动态仿真,I2C调试器,SPI调试器,键盘和LCD系统的仿真,以及各种虚拟仪器,如示波器,逻辑分析仪,信号发生器等。
该软件目前支持的单片机类型有:
68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列、ARM以及各种外围芯片。
该软件还支持大量的存储器和外围芯片,所以,该软件是一款集单片机和SPICE分析于一身的仿真软件。
调试方法:
首先用Keil软件将C编译成HEX文件,打开Keil软件,新建一个文档,输入C程序,保存成C格式文件,然后新建工程,连接单片机为AT89C51,选择Optionsfortarget,选择OUTPUT子菜单,在CreateHEXFi前打钩,DeBug子菜单中,Settings选择ProteusVSMSimulator,USE前打钩,再次运行文件,成功后在目录下会生成HEX文件,打开Proteus软件,或直接点击DSN文件,双击单片机模板,点击文件夹式样的图标选择对应的HEX驱动文件,然后点击开始,进行调试。
图7硬件仿真连接图
图8仿真起始运行图
图9仿真结束运行图
3.设计心得体会
回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
例如我们在设计数码管显示的时候,刚开始的时候,由于对数码管引脚的不熟悉,我们都无法让数字显示,后来发现时十位和个位的置位、复位发生了问题,我们对此进行了修改,可以正确的显示出十位及个位的数值,但是数字的显示不稳定,不停的跳动,我们为此查阅了很多的资料,但还是未能解决,最后我们不停地对程序进行修改,终于发现了问题所在,在显示子程序上存在缺陷未能快速的切换对十位、个位的置位和复位,经过这样的修改,终于可以完美的显示时间了。
我们也更好地掌握了对数码管的使用,这都是课堂上学不到的知识。
单片机为我们的主要专业课之一,对我们还是很有帮助的,课程设计也是为我们以后的工作提前进行了一次练手,也是我们学习生活之中少有的一次自己探索、研究,发现问题、解决问题的机会。
当然要做好一个课程设计也不是很简单的,我认为有以下几步:
(1)在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;
(2)要有一个清晰的思路和一个完整的的软件流程图,善于将大的程序段缩小为每个子函数来实现;
(3)在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;
(4)要养成注释程序的好习惯,写程序是应该思路清晰,结构明了,应该让人一看就能明白你的思路,方便资料的保存和交流;
(5)我们们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的。
在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
我们们通过查阅大量有关资料,并在小组中互相讨论,交流经验和自学,若遇到实在搞不明白的问题就会及时请教老师,或者与其他小组成员讨论,共同解决,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。
通过这次课程设计我们也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。
通过这次课程设计使我更加懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正将一个东西学好学透,从而提高自己的实际动手能力和独立思考的能力。
我想这对于我今后的学习生活和工作都会是有很大帮助的!
4.软件源程序
ORG00H
SJMPSTAR
ORG1BH
SJMPT1S;
转T1中断服务程序
ORG30H
STAR:
MOVR2,#60;
倒计时初值
MOVR4,#20;
定时中断溢出计数器R4初值为20
MOVIE,#88H;
T1开中断
MOVTMOD,#10H;
T1方式1
MOVTH1,#3CH;
定时初值
MOVTL1,#OBOH;
SETBTR1;
启动T1
ACALLDIS;
调用显示子程序
SJMP$
TIS:
MOVTH1,#3CH;
中断程序
MOVTL1,#0B0H;
重装初值
DJNZR4,T1S1;
定时1S到否
MOVR4,#20;
到1S,重置R4=20
DJNZR2,T1S0;
倒计时递减
CLRTR1;
倒计时结束,关定时器
T1S0:
调显示
T1S1:
RETI;
中断返回
SEG7:
INCA;
A的值加一
MOVCA,@A+PC;
取显示断段
RET
DB0C0H,0F9H,0A4H,0B0H;
0至3的共阳型显示码
DB99H,92H,82H,0F8H;
4至7的共阳型显示码
DB80H,90H,88H,83H;
8至B的共阳型显示码
DB0C6H,0A1H,86H,8EH;
C至F的共阳型显示码
DIS:
MOVA,R2;
单字节十六进制数转为十进制数
MOVB,#10
DIVAB
ACALLSEG7
MOVP1,A;
显示十位
MOVA,B
MOVP2,A;
显示个位
RET;
子程序返回
END
5实物和硬件图
图10实物图
图11硬件图
6参考文献
【1】.肖金球.单片机原理与接口技术;
【2】.江志红.51单片机技术与应用系统开发案例精选;
【3】.周润景.基于PROTEUS的51单片机设计与仿真;
【4】.王守中.51单片机开发入门与典型实例;
【5】.张齐.朱宁西.单片机系统设计与开发;
【6】.周立功单片机开发网;
【7】.天津锐志单片机开发网.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 60 倒计时