《单片机技术》课程设计说明书(2) - 图文

更新时间:2024-01-14 14:28:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单片机技术课程设计说明书

基于单片机的数字式秒表设计

系 、 部: 学生姓名: 指导教师: 职称 专 业: 班 级: 完成时间:

摘 要

时间是工农业生产,国防,人民生活等领域不可缺少的。它涉及到我们工作,生活的各个方面。没有时间人们的一切行为都无法进行。而近年来随着科技的飞速发展,单片机的应用正在不断的走向深入。本文阐述了基于单片机的数字式秒表设计。主要特点是计时精度达到ms级,实现启动、停止、暂停、继续、清零功能。解决了传统的由于计时精度不够造成的误差和不能记录多组数据局限性。是各种体育竞赛的必备设备之一。

本设计分为硬件电路和软件程序两大部分构成。数字电子秒表系统采用AT89S52单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部控制电路来设计计时器。将软、硬件系统有机地结合起来,使得系统能够实现八位LED显示,显示时间为0~59分59秒99毫秒,计时精度为0.01秒,能正确地进行计时。其中软件系统采用汇编语言编写程序,它与硬件电路的关系最直接。包括显示程序,定时中断服务,延时程序等,硬件系统利用PROTEUS强大的功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态,并且制作实物,更直观深刻。设计数字式秒表,具有广泛的推广应用价值。

关键词 数字式秒表;单片机;硬件系统;软件程序

1

ABSTRACT

Time is the industry and agriculture production, defense, people's living areas such as indispensable. It involves our work, all aspects of life. Not all the time people behavior can undertake. But in recent years, with the rapid development of science and technology, the application of SCM is continually to the deepening. This paper expounds the digital stopwatch design based on single chip. Main characteristic is a timing accuracy reached ms level, realize start and stop, pause, continue, reset function. To solve the traditional because timing precision insufficient errors and cannot record multi-group data limitations. All kinds of sports contest is one of necessary equipments.

This design is divided into hardware circuit and software program two most constitutes. Digital electronic stopwatch system adopts AT89S52 singlechip center device, using its timer/counter timing and the principle of numeration, combining LED digital display circuit, control circuit and external tube to design the timer. Will the software and hardware system organically, and makes the system can realize the eight LED display, display time as 0 ~ 59 points 59 seconds 99 milliseconds, timing accuracy of 0.01 seconds, can correctly to the timer. Among them software system USES assembly language program, it and hardware circuit relationship is the most direct. Includes show program, timing interrupt service, delay procedure, etc. Are hardware system using PROTEUS powerful function to realize, simple cut easily visible, in emulation can observe the actual working condition, and making things, more intuitive profound. Design digital stopwatch, has wide application value.

Key words Microcontroller;Digital stopwatch;Hardware system;Software program

2

目 录

1 设计功能与要求........................................................4 1.1 系统功能.........................................................4 1.2 设计要求.........................................................4 1.3 总体方案介绍及工作原理说明....................................4 2 硬件系统设计..........................................................5

2.1 硬件电路原理框图................................................5 2.2 硬件系统各模块功能简要介绍.....................................5 2.3 电路原理图、PCB图、元器件布局图..............................7 2.4 元器件清单.......................................................7 3 软件系统的设计........................................................8

3.1 使用单片机资源的情况...........................................8 3.2 软件系统各模块功能简要介绍....................................8 3.3 软件系统程序流程框图...........................................9 3.4 软件系统程序清单...............................................11 4 设计结论、仿真结果、误差分析及教学建议............................22 4.1 设计结论及使用说明.............................................21 4.2 仿真结果.........................................................21 4.3 误差分析.........................................................22 4.4 设计体会.........................................................22 4.5 教学建议.........................................................23 参考文献................................................................... 24 致谢........................................................................ 25 附录.........................................................................26

3

1 设计功能与要求

1.1 系统功能

