简易秒表课程设计报告.docx
- 文档编号:23458008
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:29
- 大小:529.72KB
简易秒表课程设计报告.docx
《简易秒表课程设计报告.docx》由会员分享,可在线阅读,更多相关《简易秒表课程设计报告.docx(29页珍藏版)》请在冰豆网上搜索。
简易秒表课程设计报告
简易秒表课程设计报告
常州工学院
单片机课程设计报告
姓名:
邹禹
班级:
09电卓
学号:
09020344
常州工学院《单片机原理及应用》课程设计任务书
二级学院:
电子信息与电气工程学院专业:
电气工程及其自动化班级:
09电卓
学生姓名
邹禹
指导老师
庄志红
职称
副教授
课题名称
简易秒表设计
课题工作内容
1、四位数码管显示分和秒
2、74HC573进行时间记录存储
3、以STC89C52为芯片
指标要求
1、正计时,记录并查询10条记录
2、倒计时,时间用户设置、报警三秒
进程安排
第一天:
下达任务、理解课题要求、收集和消化相关资料;第二天:
方案论证和制定,元器件采购;第三~四天:
硬件制作、调试第五~八天:
软件设计、调试第九天:
根据设计内容,撰写设计报告第十天:
作品演示、答辩考核
主要参考文献
《单片机应用系统设计技术》张齐著电子工业出版社《单片机原理及应用技术》范力旻电子工业出版社《单片机C语言应用100例》王东锋王会良电子工业出版社《51系列单片机设计实例》楼然苗李光飞北航出版社
地点
秋白楼
起止日期
一、设计任务和要求…………………………………………………………..…1
(1)设计任务…………………………..…………………………………....………1
(2)设计要求…………………..……………..…………………………..…….....…1
二、设计方案与论证………………………………………………..………......1
三、单元电路设计与参数计算…………………………….…………….….1
(1)时钟电路……………………………………………………………..……….….1
(2)按钮电路………………………………………………………..…………….….2
(3)显示电路………………………………………………………………….………2
四、硬件原理…………………………………………………………………..…….2
(1)显示模块…………………………………………………..………………………..2
(2)74hc573………………………………………………….………………………….4
(3)按钮模块…………………………………………….……………………………..4
(4)89C52芯片………………………………………..……….………………………4
五、调试与性能测试与分析……………………………………………..…..7
(1)调试………………………………………………………..........................7
(2)性能测试与分析…………………………………………………………….…..7
六、心得体会………………………………………………………………………...7
七、参考文献………………………………………………………………………...8
八、主程序…………………………………………………………………………….8
九、总原理图及程序清单……………………………………………….…...17
十、实物照片…………………………………………………………………………...18
一、设计任务和要求
(1)设计任务
用AT89C52设计一个4位的LED数码作为多功能“秒表”。
(2)设计要求
显示时间为00分00秒-59分59秒,每1秒自动加1,另外设计一个“开始/暂停”键、一个“记录/查询”键、一个“清零”键、一个“模式切换”键、一个“时间设置”键、一个“复位”键。
秒表要求正计时时,可记录并且查询10组数据,倒计时时,时间用户可设置,并且时间到时蜂鸣器报警。
二、方案设计与论证
本设计分为时钟电路、按钮电路、显示电路和单片机四大部分,这些模块中单片机占主控地位。
其模块电路如图2-1所示。
时钟电路常用的有内部时钟方式和外部时钟方式,但因为本设计中只需要一片单片机,所以采用内部时钟方式比较简单。
按钮电路中的“复位”按钮是按键手动复位,它有电平和脉冲两种方式,比较电路的复杂程度,本设计选择了按钮电平复位电路,其他几个按钮则是通过单片机判断高低电平的不同来控制按钮。
显示电路所用的数码管有共阴和共阳之分,不管使用何种数码管,P0口作为I/O使用时都是需要上拉电阻才能驱动数码管。
另外,因为单片机的4个并行I/O口的输出电流一般是1mA,短路电流为4mA左右,而数码管的最少驱动电流也需要10mA,因而不管在使用共阴数码管时,单片机输出口也必须使用上拉电阻提高输出电流,才能驱动数码管。
为了使电路简单化,本设计选用共阳数码管。
三、单元电路设计与参数计算
注:
//单元电路设计中的网络标号的数字即为单片机的管脚//
(1)时钟电路
图3-1
时钟电路如图3-1所示,时钟电路的晶振频率越高,系统的时钟频率越高,单片机的运行速度也就越快。
晶振频率根据设计需要设为,又根据谐振性质,电路中的电容C1、C2选择为30pF左右。
该电容的的大少会影响振荡器频率的高低、振荡器的稳定性和起振的快速性。
(2)按钮电路
“开始/暂停”键、“记录/查询”键、“清零”键、“模式切换”键、“时间设置”键、“复位”键。
(3)显示电路
P1口控制显示的是十位,p0口控制显示的是个位,P2口控制显示的是十分位。
不同的数码管显示方式,对应的最适合的共阴或者共阳级的数码管也不同。
静态显示的适宜选共阳的数码管,动态显示的适宜选共阴的数码管。
如果动态显示方式下选择共阳的数码管,位选端直接用单片机驱动则数码管的亮度不够,因而应该在位选端使用上拉电阻以提高数码管的驱动电流,但因为显示那个的数据段选的数目不同,故而需要用电阻对各段进行限流,以保证显示的每个数据亮度相同。
相同情况下,静态显示的数码管的亮度要比动态的亮。
四、硬件原理:
(1)显示电路
四位一体共阴极数码管介绍
3.3.1四位一体数码管概述
LED数码管(LEDSegmentDisplays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。
数码管分为动态显示和静态显示驱动两种,静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个STC89C52的I/O端口才32个呢:
),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
3.3.2四位一体数码管引脚图
图3四位一体数码管引脚图
(2)74HC573(八进制3态非反转透明锁存器)
高性能硅门CMOS器件输入是和标准CMOS输出兼容的;加上拉电阻,他们能和LS/ALSTTL输出兼容。
当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。
当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。
×\u36755X出能直接接到CMOS,NMOS和TTL接口上
×\u25805X作电压范围:
~
×\u20302X输入电流:
×CMOS器件的高噪声抵抗特性
(3)、按键模块:
本次设计采用独立按键。
(4)、STC89C52介绍
1、STC89C52主要功能及DIP封装
STC89C52是由深圳宏晶科技公司生产的与工业标准MCS-51指令集和输出管脚相兼容的单片机。
STC89C52主要功能如表1所示,其DIP封装如图2所示
表1:
STC89C52主要功能
主要功能特性
兼容MCS51指令系统
8K可反复擦写FlashROM
32个双向I/O口
256x8bit内部RAM
3个16位可编程定时/计数器中断
时钟频率0-24MHz
2个串行中断
可编程UART串行通道
2个外部中断源
共6个中断源
2个读写中断口线
3级加密位
低功耗空闲和掉电模式
软件设置睡眠和唤醒功能
2、STC89C52引脚介绍
①主电源引脚(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根)
STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。
P0口(Pin39~Pin32):
8位双向I/O口线,名称为~
P1口(Pin1~Pin8):
8位准双向I/O口线,名称为~
P2口(Pin21~Pin28):
8位准双向I/O口线,名称为~
P3口(Pin10~Pin17):
8位准双向I/O口线,名称为~
图1STC89C52DIP封装图
五、调试与性能测试与分析
(1)调试
1硬件调试硬件调试是利用基本测试仪器(万用表、示波器等),检查用户系统硬件中存在的故障。
硬件调试可分为静态调试与动态调试两步进行。
静态调试是在用户系统未工作时的一种硬件检测。
第一步:
目测。
检查外部的各种元件或者是电路是否有断点。
第二步:
用万用表测试。
先用万用表复核目测中有疑问的连接点,再检测各种电源线与地线之间是否有短路现象。
第三步:
加电检测。
给板加电,检测所有插座或是器件的电源端是否符合要求的值。
第四步是联机检查。
因为只有用单片机开发系统才能完成对用户系统的调试。
动态调试是在用户系统工作的情况下发现和排除用户系统硬件中存在的器件内部故障、器件连接逻辑错误等的一种硬件检查。
动态调试的一般方法是由近及远、由分到合。
由分到合是指首先按逻辑功能将用户系统硬件电路分为若干块,当调试电路时,与该元件无关的器件全部从用户系统中去掉,这样可以将故障范围限定在某个局部的电路上。
当各块电路无故障后,将各电路逐块加入系统中,在对各块电路功能及各电路间可能存在的相互联系进行调试。
由分到合的调试既告完成。
由近及远是将信号流经的各器件按照距离单片机的逻辑距离进行由近及远的分层,然后分层调试。
调试时,仍采用去掉无关元件的方法,逐层调试下去,就会定位故障元件了。
2软件调试软件调试是通过对程序的连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程,也可以通过keil软件进行仿真,能大大的减少设计过程中的错误。
(2)性能测试与分析
所制电路板虽然能实现设计中要求的功能,但是在实际使用中还是存在着许多缺陷。
这块电路板不能随意查看记录的数据,而是必须在暂停后依次的翻页查看,复位后所计数据便会丢失,不能翻看历史,所计数据组数不能满足现实需要。
六、心得体会
本系统总体设计简单,性能稳定,为以后单片机编程进行各种功能扩展,通过本次论文设计,使我加深了对单片机的认识,并且熟悉了单片机系统的设计流程,收获丰硕。
功能上基本达标正计时,倒计时,设置时间计时,以及倒计时十秒蜂鸣器提示功能,方便快捷。
硬件设施基本合乎要求,软件设计可以配合硬件实现其功能,也是我懂得了制作后怎么样调试和对故障的检验及预防有了更进一步的提高。
计时器可以为我们生活中的许多事提供作用,做为新时代的我们,更应该提高自身能力,适应新时代的发展。
知识来自实践,多从生活中探寻所需要的。
从这次的论文设计中,我真正的体会到,知识的重要性,特别是要理论联系实际,把我们所学的理论知识运用到实际生活当中,要用知识改变一切。
设计的过程中,我受益匪浅。
首先,我意识到平时扎实的基础是关键,只有平时学得牢,在面对课题时思路才会敏捷,在面对问题时才会快速找到症结所在并找到解决之道。
其次,程序设计是个很复杂的过程,在大的构思实现之后我们往往还要在很多的细节上对程序加以改进。
在过去的大学学习中,我们大多数接触的是专业课,我们在课堂上学习的也都是专业课的理论知识,为了锻炼我们的实践能力把所学的专业理论知识运用到实践中去,课程设计为我们搭建了这样一个练习的平台。
在这次课程设计中,我们培养了在实践中研究问题、分析问题和解决问题的能力,并意识到程序设计不仅要注重整体,更要注重细节;当程序运行过程中遇到问题时,我们要打开思路,发挥创新精神,力求用最有效简洁的方法解决;遇到难以解决的困难时,我们要多多请教书本、老师、同学,坚持不懈,就算程序运行失败了也不要气馁。
这一次的课程设计实验,让我体会到知识的应用所带来的成就感。
与此同时,单片机课程设计也使我们体会到了团结的力量,再复杂的程序在我们的讨论中也可以得到答案。
课程设计所带来的经验可以让我更好的学习。
七、参考文献
(1)单片机原理及接口技术张毅刚彭喜元著人民邮电出版社
(2)单片机课程设计实例指导李光飞等编著北京航空航天大学出版社
(3)51系列单片机原理、开发与应用实例孙进平等编著
(4)单片机程序设计实例先锋工作室编著清华大学出版社
(5)电子工程师之家、豆丁网、XX、搜狗、电子工程专辑等等
八、主程序
#include<>
#defineucunsignedchar
#defineuiunsignedint
voiddisplay();
charcodetab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//数字对应显示码表
charcodetab1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
charcodeindex[]={0xef,0xdf,0xbf,0x7f};//每位数字对应数码管显示位置
ucnum[4];//每位数字存放数组
ucval[10][4];//存储的记录[10]为记录序列,[8]为每组记录中的数字
charval_index;//记录序列标志位
ucset_index,ok_flag;
bitmode=1;//运行模式,1为正向计数,0为反向计数。
bitfin_flag=0;//完成标志位,当反向计数结束时,此位为高电平,触发蜂鸣器
bitset_shan;
sbitbeep=P3^2;
sbitkey1=P3^3;
sbitkey2=P3^4;
sbitkey3=P3^5;
sbitkey4=P3^6;
sbitkey5=P3^7;
voiddelay(uiz)
{
uii,j;
for(i=0;i for(j=0;j<121;j++); } voidinit() { TMOD=0x11; TH0=0x4b; TL0=0xff; TH1=0x4b; TL1=0xff; ET1=1; TR1=1; ET0=1; TR0=0; EA=1; val_index=0; } voidclr() { uci; for(i=0;i<4;i++) num[i]=0; } voidsetup() { ok_flag=0xff; set_index=0; while(ok_flag) { display(); if(key1==0)//按动KEY1设置值加1 { delay(5); if(key1==0) { if((set_index==0)|(set_index==2)) { num[set_index]++; if(num[set_index]==10) num[set_index]=0; } else { num[set_index]++; if(num[set_index]==6) num[set_index]=0; } while(! key1)display(); } } if(key2==0)//按动KEY2设置位置加1 { delay(5); if(key2==0) { set_index++; if(set_index==4) set_index=0; while(! key2)display(); } } if(key5==0)//按动KEY5设置结束 { delay(5); if(key5==0) { ok_flag=0x00; mode=0; while(! key5)display(); } } } } voiddisplay() { uci; if(ok_flag! =0xff) { for(i=0;i<4;i++) { P0=0xff; P2=index[i]; if(i==2) P0=tab1[num[i]]; else P0=tab[num[i]]; delay (2);//修改此参数可修改刷新频率 } } else { if(set_shan==0) { if(set_index==0) { for(i=0;i<4;i++) { if(i==0) { P2=index[0]; P0=tab[10]; delay (2);//修改此参数可修改刷新频率 P0=0xff; } else { P2=index[i]; if(i==2) P0=tab1[num[i]]; else P0=tab[num[i]]; delay (2);//修改此参数可修改刷新频率 P0=0xff; } } } elseif(set_index==1) { for(i=0;i<4;i++) { if(i==1) { P2=index[1]; P0=tab[10]; delay (2);//修改此参数可修改刷新频率 P0=0xff; } else { P2=index[i]; P0=tab[num[i]]; delay (2);//修改此参数可修改刷新频率 P0=0xff; } } } elseif(set_index==2) { for(i=0;i<4;i++) { if(i==2) { P2=index[2]; P0=tab[10]; delay (2);//修改此参数可修改刷新频率 P0=0xff; } else { P2=index[i]; if(i==2) P0=tab1[num[i]]; else P0=tab[num[i]]; delay (2);//修改此参数可修改刷新频率 P0=0xff; } } } elseif(set_index==3) { for(i=0;i<4;i++) { if(i==3) { P2=index[3]; P0=tab[10]; delay (2);//修改此参数可修改刷新频率 P0=0xff; } else { P2=index[i]; if(i==2) P0=tab1[num[i]]; else P0=tab[num[i]]; delay (2);//修改此参数可修改刷新频率 P0=0xff; } } } } else { for(i=0;i<4;i++) { P2=index[i]; if(i==2) P0=tab1[num[i]]; else P0=tab[num[i]]; delay (2);//修改此参数可修改刷新频率 P0=0xff; } } } } voidmain() { uch,g,k; init(); clr(); while (1) { display();//刷屏显示数码管 if(key1==0)//开始/暂停按钮 { delay(5); if(key1==0) { TR0=~TR0; while(! key1)display(); } } if(key2==0)//记录按钮 { delay(5); if(key2==0) { if(TR0=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 秒表 课程设计 报告