单片机简易秒表正计时时间可设置倒计时时间可查询.docx
- 文档编号:10970059
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:41
- 大小:700.65KB
单片机简易秒表正计时时间可设置倒计时时间可查询.docx
《单片机简易秒表正计时时间可设置倒计时时间可查询.docx》由会员分享,可在线阅读,更多相关《单片机简易秒表正计时时间可设置倒计时时间可查询.docx(41页珍藏版)》请在冰豆网上搜索。
单片机简易秒表正计时时间可设置倒计时时间可查询
单片机简易秒表正计时时间可设置倒计时时间可查询
1.1设计任务
用AT89C52设计一个4位的LED数码作为多功能〝秒表〞。
1.2设计目的
1.学习数码管显示的结构和工作流程,实现数码管分组显示数字组合。
2.学习有关单片机的内容,进一步了解AT89C52芯片的相关功能。
3.复习C语言的相关知识。
4.培养自学能力和探究解决问题的能力。
1.3设计要求
显示时刻为00分00秒-59分59秒,每1秒自动加1,另外设计一个〝开始/暂停〞键、一个〝记录/查询〞键、一个〝清零〞键、一个〝模式切换〞键、一个〝时刻设置〞键、一个〝复位〞键。
秒表要求正计时时,可记录同时查询10组数据,倒计时时,时刻用户可设置,同时时刻到时蜂鸣器报警。
1.4设计创新
在差不多设计基础上添加了正向查询10条记录后蜂鸣器同时报警。
1.5设计意义
简易秒表具有读取方便,显示直观,功能多样,电路简洁,成本低廉等诸多优点,符合电子仪器外表的进展趋势,具有宽敞的市场前景。
本次设计将基于单片机的工作原理,设计简易秒表的差不多电路,深入的了解其工作原理,把握其差不多的工作特点。
同时简易秒表在生活中应用广泛,从实际动身,不断创新。
第二章 方案设计与选择
2.1技术可行性
20世纪以来,微电子,IC集成电路行业进展迅速,其中单片机行业进展最引人注目。
单片机利用大规模集成电路技术把中央处理器和数据储备器〔RAM〕,程序储备器〔ROM〕及其他I/O通信口集成在一块芯片上,构成最小的运算机系统。
现在的单片机进展集成了更多的专门功能单元,例如A/D,D/A转换器,通信操纵,DMA,PWM操纵输出单元等。
因此,只要外加一些扩展电路及必要的通道接口就能够构成各种运算机应用系统。
单片机除了具备体积小,价格低,速度快,用途广,可靠性高等特点,在硬件结构和指令设置上还有以下专门之处:
1.储备器ROM和RAM是严格分工的。
前者存放程序,常数和数据表格,后者存放临时数据和变量。
2.采纳面向操纵的指令系统,构成的应用系统有较大的可靠性。
大部分测控功能由软件实现,故具有柔性特点,不须改变硬件系统就能适当的改变系统功能。
3单片机的硬件功能具有广泛的通用性。
4.品种规格的系列化。
2.2单片机的选择
方案一:
采纳AT89C52单片机
AT89C52是一种低功耗、高性能CMOS8位微操纵器,具有8K在系统可编程Flash储备器。
使用Atmel公司高密度非易失性储备器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash承诺程序储备器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵活的8位CPU和在系统可编程Flash,使得AT89C52为众多嵌入式操纵应用系统提供高灵活、超有效的解决方案。
该芯片且具备在线编程可擦除技术,当在对电路停止调试时,因为顺序的过错修正或对步伐的心删功能需要烧进程序时,没有需要对芯片多次插拔,因此可不能对芯片形成破坏。
方案二:
采纳FTC10F04单片机
FTC10F04单片机还带有非易失性Flash程序储备器。
它是一种高性能、低功耗的8位CMOS微处理芯片,市场应用最多。
其要紧特点如下:
8KBFlashROM,能够擦除1000次以上,数据储存10年。
方案三:
采纳8051单片机
8051单片机最早由Intel公司推出,内部具有4KBROM储备空间。
其后多家公司购买了8051的内核,使得以8051为核心的MCU系列单片机在世界上产量最大,应用也最广泛。
有人估量8051可能最终形成事实上的标准MCU芯片。
LG公司生产的GMS90系列单片机,与IntelMCS-51系列、Atmel89C51/52,89C2051等单片机兼容,CMOS技术,高达40MHZ的时钟频率。
应用于:
多功能,智能传感器,电度表,工业操纵,防盗报警装置,各种计费器,各种IC卡装置、DVD、VCD、CD-ROM。
由于本系统对CPU运算速度要求专门高,需要执行专门复杂的运算,方案一,三成本比较低,适合做设计,方案二运算速度高,性能好,因此三种方案都有可取之处。
本次设计选用方案一作为主方案,设计以AT89C52为主控电路的方案电路。
2.3显示模块的选择
方案一:
使用液晶显示屏显示时刻数字。
液晶显示屏〔LCD〕具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影象稳固不闪耀等优势,可视面积大,画面成效好,辨论率高,抗干扰能力强等特点。
但由于液晶是以点阵的模式显示各种符号,需要利用操纵芯片创建字符库,编程工作量大,操纵器的资源占用较多,其成本也偏高。
在使用时,不能有静电干扰,否那么易烧坏液晶的显示芯片,不易爱护。
方案二:
使用传统的LED数码管显示。
数码管具有:
低能耗、低损耗、低压、寿命长、耐老化、防晒、防潮、防火、防高〔低〕温,对外界环境要求低,易于爱护,同时其精度比较高,称重轻,精确可靠,操作简单。
数码管采纳BCD编码显示数字,程序编译容易,资源占用较少。
依照以上的论述,采纳方案二。
在本系统中,我们采纳了四位一体数码管串口的动态显示,因选用四位一体共阳数码管,因此要加共阳的驱动,采纳pnp的驱动。
2.4键盘模块的选择
在对倒计时时刻可设置,对正计时、倒计时的模式选择时,清零时都需要用按键。
方案一:
使用独立式键盘。
独立式键盘是指直截了当用I/O口线构成的单个按键电路。
独立式按键电路配置灵活,软件结构简单。
方案二:
使用矩阵式键盘。
矩阵式键盘是由行线和列线组成,按键位于行、列的交叉点上,行线、列线分别连接到按键开关的两端。
其特点是简单且不增加成本,这种键盘适合按键数量较多的场合。
依照以上的论述,因本系统需要的按键不多,只需要开始/暂停〞键、〝记录/查询〞键、〝清零〞键、〝模式切换〞键、〝时刻设置〞键。
因此采纳方案一独立式键盘。
2.5时钟电路的选择
时钟电路常用的有内部时钟方式和外部时钟方式,但因为本设计中只需要一片单片机,因此采纳内部时钟方式比较简单。
第三章 系统总体结构
3.1系统结构框图
图2-1
图3-1
3.2各框图实现功能
3.2.1单片机模块
按照系统设计功能的要求,初步确定系统由主控模块,储备模块,驱动模块,显示模块和键盘接口模块组成,如图3-1。
这些模块中单片机占主控地位,采纳AT98C52芯片。
3.2.2按键模块
键盘电路模块要紧是对输出显示进行操纵调剂作用,采纳一般独立按钮元件,共5个,〝开始/暂停〞键、〝记录/查询〞键、〝清零〞键、〝模式切换〞键、〝时刻设置〞键。
本设计选择了按钮电平复位电路,其他几个按钮那么是通过单片机判定高低电平的不同来操纵按钮。
3.2.3显示模块
显示输出部分所用的数码管有共阴极和共阳极两类数码管之分,不管使用何种数码管,P0口作为I/O使用时差不多上需要上拉电阻才能驱动数码管。
另外,因为单片机的4个并行I/O口的输出电流一样是1mA,短路电流为4mA左右,而数码管的最少驱动电流也需要10mA,因而不管在使用共阴数码管时,单片机输出口也必须使用上拉电阻提高输出电流,才能驱动数码管。
本电路中采纳的是共阴极数码管。
驱动部分要紧是数码管分组显示的选择操纵,本电路中通过P1口和P2口的配合进行数码管的选通。
在显示模块中,它的连接方式为8位数码管的各段操纵口a,b,c,d,e,f,g,dp分别需接到P0口。
数码管的显示码是由P0口输入的,位选端是通过P2口操纵的。
数码管的显示编码差不多编好放在运算机的内存里,时刻的显示能够通过软件的运算把显示码调出显示。
显示模块直截了当用数码管来显示时刻。
先将显示码存入数组中,指向最左边一位,然后取出要显示的数据,指向换码表首地址,取出显示码,从P0口输出显示码,P2口输入位选码,
图3-2 数码管笔段分布图
3.2.4驱动模块
驱动部分电路选择S8050芯片,通过与单片机的连接,将电平拉高才能使发光管正常发光。
第四章 硬件设计
由图3-1系统结构框图可知硬件选择如下:
AT89C52芯片,LED数码管组,数码管驱动三极管,电阻,按钮等外围应用电路构成。
下面介绍各外围电路。
4.1AT89C52单片机差不多引脚接线图
AT89C52的差不多连接电路如图,有复位电路,内部时钟电路,VCC,VSS的连接,其余操纵电路依照程序设计分别连至个I/O口实现功能。
图3-1为AT89C52的引脚图,在设计中大部分采纳40引脚的双列直插式芯片。
图3-2介绍的是AT89C52作为差不多连接电路中。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸取8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据储备器,它能够被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,现在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编程和校验时接收高八位地址信号和操纵信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入〝1〞后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流〔ILL〕这是由于上拉的缘故。
P3口也可作为AT89C52的一些专门功能口,P口管脚备选功能
P3.0RXD〔串行输入口〕P3.1TXD〔串行输出口〕
P3.2/INT0〔外部中断0〕P3.3/INT1〔外部中断1〕
P3.4T0〔记时器0外部输入〕P3.5T1〔记时器1外部输入〕
P3.6/WR外部数据储备器写选通P3.7/RD外部数据储备器读选通
RST:
复位输入
ALE/PROG:
当访问外部储备器时,地址锁存承诺的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平常,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据储备器时,将跃过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
现在,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
假如微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序储备器的选通信号。
在由外部程序储备器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据储备器时,这两次有效的/PSEN信号将不显现。
/EA/VPP:
当/EA保持低电平常,那么在此期间外部程序储备器〔0000H-FFFFH〕,不管是否有内部程序储备器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平常,此间内部程序储备器。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
图4-1 AT89C52引脚图
图4-2 AT89C52差不多电路接线图
4.2时钟电路
图4-3时钟电路
时钟电路的晶振频率越高,系统的时钟频率越高,单片机的运行速度也就越快。
如图3-2中的XTAL1和XTAL2引脚间的部分,晶振频率依照设计需要设为11.0592MHz,依照谐振性质,电路中的电容C1、C2选择为30pF。
该电容的的大少会阻碍振荡器频率的高低、振荡器的稳固性和起振的快速性。
4.3按钮电路
本设计采纳独立按钮,按键未按下时,端口为电阻上拉高电平,按键被按下时,端口为低电平并送到相应操纵端口。
如图4-3所示,一共设置为五个按钮。
本次设计采纳独立按键,同时应用行列式键盘中的11、21、41、81.一行实现独立式键盘,可方便焊接,再接一个按钮即可实现五个按钮的操纵。
4.4复位电路
本电路中采纳上电复位电路,上电瞬时,电容充电电流最大,电容相当于短路,RST端为高电平,自动复位;电容两端的电压达到电源电压时,电容充电电流为零,电容相当于开路,RST端为低电平,程序正常运行。
如图4-2中RST引脚的接线。
4.5显示电路
发光二极管〔LED〕由专门的半导体材料砷化镓、磷砷化镓等制成,能够单独使用,也能够组装成分段式或点阵式LED显示器件〔半导体显示器〕。
分段式显示器〔LED数码管〕由7条线段围成8字型,每一段包含一个发光二极管。
外加正向电压时二极管导通,发出清晰的光。
只要按规律操纵各发光段亮、灭,就能够显示各种字形或符号。
LED数码管有共阳、共阴之分。
图4-2是共阳式、共阴式LED数码管的原理图和符号。
图4-4 共阳式、共阴式LED数码管的原理图和数码管的符号图
本设计电路为时,分,秒的显示,显示采纳了四位一体的共极数码管。
其中那个数码管组都由P0口操纵输出显示,片选信号由P2口实现,,由于为共阳极数码管,片选=1时,该位所对应的数码管进行位驱动,其余为0。
电路开始时,两个四位一体数码管组显示时刻。
LED显示器的显示操纵方式按驱动方式可分成静态显示方式和动态显示方式两种。
关于多位LED显示器,通常差不多上采纳动态扫描的方法进行显示。
图4-5 多位数码管的段驱动和位驱动的连接
4.6驱动电路
电路中为共阳极数码管,因此选择9013NPN三极管进行电路驱动。
如图4-6。
图4-6 利用三极管对数码管进行位驱动
4.7电源
电源由小变压器通过220V降压至5V由导线引至电路两端获得。
由于设计芯片的工作电压为5V,因此假设想直截了当从住宅供电猎取,那么可采纳小型变压器,高压侧由导线接至插头,低压侧可用导线连接杜邦线,直截了当接在芯片上获得所需工作电压。
或者采纳干电池直截了当提供5V电压,可依照自身条件选择。
第五章 软件设计
系统的软件设计也是工具系统功能的设计。
单片机软件的设计要紧包括执行软件〔完成各种实质性功能〕的设计和监控软件的设计。
单片机的软件设计通常要考虑以下几个方面的问题:
〔1〕依照软件功能要求,将系统软件划分为假设干个相对独立的部分,设计出合理的总体结构,使软件开发清晰、简洁和流程合理;
〔2〕培养良好的编程风格,如考虑结构化程序设计、实行模块化、子程序化。
既便于调试、链接,又便于移植和修改;
〔3〕建立正确的数学模型,通过仿真提高系统的性能,并选取合适的参数;
〔4〕绘制程序流程图;
〔5〕合理分配系统资源;
〔6〕为程序加入注释,提高可读性,实施软件工程;
〔7〕注意软件的抗干扰设计,提高系统的可靠性。
5.1软件系统框图
图5-1
5.2主程序流程图
图5-2
5.3系统主程序
#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[]={0x10,0x20,0x40,0x80};//{0xef,0xdf,0xbf,0x7f};//每位数字对应数码管显示位置
ucnum[8];//每位数字存放数组
ucval[10][4];//储备的记录[10]为记录序列,[8]为每组记录中的数字
charval_index;//记录序列标志位
ucset_index,ok_flag,timing;
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<8;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)|(set_index==4)|(set_index==6)) { num[set_index]++; if(num[set_index]==10) num[set_index]=0; } elseif((set_index==1)|(set_index==3)|(set_index==5)|(set_index==7)) { 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==8) 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) { if(timing==0) { 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) { for(i=0;i<4;i++) { P0=0xff; P2=index[i]; P0=tab[10]; delay (2);//修改此参数可修改刷新频率 } } elseif(set_shan==1) { 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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 简易 秒表 计时 时间 设置 倒计时 查询