时间是日常生活、体育竞技、工业、医学、航天等领域最常遇到的一个物理量。测量时间的基本方法是使用秒表直接测量。其中秒表的精度是人们最关心的,这就要求它的计时最小单位足够小,显示模块的灵敏度足够高。该数字式秒表具有毫秒、秒、分的累进显示功能。使时间测量更加精确。作为秒表,系统可通过按键开始记录时间,在某一事件结束时,又可通过按键使秒表停止运行,并显示该事件经历的时间,并兼有暂停与继续功能,要求精确到0.01s(即10ms)。

1.2 设计要求

(1)、采用单片机(AT89S52)为核心器件,构成数字式秒表系统。 (2)、用八位LED数码管分别显示分、秒、毫秒(显示格式为XX-XX-XX)。 (3)、通过按键,实现下列功能:S1键实现秒表复位功能,显示“P.”;S2键实现秒表的启动/停止功能;S3键实现秒表的暂停/继续功能;S4键实现秒表的清零功能。

(4)、利用定时/计数器作10ms的定时,当定时时间到后,进入中断服务程序,在中断服务中实现时钟累进。

1.3 总体方案介绍及工作原理说明

首先,以微处理器AT89S52为核心,利用其P0端口和P2端口实现数据、地址的传送。因为AT89S52内部拥有足够字节的程序存储器和数据存储器。所以没有进行外存储器的扩展,直接利用微处理器内部的程序存储器和数据存储器。

其次,通过上拉电阻将八位LED数码管进行共阳极连接,并将八个独立式键盘连接到单片机P1口线。

再次,系统软件的主程序,包括三个部分:第一部分为初始化设置,包括设置堆栈指针、定时器/计数器初始化、显示缓冲区初始化、开中断、定时器/计数器启动等。第二部分是对键盘进行扫描,判断是否键按下,从而执行相应的键功能程序。第三部分是实现电子秒表的显示。最后,中断服务程序,它的主要功能是实现时钟累进,以及如何判断是否到达59分59秒99毫秒。

4

2 硬件系统设计

2.1 硬件电路原理框图

硬件电路由微处理器AT89S52、LED数码管、复位电路、时钟电路、按键电路、电源等组成。

图2.1电路原理框图

2.2 硬件系统各模块功能简要介绍

2.2.1 微处理器AT89S52

AT89S52是一种低功耗、高性能的微控制器。芯片上拥有灵巧的8位CPU,AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:256字节RAM,32位I/O口线,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振电路和时钟电路。另外AT89S52在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。可以产生精准的计时单元,还可以控制复杂的外围电路。

AT89S52的P0口和P2口外接由八个LED数码管(LED7~LED0)构成的显示器,用P0口作LED的段码输出口,P2口作八个LED数码管的位控输出线,P1口外接八个按 键构成键盘电路。此时P0口不扩展,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻;P2口不扩展,做一般I/O口使用,其内部有上拉电阻。

2.2.2 电源电路

5

电源电路是最基本,最必须的电源部分安装,任何电路都离不开电源部分,单片机系统也不例外,而且我们应该高度重视电源部分,不能因为电源部分电路比较简单而有所忽略,其实有将近一半的故障或制作失败都和电源有关,电源部分做好才能保证电路的正常工作。对电源电路来说,最重要的就是稳压。在进行PROTUES仿真时,采用的是7809电源提供的+5V稳压电压。在进行实物制作时,则直接采用USB接口5V直流电源供电。

2.2.3 复位电路

为确保微机系统中电路可靠工作,复位电路是必不可少的一部分。复位操作有两种基本形式:一种是上电复位,另一种是按键复位。上电复位电路要求接通电源后,通过外部电容充电来实现单片机自动复位操作。上电瞬间RESET引脚获得低电平,随着电容的放电,RERST引脚的高电平将逐渐下降。RERST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。复位后:PC值为0000表明复位后程序从0000H开始执行;SP值为07H值,表明堆栈底部在07H,需重新设置SP值;单片机在复位后,已使P0~P7口每一端线为“1”,为这些端线用作输入口做好了准备。我们采用的是上电加按键复位方式,这样做的优点是上电后可以直接进入复位状态,当程序出现错误时,可以随时使电路复位。

