版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理与接口技术课程设计绪论 近十几年来,单片机技术凭借其速度快,体积小,价格低,控制功能强,易于掌握,功能丰富等自身优点迅速发展,在各个领域发挥了重大作用,如今已成为一门成熟的学科。利用单片机可以实现非常丰富的功能,如流水灯,闹钟,秒表,音乐盒等,能够独立完成,实现设计,可以很好的检验自己对硬件以及对软件的理解和掌握水平。本设计采用80C51芯片,实现了利用单片机进行了一个简单计算器设计。允许对输入数据进行加,减,乘,除运算及LED数码管的显示。当然也可以用如LED显示屏显示来显示出更多的字符,实现更多的功能。但设计的关键所在,必须非常熟悉单片机的原理与结构,同时还要对整个设计流程有很好的把握,实现单片机和其他模块的完整的衔接。1.硬件组成与方案设计1.1系统框图 硬件组成如图1.1所示,通过时钟电路来提供时钟脉冲,使单片机有节拍的协同各个部件的同步有序工作,键盘电路来检测各个功能键,通过数码管来显示输出结果,复位电路可以在单片机异常工作或者需要重新计算时进行复位:图1.1芯片和键盘实现功能1.2硬件设计根据功能和指标要求,本系统选用89C52单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计。按键分布如下表1.2所示:0123456789C=+-*/表1.2按键分布表硬件设计如下:①由于要设计的是简单的计算器,可以进行四则运算,对数字的大小范围要求不高故我们采用可以进六位数字的运算,选用6个LED数码管显示数据和结果。②另外键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16个按键即可。1.3功能设计功能实现如下:初始化:上电后,屏幕初始化。计算。按下数字键,屏幕显示要运算的第一个数字,再按下符号键,屏幕不显示,然后再按下数字键,屏幕显示要运算的第二个数字,最后按下“﹦”号键,屏幕上显示出计算结果。如果要再次计算,可以按下“C”键清零,或者按下单片机的复位键,重新初始化。2.硬件电路设计2.1时钟电路时钟电路是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊地工作。因此时钟频率直接影响单片机的速度,时钟电路的质量也影响单片机系统的稳定性。本文时钟电路采用内部时钟电路,在引脚XTAL1和XTAL2两端跨接石英晶体,通过外接晶振C1,C2形成内部时钟电路,C1,C2一般取30pF:图2.1时钟电路2.2复位电路上电复位电路是一种简单的复位电路,只要在RST复位引脚接一个电容到VCC,接一个电阻到地就可以了。上电复位是指在系统上电时,复位电路通过电容加到RST复位引脚一个短暂的高电平信号,这个复位信号随VCC对电容的充电过程而回落,故RST引脚复位的高电平维持时间取决于电容的充电时间。为保证系统安全可靠的复位,RST引脚的高电平信号必须维持足够长时间,电路图如下图图2.2所示:图2.2复位电路2.3显示电路如下图2.3所示为一位共阴极数码管的元件图:图2.3数码管它是一种半导体发光器件,其基本单元是发光二极管。表2.1为常用的字形表,为了显示数字或符号,要为LED显示器提供代码,即字形代码为方便查询数码管共阴极字形段码,通过查询下表可以很方便的找到所需要段码:显示字型gfedcBa段码001111113fh1000011006h210110115bh310011114fh4110011066h511011016dh611111017dh7000011107h811111117fh911011116fh表2.1常用字形码(低电平有效)数码管是由8段发光二极管显示字段的显示器件,发光二极管简称字段,要显示某字形就应使该字形的相应字段点亮,也就是向数码管送入不同的电平组合,通过不同的组合可以显示0~9,A~F以及小数点“.”等字符,而本设计为正整数的运算,并不涉及到小数点的点亮。数码管的显示方法为:通过右边的公共端控制数码管的亮灭,通过左边的段选码的电平状态确定每位发光二极管亮灭。本次设计采用的是6位七段共阴极数码管,但是不需要单独使每个数码管送出段选码,而是每3个数码管的段选端通过内部总线相连,再通过动态显示数码管的方式使每个数码管分时轮流选通,因此大大简化了电路,更好的利用了I/O资源。下图2.4即为所使用的6位数码管的元件图:图2.4数码管显示电路2.4键盘电路考虑到独立式键盘每个按键都要占用一个I/O口,按键较多时需要占用较多的的I/O口线,资源利用率低,并且由于本次采用的单片机开发板本身就是行列式键盘,故最终采用的是4行列式键盘。行列式键盘的四个行线处于输入状态,四个列线处于输出状态,按键设置在行列线的交叉点上,行列线分别连在按键开关的两端。 具体键盘电路如图2.3所示:图2.5键盘电路3.系统软件设计3.1主程序主程序流程图如图3.1所示,主程序构成循环,首先初始化参数,送LED为高电平,初始状态下没有字形码显示。然后扫描键盘看是否有键输入,若有,读取键码。判断键码是数字键0~9、清零键,“=”还是四则运算符(“+”,“-”,“*”,“/”),如果是数字值,则计数第几个数,第几位数,进行内部运算处理,送入数码管进行显示输出,是清零键则做对数码管进行清零,如果是四则运算,则内部进行运算处理,同时数码管不显示,若为“=”号则输出运算结果,显示在数码管上。图3.1主程序流程图3.2键盘检测程序此子程序为本设计的核心之一,因为按键是利用机械触点来进行合,断作用的,机械触点在闭合或断开的瞬间由于弹性作用的影响,有抖动现象,从而使电压信号出现抖动,会造成按键读入的不稳定性,产生误读现象,因此为了保证键盘读入的可靠性,必须消除去除抖动影响,抖动时间与按键的机械特性相关,一般为5~10ms,去除抖动的方法有硬件和软件去抖两种,本实验采用的是软件去抖::检测到有键按下时,执行一个20ms的延时程序,再确认该键电平是否保持闭合电平状态,若仍为闭合电平状态,则确认该键处于闭合状态,从而去除抖动影响,子程序流程图如图3.2所示:图3.2键盘程序流程图3.3读键输入程序为了实现键盘的数据输入功能和命令处理功能,每个键都有其处理子程序,为此每个键都对应一个码——键码。为了得到被按键的键码,现使用行扫描法识别按键。列扫描信号进行读入行的信号,判断该列是否有列的输出——是则进行按照行列计算键盘的值,查表取得键码并返回——若否则进行再次扫描。本设计采用矩阵式键盘,行线为P3.0-P3.3,列线为P3.4-P3.7,通过读取行线P3.0-P3.3的状态可以确定有无键按下,当键盘上没有键被按下时,行列线是断开的,P3.0-P3.3输入全部为高电平,当某个键被按下时,行列线短路,P3.0-P3.3短路,所有行线输入都是低电平,而列线某一位为低电平,其他位均为高电平。通过结合行线和列线的输入状态可以确定哪个键被按下,从而确定正确的键码值。图3.3读键输入程序流程图3.4数码管显示程序数码管显示分为静态显示和动态显示,考虑到静态显示需要显示较多I/O口,占用资源多,并且考虑到本单片机实验板硬件的限制,本数码管的显示采用的动态显示方案,通过分时轮流选通数码管的公共端,使各个数码管轮流选通,再送出段码,显示特定字符。在各个数码管依次显示一遍后,通过循环使显示器分时点亮,由于视觉暂留效用与余晖效应,人眼无法识别数码管的点亮顺序,就好像所有数码管同时点亮,具体流程如下图3.4:图3.4数码管显示流程图4.仿真与调试4.1软件调试1、打开KeiluVision2软件后,在Project菜单中选择NewProject命令,打开一个新项目。保存此项目,输入工程文件名calculator后,并保存工程文件的目录。2、为项目文件选择一个目标器件,即选择80C51的类型。在Database列表框中选择“Atmel89C52”,确定。3、选择“File”目录下的Target1,在右键列表中选择“组SourceGroup1属性”,在输出项勾选“E成HEX文件”,HEX格式为“HEX-80”。4、上述设置好后,创建源程序文件并输入程序代码。输入好代码后点击“文件/保存”,保存为calculator.asm。5、把源文件添加到项目中,用鼠标指在目标工作区的目标:1.点击右键在弹出的菜单中选择“添加文件到组SourceGroup1”,在弹出的添加文件框中,选择需要添加到项目中的文件。6、开始编译,对项目文件进行编译,对代码进行修改完善,最后编译0错误,0警告。7、打开stc-isp软件,选择单片机型号为STC89C52RC,选择正确的串口号,加载程序文件,给单片机上电后,HEX文件下载编程成功。4.2硬件调试1.依次按下矩阵键盘上定义的数字键“0~9”,经检测数码管都可以正确显示。2.依次进行不同算法“+”,“—”,“*”,“/”,经检测可以正常进行运算。3.输入某个数,按下清零键,屏幕无显示,可以实现清零功能。4.3调试结果(1)编程软件Keil软件调试结果如图4.1:图4.1Keil软件调试结果(2)烧写软件ISP-STC调试结果如图4.2:图4.2ISP-STC调试结果(3)89C51实验板硬件调试结果:总结本次课程设计是理论和实践的结合,首先通过该学期理论课的学习,对单片机的硬件构成有了初步的理解,包括其结构与原理,指令系统,定时/计数器和扩展接口的使用,通过这次课程设计,在实践中重复利用所学运用,验证理论知识,从中我很多收获和体会,以及自顶向下,逐步细化的工程设计方法,通过一步步分解任务设计,达到了设计要求。途中当然遇到了很多困难,但也增强了查阅书籍,手册,图表和文献资料的能力,同时通过独立思考,深入研究有关问题,学会自己分析解决问题的方法解决了一些问题。在这次课程设计中我充分感受到理论和实践的差距,一个人光有理论知识是远远不够的,在进行实践,面对硬件完全是一无所措,对硬件的学习完全是不同于理论学习的,其中硬件调试,ISP-STC烧写操作,都是课堂上没有讲过的,需要重新学习。设计过程中也会发现自己对理论知识的某些方面不是那么牢固,暴露了自己的很多不足,锻炼了自己的理论联系实际的能力与实际动手能力,以后应该多进行一些实践来不断提升自己的能力。参考文献[1]张迎新.单片微型计算机原理-S、应用及接口技术[M].北京:国防工业出版社.[2]阎石.数字电子技术基础[M].北京:高等教育出版社.附录A:整体电路图附录B:程序代码#include<reg51.h>#defineucharunsignedcharuchara0=16,b0=16,c0=16,d0=16,e0=16,f0=16,wei,temp,key,i,j,k;ucharjia,jian,cheng,chu,dengyu,jia0,jian0,cheng0,chu0,qingling;uchars0,s1,s2,s3,s4,s5;//参加运算的各个位unsignedlongqian,hou;//定义参于运算的第一个数和第二个数。sbitdula=P2^6;sbitwela=P2^7;sbitbeep=P2^3;unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};voiddelay(uchari){ for(j=i;j>0;j--) for(k=125;k>0;k--);}voiddisplay(uchara,ucharb,ucharc,uchard,uchare,ucharf){dula=0;P0=table[a];dula=1;dula=0;wela=0;P0=0xfe;wela=1;wela=0;delay(5);P0=table[b];dula=1;dula=0;P0=0xfd;wela=1;wela=0;delay(5);P0=table[c];dula=1;dula=0;P0=0xfb;wela=1;wela=0;delay(5);P0=table[d];dula=1;dula=0;P0=0xf7;wela=1;wela=0;delay(5);P0=table[e];dula=1;dula=0;P0=0xef;wela=1;wela=0;delay(5);P0=table[f];dula=1;dula=0;P0=0xdf;wela=1;wela=0;delay(5);}voidkeyscan(){{ P3=0xfe;temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(10);if(temp!=0xf0){ temp=P3;switch(temp){case0xee:key=0; wei++;break;case0xde:key=1; wei++;break;case0xbe:key=2; wei++;break;case0x7e:key=3; wei++;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;beep=0;}beep=1;}}P3=0xfd;temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(10);if(temp!=0xf0){temp=P3;switch(temp){case0xed:key=4; wei++;break;case0xdd:key=5; wei++;break;case0xbd:key=6; wei++;break;case0x7d:key=7; wei++;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;beep=0;}beep=1;}}P3=0xfb;temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(10);if(temp!=0xf0){temp=P3;switch(temp){case0xeb:key=8; wei++;break;case0xdb:key=9; wei++;break; case0xbb:qingling=1; //key=10; //wei++;break;case0x7b:dengyu=1; //key=11; //wei++;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;beep=0;}beep=1;}} P3=0xf7;temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(10);if(temp!=0xf0){temp=P3;switch(temp){case0xe7: jia=1;//key=12; //wei++;break;case0xd7:jian=1;break;case0xb7:cheng=1;break;case0x77:chu=1;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;beep=0;}beep=1;}}}}voiddisplay0(){ if(key!=20) { switch(wei) { case1:a0=key; b0=16; c0=16; d0=16; e0=16; f0=16; break; case2:b0=key; c0=16; d0=16; e0=16; f0=16; break; case3:c0=key; d0=16; e0=16; f0=16; break; case4:d0=key; e0=16; f0=16; break; case5:e0=key; f0=16; break; case6:f0=key; //wei=0; break; } key=20; } display(a0,b0,c0,d0,e0,f0); if(a0!=16)s5=a0; if(b0!=16)s4=b0; if(c0!=16)s3=c0; if(d0!=16)s2=d0; if(e0!=16)s1=e0; if(f0!=16)s0=f0;}voidmain(){ uchargongneng,yunsuan; while(1) { keyscan(); gongneng=jia|jian|cheng|chu|dengyu|qingling; if(gongneng==0) { display0(); } else { yunsuan=jia|jian|cheng|chu; if(yunsuan) { a0=16; b0=16; c0=16; d0=16; e0=16; f0=16; //wei=0; if(jia) {jia=0; jia0=1;jian0=0;cheng0=0;chu0=0;} if(jian) {jian=0;jia0=0;jian0=1;cheng0=0;chu0=0;} if(cheng) {cheng=0;jia0=0;jian0=0;cheng0=1;chu0=0;} if(chu) {chu=0; jia0=0;jian0=0;cheng0=0;chu0=1;} switch(wei) { case6: qian=s5*100000+s4*10000+s3*1000+s2*100+s1*10+s0;break; case5: qian=s5*10000+s4*1000+s3*100+s2*10+s1;break; case4: qian=s5*1000+s4*100+s3*10+s2;break; case3: qian=s5*100+s4*10+s3;break; case2: qian=s5*10+s4;break; case1: qian=s5;break; } wei=0; s0=0;s1=0;s2=0;s3=0;s4=0;s5=0; display(a0,b0,c0,d0,e0,f0); //P1=0x55; } if(dengyu) { dengyu=0; //display(16,16,16,16,16,16); switch(wei) { case6: hou=s5*100000+s4*10000+s3*1000+s2*100+s1*10+s0;break; case5: hou=s5*10000+s4*1000+s3*100+s2*10+s1;break; case4: hou=s5*1000+s4*100+s3*10+s2;break; case3: hou=s5*100+s4*10+s3;break; case2: hou=s5*10+s4;break; case1: hou=s5;break; } wei=0; s0=0;s1=0;s2=0;s3=0;s4=0;s5=0; if(jia0) {jia0=0; hou=qian+hou;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025上海新金山投资控股集团限公司储备人才招聘15人高频重点提升(共500题)附带答案详解
- 2025上半年陕西省渭南市事业单位考试招聘高频重点提升(共500题)附带答案详解
- 2025上半年江苏省扬州仪征市事业单位招聘125人历年高频重点提升(共500题)附带答案详解
- 水上乐园文明使者管理办法
- 2025上半年四川省古蔺县事业单位招聘435人历年高频重点提升(共500题)附带答案详解
- 软件园内商铺租赁合同样本
- 地下矿井工程设备租赁合同
- 农业设施施工管理合同
- 2024年物业抵押贷款与社区安全防范合同3篇
- 旅行社杂工临时用工协议
- 人教版三年级数学上册 期末测试
- 大学生公共安全教育知到智慧树章节测试课后答案2024年秋郑州师范学院
- 中南大学《创新创业导论》2023-2024学年第一学期期末试卷
- 《建筑施工现场环境与卫生标准》JGJ146-2013
- 2025年广东省春季高考学业水平考试数学试卷试题(含答案解析)
- 舞台管理智慧树知到期末考试答案章节答案2024年上海戏剧学院
- 个人简历电子版表格下载
- 场内叉车安全培训
- 不锈钢项目立项申请报告
- 国家开放大学电大本科《西方社会学》2023-2024期末试题及答案(试卷代号:1296)
- 变式题教学设计
评论
0/150
提交评论