




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学《微处理器与微控制器应用》课程设计说明书武汉理工大学《微处理器与微控制器应用》课程设计说明书目录1设计要求 12设计方案及原理 12.1方案一 12.2方案二 22.3方案三 23实现方案 33.1方案比较与选择 33.2流程图 33.3芯片介绍 43.4工作原理 64模块功能分析或源程序代码 64.1数码管显示函数 64.2定时器中断函数 74.3计次显示中断函数 84.4计次中断函数 95调试过程及结论 105.1调试过程中发现的问题 105.2调试结论 106心得体会 117参考文献 12徐小豪:)电子跑秒表的设计1设计要求以89s51单片机为核心芯片,设计一个模拟电子跑秒表,要求如下:利用LED显示秒表计时的过程;可以对秒表进行初始时间设置;可以调整秒表的时间;2设计方案及原理2.1方案一三个独立的数码管连接89c51的P0、P1、P2口,P0脚输出分,P2脚输出秒的十位,P1脚输出秒的个位,P3.0、P3.1、P3.2连接按钮,功能分别是:开始、暂停、重置。硬件连接图如图1所示:图1方案一硬件仿真图2.2方案二一个6位的数码管与89c51连接,P0口作为段选,P2口作为位选,P3.0、P3.1、P3.2连接按钮,功能分别是:开始、暂停、重置。硬件连接如图2所示:图2方案二硬件仿真图2.3方案三因为我有个开发板,方案三是根据开发板的连接图设计的,P0口与两个74HC573锁存器相连,锁存器输出脚与数码管相连,P3.0、P3.1、P3.2、P3.3的按钮功能是:暂停、开始、显示记次、计次。硬件原理如图3所示:图3方案三的硬件仿真图3实现方案3.1方案比较与选择方案一电路复杂,用到了所有的IO口,显示简单,只能显示秒和分,分也只能最大显示“9”,所以不采用方案一。方案二与方案三功能一样,但是我有开发板,实物明显比仿真来的直接,更有说服力,所以我采用方案三作为实现方案。3.2流程图开始?按键扫描开始程序的流程结构图如图4所示:开始?按键扫描开始 N计时器停止暂停? Y计时器停止暂停?YYYN中断显示Y显示?中断计次NN计次?重置?NYN中断显示Y显示?中断计次NN计次?重置?N图5流程图图5流程图 3.3芯片介绍89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,89C2051是它的一种精简版本。89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。管脚介绍说明: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.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器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),不管是否有内部程序存储器读取外部ROM数据。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,单片机读取内部程序存储器。(扩展有外部ROM时读取完内部ROM后自动读取外部ROM)。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3.4工作原理程序开始后,运行按键扫描程序keyscan,按下“开始”键S3,计时器中断开始运行,89c51将P0口数据送入锁存器,P2.6和P2.7控制两个锁存器(因为用了2个4位数码管)的LE脚,锁存器将数据送给数码管进行显示,一个锁存器输出作为段选,一个作为位选。按下“暂停”键S2,关闭计时器,计时暂停。按下“计次”键S5,进入计次中断函数,将当前的时间储存在数组里。按下“计次显示”键S4,进入显示中断函数,将数组里的数值显示出来。按下“重置”键S1,时间归0。开发板如图6所示:图6开发板实物图4模块功能分析或源程序代码4.1数码管显示函数voiddisplay(ucharshi2,ucharshi1,ucharfen2,ucharfen1,ucharmiao2,ucharmiao1){dx=0;P0=table[shi2];//分的十位的数值dx=1;//开段选dx=0;wx=0;P0=0xfe;//第一个数码管wx=1;//开位选wx=0;delay(5);P0=table[shi1]|0x80;//小数点常亮dx=1;dx=0;P0=0xfd;wx=1;wx=0;delay(5);P0=table[fen2];dx=1;dx=0;delay(5);P0=table[fen1]|0x80;dx=1;dx=0;P0=0xf7;wx=1;wx=0;delay(5);P0=table[miao2];dx=1;dx=0;P0=0xef;wx=1;wx=0;delay(5);P0=table[miao1];dx=1;dx=0;P0=0xdf;wx=1;wx=0;delay(5);}4.2定时器中断函数voidtime0()interrupt1{ TH0=(65536-4608)/256;//5ms TL0=(65536-4608)%256; pp++; if(pp==2)//0.1s { pp=0; m++; if(m==99)//0.01s累计100次 {m=0; f++; if(f==60) {f=0; s++; if(s==60) { s=0; }}}}}4.3计次显示中断函数voidtime1()interrupt0{ delay(10); for(i2=200;i2>1;i2--)//循环200次,显示延时 { display(s1[0],s1[1],s1[2],s1[3],s1[4],s1[5]);//显示第一次计次时间 P0=table[1];//显示计次次数1dx=1;dx=0;P0=0x7f;wx=1;wx=0;delay(5); } for(i2=200;i2>1;i2--) { display(s2[0],s2[1],s2[2],s2[3],s2[4],s2[5]);P0=table[2];dx=1;dx=0;P0=0x7f;wx=1;wx=0;delay(5);} for(i2=200;i2>1;i2--) {P0=table[3];dx=1;dx=0;P0=0x7f;wx=1;wx=0;delay(5); display(s3[0],s3[1],s3[2],s3[3],s3[4],s3[5]);} IE0=0;}4.4计次中断函数voidtime2()interrupt2{ if(S5==0) { delay(10);//消抖 if(S5==0)//进行3次计次 { if(i1==0){s1[0]=a1;s1[1]=a0;s1[2]=b1;s1[3]=b0;s1[4]=c1;s1[5]=c0;} if(i1==1){s2[0]=a1;s2[1]=a0;s2[2]=b1;s2[3]=b0;s2[4]=c1;s2[5]=c0;} if(i1==2){s3[0]=a1;s3[1]=a0;s3[2]=b1;s3[3]=b0;s3[4]=c1;s3[5]=c0;} i1++; if(i1==3){i1=0;} }}}5调试过程及结论5.1调试过程中发现的问题1.计次时会计2次时间间隔很短的时间。原因:按键发生了了抖动,按下一次计次被算成了2次。解决方法:在计次函数里加了防抖语句,就好了。2.计次只能计一个循环。原因:程序中i1计了三次后,成了“3”,虽然又按了计次按钮,但是不会被再次记录。解决方法:当i1计了3次后,成了“3”,再将i1等于0,就又可以再计次了。5.2调试结论经过这次调试,我发现了我程序中一些问题,这些问题虽然不严重,但是却表明了我对C语言掌握不够熟练和对硬件电路不是十分了解。还好有了这次的调试,让我及早发现了这些问题。总的来说,本次调试我没什么大问题,完善了很多小问题和细节,尽量将这个秒表做的更好。下图是运行结果图。图7运行图图8计次结果图6心得体会单片机是我所学专业的主要课程之一,不仅培养了我综合运用所学知识,发现,提出,分析和解决实际问题的能力,而且提高了我实际动手操作能力.现实生活中,单片机在应用可以说得是无处不在。因此在大学中说掌握单片机的开发技术是十分重要的,也是十分必要的。我在刚刚拿到课程设计题目时有点迷惘,毕竟在前八周的理论学习中没有扎实的掌握单片机的理论知识,不知道如何下手,好在通过上网和图书馆查阅相关资料,自己认真钻研以及虚心询问同学,终于咸鱼大翻身,游逆而上,解决了一个又一个的困难和障碍,成功完成了任务。通过本次的单片机课程设计,不仅丰富了我的理论知识,而且在实践过程中更令我学会了坚持、耐心和努力。此次单片机课程设计需要运用到许多之前所学过的知识,令我认识到自己以前学习的一些不足之处,例如对以前所学知识的理解不够深刻,掌握得不够牢固,运用不够灵活。这让我懂得了认真学习的重要性,以及要孜孜不倦地钻研所学过的知识,做得融会贯通,不能一览而过,不求甚解。在边学习边动手的过程中,我对89C51单片机的构造以及原理有了进一步的了解,同时也加深和巩固了我对单片机汇编语言的认识。除此之外,由于是第一次做单片机,因此在此次课程设计的过程中,无论是电路绘制还是汇编语言编写都难免遇到了不少困难和障碍,例如汇编语言编写出错、电路元件无从入手等。在面对困难和障碍时,我庆幸自己没有选择退缩和逃避,而是通过各种方法,迎难而上,以坚持、耐心和努力勇敢无畏地面对困难,克服困难,解决困难。让我发现问题、分析问题、解决问题以及动手实践的能力都有了很大的提高,并了解到理论知识与实践相结合的重要意义。从这次的课程设计中,我才真正明白理论结合实际的道理,在以后的学习中,更要把理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机即是如此,出色的程序最终用实际操作来实现才是完美。十分庆幸拥有这次课程设计,让我受益匪浅。7参考文献[1]李朝青.
单片机原理及接口技术[M].
北京:北京航空航天大学出版社.2005.10[2]肖洪兵.
跟我学用单片机.
北京:北京航空航天大学出版社.2002.8[3]孙德辉,郑士富.
微型计算机控制系统.
北京:冶金工业出版社.2002[4]陈汝全.
实用微机与单片机控制技术.
电子科技大学出版社.1995.7附录:程序源代码#include<reg51.h>#defineucharunsignedcharsbitdx=P2^6;sbitwx=P2^7;sbitS2=P3^0;sbitS3=P3^1;sbitS4=P3^2;sbitS5=P3^3;unsignedcharhalt,j,k,a1,a0,b1,b0,c1,c0,s,f,m,n=255,s1[6],s2[6],s3[6];unsignedintpp,i1=0,i2=0;unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};voiddelay(inti){for(j=i;j>0;j--)for(k=125;k>0;k--);}voiddisplay(ucharshi2,ucharshi1,ucharfen2,ucharfen1,ucharmiao2,ucharmiao1){//数码管显示函数dx=0;P0=table[shi2];dx=1;dx=0;wx=0;P0=0xfe;wx=1;wx=0;delay(5);P0=table[shi1]|0x80;dx=1;dx=0;P0=0xfd;wx=1;wx=0;delay(5);P0=table[fen2];dx=1;dx=0;P0=0xfb;wx=1;wx=0;delay(5);P0=table[fen1]|0x80;dx=1;dx=0;P0=0xf7;wx=1;wx=0;delay(5);P0=table[miao2];dx=1;dx=0;P0=0xef;wx=1;wx=0;delay(5);P0=table[miao1];dx=1;dx=0;P0=0xdf;wx=1;wx=0;delay(5);}voidkeyscan()//按键扫描函数{ if(S2==0) delay(10); if(S2==0) {halt=1;} if(S3==0) halt=0;}voidmain(){ TMOD=0x01; TR0=1; TH0=(65536-4608)/256; TL0=(65536-4608)%256; ET0=1;EX0=1;EX1=1;IT0=1;IT1=1;EA=1; s=0;f=0;m=0;//让开始时间为0 halt=1; a0=s%10;a1=s/10;b0=f%10;b1=f/10;c0=m%10;c1=m/10; while(1) { keyscan(); if(halt==0){ TR0=1;a0=s%10;a1=s/10;b0=f%10;b1=f/10;c0=m%10;c1=m/10; display(a1,a0,b1,b0,c1,c0); } else TR0=0; display(a1,a0,b1,b0,c1,c0); }}voidtime0()interrupt1//定时器中断,{ TH0=(65536-4608)/256;//5ms TL0=(65536-4608)%256; pp++; if(pp==2)//毫秒,秒,分的转换 { pp=0; m++;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏赣榆初二数学试卷
- 广州九年上期末数学试卷
- 河北省春招数学试卷
- 四川省成都市青羊区石室中学2025届物理高一下期末质量检测试题含解析
- 2025年中国橙浓缩汁市场深度调研分析及投资前景研究预测报告
- 2025年中国古方酒行业市场发展前景及发展趋势与投资战略研究报告
- 江苏溧阳市2025年高一物理第二学期期末复习检测模拟试题含解析
- 2025届福建省福州四中高二物理第二学期期末达标测试试题含解析
- 健康的生活习惯课件
- 深海科技产业链
- 2025广西专业技术人员公需科目培训考试答案
- 《创伤失血性休克中国急诊专家共识(2023)》解读
- 教师职业道德课件-教师职业道德
- 金康合同94中英文版
- 《呕吐的常见原因》PPT课件
- 春夏季传染病防治知识
- 公安派出所建筑外观形象设计规范
- 饮水机滤芯更换记录表
- 机械制造企业安全检查表
- 第二章汽车车身常用材料学习教案
- 骨病病理知识
评论
0/150
提交评论