2.2.4 时钟电路

单片机内部有一个高增益、反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。通过这两个引脚在芯片外并接石英晶体振荡器和两只电容(电容和一般取33pF)。这样就构成一个稳定的自激振荡器。振荡电路脉冲经过二分频后作为系统的时钟信号,再在二分频的基础上三分频产生ALE信号,此时得到的信号是机器周期信号。

2.2.5 按键电路

本设计中有四个按键,分别实现秒表复位、启动/停止、暂停/继续、清零功能。这四个键可以采用中断的方法,也可以采用查询的方法来识别。由于按键用于时间的锁定,需要比较准确的控制。因此考虑,采用定时器/计数器中断的方式进行控制。

2.2.6 数码管显示的实现

对于数字显示电路,通常采用液晶显示或数码管显示。本设计的显示电路采用7段数码管作为显示介质。数码管显示可以分为静态显示和动态显示两种。由于本设计需要采用八位数码管显示时间,如果静态显示则占用的口线多,硬件电路复杂。所以采用动态显示。此时,各数码管分时轮流选通,要使其稳定显示必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另一位数码管,并送出相应的段码,依此规律循环,即可使各位数码管显示将要显示的

6

字符,虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可以给人同时显示的感觉。本设计采用共阴极数码显示管做显示电路,由于采用的是共阴的数码显示管,所以只要数码管的a、b、c、d、e、f、g、dp引脚为低电平即可导通。由于数码管是有P0口来驱动,它内部没有上拉电阻,作为输出口时驱动能力比较弱,不能点亮数码显示管,因此P0口必须接上拉电阻来提高驱动能力。

2.3 电路原理图、PCB图、元器件布局图

2.3.1 电路原理图

数字式秒表电路原理图见附录A

2.3.2 PCB图

数字式秒表PCB图见附录B

2.3.3 元器件布局图

数字式秒表元器件布局图见附录C

2.4 元器件清单

数字式秒表元器件清单见附录D

7

3 软件系统的设计

3.1 使用单片机资源的情况

本次设计主要使用的是AT89S52单片机的P0,P2,P1口,定时/计数器0,来实现数字式秒表的功能。首先,要使用AT89S52单片机必须对其晶振及相关的寄存器进行设置。其次对其端口进行设置。最后对定时/计数器以及相关的寄存器进行相关的设置即可。

这里我们使用30H~37H字节单元存放时间数据和间隔符,50H字节单元存放定时循环次数,20H字节单元存放键值,78H~7FH字节单元则为显示缓存区。使用定时器/计数器0以工作方式1和中断方式进行工作。按键S2、S3、S4分别接P1.0、P1.1、P1.2实现启动/停止、暂停/继续、清零功能。P0.7~P0.0段控线接LED的显示段dp,g,f,e,d,c,b,a。P2.7~P2.0位控线从左至右接LED7~LED0。

3.2 软件系统各功能模块简要介绍

3.2.1 主程序

主程序是整个程序的主体。可以对各个子程序进行调用。协调各个子程序之间的联系。系统(上电)复位后,进入主程序,首先对系统进行初始化,包括设置各入口地址、中断的开启、对各个数据缓存区清“0”、赋定时器初值,在主程序中还进行了赋寄存区的初始值、设置定时器初值以及开启定时器等操作,当定时时间到后就转去执行定时中断程序,初始化完毕后,就进入数码管显示程序。

3.2.2 显示程序

