欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    单片机原理及接口技术报告.docx

    • 资源ID:96668784       资源大小:1.01MB        全文页数:26页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机原理及接口技术报告.docx

    单片机原理及接口技术课程设计报告课题名称课题 23 :简洁计算机的 设计 学院自动掌握与工程学院名目一、设计的目的、任务3二、设计步骤及方案.5三、硬件电路设计6四、软件设计及系统流程图91 初始化程序模块112、键盘扫描程序模块123、显示程序模块.15五、调试过程及方法17六、课程设计心得体会.18七、参考文献.19附录20一、设计的目的、任务1、 课程设计的目的单片机课程设计作为独立的教学环节,是自动化及相关专业 集中实践性环节系列之一,是学习完单片机原理及其运用 课程后。并在进展相关课程设计根底上进展的一次综合练习。单片机课程设计过程中,学生通过查阅资料、接口设计、程 序设计、安装调试等环节,完成一个基于 MCS-51 系列单片机, 涉及多种资源应用,并具有综合功能的小应用系列设计。使学 生不但能够将课堂上学到的理论学问与实际应用结合起来,而 且能够对电子电路,电子元器件等方面的学问进一步加深生疏, 同时在软件编程,调试,相关仪器设备和相关软件的使用技能 得到较全面的熬炼和提高。使学生增进对单片机的感兴生疏, 加深对单片机理论方面的理解,加深单片机的内部功能模块的 应用,如定时器/计时器、中断、片内外存储器、I/O 接口、串 行接口等。使学生了解和把握单片机应用系统的软硬件设计过 程、方法及实现,强化单片机应用电路的设计与分析力量。提 高学生在单片机应用方面的实践技能和科学作风;培育学生综 合运用理论学问解决问题的力量。2、基于 AT89C51 单片机简易计算器的设计【摘 要】单片机的消灭是计算机制造技术高速进展的产物,它是嵌入式掌握系统的核心,如今,它已广泛的应用到我们生活的 各个领域,电子、科技、通信、汽车、工业等。本设计是基于51系列单片机来进展的数字计算器系统设计,可以完成计算器的键 盘输入,进展加、减、乘、除六位数范围内的根本四则运算,并在 LCD 上显示相应的结果。设计电路承受 AT89C51 单片机为主要掌握电路,利用 MM74C922 乍为计算器 4*4 键盘的扫描 IC 读取键盘 上的输入。显示承受字符 LCD 静态显示。软件方面使用 C 语言编 程,并用PROTUES 仿真。3. 设计任务及要求1) 、基于 MCS-51 系列单片机 AT89C51,设计一个简洁的计算器。2) 通过 4*4 的矩阵键盘输入数字及运算符;3) 、可以进展 4 为十进制数以内的加法运算,假设计算结果超过 4 位十进制数,则屏幕显示 E。4) 、可以进展加法以外的计算乘、除、减。5) 、其他功能。二、设计步骤及方案 1、总体设计及方案依据功能和指标要求,本系统选用 MCS-5 係列单片机为主控 机。通过扩展必要的外围接口电路,实现对计算器的设计。具 体设计如下:(1) 由于要设计的是简洁的计算器,可以进展四则运算,为了 得到较好的显示效果,承受 LCD 显示数据和结果。(2) 另外键盘包括数字键0 9、符号键+、-、X、+、 去除键和等号键,故只需要 16 个按键即可,设计中承受集成的 计算键盘。(3) 执行过程:开机显示零,等待键入数值,当键入数字,通 过 LCD显示出来,当键入+、-、*、/运算符,计算器在内部执 行数值转换和存储,并等待再次键入数值,当再键入数值后将 显示键入的数值,按等号就会在 LCD 上输出运算结果。(4) 错误提示:当计算器执行过程中有错误时,会在 LCD 上显 示相应的提示,如:当输入的数值或计算得到的结果大于计算器 的表示范围时,计算器会在 LCD 上显示 E;当除数为 0 时,计算 器会在 LCD 上显示E。系统方案图:2、总体硬件配置本设计选用 AT89C51 单片机为主控元件。显示局部:承受 LCD 静态显示。按键局部:承受 4*4 键盘;利用 MM74C922 为 4*4 的键盘扫描 IC, 读取输入的键值。三、硬件电路设计1、总体设计效果如图 1-1 所示:LCD1LM016LRV1+5VC130p12MRP119HU1C2口ZXTAL118XTAL2R39RSTP0.0/AD0P0.1/AD1 P0.2/AD2 P0.3/AD3P0.4/AD4 P0.5/AD5 P0.6/AD6P0.7/AD73938233534333267892122232410K1C04U2930PSEN ALEEAP2.0/A8 P2.1/A9 P2.2/A10P2.3/A11 P2.4/A12P2.5/A13 P2.6/A14 P2.7/A15P10P10 1Ttr-P12 3pl3 4pi4 5P1.0 P1 1P1.2 P1 3P1.4P3.0/RXDp11I7 8 9 B4 5 _6Pl56P3.2/INT0 P3 3/fNTTP3.4/T0p12P16 7P17 8P1.6 P1.7AT89C51P3.6/WRP3.7/RDp131。二圧图 1-12、输入模块键盘接口电路计算器输入数字和其他功能按键要用到很多按键,假设承受独 立按键的方式,在这种状况下,编程会很简洁,但是会占用大量 的 I/O 口资源,因此在很多状况下都不承受这种方式,而是承受 矩阵键盘的方案。矩阵键盘承受四条 I/O 线作为行线,四条 I/O 线作为列线组成键盘,在行线和列线的每个穿插点上设置一个按 键。这样键盘上按键的个数就为4X 4 个。这种行列式键盘构造能有效地提高单片机系统中 I/O 口的利用率。4*4 矩阵键盘的工作原理:计算器的键盘布局如图 2-1 所示:一般有 16 个键组成,在单片机中正好可以用一个 P 口实现 16 个按键功能,这种形式在单片机系BCD统中也最常用4567PPPP图 2-4*4 键盘内部电路图如图 2-2 所示:图 2-23、显示模块LCD本设计承受 LCD 液晶显示器来显示输出数据。通过 D0-D7 引脚向 LCD 写指令字或写数据以使 LCD 实现不同的功能或显示相应数据。接口信号说明:RS:数据/命令选择端H/L RW:读/写选择端H/LE:使能信号图 2-3 所示:LCD1LM016LDDVEcbvSRE WOD 1D2D3D4D 5D 6D 7D123456789(j) 1234图 2-34、运算模块单片机掌握MCS-51 单片机是在一块芯片中集成了 CPU、RAM、ROM、定时器/计数器和多功能 I/O 等一台计算机所需要的根本功能部件。假设按 功能划分,它由如下功能部件组成,即微处理器CPU、数据存储器RAM、程序存储器ROM/EPROM 、并行 I/O 口、串行口、定时器/计数器、中断系统及特别功能存放器SFRAT89C51 如图 2-4 所示19U 1XTAL118XTAL29RSTP0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6P0.7/AD7P2.0/A8 P2.1/A9293031PSENALE EAP2.2/A10 P2.3/A11P2.4/A12 P2.5/A13 P2.6/A14P2.7/A150123456712345678P1.0 P1.1 P1.2 P1.3 P1.4 P1.5P1.6 P1.7P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1P3.4/T0 P3.5/T1P3.6/WR P3.7/RD393837363534333221222324252627281011121314151617AT89C51图 2- 4四、软件设计及系统流程图运算程序流程图:1、初始化程序模块void write_com(uchar com) /写指令函数 e=0;rs=O; rw=0;P0=com; delayms(l); e=1;delayms(1);e=0;/com 指令付给 PO 口void write_data(uchar num) / 写数据函数 e=0;rs=1;rw=0; P0=num; delayms(l); e=1;delayms(1); e=0;void in t0初始化/功能设置命令: 8 位,行 DDRAM 的地址 显示开及光标设置/增量方式不移位delayms(15); write_com(0x38); write_com(0x0c); write_com(0x06);write_com(0x80);2、键盘扫描程序模块void keysca nf/设置访问地址uchar temp; P 仁 Oxfe; temp=P1;temp=temp&Oxff;while(temp!=Oxfe)delayms(5); temp=P1; temp=temp&Oxff; while(temp!=0xfe)temp=P1; switch(temp)case 0xee:num=7;flag=1;break; case 0xde:num=8;flag=1;break; case 0xbe:num=9;flag=1;break;case 0x7e:num=12;duvisi on=1;break;default :num=O;break;while(temp!=Oxfe)temp=P1; temp=temp&Oxff;P1=0xfd;temp=P1; temp=temp&Oxff; while(temp!=0xfd)delayms(5);temp=P1; temp=temp&Oxff; while(temp!=0xfd)temp=P1; switch(temp)case 0xed: num=4;flag=1;break; case 0xdd: num=5;flag=1;break;case 0xbd: num=6;flag=1;break; case 0x7d: num=11;mul=1;break;default :num=O;break;while(temp!=0xfd)temp=P1; temp=temp&Oxff;P1=0xfb;temp=P1; temp=temp&Oxff; while(temp!=0xfb)delayms(5); temp=P1;temp=temp&Oxf; while(temp!=Oxfb)temp=P1; switch(temp)case 0xeb:num=1;flag=1;break; case 0xdb:num=2;flag=1;break;case 0xbb:num=3;flag=1;break; case 0x7b:num=10; minu s=1;break; default :num=0;break; while(temp!=0xfb)temp=P1; temp=temp&0xff;P1=0xf7;temp=P1; temp=temp&0xff; while(temp!=0xf7)delayms(5); temp=P1; temp=temp&0xf; while(temp!=0xf7) temp=P1; switch(temp)case 0xe7:power=1;break; case 0xd7:num=0;flag=1;break; case 0xb7:equal_flag=1;break;case 0x77:num=13;plus=1;break; default :num=0;break;/复位;/等于;while(temp!=0xf7) temp=P1; temp=temp&0xff;3、显示程序模块void display(uchar num)uchar workdata; if(flag=1)/处理显示标志位键值信息显示flag=0;write_data(tab1 nu m); switch(co unt)case 0: value+=tab2 nu m;break;case 1: value=(value*10)+tab2 nu m);break; case 2: value=(value*10)+tab2 nu m);break; case 3: value=(value*10)+tab2 nu m);break; default: value=0;break;coun t+; if(co un t>=4) coun t=0;if(plus=1)处理加法运算write_com(0x01); write_data(”+”); write_com(0x80); plus=0;coun t=0; sum+=value; value=0; work_ num=1;if(mi nus=1)/处理减法运算write_com(0x01); write_data(”-”); write_com(0x80); minu s=0;coun t=0;sum+=value;work_ num=2;if(mul=1)处理乘法运算write_com(0x01); write_data(”*”); write_com(0x80);mul=0; coun t=0;sum+=value; value=0; work_ num=3;if(duvisio n=1)/处理除法运算write_com(0x01); write_data(”/”); write_com(0x80);duvisi on=0; coun t=0; sum+=value; value=0; work_ num=4;if(equal_flag=1)/ 求出运算结果equal_flag=0; workdata=1; switch(work_ num)case 1:work_ num=O;sum+=value;value=O;break; case 2:work_ num=O;sum-=value;value=O;break;case 3:work_ num=O;sum*=value;value=O;break;case 4:work_ num=O;sum/=value;value=O;break; default:;break; if(workdata=1)/ 显示处理workdata=0; write_com(0x01); write_com(0x80); if(sum<0)write_data(”_”); sum=abs(sum);if(sum<10) &&( sum>=0)write_data(tab1sum);else if(sum<100)&&( sum>=10)write_data(tab1sum/10); write_data(tab1sum%10);else if(sum<1000)&&(sum>=100)write_data(tab1sum/100); write_data(tab1sum%100/10); write_data(tab1sum%100%10);else if(sum<10000)&&(sum>=1000)elsewrite_data(tab1sum/1000); write_data(tab1sum%1000/100); write_data(tab1sum%1000%100/10); write_data(tab1sum%1000%100%10);write_data(”E”);五、调试过程及方法1、初始化:将程序添加到 keil-v4 中,建立之后无错误,产生 HEX 文 件, 将该文件导入到 Proteus 中,与电路图相符后运行,在 LCD 上产生 初始化结果,也就是第一步程序的运行结果,如图2-5 所示:LCD1LM016L00SVERWE D D D DD D D D12 34 5 67 8 9 1图 2-5113 42、进展符号运算:在第一步根底上,在键盘上输入数字和符号键+、 、*、宁,在 LCD 上显示结果。3、系统清零:在进展完第一步之后,如要在进展符号运算,则要清 零,在键盘上按下 ON/C 之后,系统清零。4、错误信息显示:当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在 LCD 上显示 E;当除数为 0 时,计算器会在 LCD 上显示E,如图 2-6 所示:LCD1LM016LES1 VE RW E DDDDDDDD 4 2 347&|9 £12 3 4图 2-6六、课程设计心得体会课程设计是培育我们综合运用所学学问,觉察、提出、分析和解决实际问题,熬炼实践力量的重要环节,是对我们实际工作力量的具 体训练和考察过程。随着科学技术进展的日日异,单片机已经成为 当今计算机应用中空前活泼的领域,在生活中可以说得是无处不在。因此作为计算机专业的学生来说把握单片机的开发技术是格外重要 的。我们的题目是基于单片机设计简易计算器, 对于我们这些实践中 的手来说,这是一次考验。这次课程设计我们学到很多很多的东西, 学会了怎么在遇到问题时去解决问题。不仅稳固了以前所学过的知 识,而且学到了很多在书本上所没有学到过的学问,把握了一种系统 的争论方法,可以进展一些简洁的编程。通过这次课程设计使我懂得 了理论与实际相结合是很重要的, 只有理论学问是远远不够的,只有 把所学的理论学问与实践相结合起来,从而提高自己的实际动手力量 和独立思考的能力。同时在设计的过程中觉察了自己的缺乏之处,对以前所学过的学问理解得不够深刻,把握得不够结实。这次课程设计通过我们小组的努力最终顺当完成了,在设计中 遇到了很多问题,最终在指导教师的辛勤指导下,最终迎刃而解,在 此我们表示感谢!七、参考文献1 例说 51 单片机C 语言版 张义和、王敏男等 人民 邮电出版社2 单片机原理与接口技术第 3 版李朝青编著 北京航空 航天大学出版社附录 程序清单1、/*函数声明 *#in clude<reg51.h> #in clude<math.h>#defi ne uchar un sig ned char #defi ne uint un sig ned int ucharcodetab1=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x2b,0x2d,0x2a,0x2f,0x2d,0xd0;/通过液晶字符手册查找得来uchar code tab2=0,1,2,3,4,5,6,7,8,9;uchar num; uchar flag; uchar count; int value;int sum;推断按键的值推断按键的标志位 /推断按键位数标志位/求和,uchar plus,minus,mul,duvision,equal_flag; uchar work_ num;uchar power;sbit rs=P2A 0; sbit rw=P2Al; sbit e=P2A2;/力口,减,乘,除 ,等标志位void delayms( uint cou nt)/ 延时子程序uint i,j;for(i=0;i<co un t;i+) for(j=0;j<120;j+);* LCDvoid write_com(uchar com) e=0;rs=0;rw=0; P0=com; delayms(1); e=1;delayms(1); e=0;初始化 *void write_data(uchar num) e=0; rs=1;rw=0; PO=num; delayms(l);e=1;delayms(1); e=0;void in t0delayms(15); write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x80);/*键盘扫描程序;以确定按键位置*/void keysca nfuchar temp; P 仁 Oxfe; temp=P1;temp=temp&Oxff; while(temp!=Oxfe)delayms(5); temp=P1; temp=temp&Oxff; while(temp!=0xfe)temp=P1; switch(temp)case 0xee:num=7;flag=1;break; case 0xde:num=8;flag=1;break; case 0xbe:num=9;flag=1;break;case 0x7e:num=12;duvisi on=1;break; default :num=O;break;while(temp!=0xfe)temp=P1; temp=temp&Oxff;P1=0xfd;temp=P1; temp=temp&Oxff; while(temp!=Oxfd)delayms(5);temp=P1; temp=temp&Oxff; while(temp!=0xfd)temp=P1; switch(temp)case 0xed: num=4;flag=1;break; case 0xdd: num=5;flag=1;break;case 0xbd: num=6;flag=1;break; case 0x7d: num=11;mul=1;break; default :num=O;break;while(temp!=0xfd)temp=P1; temp=temp&Oxff;P1=0xfb;temp=P1; temp=temp&Oxff; while(temp!=0xfb)delayms(5);temp=P1; temp=temp&Oxff; while(temp!=0xfb)temp=P1; switch(temp) case Oxeb:num=1;flag=1;break; case 0xdb:num=2;flag=1;break; case 0xbb:num=3;flag=1;break; case 0x7b:num=10; minus=1;break; default :num=0;break;while(temp!=0xfb)temp=P1; temp=temp&0xff;P1=0xf7;temp=P1; temp=temp&0xff; while(temp!=0xf7)delayms(5); temp=P1; temp=temp&0xff; while(temp!=0xf7)temp=P1; switch(temp)case 0xe7:power=1;break; case 0xd7:num=0;flag=1;break;/复位;case 0xb7:equal_flag=1;break;/等于; case 0x77:num=13;plus=1;break; default :num=0;break;while(temp!=0xf7) temp=P1; temp=temp&0xff;/* void display(uchar num)显示立部分*uchar workdata;/处理显示标志位if(flag=1)键值信息显示flag=0;write_data(tab1 nu m); switch(co unt)case 0: value+=tab2 nu m;break;case 1: value=(value*10)+tab2 nu m);break; case 2: value=(value*10)+tab2 nu m);break; case 3: value=(value*10)+tab2 nu m);break; default: value=0;break;coun t+; if(co un t>=4) coun t=0;if(plus=1)处理加法运算write_com(0x01); write_data(”+”); write_com(0x80); plus=0;coun t=0; sum+=value; value=0; work_ num=1;if(mi nus=1)/处理减法运算write_com(0x01); write_data(”-”); write_com(0x80); minu s=0;coun t=0; sum+=value; value=0; work_ num=2;if(mul=1)处理乘法运算write_com(0x01); write_data(”*”); write_com(0x80); mul=0;coun t=0; sum+=value; value=0; work_ num=3;if(duvisio n=1)/处理除法运算write_com(0x01); write_data(”/”); write_com(0x80);duvisi on=0; coun t=0; sum+=value; value=0; work_ num=4;if(equal_flag=1)/ 求出运算结果equal_flag=0; workdata=1; switch(work_ num)case 1:work_ num=O;sum+=value;value=O;break; case 2:work_ num=O;sum-=value;value=O;break; case 3:work_ num=O;sum*=value;value=O;break; case 4:work_ num=O;sum/=value;value=O;break; default:;break; if(workdata=1)/ 显示处理workdata=0; write_com(0x01); write_com(0x80); if(sum<0)write_data(”-”); sum=abs(sum);if(sum<10) &&( sum>=0)write_data(tab1sum);else if(sum<100)&&( sum>=10)write_data(tab1sum/10); write_data(tab1sum%10);else if(sum<1000)&&(sum>=100)write_data(tab1sum/100); write_data(tab1sum%100/10); write_data(tab1sum%100%10);else if(sum<10000)&&(sum>=1000)write_data(tab1sum/1000); write_data(tab1sum%1000/100); write_data(tab1sum%1000%100/10); write_data(tab1sum%1000%100%10); elsewrite_data(”E”);/* mai n in t0; while(1)主函数*keysca nf; display (nu m); if(power=1) power=0;write_com(0x01); sum=0;value=0;

    注意事项

    本文(单片机原理及接口技术报告.docx)为本站会员(1513****116)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开