89C51单片机60秒倒计时地模拟与仿真设计.docx
《89C51单片机60秒倒计时地模拟与仿真设计.docx》由会员分享,可在线阅读,更多相关《89C51单片机60秒倒计时地模拟与仿真设计.docx(11页珍藏版)》请在冰豆网上搜索。
89C51单片机60秒倒计时地模拟与仿真设计
单片机结课设计论文
学院:
班级:
某某:
学号:
任课教师:
二〇一二年五月
学习心得
单片机课程是我们专业一个很重要的课程,因为单片机方面的很多知识都应用在机电一体化中。
现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。
了解到单片机的重要性,一开始我就决定了一定要好好学这门课。
刚开始接触单片机是很陌生的,当学到89C51单片机的结构与原理这一章的时候,感觉书本里面的容抽象且难以理解,心里面本能地就有一股抵制情绪在作怪。
但是一想到单片机是如此的重要又不得不逼着自己去学去记。
学到指令系统这局部容的时候,里面的很多指令往往让自己感到厌烦,面对一些冗长的汇编程序,往往不用看到最后就已经失去兴趣了。
感觉自己学习单片机的过程其实就是一个对陌生领域的本能的抵制而又渴望征服的过程!
我意识到单片机的重要性也从心里面想过要学好这门课程,在学习的过程中我尽力的抑制了由本能产生的对抽象知识的抵制情绪,上课认真听讲,做好笔记,最后总算对单片机有一个比拟全面的了解。
特别是最后做的那七个实验的时候,每一次我都会认真的思考该怎么去实现这个功能,怎么样从书本中得到答案,怎么样去做好理论联系实际。
在实验的实践过程中,我发现要学好单片机不仅仅要认认真真学习书本上的理论知识,更要学得透彻,还要实际操作单片机。
理论联系实际,这样的学习才不会变得更加生动,更容易调动学习积极主动性。
虽然单片机这门课程已经结课了,但是教师传授给我的知识将使我终身受益!
短短几十个学时的学习,教师作为领路者把我带入了单片机这一奇妙的领域。
让我感受到了单片机的强大,实用与前景。
我表示要把这门课程的完毕当做是另外一个征程的开始,单片机的学习可以用这么一句话形容——路漫漫其修远兮,吾将上下而求索。
结课设计
本结课设计题目:
单片机控制60s倒计时,利用定时器和计数器的原理将倒计时过程显示在LED数码管上。
应用PROTEUS软件设计,仿真基于AT89c51单片机的60s倒计时实验。
通过做一个综合性结课设计题目,达到对课程容的消化、理解并提高解决问题的能力的目的。
正文
3.1设计要求
对于单片机控制的60s倒计时的要求如下:
〔1〕用单片机AT89C51的定时器实现60s倒计时。
本结课设计中用两位数码管静态显示倒计时秒值。
〔2〕用PROTEUS软件设计,仿真基于AT89c51单片机的60s倒计时实验。
3.2结课设计的目标
通过结课设计,使自己深刻理解并掌握根本概念,掌握单片机的根本应用程序设计与综合应用程序设计的方法。
通过做一个综合性结课设计题目,达到对容的消化、理解并提高解决问题的能力的目的。
3.3设计方法和容
本设计由硬件设计和软件设计两局部组成,总电路如图1所示,硬件设计主要包括单片机芯片选择,数码管选择与晶振,电容,电阻等元器件的选择与其参数确实定;软件设计主要是实现60秒倒计时程序的编写,包括利用中断实现1秒的定时与60秒的倒计时。
具体设计:
通过AT89C51型号单片机,由P1和P2两组I/O引脚分别控制两个7SEG––ANODE型号数码管,分十位控制和个位控制,达到显示60秒倒计时的目的。
通过复位电路,在仿真过程中点击开关实现60复位。
图160秒倒计时总体电路设计
AT89C51的芯片概述
AT89C51是一个低功耗,高性能CMOS8位单片机,片含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统与80C51引脚结构,芯片集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
其工作电压在-5V,一般我们选用+5V电压。
外形与引脚排列如图2所示:
AT89C51主要特性
图2:
89C51的核心电路框图
·与MCS-51兼容
·4K字节可编程闪烁存储器
·寿命:
1000写/擦循环
·数据保存时间:
10年
·全静态工作:
0Hz-24MHz
·三级程序存储器锁定
·128×8位部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片振荡器和时钟电路
AT89C51管脚说明
(1)电源与时钟引脚〔4个〕
Vcc:
电源接入引脚
Vss:
接地引脚
XTAL1:
晶振震荡器接入的一个引脚〔采用外部振荡器时,此引脚接地〕;
XTAL2:
晶体振荡器的另一个引脚〔采用外部振荡器时,此引脚作为外部振荡器信号的输入端〕。
〔2〕控制线引脚〔4个〕
RST/Vpd:
复位信号输入引脚/备用电源输入引脚;
ALE:
地址锁存允许信号输出引脚/编程脉冲输入引脚:
EA:
外存储器选择引脚/片外EPROM编程电压输入引脚;
PSEN:
外部程序存储器选通信号输出引脚。
〔3〕并行I/O引脚
P0.0-P0.7:
一般I/O口引脚或数据/低位地址总线复用引脚;
P1.0-P1.7:
一般I/O口引脚;
P2.0-P2.7:
一般I/O口引脚或高位地址总线引脚;
P3.0-P3.7:
一般I/O口引脚或第二功能引脚
所需器件如下表所列:
序号
元件类型
元件参数
元件个数
备注
1
芯片
AT89C51
1
2
晶振
12M
1
3
电源电容
10UF
1
4
电容
30PF
2
5
电阻
10K
1
6
电阻
470
14
7
数码管
8段
2
共阳
LED数码管显示器概述
本设计中采用的是7SEG––ANODE型号数码管,它是一种半导体发光器件,其根本单元是发光二极管。
数码管的分类
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元〔多一个小数点显示〕;按能显示多少个“8〞可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极()的数码管。
共阳数码管在应用时应将公共极接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极()的数码管。
共阴数码管在应用时应将公共极接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
LED数码管有两种连接方法如下:
共阳极接法。
把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接+5V,每个发光二极管的阴极通过电阻与输入端相连。
共阴极接法。
把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地。
每个发光二极管的阳极通过电阻与输入端相连。
图3LED数码管的两种连接方法
测量数码管引脚,分共阴和共阳两类:
找公共共阴和公共共阳:
首先,我们找个电源〔3到5伏〕和1个1K〔几百欧的也行〕的电阻,VCC串接个电阻后和GND接在任意2个脚上,组合有很多,但总有一个LED会发光的,找到一个就够了,然后GND不动,VCC〔串电阻〕逐个碰剩下的脚,如果有多个LED〔一般是8个〕,那它就是共阴的了。
相反用VCC不动,GND逐个碰剩下的脚,如果有多个LED〔一般是8个〕,那它就是共阳的。
也可以直接用数字万用表,红表笔是电源的正极,黑表笔是电源的负极。
图4程序框图
定时/计数器初值计算
〔1〕本电路应用TIMER0MODE16位计数器的计时中断法。
〔2〕1秒等于1000000微秒,而每一计时脉冲是1微秒,因此需输入100000个计时脉冲,方可达到1秒的时间。
本设计中,设定中断每次溢出时间50ms。
〔3〕由上式得知,循环20次即可达到1秒定时,即:
X=65536-5000=15536=3CB0H
〔4〕由上式得知5000个脉冲,首先需设定TL0=3CH,TH0=0B0H,此时第1次只要输入5000个脉冲输入,就会溢出;第2次至第20次,如此需每1000000个计时脉冲,定时1秒。
〔5〕上电时,显示60,开始倒数计时按下开关实现复位。
软件程序
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:
ACALLDIS;调显示
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
ACALLSEG7
MOVP2,A;显示个位
RET;子程序返回
END
3.4软件调试过程
3.4.1系统调试工具keilC51
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。
编译运行,检查程序是否有错误。
3.4.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驱动文件,然后点击开始,进展调试。
图5仿真图
设计总结
结课设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术开展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说特别是专业为机电一体化的学生来说掌握单片机的开发技术是十分重要的。
回顾起此次单片机结课设计,我仍感慨颇多,确实,从选题到定稿,从理论到实践,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次结课设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够结实,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好……通过这次课程设计之后,把以前所学过的知识重新温故。
参考文献
[1]梅丽凤.《单片机原理与接口技术》清华大学。
[2]吴金荣.《8051单片机实践与应用》清华大学。
[3]迎辉贡雪梅.《单片机实训教程》大学。
[4]解广润.电力系统接地技术.:
水利电力.2002.
[5]朝清.单片机原理与口技术.航空航天大学.2005.
[6]高卫东.51单片机原理与实践.航空航天大学.2008.
[7]江志红.51单片机技术与应用系统开发.青华大学.2008.
[8]王守中.51单片机应用开发速查手册.人民邮电.2009.
[9]徐建民.汇编语言程序设计.电子工业.2007.