基于单片机多功能秒表课程设计任务书.docx
《基于单片机多功能秒表课程设计任务书.docx》由会员分享,可在线阅读,更多相关《基于单片机多功能秒表课程设计任务书.docx(29页珍藏版)》请在冰豆网上搜索。
![基于单片机多功能秒表课程设计任务书.docx](https://file1.bdocx.com/fileroot1/2023-7/11/f697ec26-edba-4412-973f-9acb65a0fc60/f697ec26-edba-4412-973f-9acb65a0fc601.gif)
基于单片机多功能秒表课程设计任务书
单片机课程设计
课题:
多功能秒表
成绩评定·
一、指导教师评语(根据学生设计报告质量、答辩情况及其平时表现综合评定)。
二、评分
评分项目
设计报告评分
答辩评分
平时表现评分
合计
(100分)
任务完成
情况
(20分)
课程设计
报告质量
(40分)
表达情况
(10分)
回答问题
情况
(10分)
工作态度与纪律
(10分)
独立工作
能力
(10分)
得分
课程设计成绩评定
班级0934111姓名学号093411143
成绩:
分(折合等级)
指导教师签字年月日
第一章设计目的
第二章设计任务要求
第三章总体设计
3.1任务分析
3.2方案确定
3.3单片机概述
3.3.1单片机的特点
3.3.2STC89C51单片机简介
3.3.3STC89C51功能特性概述:
第四章各部分电路设计
4.1显示原理
4.2键盘及读数原理............................................
4.3复位电路
4.4按键电路
4.5时钟电路
4.6驱动显示电路
第五章整体电路图
5.1相应程序..................................................
5.2硬件实物调试
5.3硬件调试..................................................
5.4软件调试
5.5系统联调
5.6现场调试
第六章设计总结
6.1设计过程中遇到的问题及解决方法
6.2设计体会
6.3对设计的建议.............................................
参考文献
一、设计目的
随着微电子技术的不断发展,数控系统也在不断地更新换代,先后经历了电子管(1952年)、晶体管(1959年)、小规模集成电路(1965年)、大规模集成电路及小型计算机(1970年)和微处理机或微型计算机(1974年)等五代数控系统。
前三代数控系统是属于采用专用控制计算机的硬接线(硬线)数控系统,一般称为普通数控系统,简称NC。
70年代初,随着计算机技术的发展,使小型计算机的价格急剧下降,采用小型计算机代替专用控制计算机的第四代数控系统,不仅在经济上更为合算,而且许多功能可用编制的专用程序来实现,将它存储在小型计算机的存储器中,构成所谓控制软件,提高了系统的可靠性和功能特色。
这种数控系统又称为软接线(软线)数控,即计算机数控系统,简称CNC。
1974年制成以微处理机为核心的数控系统,称为第五代微型机数控系统,简称MNC。
单片机控制系统的电子秒表,自动化程度高、成本低、体积小、控制精确等优点,有很好的经济效益和广阔的发展前景。
单片机控制系统的研制成功,是电子秒表发展中的一次较大的进步,它表明了目前正在使用的许多控制系统完全可以由单片机控制系统所代替。
二、设计要求
1、在暂停的情况下也能实现复位。
;
2、两位LED显示,显示时间为00~99秒;
3、每秒自动加一;
4、一个开始按键、一个复位按键、一个暂停按钮;
5、开机显示00.00;
三、总体设计
3.1任务分析:
要了个更好的说明验证。
首先要显示00.00,那么就要4位的数码管。
要达到0.01的验证所设计的电子秒表是否合理正确,单单靠理论说明还不够充分,我就相应地制作了硬件实物,这对理论就有精确度,可以用定时器定时10ms作为基数,计时就可以在这个基础上累加起来。
并把秒和小数后两位的数据用两个单元暂存,然后通过处理程序来处理两个单元,并送到I/O口来显示,这样就能够显示到0.01秒。
在实现清零、暂停、计时等功能,可以考虑用两个按钮来实现,一个按钮是复位来清零;一个按钮是暂停和停止。
3.2方案确定
根据专业对应所学知识,而且对基本理论知识进行相应的巩固、扩展,我选择了电子秒表作为设计内容,其特点是融合了多方面的基本理论知识,无论是硬件或软件上都属于比较典型的设计。
本电路直接采用单片机配合数码管和按键,直接实现功能,主要决定于软件程序的设计。
利用单片机的定时中断产生10ms定时来更新数据,再利用数制转换更新显示。
主要的难度在于控制部分的程序编写。
在此利用了2个按键分别对各个功能进行控制,显示部分用数码管,用的是1个4位数码管,主要是为了节约成本。
在此要考虑硬件的设计以及整体电路的可靠性,因此选用了这个方案,使得本电路的硬件设计难度不高,便于检查排错。
在软件程序上利用空闲及参数变化时对显示进行及时更新,从而保证了显示的连续性与实时性。
理论上可以利用定时中断和循环扫描这两种方式实现显示功能,前者效率较高,在整体上也使程序大大简化,但是这种方案是以牺牲一个内部定时中断作为代价的,在稍复杂的程序设计中是不划算的,因此我选择了第2种方案,即循环扫描的方式,虽然这种方式使程序的编写增加了一定的难度,但可以节约了单片机宝贵的中断资源。
3.3单片机概述
电子计算机是20世界纪40年代发展起来的新技术之一,它的出现是科学技术产生了一场深刻的革命。
特别是自1971年以来,随着大规模集成电路的发展,又出现了微型计算机。
它对发展现代化的工业、农业、国防和科学技术具有极其巨大的推动作用。
作为微型机控制系统的组成,主要分为两大部分,硬件和软件。
硬件是指微型计算机本身及其外围设备;软件是指管理计算机的程序以及过程控制应用程序。
3.3.1单片机的特点
1.有优异的性能价格比。
2.集成度高、体积小、有很高的可靠性。
单片机把各功能部件集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连线,大大提高了单片机的可靠性和抗干扰能力。
另外,其体积小,对于强磁场环境易于采取屏蔽措施,适合在恶劣环境下工作。
3.控制功能强。
为了满足工业控制的要求,一般单片机的指令系统中均有极丰富的转移指令、I/O口的逻辑操作以及位处理功能。
单片机的逻辑控制功能及运行速度均高于同一档次的微机。
4.低功耗、低电压,便于生产便携式产品。
5.外部总线增加了I2C(Inter-IntegratedCircuit)及SPI(SerialPeripheralInterface)等串行总线方式,进一步缩小了体积,简化了结构。
6.单片机的系统扩展和系统配置较典型、规范,容易构成各种规模的应用系统。
3.3.2STC89C51单片机简介
5l系列单片机中典型芯片(AT89C51)采用40引脚双列直插封装(DIP)形式,内部由CPU,4kB的ROM,256B的RAM,2个16b的定时/计数器TO和T1,4个8b的工/O端I:
IP0,P1,P2,P3,一个全双功串行通信口等组成。
特别是该系列单片机片内的Flash可编程、可擦除只读存储器(E~PROM),使其在实际中有着十分广泛的用途,在便携式、省电及特殊信息保存的仪器和系统中更为有用。
STC89C51的引脚图如图1所示。
图1STC89C51
3.3.3STC89C51功能特性概述:
4kB存储器;256BRAM;32条工/O线;2个16b定时/计数器;5个2级中断源;1个全双向的串行口以及时钟电路。
空闲方式:
CPU停止工作,而让RAM、定时/计数器、串行口和中断系统继续工作。
掉电方式:
保存RAM的内容,振荡器停振,禁止芯片所有的其他功能直到下一次硬件复位。
3.3.4STC89C51引脚功能说明:
①主电源引脚(2根)
VCC(Pin40):
电源输入,接+5V电源
GND(Pin20):
接地线
②外接晶振引脚(2根)
XTAL1(Pin19):
片内振荡电路的输入端
XTAL2(Pin20):
片内振荡电路的输出端
③控制引脚(4根)
RST/VPP(Pin9):
复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。
ALE/PROG(Pin30):
地址锁存允许信号
PSEN(Pin29):
外部存储器读选通信号
EA/VPP(Pin31):
程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。
④可编程输入/输出引脚(32根)
STC89C51单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。
PO口(Pin39~Pin32):
8位双向I/O口线,名称为P0.0~P0.7
P1口(Pin1~Pin8):
8位准双向I/O口线,名称为P1.0~P1.7
P2口(Pin21~Pin28):
8位准双向I/O口线,名称为P2.0~P2.7
P3口(Pin10~Pin17):
8位准双向I/O口线,名称为P3.0~P3.7
⑤XTAL1与XTAL2
•XTAL1:
振荡器反相放大器及内部时钟发生器的输入端。
•XTAL2:
振荡器反相放大器的输出端。
四、各部分电路设计
4.1显示原理
整个硬件电路是配合程序来使用的,两者缺一不可,P0口输出字段信息,经限流后控制数码管的A~DP,而P2口接三极管,限流后驱动数码管的各个公共端,以达到显示目的。
P3口接按键电路,实现控制功能,整体电路简单明了,性能可靠,数码管如下所示:
图2数码管
4.2键盘及读数原理
键盘是人与微机打交道的主要设备,按键的读取容易引起误动作。
可采用软件去抖动的方法处理,软件的触点在闭合和断开的时候会产生抖动,这时触点的逻辑电平是不稳定的,如不采取妥善处理的话,将引起按键命令错误或重复执行,在这里采用软件延时的方法来去除抖动,延时时间10ms。
4.3复位电路
复位是单片机的初始化操作。
其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。
除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。
除PC之外,复位操作还对其他一些寄存器有影响。
RST引脚是复位信号的输入端。
复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。
若使用颇率为6MHz的晶振,则复位信号持续时间应超过4us才能完成复位操作。
产生复位信号的电路逻辑如图3所示:
图3复位信号电路逻辑图
(A)(B)
图4复位电路图
上述电路图中的电阻、电容参数适用于6MHz晶振,能保证复位信号高电平持续时间大于2个机器周期。
本系统的复位电路采用图4(A)上电复位方式。
4.4按键电路
按键是常开的按键开关,每个按键都被赋予一个代码,称为键码。
按键的开关状态通过一定的电路转换为高、低电平状态。
按键闭合过程在相应的I/O端口形成一个负脉冲。
闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。
抖动持续时间的长短与开关的机械特性有关,一般在5~10ms之间。
本设计中是用软件程序来去除抖动。
由于系统使用到的按键数并不多,所以不选用矩阵键盘而选用独立式按键电路。
直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生互相影响。
相应的按键电路图如图5所示。
图5按键电路
4.5时钟电路
STC89C51内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端。
时钟可以由内部方式产生或外部方式产生。
内部时钟电路如图6所示,在RXD和TXD引脚上外接定时元件,内部振荡器就产生自激振荡。
定时元件通常采用石英晶体和电容组成的并联谐振回路。
晶体振荡频率可以在1.2~12MHz之间选择,电容值在5~30pF之间选择,电容值的大小可对频率起微调的作用。
外部方式的时钟电路如图6所示,RXD接地,TXD接外部振荡器。
对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。
片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。
图6时钟电路图
4.6驱动显示电路
LED显示器是单片机应用系统中常用的廉价输出设备。
它是由若干个发光二极管组成的,当发光二极管导通时,相应一个笔画发光,控制某几段发光二极管导通,就能显示出某个数码或字符。
在单片机应用系统中,显示器显示有静态显示和动态扫描显示两种方法。
1.静态显示
所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。
这样单片机只要把要显示的字形代码发送到接口电路就可以了,直到要显示新的数据时,再发送新的字形码。
使用这种方法CPU的开销小,控制程序简单,但占用较多的硬件资源。
2.动态扫描显示
动态扫描显示是单片机中应用最为广泛的一种显示方式。
其接口电路是把所有显示器的8个笔划段A~DP同名端连在一起,而每一个显示器的公共极COM各自独立地受I/O线控制。
CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是哪个显示器亮,则取决于COM端,而这一端是由I/O控制的,因此就可以自行决定何时显示哪一位了。
所谓动态扫描就是指采用分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。
共阳数码管的引脚图如图7所示。
图7数码管引脚
图8驱动显示电路
五、整体电路图
图9整体电路图
5.1相应的程序如下:
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharmiao=0,fen=0;
ucharcount=0;
ucharqian,bai,shi,ge;
ucharcodeduanma[]={0xA0,0xBE,0x62,0x2A,0x3C,0x29,0x21,0xBA,
0x20,0x28,0x30,0x25,0xE1,0x26,0x61,0x71};//字符1,2,3,,,,,0
sbitstart=P1^0;
sbitclear=P1^1;
sbitw1=P2^0;
sbitw2=P2^1;
sbitw3=P2^2;
sbitw4=P2^3;
bitKT=0;
sbitpoint=P0^5;
/********1毫秒延时子函数**********/
delay1ms(uintt)
{
uinti,j;
for(i=0;ifor(j=0;j<120;j++)
;
}
/*************定时中断********************/
voidt0_(void)interrupt1//定时器0中断
{ET0=0;TR0=0;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TR0=1;
count++;
if(count==100)
{count=0;
miao++;
if(miao==99)
{miao=0;
}
}
ET0=1;
}
voiddisplay()/*****************显示程序**********************/
{P0=duanma[ge];
if(count>50)
point=0;
w1=0;
delay1ms
(2);
w1=1;
P0=duanma[shi];
if(count>50)
point=0;
w2=0;
delay1ms
(2);
w2=1;
P0=duanma[bai];
w3=0;
delay1ms
(2);
w3=1;
P0=duanma[qian];
w4=0;
delay1ms
(2);
w4=1;
}
/*****************键盘程序***************************/
keyscan()
{if(clear==0&&KT==0)
{delay1ms(20);
if(clear==0)
{while(clear==0);
miao=0;
count=0;
}
}
if(start==0)
{delay1ms(20);
if(start==0)
{while(start==0);
TR0=~TR0;
KT=~KT;
}
}
}
/****************主函数******************************/
voidmain()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
ET0=1;
TR0=0;
EA=1;
while
(1)
{
qian=miao/10%10;
bai=miao%10;
shi=count/10%10;//十位赋值
ge=count%10;//个位赋值
display();
keyscan();
}
}
5.2硬件实物调试
在制作实物前,元件要摆好,在制作的时候,焊接线要非常小心,不然会有很多的断线,还有就是焊接的时候也要小心,不然容易短路。
图10硬件实物图
5.3硬件调试
硬件调试一般分为四步骤:
第一个是目测法。
这个方法是我们最常用的方法之一,只要是检查一些很明显的错误,如电解电容的电极是否连错、焊点否光亮饱满无虚焊,用万用板连的线是否连好了、焊盘有否脱落。
对单片机应用系统中所用的器件与设备,要仔细核对型号,检查它们对外连线(包括集成芯片引脚)是否完整无损。
通过目测查出一些明显的器件、设备故障并及时排除。
第二个是万用表测试。
目测检查后,可进行万用表测试。
先用万用表复核目测中认为可疑的连接或接点,检查它们的通断状态是否与设计规定相符。
再检查各种电源线与地线之间是否有短路现象,如有再仔细查出并排除。
第三个是上电检查。
首先检查所有插座或器件的电源端是否有符合要求的电压,接地端电压是否接近于零,接固定电平的引脚端是否电平正确。
在对各芯片、器件加电过程中,是否出现打火、过热、变色、冒烟、异味的现象。
如出现这些现象,应立即断电,仔细检查电源加载的情况、各个芯片是否插反等,找出产生异常的原因并加以解决;并且用万用表测各芯片的引脚电平是否合理。
再有就是,在加电期间,通过给合逻辑功能简单的芯片加载固定输入电平,用万用表测其输出电平的方法来判定该芯片的好坏。
第四个是复位检查。
在上电检查后,按一下复位按钮,看实验板上的LED灯是否闪烁。
如果不闪烁,那么说明复位有问题。
就要仔细检查复位的电容是否接错了电极,线是否连错。
刚开始时,我就把复位按键给接错了,把它和开始、停止键同时接地了,应该是并联电容接的。
5.4软件调试
软件调试是通过对用户程序的汇编、连接、接行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。
本设计的软件调试是在伟褔6000编程软件中调试,只要是对中断程序和显示程序的调试。
首先对中断程序进行调试,看每分FENSHU、秒MIAOSHU、小数XIAOSHU的单元里面的内容是否正确;再对显示程序进行调试,这里的显示程序里面含有数据处理程序:
如把分FENSHU单元分成两个数字,再一个一个数字进行显示,对照一下是否正确。
如果不正确就要用“跟踪”或“单步”执行,一步一步检查中间进行过程的错误并加以纠正。
对显示程序的调试时,应调出“端口窗口”来看I/O端口的输出情况,是否符合所要显示的数据。
5.5系统联调
系统联调就是把程序加载到单片机上去进行调试。
首先是把显示程序加载上去,进行调试时,看数码管的显示是否正确,还要看显示的亮度是否太暗或太亮,是否出现了闪烁现象,如果显示不正确,就检查一下数码管的引脚和单片机的连线是否接错了。
如果有太暗或太亮的问题,说明限流的电阻的电阻值不合理,应适当调整。
如果出现闪烁现象,就要改变一下延时时间,直到合理为止。
然后把整个的设计程序都加载到单片机上去调试。
把单片机放到电路板上,进行整个系统程序的调试。
接上电源,按一下开始按钮。
看一下显示是否正确,时间运行是否符合运行轨迹。
也对照一下数码管显示的次序是否正确。
运行一段时间后,按一下停止按钮,让秒表停止。
5.6现场调试
一般情况下,通过系统联调后,就可以按照设计目标正常工作了。
但在某些情况下,在实际现场工作之前,环境对系统的影响无法预料,只能通过现场运行调试来发现问题,找出相应的解决方法;或者虽然在系统设计时考虑到抗干扰的对策,但是否行之有效,还必须通过在实际现场的运行来加以验证。
首先,上电后,让系统一直运行一天。
看看是否都能正常运行,并触摸芯片等器件是否有过度的发热或其他不正常的现象,并进行检查与相应的处理。
我的系统通电一天后都没有什么不正常的现象,看来设计得还合理。
其次,在通电运行中,对系统进行相应的干扰,比如在电话来电或者在通电话过程中对系统是否有一定影响,是否有停顿、闪烁现象。
如果有受干扰现象,证明抗干扰电路的抗干扰性不够强。
经过验证,系统都正常运行,抗干扰较强。
最后,检验误差性。
拿来一个真正的秒表与系统同时开始计时,并随时观看系统的稳定性。
然后,设定不同的时间段进行检验,这样正确性才会更加准确。
经过验证,系统的稳定很好,误差较小,精确度高。
六、设计总结
6.1设计过程中遇到的问题及解决方法
刚开始调试时,由于对编程不太熟悉,程序是东拼西凑出来的,编译总是有错误,无法仿真,然后就不得不看单片机书重新写程序,写了好多遍,改了好多遍仿真终于出来了,但是在烧程序过程中还是有错误,不过好在人多,最后在同学的帮助下终于把程序烧进去了。
6.2设计体会
本次课程设计,我实现了基于单片机的秒表系统的设计和模拟仿真,完成了此课程设计的要求,即硬软件设计,口接线、设计报告等。
在课程设计过程中,我遇到了好多问题,例如,虽然说上学期认真地学习了单片机课程,但由于没有实际操作过,运用起来变得有些生疏,通过跟老师和同学请教自己不懂的技巧,我深刻地认识到师生间的交流与同学之间的相互协作也是很重要的,有时候很多问题自己解决不了,但在老师与周围同学的帮助下很快就解决了。
再加上这次做课程设计对Proteus和keil的使用,更是让我学到了两个新的软件,使我对上述两种软件更加熟悉,用起来更得心应手,在做实物过程中更是体会到了分工合作的重要性,我们查资料,然后我们一起仿真学习软件。
刚开焊板子不能很好用电烙铁,电烙铁头很快黑了也无法焊了,后来在同学的知道下和自己的探索下终于能很好的运用电烙铁了,但是芯片太小操作起来也总是出错,总是把引脚弄弯,最后,终于焊好了。
焊板子虽然比较复杂,但是我们分工合作还是比大部分人先完成设计,达到了事半功倍的效果,然后我们又一起写了论文,虽然有点复杂,但是还是很快完成了本次课程设计。
通过课程设计让我体会到了合作的重要性,工作效率高而且很愉快。
在此,感谢老师和同学们的帮助。
另外,此课程设计用到了好多单片机的知识,遇到一些不懂的问题,通过查资料和跟老师和同学讨论,都一一解决了。
通过这次课程设计,我明白了在学习专业课程的过程中,自己动手真的很重要。
有些东西在课堂上一时半会儿也接受不了,更谈不上消化,但是通过课程设计,便能很快理解书本上的重点知识怎样应用在实际当中,这使我对区间知识有了更进一步的深入理解,使我更加坚信“千里之行,始于足下”这句话,刚开始拿到题目,