电子秒表课程设计.docx
- 文档编号:7984814
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:11
- 大小:51.40KB
电子秒表课程设计.docx
《电子秒表课程设计.docx》由会员分享,可在线阅读,更多相关《电子秒表课程设计.docx(11页珍藏版)》请在冰豆网上搜索。
电子秒表课程设计
专业(电子)课程设计报告
题目:
电子秒表
院(系)工学院
专业电子信息工程
年级07-1
姓名兴隆年学号07042112
指导教师liu*
2010年12月17日
前言
当今,计算机技术带来了科研和生产的许多重大飞跃,微型计算机的应用已渗透到生产、生活的各个方面。
其中单片微型计算机虽然问世不久,然而体积小、价廉、功能强,其销售额以每年近80%的速率增长。
他的性能不断提高,适用范围愈来愈宽,在计算机应用领域已占有日益重要的地位。
单片微型计算机简称单片机,又成为控制器。
他是在一块半导体上,集成了CPU、ROM、RAM、I/O接口、定时器/计数器、中断系统等功能部件,构成了一台完整的数字计算机。
单片机在生产生活中的许多方面得到广泛的应用,例如,生活中五彩变幻的霓虹灯,手机通信,温度检测,流量控制等都涉及到单片机。
钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如按时自动打铃、时间程序自动控制、秒表等。
所有这些,都是以钟表数字化为基础的。
因此,研究电子秒表及扩大其应用,有非常现实的意义。
电子秒表是一种用数字电路技术实现秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。
电子秒表从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。
电子科技日新月异,人们对现代电子设备的智能化和微型化及其精度提出了更高的要求,而单片机因其具有稳定可靠、体积小、价格低廉等特点,成为设计智能化仪器仪表的首选微控制器,因此本次我没有选用传统的专用的时钟芯片,而是采用了AT89C52芯片,此款单片机可以使用软件对其进行在线编程,其灵活性和可靠性都相对提高。
通过此次课程设计,增强了我们的动手能力,把理论与实践融合在一起。
同时,也进一步加深了对单片机的硬件结构的理解和巩固,编程能力也得到了提高。
在此将秒表制作过程中用到的知识进行了一些总结,希望自己今后能注意。
关键字:
单片机;电子秒表;仿真
一、课程设计目的
通过课程设计教学环节,学生在进一步熟悉单片机基础知识的同时,学会单片机应用系统的设计、制作方法和开发过程,初步具备运用所学知识分析和解决实际问题的能力,能够独立地完成一个简单应用系统的设计与开发。
二、电路原理
1.电路实际应用意义
钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如按时自动打铃、时间程序自动控制、秒表等。
所有这些,都是以钟表数字化为基础的。
因此,研究秒表及扩大其应用,有非常现实的意义。
电子秒表是一种用数字电路技术实现秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。
2.电路原理
(1).电子秒表的工作原理:
本设计中的数字秒表的核心是AT89C52单片机,其内部带有8KB在线可编程Flash存储器的单片机,无须外扩程序存储器,硬件电路主要由四部分构成:
时钟电路,复位电路,键盘以及显示电路。
时钟电路是秒表硬件电路的核心,没有时钟电路,电子表将无法正常工作计时。
本系统时钟电路采用的晶振的频率为12MHz,定时器采用的是定时器0工作在方式1定时。
键盘可对电子表进行调微秒启动、停止、清除设置。
显示电路由1个四位一体共阴级LED数码管构成,它的段控端和位控端通过与AT89C52单片机的I/O口相连,显示器可使秒表显示出秒、毫秒。
数字秒表的计时原理为:
上电后,电子表显示,电子表从000.0开始计时。
最小计时单位为0.1秒,也就是100毫秒。
由于时钟电路采用的晶振的频率为12MHz,故机器周期为12/12MHZ=1us,程序设计采用定时500us,因此要产生500us/1us=500个脉冲;定时器采用的是定时器0工作在方式1定时,方式1(16位方式):
初始值C=10000H-500B=FE0CH,高位装入TH
低位装入TL
(2)时钟电路工作原理:
下图所示为时钟电路原理图,在AT89S52芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。
时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。
图1时钟电路
(3)显示电路工作原理:
四位一体数码管如图4所示,它的位控端连接在一起,共用8根数据线,。
假设段控端有段码输入时,每个数码管的段控端都收到了段码,但只有位控线有效的数码管才能显示数据,反之亦反。
共阳极数码管段控端为低电平有效,位控端高电平有效,共阴极数码管恰恰相反。
四位一体数码管用于动态扫描,即把数码管显示数据的段控码分时送到其对应的段控端。
当一个段控码被送到段控端时,显示此段控码数据的数码管,它的位控端置有效电平,数码管点亮;而其他数码管的位控端送无效电平,数码管不亮。
持续点亮一段时间,再送其它的段控码,依次把显示段控码的数码管,使其位控端为有效电平,其他数码管的位控端为无效电平,就这样数码管依次被点亮。
图2显示电路
此外,电路中还用了MAX7221作为显示电路的驱动器。
3.电路原理图
图3总电路图
三、课程设计总结
1.仿真电路过程
在PROTUES软件上找出所要用到芯片,电阻,电容等元件摆放在适当的位置,然后连线。
在仿真之前必须先将单片机程序编译出来,这次我用到的编译工具是Keil,将代码输入进Keil保存,没有错误后会自动生成对应的后缀名为“HEX”的文件。
在运行PROTUES仿真之前需设置AT89C52参数,要找到这个“HEX”文件的路径,其他元器件的属性设置完以后就可以进行仿真。
仿真结果如下图所示:
图4仿真图
2.课程设计心得体会
在电路图制作阶段,我到图书馆、网上查阅各种资料,在电脑上使用PROTUES进行以及相关的绘图软件,使自己在理论分析设计和动手操作能力等各方面得到了极大提高。
我通过对设计任务书的具体要求分析思考,再加上以前在学校进行的各种相关实践和实习积累的经验,首次完成了这次的课程设计的任务,在利用Keil软件编写程序调试时,遇到了不少困难,首先是C语言,我认为是这次设计中最难得的地方,因为我要做的是数字秒表,此外还要有时间校准功能,因此就要用到很多种电路,还要很多芯片,这使我学会了耐心分析问题,并进一步锻炼自己去攻破难题的能力。
通过这次课程设计我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
这次课程设计整体来说是成功的,但我也发现了自己许多错漏和不足之处。
譬如,最简单的程序没写好就想着写更复杂的程序,做事还是缺乏耐性和细心,当有时遇到问题时,总觉得无从下手,对于课本上的知识不能很好的组织起来。
在编写各功能程序时,特别是后来增添的比较复杂的程序。
现在电子领域、不同的行业极为广泛,对于我们学电子专业的人来说,学好课本上的知识仅仅是基础,要掌握一门技术必须还得更深层的学习,并且亲自动手去做,这样才能达到事半功倍的效果,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,更加强了团队合作的意识,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心
在最后,再次感谢指导老师以及所有同组成员。
四、附录
附录一:
程序清单:
#include
sbitkey0=P3^6;
sbitkey1=P3^7;
sbitDIN=P3^0;
sbitCLK=P3^2;
sbitLOAD=P3^1;
unsignedintcount;
voiddelay(unsignedintus)
{
while(us--);
}
voidtime0_initial()
{
count=0;//秒清零
TMOD=0x21;//T0T1工作于方式1
TL0=60;
TH0=176;//50ms定时初值
ET0=1;//允许T1中断
EA=1;//开中断
TR0=1;//T1开始计时
}
voidint50ms()interrupt1
{
TR0=0;//关定时器T0
TL0=0xff;
TH0=0xff;//赋定时初值
TR0=1;//开定时器T0
count++;//50ms计数加1
}
unsignedintdecSec,centSec,sec,mSec;
voidsend(unsignedcharadd,unsignedchardat)//发送16字节子函数。
{
unsignedcharADS,i,j;
LOAD=0;
i=0;
while(i<16)
{
if(i<8)
{
ADS=add;
}
else
{
ADS=dat;
}
for(j=8;j>=1;j--)
{
DIN=ADS&0x80;
ADS=ADS<<1;
CLK=1;
CLK=0;
}
i=i+8;
}
LOAD=1;
}
voidinitial_max7219()
{
//send(0x0c,0x01);//初始化MAX7219;
//send(0x0b,0x07);
//send(0x0a,0xf5);
//send(0x09,0xff);
send(0x09,0xff);
send(0x0a,0x08);
send(0x0b,0x03);
send(0x0c,0x00);
send(0x0f,0x00);
send(0x0c,0x01);
}
///*---显示数码子函数---*/
//voiddisp(unsignedcharhour,unsignedcharmin,unsignedcharsec)
//{
////send(0x08,sec-sec/10*10);
////send(0x07,sec/10);
////send(0x06,10);//显示"-"
////send(0x05,min-min/10*10);//前四位显示
//send(0x04,sec/100);
//send(0x03,(sec-sec/100*100)/10);//显示"-"
//send(0x02,sec-(sec-sec/100*100)-(sec-sec/100*100)/10*10);
//send(0x01,mSec);
//}
voidtimer0()interrupt1
{
TH0=60;
TL0=176;
count++;
if(count%2==0)
{
//count=0;
mSec++;
if(mSec==10)
{
mSec=0;
}
}
if(count==20)
{
count=0;
sec++;
if(sec==10)
{
sec=0;
decSec++;
if(decSec==10)
{
decSec=0;
centSec++;
if(centSec==10)
centSec=0;
}
}
}
}
voidadjust_time()
{
if(key0==0)
{
TR0=!
TR0;
}
if(key1==0)
{
TR0=0;
sec=0;
mSec=0;
decSec=0;
centSec=0;
}
}
voidmain()
{
sec=0;
mSec=0;
time0_initial();
TR0=0;
//voiddelay(unsignedint);
//voidsend(unsignedchar,unsignedchar);
//voidinitial_max7219();
//voiddisp(unsignedchar,unsignedchar,unsignedchar);
initial_max7219();
while
(1)
{
adjust_time();
send(0x04,mSec);
send(0x03,sec|0x80);
send(0x02,decSec);
send(0x01,centSec);
}
}
附录二:
参考文献
[1]、曹巧媛主编,《单片机原理及应用》北京:
电子工业出版社,1997.7。
[2]、赵秀珍,单永磊主编,《单片微型计算机原理及其应用》北京:
中国水利水电出版社,2001.8。
[3]、张毅刚,修林成,胡振江编著《MCS-51单片机应用设计》哈尔滨:
哈尔滨工业大学出版社,1990.8。
[4]、张洪润,兰清华编著《单片机应用技术教程》北京:
清华大学出版社,1997.11。
[5]、陈景初主编《单片机应用系统设计与实践》北京:
北京航空航天大学出版社,1999.6。
[6]、马家辰主编《MCS-51单片机原理与接口技术》哈尔滨:
哈尔滨工业大学出版社,2002.8。
[7]、李群芳,张士军,黄建编著《单片微型计算机与接口技术(第2版)》
北京:
电子工业出版社,2007.1。
(部分内容来源于网络,版权归原作者所有)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 秒表 课程设计