资源描述
目录1设计方案.11.1 技术指标.11.2 具体方案.12设计总体框图.12.1 设计流程框图.12.2 程序流程图.23设计单元电路.44电路原理说明.44.1 硬件的实现与原理说明.44.2 软件的实现与原理说明.54.3 各个部分的电路原理说明.55参考文献.66设计心得.6附录.7附录1:调试报告.7附录2:元器件清单.8附录3:程序源代码.9武汉理工大学专业课程设计3课程设计说明书电子跑秒表的设计1设计方案1.1 技术指标本设计以89S51单片机为核心芯片,设计一模拟电子跑秒表,要求有:1.利用LED 显示秒表的计时过程;2.可以对秒表进行初始时间设置;3可以调整秒表的时间。1.2 具体方案在明确跑秒表的设计要求及其指标以后,总体把握设计的思路。首先要弄懂89s51芯 片的各个管脚的含义,以及51单片机内延迟程序及计时器的功能。在电子领域中可以通 过各种方法来实现跑秒表的功能,但是我们要根据实际的情况来设计这一方案。首先,通 过画出程序流程图以及实验总体框图设计出要实现的功能,在进行设计各个功能的实现方 案。我在设计的时候使用了 AT89s51单片机以及四位LED数码管。各个功能由4个按键 控制,分别为K1,K2,K3,K4,按下K1,选位,移位建,按下去时,进入设定状态,再按一 下依次循环位移,选中某一位后,该位数码管闪烁;K2为+1键;K3为暂停键;K4为复 位,清零键。2设计总体框图2.1设计流程框图设计总体框图,就是对设计流程的总体布局1武汉理工大学专业课程设计3课程设计说明书图1设计流程框图2.2程序流程图程序流程图是对程序功能的总体把握2武汉理工大学专业课程设计3课程设计说明书开始计时-yN下/Y*第一次按下选择计时,再 按下移位y2/k2 是1/该位数码管数值+1-k继续计时-.N/K3是否 XXY*暂停计时/y厂K4是 复吟/位N*设定时间到,停止计时图2程序流程图3武汉理工大学专业课程设计3课程设计说明书3设计单元电路U3AU3B 五二为g亍*452_工AQ3MQ:RMOi2J i 匕g rxwj RSS”E“U FJWAMmiiTioTF*以t yq 口由q图3硬件电路图在protues中模拟出电路的硬件的链接情况,其中主芯片为89c51,整个电路由kl,k2,k3,k4来控制,实现设计所需要的要求。P0 口指向LED的各个管脚,P2 口控制LED的 选片。U3A,U3B,U3C,U3D,为4个反向器。该电路的组成部分有开关电路,和数码显示 电路。开关电路由4个按钮组成,4个按钮分别接上反向器然后分别接上P32P3.3,P3.5,P3.6 口。数码显示电路由4个共阳极LED数码管组成,它的8个数码显示端口接到P0 口,由 p2 口的四个端口来控制选片。4电路原理说明4.1硬件的实现与原理说明利用protues软件做出硬件的连接图。打开protues后点击边栏的p后依次查找到 7SEG-MPX4-CA4位共阳极LED数码管,24co20c外部存储器,7470反向器,80c51芯 片以及button按钮,如下图。然后将各个元器件按照硬件连接图连起来,组成仿真电路图,4武汉理工大学专业课程设计3课程设计说明书为下一步的仿真做好准备。的 Pick DevicesKeywords:Results(31):|80击Device|Library|DescriptionMatch Whole Words?80C51MCS80518051 core microcontroller with 4kB ROM,12ECategory:80C51.BUSMCS80518051 core microcontroller with 4kB ROM,12E83C576MCS80518051 core Microcontroller with 8kB ROM,25(All Cateaoriesl H83C654MCS80518051 core Microcontroller with 16kB ROM,2EMicroprocessor ICsP83C524MCS805180C51 Microcontoller(16kB Code/512B RAN-P83CE558MCS805180C51 Microcontoller(32kB Code/1kB RAM,P83CE559MCS805180C51 Microcontoller(48kB Code/1536B RAP87C51FAMCS805112-clk 80C51 Microcontoller(256B RAM,321P87C51FA.BUSMCS805112-clk 80C51 Microcontoller(256B RAM,321图4 protues元器件查找图4.2软件的实现与原理说明利用keil软件将编写的程序转换成hex格式,然后加载到protues中进行模拟仿真。4.3各个部分的电路原理说明AT89C51:单片机,控制LED显示。LED1-LED4:七段码LED,用于显示秒表数据。按键K1:第一次按下时开始设定时间,后面按下时为选片的功能。K2按下时,选定的led 数码管数值+Lk3按下时计时暂停。K4按下时系统清零,重新开始计时。相应管脚说明:VCC、VPP:接电压。VSS:接地。P0 n:P0 口为一个8位漏级开路双向I/O 口,每脚可 吸收8TTL门电流。当P1 口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部 程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码 输入口,当FIASH进行校验时,P0输出原码。P1 口:P1 口是一个内部提供上拉电阻的8 位双向I/O 口,P1 口缓冲器能接收输出4TTL门电流。P1 口管脚写入1后,被内部上拉为 高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1 口作为第八位地址接收。P2 口:P2 口为一个内部上拉电阻 的8位双向I/O 口,P2 口缓冲器可接收,输出4个TTL门电流,当P2 口被写 1时,其 管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将 输出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或16位地址外部数据 存储器进行存取时,P2 口输出地址的高八位。在给出地址 1时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在 FLASH编程和校验时接收高八位地址信号和控制信号。P2.6和P2.7端口分别控制数码管 的十位和个位的供电,当相应的端口变成低电平时,驱动相应的三极管会导通,+5V通过 IN4148二极管和驱动三极管给数码管相应的位供电,这时只要P0 口送出数字的显示代码,5武汉理工大学专业课程设计3课程设计说明书数码管就能正常显示数字。P3 口:P3 口管脚是8个带内部上拉电阻的双向I/O 口,可接收 输出4个TTL门电流。当P3 口写入1”后,它们被内部上拉为高电平,并用作输入。作为 输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。RST:复 位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编 程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6o因此它可用作对外部输出的脉冲或用于定时目的。然而要注 意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在 SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另 外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程 序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,止匕间 内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。两位 数码管循环显示0099电路,数码管只要是用于数字的显示。数码管有共阴和共阳的区 分,单片机都可以进行驱动,但是驱动的方法却不同。两位数码管循环电路是由1K的电 阻、IN4148二极管和数码管组成,电源+5V通过560的电阻直接给数码管的7个段位供电,P0.0-P0.7对应了两个接数码管的A,B,C,D,E,F,G和小数点位,P2.0和P2.1接显示个位数的 数码管的3、8引角,P2.2和P2.3则接十位数的。P2.0和P2.1端口分别控制数码管的十位 和个位的供电,当相应的端口变成低电平时,驱动相应的PNPS8550三极管会导通,+5V 通过IN4148二极管和驱动三极管给数码管相应的位供电,这时只要P0 口送出数字的显示 代码,数码管就能正常显示需要的数字。5参考文献1胡乾斌,李光斌,李玲.单片微型计算机原理与应用(第二版)华中科技大学出版社,2006 2李全利,仲伟峰,徐军.单片机原理及取用.清华大学出版社,20063沈红卫.基于单片机的智能系统设计与实现.北京:电子工业出版社,2005.6设计心得本次课程设计已接近尾声,在为期两周的时间里,先后做了 C+和单片机的课程设计,两个都涉及到程序的编程。就单片机而言,由于单片机集成度高,功能强,可靠性抢,体 积小,耗能低,使川方便,价格低廉等优点,所以在目前单片机已经涉及到我们生活的方 方面面,单片机的应用已经从工业控制,通讯,交通,智能仪表等迅速发展到家用消耗品,办公自动化等广大领域。6武汉理工大学专业课程设计3课程设计说明书在单片机的课程设计中,我不仅加深了对单片机理论的理解,将理论很好的应用到实 际当中去,而且学会了如何解决问题,和不断地战胜自己。在这次课程设计中海学会了川 于单片机编程的一些的软件,包括keil和protues软件的基本功能的使用。但是由于平时对单片机的知识学习的不够扎实,理解的不够透彻,导致在设计过程中 遇到种种困难,通过和同组的同学进行讨论,查看书籍,网络,最后一步一步的吧所有的 问题给一一解决,最终将课程设计的要求给设计出来了。通过这次单片机课程设计,让我学会了很多东西。首先,学会在学习的过程中药和其 他同学或者在以后的中作中的同事合作,还要查阅相关的书籍和资料,把各种问题搞清楚 弄明白。其次,我们要学会坚持不懈,不要轻言放弃,这对我们设计程序和做其他的事情 都不要轻言放弃。附录附录1:调试报告在首次运行的过程中,发现数码管显示出现乱码,结果发现选取的不是共阳极的LED 数码管,而是共阴极的LED数码管。经过替换后,显示正常。在控制LED的p2 口没有加 上反向器导致数码管输出地数值有错误。这些都是由于做硬件是没有吧注意力都放到这上 面导致的低级错误。按下K1,K2,K3,K4键发现没有反应计数器还是在运行没有暂停。发现程序中按键按下 后的数据没有被存储,需要一个外部存储器,加上一个ROM24c02即可实现该功能。正确运行图7武汉理工大学专业课程设计3课程设计说明书图5正确运行图开始后按下kl后开始设定时间,再次按下kl选定哪一片进行设定,k2键按下一次+1,k3键作用是暂停,k4键作用是清零,复位。若没按下k4键,等到设定时间时自动暂停。附录2:元器件清单89c51 1 个,24C02C 1 个,7SEG-MPX4-CA4 位共阳极 LED 数码管 1 个,LED,Button 3 个89c51引脚图:AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能 CMOS 8 位微处理器,俗称单片机。AT89c2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片 机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制 造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和 闪烁存储器组合在单个芯片中。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高 且价廉的方案。外形及引脚排列如图所示8武汉理工大学专业课程设计3课程设计说明书T2ZP1.0 C T2EXZP1.1 CP1.2 C P1.3 t Pl.4 C Pi.5 E Pl.6 C Pl.7 CRST C RXDZP3,0 C TXD/P3.1 C mo/P3.2 C INT1/P3.3 C T0/P3.A C T1/P3.5 C TO/F3,6 t RD/P3.7 C XT AL 2 C XTAL1 EPDIP GHD 匚01234567890 12 3 4 5 G 718 31111111111209876543210987654321 4 3s33333333222222222 Vcc PO O/ADO PO 1/AD1 PO 2/AD2 PO 3ZAD3 P0.4/AD4 PO.5/AD5 PO 6/AD6 PO 7/AD7 EA/VPP ALE/PRO PESH P2 7/A15 P2 6/A14 P2 5/A13 P2 4/A12 P2 3ZA11 P2.2/A10 P2 l/AS P2 0/A8图6 AT89c51引脚图附录3:程序源代码#include#include#include#define uchar unsigned char#define uint unsigned intsbit KEY1=P3A2;/位选、移位键sbit KEY2=P3A3;加一键sbit KEY3=P3A6;停止键sbit KEY4=P3A7;复位、清零键bit stop=0;sbit JDQ=P1A2;继电器输出,低有效bit xiugai=0;/修改状态标志sbit aO=ACCAO;/定义ACC的位,利用ACC操作速度最快sbital=ACCAl;sbit a2=ACCA2;sbit a3=ACCA3;sbit a4=ACCA4;sbit a5=ACCA5;sbit a6=ACCA6;sbit a7=ACCA7;9武汉理工大学专业课程设计3课程设计说明书sbit scl=P3A4;/24c02 时车巾sbit sda=P3A5;/24c02 数据uchar buf4=0,0,0,0;uchar code low4=0 xfe,0 xfd,0 xfb,0 xf7;时间存储区位码,低有效uchar code seg=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;/*显示段表*/uchar disppoint;uchar ms;uchar dingshi4=0;uchar keyscan(void);void delay(uchar a);void disp(void);数据指针/IMS设置时间按键子程序延时/EEPROM24C02 程序void s24(void);void p24(void);unsigned char rd24(void);void wd24(unsigned char dd);unsigned char read(unsigned int address);void write(unsigned int address,unsigned char dd);void put_num(uchar c)送段码P0=segc&0 x0f;void timer0()interrupt 1 using 1/*定时器中断程序*/(EA=0;显示:TH0=0 xec;TL0=0 x78;io武汉理工大学专业课程设计3课程设计说明书disppoint&=3;P2=lo w disppo int;put_num(bufdisppo int);disppoint+;if(stop)EA=1;return;/-ms;if(ms=0)(ms=200;buf3+;if(buf39)buf3=0;buf2+;if(buf29)buf2=0;bufl+;if(bufl9)bufl=0;buf0+;if(buf09)buf0=0;EA=1;void main(void)uint sdsj,sjsj;uchar keyw;uchar i;uchar j=0;uchar zdtc=0;设定时间,实际时间键值循环显示指针长时间无按键,自动退出11武汉理工大学专业课程设计3课程设计说明书TMOD=0 x01;THO=Oxec;/*5ms*/TL0=0 x78;EA=1;ETO=1;TRO=1;JDQ=1;关继电器if(read(0 x05)!=OxOO)write(0 x01,0);write(0 x02,0);write(OxO3,O);write(0 x04,0);write(0 x05,0);dingshi0=read(0 x01);dingshi 1=read(0 x02);dingshi2=read(0 x03);dingshi3=read(0 x04);while(l)P3=0 xff;keyw=0;if(P3&0 xfI)!=0 xff)delay(2);if(P3&0 xff)!=0 xff)keyw=keyscan();首次开机,设置默认值数据读20C02数据判断是否有键按下去抖确实有键按下取键值正常显示状态switch(keyw)case 0 x01:xiugai=1;break;case 0 x02:stop=0;break;case 0 x03:stop=1;break;case 0 x04:if(stop)buf0=0;bufl=0;buf2=0;buf3=0;stop=0;break;default:;12武汉理工大学专业课程设计3课程设计说明书while(xiugai)TRO=O;fdr(i=0;i4;i+)(P2=lowi;put_num(dingshii);delay(4);)for(i=0;i4;i+)(P2=lowi;put_num(dingshii);delay(4);)fdr(i=0;i4;i+)P2=lowi;put_num(dingshii);delay(4);fbr(i=0;i4;i+)(P2=lowi;put_num(dingshi i);delay(4);fdr(i=0;i3)j=0;break;case 0 x02:dingshij+;if(dingshij9)dingshij=O;break;case 0 x03:write(0 x01,dingshi0);write(0 x02,dingshil);write(0 x03,dingshi2);write(0 x04,dingshi3);xiugai=0;TR0=l;break;case 0 x04:dingshi0=0;dingshil=0;dingshi2=0;dingshi3=0;break;default:;fbr(i=0;i4;i+)(P2=lowi;if(i=j)P2=0 xff;put_num(dingshi i);delay(4);for(i=0;i4;i+)(P2=lowi;if(i=j)P2=0 xff;put_num(dingshii);delay(4);)fbr(i=0;i4;i+)(P2=lowi;if(i=j)P2=0 xff;闪烁显示关闪烁位位码闪烁显示关闪烁位位码闪烁显示关闪烁位位码14武汉理工大学专业课程设计3课程设计说明书put_num(dingshi i);delay(4);fbr(i=0;i4;i+)(P2=lowi;if(i=j)P2=0 xff;put_num(dingshii);delay(4);fdr(i=0;i4;i+)(P2=lowi;if(i=j)P2=0 xff;put_num(dingshii);delay(4);/while(weigai)闪烁显示关闪烁位位码闪烁显示关闪烁位位码sdsj=dingshiO*1 OOO+dingshifl*1 00+dingshi2*l 0+dingshi3;sjsj=bufO*1 OOO+buf 1*100+buf2*10+buf3;if(sjsj=sdsj&sjsj!=0)JDQ=O;TRO=l;stop=l;while(l)(P3=0 xfF;keyw=0;if(P3&0 xfI)!=0 xff)delay(2);if(P3&0 xff)!=0 xff)keyw=keyscan();if(keyw=0 x04)到设定时间?/继电器动作停止计数判断是否有键按下去抖确实有键按下取键值buf0=0;bufl=0;buf2=0;buf3=0;stop=0;JDQ=l;break;/while(l)/mian15武汉理工大学专业课程设计3课程设计说明书按键扫描子程序-*/uchar keyscan(void)(if(KEYl=0)while(KEYl=0)dispQ;return 0 x01;if(KEY2=0)while(KEYl=0)disp();return 0 x02;if(KEY3=0)while(KEYl=0)disp();return 0 x03;if(KEY4=0)while(KEYl=0)dispQ;return 0 x04;else return 0 x00;显示子程序-*/void disp(void)uchar i;for(i=0;i0;k)fdr(i=20;i0;i)fdr(j=50;j0;j-);)16武汉理工大学专业课程设计3课程设计说明书EEPROM子程序-*/void s24(void)_nop_();scl=0;sda=l;scl=l;_nop_();sda=0;_nop_();scl=0;void p24(void)sda=0;scl=l;_nop_();sda=l;unsigned char rd24(void)(sda=l;scl=l;a7=sda;scl=0;scl=l;a6=sda;scl=0;scl=l;a5=sda;scl=0;scl=l;a4=sda;scl=0;scl=l;a3=sda;scl=0;scl=l;a2=sda;scl=0;scl=l;al=sda;scl=O;scl=l;a0=sda;scl=0;sda=l;scl=l;scl=O;return(ACC);void wd24(unsigned char dd)ACC=dd;sda=a7;scl=l;scl=0;sda=a6;scl=l;scl=0;sda=a5;scl=l;scl=0;sda=a4;scl=l;scl=0;sda=a3;scl=l;scl=0;sda=a2;scl=l;scl=0;17武汉理工大学专业课程设计3课程设计说明书sda=al;scl=l;scl=O;sda=aO;scl=l;scl=O;sda=l;scl=l;unsigned char read(unsigned int address)(unsigned char dd;dd=(address&0 x7ff)/256)l;s24();wd24(0 xa01 dd);scl=O;wd24(address);scl=O;s24();wd24(0 xa 11 dd);scl=O;dd=rd24();p24();return(dd);void write(unsigned int address,unsigned char dd)unsigned char ddd;ddd=(address&0 x7 ff)/256)1;s24();wd24(0 xa0|ddd);scl=0;wd24(address);scl=0;wd24(dd);scl=0;p24();while(1)s24();wd24(0 xa0|ddd);sda=l;if(sda=0)break;scl=0;)18
展开阅读全文