实训1:单片机秒表设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1单片机秒表设计(论文)题目名称:单片机秒表设计专业班级:学号:学生姓名:指导教师:2011年6月15日2一、单片机的功能单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。MCS-51系列单片机,其主要功能如下:·8位CPU·4kbytes程序存储器(ROM)·128bytes的数据存储器(RAM)·32条I/O口线·111条指令,大部分为单字节指令·21个专用寄存器·2个可编程定时/计数器·5个中断源,2个优先级·一个全双工串行通信口·外部数据存储器寻址空间为64kB·逻辑操作位寻址功能·双列直插40PinDIP封装·单一+5V电源供电40个引脚按引脚功能大致可分为4个种类:电源、时钟、控制和I/O引脚。⒈电源:⑴VCC-芯片电源,接+5V;⑵VSS-接地端;注:用万用表测试单片机引脚电压一般为0v或者5v,这是标准的TTL电平。但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v之间,其实这是万用表的响应速度没这么快而已,在某一个瞬间单片机引脚电压仍保持在0v或者5v。⒉时钟:XTAL1、XTAL2-晶体振荡电路反相输入端和输出端。⒊控制线:控制线共有4根,⑴ALE/PROG:地址锁存允许/片内EPROM编程脉冲3①ALE功能:用来锁存P0口送出的低8位地址②PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。⑵PSEN:外ROM读选通信号。⑶RST/VPD:复位/备用电源。①RST(Reset)功能:复位信号输入端。②VPD功能:在Vcc掉电情况下,接备用电源。⑷EA/Vpp:内外ROM选择/片内EPROM编程电源。①EA功能:内外ROM选择端。②Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。⒋I/O线80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)5.P3口第二功能P30RXD串行输入口P31TXD串行输出口P32INT0外部中断0(低电平有效)P33INT1外部中断1(低电平有效)P34T0定时计数器0P35T1定时计数器1P36WR外部数据存储器写选通(低电平有效)P37RD外部数据存储器读选通(低电平有效)二、设计思路1、使用单片机,设计秒表,能显示分分秒秒;2、使用三个按键停止,开始,复位,其中“开始”按键当开关由上向下拨时开始计时,此时若再拨“开始”按键则数码管暂停;“清零”按键当开关由上向下拨时数码管清零,此时若再拨“开始”按键则又可重新开始计时;3、使用液晶或数码管显示;4、使用定时器中断;三、功能实现及描述使用定时器中断产生50ms的时间;4每次中断,使用全局变量,记录当时的时间;主函数检查按键,显示时间;秒表设计导向图四、电路图及解释按键MCS-51液晶显示5解释:P3^4,P3^5,P3^6三个引脚分别接清零开关,停止开关和复位开关,P0口和p2口跟七段数码管相连,用来向七段数码管来发送数据。五、流程图及解释解释:程序从主函数开始,初始化端口,定时器赋初值TH0=56,TL0=56,设置成允许定时器中断,开始定时,若定时时间到50ms,定时器溢出,执行中断函数;计数值timecount0加1,若timecount0加到100,timecount0就清为0之后,timecount加1,若timecount0等于50,说明1s到了,timecount清空,秒计数器加1;把当前的时间送到P0,P2口在数码管上显示。判断TR0的值是否为0,若为0,这当前按键是开始,暂停6或继续,若不为0,都要判断P3_4是否等于0,若等于0,计数值0,不等于0,退出中断,返回主函数,继续计数。六、代码设计#includeAT89X52.H#includeintrins.h#defineucharunsignedchar#defineuintunsignedintuinttimecount=0,count=0,timecount0=0;//timecount为50ms计数器,count为1s计数器,均为全局变量ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x80};//0~9的段码表,0xff为熄灭符uchara1,a2,a3,a4;sbitdula=P2^6;sbitwela=P2^7;sbita=P3^4;sbitb=P3^5;sbitc=P3^6;/********延时函数********/voiddelay(uintxms)//延时程序,xms是形式参数{uinti,j;for(i=xms;i0;i--)//i=xms,即延时xms,xms由实际参数传入一个值for(j=10;j0;j--);//此处分号不可少}/********显示函数********/display(ucharq_c,ucharb_c,ucharsh_c,ucharg_c){dula=1;//控制显示代码锁存器,禁止输出P0=table[q_c];//0~9的显示代码dula=0;//控制锁存器,送出显示代码7P0=0xff;//4位管,电源全关(余晖)wela=1;//控制锁存器,不允许输出供电P0=0xfb;//第一位管供电一轮wela=0;//控制锁存器,允许输出,送出4位管供电delay(1);//保持一定时间,防止闪烁dula=1;P0=table[b_c]|0x80;dula=0;P0=0xff;wela=1;P0=0xf7;wela=0;delay(1);dula=1;P0=table[sh_c];dula=0;P0=0xff;wela=1;P0=0xef;wela=0;delay(1);dula=1;P0=table[g_c];dula=0;P0=0xff;wela=1;P0=0xdf;wela=0;delay(1);}voidkey(){if(a==0)//复位8{delay(10);if(a==0){count=0;TR0=0;while(a!=0);}}if(b==0)//停止{delay(10);if(b==0){TR0=0;while(b!=0);}}if(c==0)//开始{delay(10);if(c==0){TR0=1;while(c!=0);}}}/********主函数********/main(){P0=0xff;P2=0xff;TMOD=0x02;//定时器T0方式1TH0=56;TL0=56;//50ms定时初值EA=1;ET0=1;//开总中断,开定时器T0中断,启动定时器T09while(1){key();a1=(count/60)/10;//取出记数分数的十位a2=(count/60)%10;//取出记数分数的个位a3=(count%60)/10;//取出记数秒数的十位a4=(count%60)%10;//取出计数值的个位display(a1,a2,a3,a4);//调显示函数}}/********定时器T0中断函数********/voidtimer0()interrupt1using0{timecount0++;//计数值加1if(timecount0==100)//若timecount0为100,(100*0.2ms=20ms){timecount0=0;//timecount0清0timecount++;}if(timecount==50)//若timecount为50,说明1s到(50*20ms=1000ms){timecount=0;//当timecount=50时,timecount清0count++;//秒计数器加1}}七、实训总结通过这次的课程设计,使我对单片机程序设计的方法、要求有了初步的了解并且积累了一些实践经验,对软件的应用有了更进一步的了解,相信对以后进一步学习单片机知识,这对自己无论是在感性上还是理性上都会有一定的帮助,而且通过这次的设计,激发了我对单片机课程浓厚的兴趣,增强了我对书本理论的运用。虽然现在对所涉及的知识和10要求的综合分析能力较为复杂,可这其中体现了创新思想和知识的结合应用,今后我将更广泛地涉及这方面的知识,希望能在这一领域有所成就实验利用单片机的定时器/计数器定时和记数的原理,结合实验箱上的集成电路芯片LED数码管以及实验箱上的按键来设计计时器。将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。其中本实验设计了三个开关按键:其中一个按键按下一开始计时,即秒表开始键,另一个按键按下去时暂停计时,使秒表停留在原先的计时,第三个按键按下去时清0(复位键),本实验中开始时都要使各按键回到各初始位置,最终结果成功实现。

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功