数码管显示程序对显示缓存区内的数值进行调用并在数码管上进行动态显示。显示一次就对复位键和功能键进行一次扫描,查询复位键是否按下,当复位键按下后,程序返回开始,重新对系统进行初始化。当没有按下复位键时,程序则扫描功能是否按下,当功能键没有按下则返回显示程序,不断地调用显示缓存区的数据进行显示。使用户能清楚的看到当前电子秒表所记录的时间。当查询到功能键按下后则跳转到另外一段显示程序并调用缓存区的数据进行显示。与此同时,同时也在对功能键进行扫描,当功能键断开后立即跳转回之前的显示程序显示当前的计时时间。

3.2.3 键功能程序

通过键扫实现各种秒表计时功能。核心部分是键扫子程序。通过扫描判断是否

8

有键按下,如有键按下通过指令读得键值,执行相应功能指令。如无键按下,则继续执行当前程序并不断扫描是否有键按下。若按下S1实现复位功能,显示“P.”。若按下S2键则执行秒表启动计时/停止功能。按下S3、S4键分别执行秒表继续/暂停和清零功能。

3.2.4 中断服务程序

中断服务程序主要的功能是实现时钟累进。即指秒表LED显示缓冲区的8位数值按一定规律逐位递进。由于定时时间为10ms,所以每进行一次中断,显示缓冲区的十毫秒为内容加一,然后判断是否加了10次,如不是,则马上跳出时钟累进程序,但如果是,则需将本单元内容清零,然后使百毫秒位内容加一。以此类推,实现十毫秒、百毫秒、秒、十秒、分、十分的逐位递进。

3.3 软件系统程序流程框图

3.3.1 主程序流程框图

图3.1 主程序流程图

9

10

定时中断服务程序流程图

图4 定时中断服务程序流程图

11

3.2.3

3.2.4 显示子程序流程图

图5显示子程序流程图

3.3 电子钟总体程序清单

;**********************************************************************; ;项目名称:数字电子钟 ;设计者:顾永峰

;设计日期:2011年12月22日

void DelayX1ms(uint count) {

uint j;

while(count--!=0) {

for(j=0;j<80;j++); } }

/*显示函数*/ void disp() {

char i,j=0xfe;

12

char k;

for(i=0;i<8;i++) {

P2=j;

k=find_code[i]; P0=dis_code[k]; DelayX1ms(1); j=_crol_(j,1); P2=0xff ; } }

/************************************************************************

* 函数原型:keychuli();

* 功 能:处理与键盘相连的P1口的内容,作为键值。

************************************************************************/

