《电子系统创新设计与实践》
课程期末论文
(2016——2017年度第一期)
得分 评卷人
题 目
专 业 班 级 学 号 姓 名
单片机数码管秒表
软件工程 15F *************
李国
二〇一六年十二月
摘要
近年来随着科学技术的发展,单片机的应用正在不断走下面还深入。本文简单阐述了基于单片机的数字秒表的的设计。本设计的主要特点是计时精度达到0.01秒,是各种竞赛的必要设备之一。
本设计的数字秒表采用ATC51单片机为主要器件,利用其定时器的原理,结合显示电路、LED数码管以及外部外部中断电路来设计计时器。将软硬件结合起来,使得系统能实现0~99.99秒的计时,计时精度位0.01秒。
实验目的:
数字秒表具有显示直观、读取方便、精度高等优点,在计时中广泛应用。本设计中用单片机和数码管组成数字秒表力求结构简单。
设计中包括硬件电路的设计和系统程序的设计。硬件电路主要有主控制器、控制按钮与显示电路组成。主控制器采用单片机ATC51,显示电路采用四位共阴极数码管显示计时时间。
本设计利用ATC51单片机的定时器,使其能精确计时。利用中断系统使其实现启动和暂停的功能,P0口输出段码数据,P2.0~P2.2连上译码器作为位选,P3.2和P3.3接口的两个按钮分别实现启动和暂停功能。设计的基本要求是正确性。
计时器采用T0中断实现,定时溢出中断周期为1ms,当溢出中断后向CPU发出溢出中断请求,每发出10次中断请求就对10ms位(即最后一位)加一,达到100次就对100ms位加一,以此类推,直到99.99s为止。
再看按键的处理。两个按键采用中断的方法,设置外部中断0和外部中断1位脉冲边沿触发方式,这样一来每当按键按下时便会触发中断,从而实现启动和暂停。
设计计时器的流程:
定时器中断入口 重装计数初值 中断次数加1 中断次数到10吗 中断次数清零,0.01秒位加一 0.01秒位到10吗 0.01秒位清零,0.1秒位加一 0.1秒位到10吗 0.1秒位清零,1秒位加一 1秒位到10吗 1秒位清零,10秒位加一 10秒位到10吗 10秒位清零 中断返回
程序源代码如下: #include unsigned int i,j,k,l,count; void delay(unsigned int z) //延时程序 { unsigned int x,y; for(x=z;x!=0;x--) for(y=110;y!=0;y--); } void main() { TMOD=0x01; // TH0=(65536-1000)/256; // TL0=(65536-1000)%256; EA=1; // EX0=1; EX1=1; ET0=1; IT0=1; // IT1=1; while(1) // { P2=0x03; P0=table[i]; delay(1); P2=0x02; P0=table[j]; delay(1); P2=0x01; P0=(table[k]+0x80); delay(1); P2=0x00; P0=table[l]; delay(1); }; } void ex0() interrupt 0 //{ TR0=1; //} void ex1() interrupt 2 //设置定时器为模式1 给定时器赋定时初值 开中断 设置外部中断位 数码显示 外部中断0 开定时器,开始计数 外部中断0 { TR0=0; //停止计数 } void timer0() interrupt 1 //定时器T0溢出中断 { TH0=(65536-1000)/256; //重装计数初值 TL0=(65536-1000)%256; count++; //溢出中断次数加一 if(count==10) { count=0; i++; //溢出10次,0.01s位加一 if(i==10) { i=0; //0.01s位到10了,清零,0.1s位加一 j++; if(j==10) { j=0; //0.1s位到10了,清零,1s位加一 k++; if(k==10) { k=0; //1s位到10了,清零,10s位加一 l++; } } } } } 系统总体电路如下图所示: ATS52单片机为主电路的核心部分,各个电路均与单片机相连,由单片机统筹协调各个电路的运行工作。 开始键和暂停键使用了外部中断,所以需要连到单片机的P3.2和P3.3引脚上,这两个I/O口的第二功能是单片机的外部中断0端口和外部中断1端口。 显示电路由四位数码管组成,采用动态显示方式,因此有8位段控制和4位位控制,8位段接控制接P0口,P0.0~P0.7分别控制数码管的a b c d e f g dp显示,位控制接在P2.0和P2.1两个口,在通过一个2—4译码器实现位控制。 RP1U119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617123456718XTAL29RSTU2:A231ABE74LS139Y0Y1Y2Y34567RESPACK-8293031PSENALEEA12345678P1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.7ATS52 系统运行时的情况: RP1U1U2:A RP1U1U2:A 参考文献: 赵建领.51系列单片机开发宝典。北京:电子工业出版社,2007 总结: 要多加练习程序的编写和电路的实现,弄清进制转换和进位。 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo0.com 版权所有 湘ICP备2023021991号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务