已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学能力拓展训练说明书目 录摘要11 Proteus软件和Keil软件简介21.1 Proteus软件简介21.2 Keil软件简介22设计方案42.1方案介绍42.2设计原理43.系统硬件方案设计53.1 AT89C52单片机简介53.2单片机的连接电路73.3 数码管的显示电路83.4按键接口电路93.5总体设计仿真电路104.软件设计114.1程序流程图114.2源程序码115.仿真结果及分析175.1仿真结果175.2结果分析226.心的体会237.参考文献24本科生能力拓展训练成绩评定表2525基于定时器计数器的秒表仿真和C语言开发摘要本设计采用AT89C51作为主控芯片控制数码管,主要实现的功能是通过按键来控制数码管的显示,达到秒表的基本功能。按键一共有五个有效按键,分别表示数码管显示的开始/暂停、记录、上翻、下翻、清零,而数码管的位选、段选、以及按键的控制是连接到单片机的I/O口上的。通过数码管的动态扫描来进行计数和显数。记时秒表,精确到0.01秒,可以计时到分钟,能记录8组数据,通过上翻,下翻键能在数组管上读出8组数据。 关键字:AT89C51,数码管,动态扫描,8组数据1 Proteus软件和Keil软件简介 1.1 Proteus软件简介PROTEUS是英国LabCenter Electronics公司开发的电路分析与实物仿真软件。PROTEUS不仅是模拟电路、数字电路、模/数混合电路的设计与仿真平台,更是目前世界上最先进的、最完整的多种型号微控制器系统的设计与仿真平台。它真正实现了在计算机上完成从原理图设计、电路分析与仿真、单片机代码及调试与仿真、系统测试与功能验证到形成PCB的完整的电子设计、研发过程。PROTEUS从1989年问世至今。经过了近20年的使用、发展和完善,功能越来越强,性能越来越好。PROTEUS该软件具有以下特点:实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC系列、Z80系列以及各种外围芯片。提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51等软件。具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。1.2 Keil软件简介本次编程所用到的C编译器为Keil C51。Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。 单片机的C语言采用C51编译器(简称C51)。由C51产生的目标代码短、运行速度高、所需存储空间小、符合C语言的ANSI标准,生成的代码遵循INTEL目标文件格式,而且可与A51汇编语言目标代码混合使用。应用C51编程具有以下优点:(1)C51管理内部寄存器和存储器的分配,编程时,无需考虑不同寄存器的寻址和数据类型等细节问题。(2)程序由若干函数组成,具有良好的模拟结构。(3)有丰富的子程序可直接引用,从而大大减少用户编程的工作量。(4)C语言和汇编语言可以交叉使用,汇编语言程序代码短、运行速度快,但复杂运算编程耗时。如果用汇编语言编写与硬件有关的部分程序,用C语言编写与硬件无关的运算部分程序,充分发挥两种语言的长处,可以提高开发效率。2设计方案2.1方案介绍设计中的微处理器模块使用AT89C51。本次设计用到两个定时器,定时器0和定时器1,其中定时器1用来动态扫描,定时器0用来计时。P0,P2口分别用来接数码管的段选和位选。P1口用来接按键,用于控制计时。2.2设计原理此次设计要求进行计时并在数码管上显示时间,则可利用MCS-51系列单片机的芯片AT89C51的P1.0,P1.1,P1.2,P1.3,P1.4作为按键的入口;定时器T0作为每0.01秒加一的定时器;定时器T1作为动态扫描的定时器。其中“开始/暂停”按键当按下时开始计时,此时若再次按下“开始/暂停”则数码管暂停计时;“清零”按键按下时数码管显示清零,此时若再按下“开始/暂停”按键则又可重新开始计时。在计时的过程中,若按下“记录”按键,则可以记下此时的时间,最多可记录8组数据。可以通过“上翻”、“下翻”按键查看记录的时间。设计框图如下图:按键开关AT89C51单片机数码管显示 图1秒表设计框图3.系统硬件方案设计3.1 AT89C52单片机简介 图2 AT89C51单片机管脚说明:VCC:供电电压。GND:接地。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口也可作为AT89C51的一些特殊功能口,如下表所示: P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持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端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。/static/js/ls.html?from=&cdnversion=201206203.2单片机的连接电路单片机能够完成工作所需要的是将XTAL1和XTAL2与晶振和电容连接,对应的晶振的频率为11.0592或12M,这样才能使单片机起振工作,而RST需要连接复位电路,EA在工作的时候需要接电源,这样才能够构成单片机的基本电路。图3单片机的连接电路3.3 数码管的显示电路 在本设计中采用的6段共阳数码管,数码管是由八段LED连接而成,一个数码管要让它显示需要将位选接电源或者是接地,而八个段选则需要接在单片机的I/O口上,根据数码管的特点,到底是共阴还是共阳为其输送高低电平,对于本设计所采用的数码管来说,需要将数码管的位选接5V的电源,而另外的8段段选则需要送低电平,这样才能和单片机的I/O口形成通路,单片机在默认状态下处于高电平状态。 这样形成通路之后数码管就会出现8这样的字符,要让它显示数字还需要对数码管建库,就是建一个能够显示0-9这样的数字的字库,对于一个数码管每一个段与单片机的每一个位相连接,要让数码管显示我们所需要的数字则需要控制单片机的输出,如果让数码管输出0,则需要a,b,c,d,e,f这五个段所对应的单片机的I/O送低电平。,这样这几个段才会亮,而出现的就是0这个字符。根据这个原理就可以建立一个库,要输出的时候这接调用就行了。 图4 数码管3.4按键接口电路5个按键分别于P1.0,P1.1,P1.2,P1.3,P1.4,用于秒表计时控制, P接P1.0用于“开始/暂停”,接P1.1用于“记录”,接P1.2用于“上翻”,接P1.3用于“下翻”,接P1.4用于“清零”。图5 按键接口电路 3.5总体设计仿真电路 数码管的段选由单片机的P0口控制,位选由P2口进行控制,按键控制则是连接在单片机的P1口,通过对单片机的控制就可以对数码管显示进行控制,以实现秒表的功能。 图6 总体电路4.软件设计4.1程序流程图图7 程序流程图4.2源程序码#include code unsigned char tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /共阴数码管 0-9 code unsigned char tab1=0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF ;/共阴数码管0-9带小数点 sbit key1 = P10; /开始、暂停sbit key2 = P11; /记数sbit key3 = P12; /上翻sbit key4 = P13; /下翻sbit key5 = P14; /清零static unsigned char ms,sec,min;static unsigned char Sec8,Ms8,Min8;static int i ,j;void delay(unsigned int cnt) /延时程序 while(-cnt);void main()unsigned char key3_flag=0,key4_flag=0; TMOD |=0x01;/定时器0 10ms in 12M crystal 用于计时TH0=0xd8;TL0=0xf0;ET0=1;TR0=0; TMOD |=0x10; /定时器1用于动态扫描TH1=0xF8;TL1=0xf0;ET1=1;TR1=1; EA =1;sec=0; /初始化ms=0;min=0; P1=0xff;i=0;j=0;start: while(1) /开始、暂停 if(!key1) /判断是否按下 delay(50); /去抖 if(!key1) while(!key1) /等待按键释放 ; TR0=!TR0; /记录 if(!key2) /判断是否按下 delay(50); /去抖 if(!key2) while(!key2) /等待按键释放 ;if(i=8) /8组数据记录完毕 TR0=0; goto start; Seci= sec; /将数据存入数组Msi= ms;Mini=min;i+; /上翻 if(!key3) delay(50); if(!key3) while(!key3) ;TR0=0;key3_flag=1;/按键3标志if(j=i) goto start; elseif(key4_flag)j+=2;key4_flag=0; sec=Secj;ms=Msj;/显示数组里的内容 min=Minj;j+; /下翻 if(!key4) delay(50);if(!key4)while(!key4);TR0=0;key4_flag=1; /按键4标志if(j0) goto start;else if(key3_flag) j-=2;key3_flag=0;sec=Secj;ms=Msj;min=Minj; /显示数组里的内容j-; /清零 if(!key5) delay(50);if(!key5)while(!key5);TR0=0;ms=0;sec=0;min=0;for(i=0;i8;i+) Mini=0;Seci=0;Msi=0;i=0; /*/* 定时中断1 */*/void time1_isr(void) interrupt 3 using 0/定时器1用来动态扫描 static unsigned char num; TH1=0xF8;/重入初值TL1=0xf0;switch(num)case 0:P2=0xfe;P0=tabmin/10;break;/显示分十位case 1:P2=0xfd;P0=tab1min%10;break;/显示分个位 case 2:P2=0xfb;P0=tabsec/10;break;/显示秒十位 case 3:P2=0xf7;P0=tab1sec%10;break; /显示秒个位 case 4:P2=0xef;P0=tabms/10;break;/显示十位 case 5: P2=0xdf;P0=tabms%10;break; /显示个位 default:break;num+;if(num=6)num=0;/*/* 定时中断0 */*/void tim(void) interrupt 1 using 1TH0=0xd8;/重新赋值TL0=0xf0; ms+;/毫秒单元加1 if(ms=100) ms=0;/等于100时归零 sec+;/秒加1 if(sec=60) sec=0;/秒等于60时归零 min+; if(min=60) min=0; /分等于60时归零 5.仿真结果及分析5.1仿真结果1.按下仿真按键,准备仿真。图8 启动仿真按键时的仿真图2.按下“开始/暂停”键,开始计时,再次按下“开始/暂停”键,停止计时。图9 暂停时的仿真图3.按下“开始/暂停”键后记录的一系列时间点。图10 计时到秒个位时的仿真图图11 计时到秒十位时的仿真图图12 计时到分个位时的仿真图图13 计时到分十位时的仿真图4.通过“上翻”、“下翻”按键找到记录的几个时间点。图14 记录计时到分十位时的仿真图图15 记录计时到分个位时的仿真图图16 记录计时到秒十位时的仿真图图17 记录计时到秒个位时的仿真图5.按下“清零”键后的仿真图。图18 清零时的仿真图5.2结果分析此设计可以计时到分钟,精确到0.01秒,通过仿真,很容易看到。通过记录一系列的时间点,可以知道该秒表可以很好进行计时。同时,可以通过“记录”键记录一系列的时间点,最多可以记录8组数据。通过“上翻”、“下翻”键可以对记录的数据进行查询。通过“清零”键可以对数据进行清理。由于精确到0.01秒,仿真的时候看见毫秒的个位几乎没变,总是显示8。6.心的体会通过这次的课程设计,使我对单片机程序设计的方法、要求有了初步的了解并且积累了一些实践经验,对软件的应用有了更进一步的了解,相信对以后进一步学习单片机知识,这对自己无论是在感性上还是理性上都会有一定的帮助,而且通过这次的设计,激发了我对单片机课程浓厚的兴趣,增强了我对书本理论的运用。虽然现在对所涉及的知识和要求的综合分析能力较为复杂,可这其中体现了创新思想和知识的结合应用,今后我将更广泛地涉及这方面的知识,希望能在这一领域有所成就。同时,也使自己深刻的认识到自己的很多不足之处,在实际动手操
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年西藏昌都地区单招职业倾向性考试题库附答案详解
- 2026年安徽警官职业学院单招职业技能考试题库含答案详解
- 2026年郴州职业技术学院单招职业技能测试题库含答案详解
- 2026年河南水利与环境职业学院单招职业倾向性考试题库带答案详解
- 产科护理面试题目及答案
- 护理直升面试题及答案
- 2025年厦门市翔发集团有限公司招聘备考题库完整答案详解
- 2025年关于屏山县兴纺建设发展有限公司及其下属子公司第六次公开招聘5名工作员的备考题库及一套答案详解
- 2025年重庆大学实验室及设备管理处劳务派遣工作人员招聘备考题库及参考答案详解1套
- 2025年贵州盐业(集团)安顺有限责任公司公开招聘工作人员备考题库有答案详解
- 2025四川省教育考试院招聘编外聘用人员15人考试笔试模拟试题及答案解析
- 特许经营教学设计教案
- 2025年智能消防安全系统开发可行性研究报告
- 胎儿窘迫课件
- 2025年国家开放大学《刑事诉讼法》期末考试备考试题及答案解析
- 论文导论范文
- (正式版)DB65∕T 4636-2022 《电动汽车充电站(桩)建设技术规范》
- 胸痛患者转运课件
- 某城区城市交通优化提升规划设计方案
- 职业病安全知识培训课件
- 随班就读教学活动方案设计案例
评论
0/150
提交评论