uchar keychuli() {

uchar k;

k=P1; //P1口内容送K k=~k; //取反

return(k); //返回键值 }

/************************************************************************

* 函数原型:key();

* 功 能:键盘扫描函数,函数返回值即键值。

************************************************************************/

uchar key() {

uchar keyzhi,keyzhii; //电子钟键盘按键键值临时存放 keyzhi=keychuli(); //调P1口处理函数

if(keyzhi!=0) //有键动作延时去抖动,否则函数返回 { disp(); disp();

keyzhi=keychuli(); //再次调P1口处理函数

if(keyzhi!=0) //真正有键按下,取键值并暂存 {

keyzhii=keyzhi;

13

while(keyzhi!=0) //判按键是否释放,没有释放延时去抖动等待释放

{

disp();

keyzhi=keychuli(); }

keyzhi=keyzhii; //按键释放后恢复按键键值 } }

return(keyzhi); // }

/* 中断*/

void zd() interrupt 1 using 1 {

n++;

if (n==100) {

TH0=(65536-10000)/256;

TL0=(65536-10000)%6; sec=sec+1; if (sec>=60) {

sec=0;

min=min+1 ; }

if (min>=60) {

min=0; hou=hou+1; }

if (hou>=24) {

hou=0; }

find_code[0]=sec; find_code[1]=sec/10; find_code[2]=13; find_code[3]=min; find_code[4]=min/10; find_code[5]=13;

find_code[6]=hou; find_code[7]=hou/10;

返回按键键值 14

n=0; } }

void main() {

char i,j;

char keyzhiii;

EA=1; ET0=1; TR0=0; while(1) {

disp(); TMOD=0X01;

TH0=(65536-10000)/256;

TL0=(65536-10000)%6; keyzhiii=key(); switch(keyzhiii) {

case 0x00 : disp(); break;

case 0x01 : s2b2=!s2b2; if (s2b2==1) {TR0=1;} else {

TR0=0; }

break;

case 0x02 : if (TR0==0) {

sec=sec+1;

find_code[0]=sec; find_code[1]=sec/10; }

break; case 0x04 : if (TR0==0)

15

{

min=min+1;

find_code[3]=min; find_code[4]=min/10; }

break; case 0x08 : if (TR0==0) {

hou=hou+1;

find_code[6]=hou; find_code[7]=hou/10; break; } } } }

4 电子钟设计结论使用说明

4.1. 电子钟设计结论

本次采用AT89S52单片机为主控芯片,加上单片机最小系统部分电路,外加LED数码显示管组成的数字式电子钟系统,能够精确的完成时钟运行及时钟调整,符合课题的功能要求。

4.2 电子钟使用说明

系统上电后,即显示提示符“P.”,电子钟进入准备工作状态。使用如下步骤即可熟练掌握此数字式秒表的使用,功能如下:

① 按下复位键,数字式秒表显示提示符“P.”。 ② 按下A键,数字电子钟自动从00-00-00开始运行。

③ 按下A键,数字电子钟执行暂停/继续功能及进入调整状态。 ④ 此时按下B、C、D、键,数字电子钟可以进行相关调整。

16

4.2 仿真结果

按下总开光或复位键键,电子钟显示提示符“P.”:

图6仿真结果

按下A键数字电子钟开始从00-00-00运行

图7仿真结果

4.误差分析

根据仿真结果与秒表实践对比计算,经过多次测量数据可知,误差在145ms左右。基本符合课题要求,所以设计可行。

经分析,产生误差的原因可能有如下几种:

第一,利用延时子程序进行扫描时,在延时程序中由于不精确计时产生的误差。 第二,仿真电路软件的系统误差导致计时偏差。

4.4 设计体会

此次设计是利用单片机和接口外加数码管及键盘电路实现数字式秒表的设计。

17

单片机课程设计,是对单片机知识的验证,可以帮助我们理解巩固所学知识,激发我们对单片机课程的兴趣,更锻炼了我们独立思考、开拓创新的能力。由于在平时的学习中,虽然对于这门课程也花了很多功夫,但是很多基础的东西都还没有很好的掌握,觉得很难,也没有很有效的办法通过自身去理解,但是靠着这一个多礼拜的狠下苦功,虚心要老师和同学请教,在王老师和同学的帮助和讲解下,渐渐对遇到的难点拥有了更多的解决思路,并且逐渐对前方的阻碍不再害怕。自己开始主动学习并逐步一一打破难题。我认为这个收获应该说是相当大的。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。这次的课程设计还让我学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。更重要的是,我在这一设计过程中,学会了坚持不懈,不轻言放弃。从另外一方面,在设计的过程中还发现了自己很多的不足之处,对以前所学的知识点理解的不够深刻,掌握的不够熟练。因此在编程过程中走了许多弯路,也遇到了许许多多的问题。通过查阅大量的资料,反复在软件中进行调试,在实物中进行实践,不仅锻炼了自己的动手能力,培养了自己的耐心,还进一步体会到了创造过程中的探索的艰难和成功时的喜悦。

总体来说,整个电路由硬件电路和软件程序两部分构成。优势在于硬件电路使用元件少,电路结构简单,功能强;软件程序设计结构合理,思路清晰,利用中断服务程序对各种事件进行处理,提高微处理器的工作效率。缺点则是程序还可以更精简,在以后的设计过程中要进一步克服思维上的害怕困难,用于探索。

4.5 教学建议

单片机是我们大学期间应该掌握的一门重要基础课程,为我们的后续学习起到了重要的承前启后的作用。而我们有幸得到了王老师的细致认真的教学。作为学习委员的我,有了比同学们更多的接触王老师的机会。初次接触,感觉老师是一个很严厉认真的学者,不易接近,很多时候会害怕自己犯下哪怕一点小错误。但是慢慢的相处下来,才发现老师不仅是一个教学认真,思维缜密的学者,使我们在学习中更加认真的付出和投入,掌握了许多有用的知识。更加像一个谆谆善诱的朋友,教会我们在学习时不仅要学会知识点的巩固,平时更加要掌握灵活学习的方法。另一方面时常与我们交流人生的道理,以自己的经历引导我们在日常的学习生活中能够走的更加顺畅,真心的感谢王老师!

针对您的教学,下面我也提出几点小小的建议:

首先,我认为在平时的课堂上可以抽出一点时间,复习一下上节课所学习的知

18

识,加深同学们的印象。

其次,可以在班上设立学习小组或以寝室为单位展开知识竞赛,定期对知识进行检测,既提高了同学们的学习积极性,也不会在期末复习中有很重的学习压力。

最后,希望老师平时在生活中可以多一点笑容,同学们不仅能够在一个更加轻松的氛围中学习,老师也能够更加愉快的面对工作和生活。

19

参考文献

[1]郑毛祥.单片机应用基础[M].北京:人民邮电出版社,2006.

Mao Zheng Xiang. Microcomputer application basis [M]. Beijing: People Post Press,2006.

[2]李鸿. 单片机原理及应用[M].湖南:湖南大学出版社,2004.

Li Hong.Microcontroller theory and applications [M]. Hunan: Hunan University Press,2004.

[3]戴佳. 单片机C51语言应用程序设计[M].湖北:电子工业出版社,2006.

Dai Jia.Microcontroller programming language application C51 [M]. Hubei: Electronic Industry Press,2006

[4]杨宁,胡学军.单片机与控制技术[M].北京:北京航空航天大学出版社,2005.

Yang Ning,Xue-Jun Hu.SCM and control technology [M]. Beijing: Beijing Aerospace University Press,2005.

[5]马忠梅等.单片机C语言应用程序设计[M].北京:北京航空航天大学出版社,1997.

Ma Zhongmei and so on. SCM C language application programming [M]. Beijing: Beijing Aerospace University Press,1997.

20

致 谢

经过一个星期的查资料、整理材料、进行仿真、写课程设计报告书,今天终于可以顺利的完成一份完整的课程设计说明书了,时光匆匆飞逝,一周多的努力与付出,随着说明书的完成,也更加提醒我们在对待科学的严肃与认真。说明书得以完成,要感谢的人实在太多了,首先要感谢王老师,因为说明书是在王老师的悉心指导下完成的。王老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对我影响深远。老师指引我的说明书的写作的方向和架构,并对初稿进行逐字批阅,指正出其中误谬之处,使我有了思考的方向,他的循循善诱的教导和不拘一格的思路给予我许多启迪,他的严谨细致、一丝不苟的作风,将一直是我工作、学习中的榜样。王老师还要指导其他几位同学的课程设计说明书以及毕业设计,加上本来就有的教学任务,工作量之大可想而知,但在每一次对待我们的问题总是悉心解答,使我在学习之外明白了做学问所应有的态度。说明书的顺利完成,也离不开其它各位老师、同学和朋友的关心和帮助。感谢在整个的写作与课程设计的过程中,各位老师、同学和朋友积极的帮助我查资料并且提供有利于做课程设计的专业方面得积极的建议和意见。

21

附 录

附录A 电路原理图

22

附录B PCB图

23

附录C 元器件布局图

附录D 元器件清单

24

25

本文来源:https://www.bwwdw.com/article/pimo.html

Top