基于stc单片机9999秒倒计时器的设计学位论文Word下载.docx
- 文档编号:16416704
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:28
- 大小:370.37KB
基于stc单片机9999秒倒计时器的设计学位论文Word下载.docx
《基于stc单片机9999秒倒计时器的设计学位论文Word下载.docx》由会员分享,可在线阅读,更多相关《基于stc单片机9999秒倒计时器的设计学位论文Word下载.docx(28页珍藏版)》请在冰豆网上搜索。
关键词:
stc单片机;
倒计时器;
设计
BasedstcSCM9999secondscountdownDesign
Author:
Professor:
(DepartmentofElectronics,Hainannormaluniversity,Haikou,571158)
Abstract:
ThisthesisfocusesontheneedsofthecountdownsystemdesignintroducedstcSCMsomeofthebasicprinciples,suchasstcSCMinterfacefunctions,interrupts,timers,etc..Needtouselatchescountdownsystem,LEDdigitaldisplayandothermajormodule,throughtheinteractionbetweenthedifferentmodules,completehardwareconfigurationoftheinitialcountdown.ForthecountdowninLEDdigitaldisplay,theuseofsoftware-basedinterfacemethod,whichusesasoftwareprogramtodecodeKeiluVision3.
Keywords:
stcSCM;
Countdown;
Design
1.引言
研究并制造一个倒计时器,利用倒计时可以显示记录时间。
可用于很多方面,工业机器的工作时间显示,家用电器的使用时间,体育中跑步成绩等。
在研究倒计时器时需要研究怎样产生脉冲及其脉冲周期。
一般的倒计时器的脉冲周期都在一秒。
计数器的置数,及计数位数。
本课题主要解决的问题是怎么使计数器实现任意置数。
利用各个芯片的特性实现我们所需要的功能。
倒计时器作为一种电子产品在实际运用方面十分广泛,在交通等各个类型需要计时比赛中都有很广泛的运用。
2.系统方案论证及设计
2.1系统方案论证
倒计时器以AT89C52单片机为核心,起着控制作用。
系统包括四位数码管显示电路、按键电路、复位电路、时钟电路。
倒计时的总体设计思路分为五个模块:
按键电路模块、复位电路、晶振电路模块、AT89C52、数码管显示电路模块。
555定时器用来产生周期为1秒的脉冲信号,供计数器进行倒计数,以便将计数器输出的数据传送给译码器,译码器再译码驱动七段数码管显示输出,控制电路实现倒计时器的暂停/继续工作,清零复位,置数/工作;
如图1-1所示。
它包括秒脉冲发生器、计数器、译码显示电路、和控制电路等四个模块组成。
其中计数器和控制电路是系统的主要模块。
图1-1
2.2系统方案设计
555为一8脚封装的器件,其各引脚的名称和作用如下:
1脚—GND,接地脚
2脚—TL,低电平触发端
3脚—Q,电路的输出端
4脚—/RD,复位端,低电平有效
5脚—V_C,电压控制端
6脚—TH,阈值输入端
7脚—DIS,放电端
8脚—VCC,电源电压端,其电压范围为:
3~18V
图1-2
由上图可看出,当Vo等于低电平时T1处于导通状态,如果将TL端经过一个电阻接到电源正端,而且电阻的阻值足够大,那么TL也一定是低电平。
反之,当Q等于高电平时T1截止,TL也是高电平。
因此,Q和TL的高低电平是想相同的。
元件清单如下:
表1元件清单列表
元件型号
元件数量总计
9cm*15cm万用板
1片
四位一体共阴数码管
1只
蜂鸣器
4.7K电阻
s8550三极管
单片机
40脚IC座
101排阻
12M晶振
22P电容
2只
10uF电容
10K电阻
按键
6只
自锁开关
USB电源线
1条
导线
若干
3.系统硬件电路设计
3.1单片机最小系统电路设计
80C52芯片内部集成了CPU、RAM、ROM、定时/计数器和I/O口等各功能部件,并由内部总线把这些部件连接在一起。
80C52单片机内部包含以下一些功能部件:
①一个8位CPU;
②一个片内振荡器和时钟电路;
③4KBROM(80C51有4KB掩膜ROM,87C51有4KBEPROM,80C31片内有无ROM);
④128B内RAM;
⑤可寻址64KB的外ROM和外RAM控制电路;
⑥两个16位定时/计数器;
⑦21个特许功能寄存器;
⑧4个8位并行I/O口,共32条可编程I/O端线;
⑨一个可编程全双工串行口;
5个中断源,可设置成2个优先级。
图3-1
3.2单片机内部定时器
时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准有条不紊地一拍一拍地工作的。
因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统得稳定性。
常用的时钟电路有两种方式:
一种是内部时钟方式,另一种是外部时钟方式。
单片机必须在时钟的驱动下才能工作。
在单片机内部有一个时钟振荡电路,只要外界一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。
图3-2
本系统使用的是内部时钟方式。
一般选用石英晶体振荡器。
此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。
电路中两个电容的作用有两个:
一是帮助振荡器起振;
二是对振荡器的频率进行微调。
3.3单片机与数码管的连接电路设计
通常在显示上采用的方法一般包括两种:
一种是静态显示,另一种是动态显示。
其中静态显示的特点是显示稳定不闪烁,程序编写简单,但占用端口资源多,所耗得电能较大;
动态显示的特点是显示稳定性没静态好,程序编写复杂,但是相对静态显示而言占用端口资源少。
在本设计中,为了减少端口资源,降低电能消耗,采用的是动态显示方法。
本系统的倒计时时间的最大范围是9999秒,要求精确到秒,显示格式是9999/999/99/9。
从格式可知数码管显示电路要用到4位数码管。
考虑到数码管的段和位比较多,本系统选了两个4位一体的共阳数码管和一个一位的共阳数码管。
数码管有段选和位选控制,在此电路中有8个位选,8个段选,分别用单片机的P0口和P1进行8个位的控制。
3.3.1LED数码显示器的结构
LED数码显示器是一种有LED发光二极管组合显示字符的显示器件。
它使用了8个LED发光二极管,其中7个用于显示字符,剩下的一个用于显示小数点,故通常称之为7段发光二极管数码器。
在数码管中,若将二极管的阳极连在一起,称为共阳极数码管;
若将二极管的阴极连在一起,称为共阴极数码管。
如图3-3所示。
图3-3(a)为a到g在数码管的编排,(b)分别为共阴极、共阳极电路
当发光二极管导通时,它就会发光。
每个二极管就是一个笔画,若干个二极管发光时,就构成了一个显示字符。
若将单片机的I/O口与数码管的a——g及h相连,高电平的位对应的发光二极管亮,即I/O输出不同的代码,就可以控制数码管显示不同的字符。
例如:
当I/O输出得代码为00111111时,数码管显示的字符为0。
这样形成的显示字符的代码称为显示代码或者段选码。
本次设计的实验板用的共阴LED显示器,根据电路连接图16进制数字的显示代码如表3.1所示[2]。
表3.116进制数字的显示代码
16进制
h
g
f
e
d
c
b
a
显示代码
1
3FH
06H
2
5BH
3
4FH
4
66H
5
6DH
6
7DH
7
07H
8
7FH
9
6FH
A
77H
B
7CH
C
39H
D
5EH
E
79H
F
71H
.
80H
图3-4
3.3.2LED数码管显示方式
LED显示器工作方式有两种:
静态显示方式和动态显示方式。
静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。
当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。
这种方法的优点是占用CPU时间少,显示便于监测和控制。
缺点是硬件电路比较复杂,成本较高。
本次设计采用的是动态显示方式。
动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。
选亮数码管采用动态扫描显示。
所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。
3.4按键调整电路设计
复位是单片机的初始化操作,只需给AT89C52的复位引脚RST加上大于2个机器周期(即24个时钟振荡周期)的高电平就可得单片机复位.复位时,PC初始化为0000H,使单片机从OUT单元开始执行程序。
除了进入系统的正常初始化之外,由于程序运行出错或操作错误而使系统处于死锁状态。
为摆脱死锁状态,也需按复位键使得RST脚为高电平,使单片机重新启动。
图3-5
在系统中,有时会出现显示不正常。
为了调试方便,需要设计一个复位电路。
AT89C52单片机复位电路共有上电复位、按键电平复位和按键脉冲复位。
本系统的复位电路主要完成系统的上电复位和系统在运行时用户的按键复位功能。
复位电路可由简单的RC电路构成,也可使用其它的相对复杂,但功能更完善的电路。
本系统采用的电路工作原理是:
上电瞬间,RC电路充电,RESET引脚端出现正脉冲,只要RESET保持10ms以上高电平,就能使单片机有效的复位。
当时钟频率选用12MHz时,C取10uF,R取10KΩ,上电自动复位电路由上电瞬间C与R构成充电电路,RESET端的电位与电源Vcc相同,随着充电电流的减少,RESET的电位逐渐下降。
RC时间常数越大,上电时RESET端保持高电平的时间越长,这组参数足以保证复位操作。
若复位电路失效,加电后CPU从一个随机的状态开始工作,系统就不能正常运行。
按键S5的功能是按键复位,按下S5键时RST为高电平,只要保持10ms以上的高电平,就可以使单片机复位。
按键复位用在系统运行时的复位,使系统重新运行。
4.系统软件设计
4.1主程序流程图
倒计时器的设计时可采用模块化程序设计的方法,模块化程序设计时应注意以下事项:
首先,每个模块应具有独立的功能,能产生一个明确的结果;
其次,模块之间的控制参数应尽量简单,数据参数应该尽量少。
控制参数是指模块进入和退出的条件和方式,数据参数是指模块间的信息交换方式、交换量的多少及交换的频繁程度。
最后,模块长度适中。
模块语句长度通常在20~100条适合。
如果模块太长时,分析和调试比较困难,失去了模块化程序的功能性;
如果模块太短则信息交换太频繁,也不合适。
由以上原则,本次设计的倒计时软件系统如下图4-1所示:
图4-1倒计时软件设计框图
由上述硬件电路分析可知,本次设计采用的是定时器0、工作方式1,MAXTIME为9999秒的倒计时计数器。
其中最重要的就是主程序的设计,因为无论多少个子程序模块,如果主程序没有能够合理正确的调用子程序的话,那么子程序就如同虚设。
主程序的设计分为:
①主程序的初始化内容。
所谓初始化,就是对用到的单片机内部部件或者扩展芯片进行工作状态设定,本设计调用了一个初始化的子程序init()。
②引入键盘扫描程序,对按键key进行判断,判断哪个按键被按下,本系统设计调用的键盘扫描程序是keyscan()。
然后对返回值进行判断:
若key=0x18,则表示按下的键是KC(设置初值键)。
然后关定时器0,等待初值并与最大值相比进行判断,引入初值设置子程序set-func()。
若key=0x88,则表示按下的键是KF,开始计数。
③调用显示子程序display()对以上操作和后面的倒计时进行显示。
display()对倒计时在数码管上显示出来,引入中断子程序,根据中断子程序和主程序的语句开始进行倒计时。
最后,根据主程序语句判断倒计时是否自减到0,并进行相应的操作。
主程序流程图如图4-2所示。
图4-2主程序流程图
4.2子程序流程图
4.2.1键盘扫描程序设计
矩阵键盘的扫描程序keyscan()设计:
if((P0&
0x0f)!
=0x0f)//判断是否有有键按下
{
delay
(1);
=0x0f)//再次判断列中是否是干扰信号,不是则向下执行
sccode=0xfe;
//逐行扫描初值(即先扫描第1行)
while((sccode&
0x10)!
=0)//行扫描完成时(即4行已经全部扫描完成)sccode为11101111停止while
{…}
首先,根据列判断是否有键按下,没有返回则为0。
若有值返回,则逐行扫描以确定按键所在的行,再确定按键所在列,从而最终确定该按键。
其次,若有键按下,则延时去建抖动(delay
(1);
),然后进行扫描,找到闭合键并计算键值。
最后,返回键值,并进行判断,建立有效标志,以对主程序的进行。
流程图见图4-3所示。
图4-3键盘扫描程序
4.2.2倒计时模块子程序设计
中断程序:
voidtimer0()interrupt1
TH0=(65536-TIME)/256;
//50ms产生一次中断
TL0=(65536-TIME)%256;
count++;
}
倒计时程序模块:
if(count==20)
count=0;
data_set--;
if(data_set==0)
{stop_timer0();
}}
倒计时模块设计:
首先,初值设置。
对计数值count赋初值0,对定时器0的高八位TH0和低八位TL0设置初值,然后开中断。
其次,根据中断子程序及初值,50ms产生一次中断,计数器则加1,当计数器count加到20的时候,倒计时器减1,并且count清0依次循环程序。
判断值是否为0,如果不为0,继续倒计时;
如果为0,则关中断程序stop-timer0(),倒计时结束。
倒计时模块设计流程图如图4-4所示。
图4-4倒计时流程图
5.实物调试
5.1软件仿真
图5-1仿真电路图
图5-2PCB图
5.2调试
5.2.1系统调试工具KeiluVision3
KeiluVision3仿真器是一款利用其IDE集成开发环境作为仿真环境的廉价仿真器,是利用SST公司具有IAP功能的单片机SST89C58制作而成,主要是利用了SST89C58的IAP功能,所谓IAP功能是Inapplicationprogram的英文缩写,是在应用编程的意思,通俗一点讲就是:
它可以通过串口将用户的程序下载到单片机中,可以通过串口对单片机进行编程。
它之所以具有这种功能,实际上它有两块程序flash区,其中一块flash中运行的程序可以更改另外的一块程序flash区中的程序,正是利用这一特性才用它作成了仿真器,我们把仿真器的监控程序事先烧入SST89C58,监控程序通过SST89C58的串口和PC通讯,当使用KEILUVISION3的IDE环境仿真时,用户的程序通过串口被监控程序写入flash程序区中,当用户设置断点等操作仿真程序时,flash程序中的用户程序也在相应的更改,从而实现了仿真功能。
5.2.2调试的主要方法
①启动KeiluVision3。
②新建一个工程。
Project菜单——〉Newproject,选择好我们要保存的文件夹后,键入djs保存。
接着弹出CPU类型选择框,选择最常用的Atmel——〉AT89C51,按确定。
③在工程中加入文件。
新建一个文件,文件菜单File——〉New,我们再点击savetheactivedocument按钮,(另存为)弹出对话框后,我们文件名框中键入djs.c(注意文件后缀名是.c)保存,这个时候C语言文件创建完毕。
④现在可以把文件加入到工程中去。
点击Target1前面的+号,右键单击SourceGroup1——〉选择AddFilestoGroup’SourceGroup1’,在弹出的对话框中选择一创建好的djs.c文件,选择添加Add,然后关闭此对话框。
⑤此时工程建成,可以写入程序了。
在写入程序的时候,通过软件设计模块,先写好主程序的框架,然后在需要调用子程序的时候,一个子程序一个子程序进行编写、调试。
⑥当程序完成之后,点击Rebuildalltargetfiles按钮(重新编译所有目标文件)进行程序调试、查错,在程序下面的提示框Outputwindow中点击出错的提示,进行程序改错,当程序没有错误的时候,出现如下图5-3的对话框。
图5-3正确编译时对话框
⑦点击Buildtarget按钮,此时选择OptionsforTarget按钮,出现如图5-4所示。
选择Dubug按钮,选择Use(KeilMonitor-51Driver),点击确定。
图5-4OptionsforTarget窗口
⑧点击Start/StopDebugSession按钮,进入调试状态。
第一次将会出现下图5-5提示窗口,则需要点击Settings,在下面弹出窗口如图5-6中,设置相应端口号。
在设置端口号的时候,先通过右键电脑——〉属性,查看端口号后修改正确的端口号,然后点击OK确定,然后再点击TryAgain,继续进行程序下载。
图5-5提示选择窗口
图17
⑨点击Run按钮,在试验版上即可以看到程序效果(显示默认初值9999并开始以秒为单位倒计时),接下来在实验板上进行操作。
先按下KC键,等待设置初值;
然后任意按下K0~K9设置初值,完成后按下KF键开始倒计时。
⑩当演示完成后,按RESET开关键复位,然后点击。
在系统调试的过程中,出现了很多问题,特别是在编写程序的时候。
因为只要程序语句没有语法错误,软件就不能检测出错误的地方,必须一个模块一个模块仔细编写。
本次设计同时也让我学会了KeiluVision3的基本用法,但是本设计是用的C语言编程,所以了解的大部分用法都是与C语言有关的,以后需要继续学习。
6.总结及致谢
通过对MCS-51单片机原理和接口技术的初步了解,结合自己的专业知识和对C语言的基本认识,在导师的帮助指导下完成了基于单片机控制的9999秒倒计时系统的设计和这篇论文,本论文完成了以下几个方面的工作:
①介绍了本次倒计时系统的设计目的、设计方案和开发意义。
②对MCS-51单片机的部分基本原理和接口技术进行了阐述,其中大部分都是本次设计需要用到,比如中断原理、定时器等;
③首先介绍了本次倒计时系统设计的硬件电路设计,包括中央处理模块、LED数码显示器模块、锁存器模块、矩阵键盘模块的设计;
其次是软件程序设计,包括主程序设计和各个模块的子程序设计;
最后是KeiluVision3软件系统调试的步骤和方法,以完成系统设计。
系统功能:
一切就绪后,通过KC键等待初值设置,其次通过矩阵键盘设定任何小于9999的初值,然后通过KF键开始倒计时,同时设置有复位键,以达到可以重新设置初值的目的。
通过本次设计,使我在对单片机一无所知的情况下了解了单片机的部分原理和一些简单的设计,同时,也增强了对单片机的兴趣。
但是由于本次设计我对单片机是从头开始学,对知识了解的局限性,使得这个倒计时系统在功能上不完善,对开发有一定的影响,恳请各位老师原谅!
时光飞逝,毕业设计完成了,在这个过程中我学到了很多东西。
首先我要感谢我的导师XXX老师,他在我完成论文的过程中,给予了我很大的帮助。
他在日常繁忙的工作中,多次询问我的论文进程,并为我指点迷津。
我非常感谢XXX老师的指导。
感谢大学四年所有的授课老师,是他们让我了解专业知识,并让我学会如何学习专业知识,这是一笔宝贵的财富,我将受用终身。
感谢他们的无私奉献!
感谢我的家人,是他们给我的鼓励和支持,是我前进的动力,让我不断进取、完成学业。
最后,我要感谢所有关心、帮助过我的朋友们!
祝愿他们在未来的日子里,生活愉快,工作顺利!
参考文献(references)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 stc 单片机 9999 计时器 设计 学位 论文