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

上传人:1513****116 文档编号:96668784 上传时间:2024-02-25 格式:DOCX 页数:26 大小:1.01MB
返回 下载 相关 举报
单片机原理及接口技术报告.docx_第1页
第1页 / 共26页
单片机原理及接口技术报告.docx_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《单片机原理及接口技术报告.docx》由会员分享,可在线阅读,更多相关《单片机原理及接口技术报告.docx(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、单片机原理及接口技术课程设计报告课题名称课题 23 :简洁计算机的 设计 学院自动掌握与工程学院名目一、设计的目的、任务3二、设计步骤及方案.5三、硬件电路设计6四、软件设计及系统流程图91 初始化程序模块112、键盘扫描程序模块123、显示程序模块.15五、调试过程及方法17六、课程设计心得体会.18七、参考文献.19附录20一、设计的目的、任务1、 课程设计的目的单片机课程设计作为独立的教学环节,是自动化及相关专业 集中实践性环节系列之一,是学习完单片机原理及其运用 课程后。并在进展相关课程设计根底上进展的一次综合练习。单片机课程设计过程中,学生通过查阅资料、接口设计、程 序设计、安装调试

2、等环节,完成一个基于 MCS-51 系列单片机, 涉及多种资源应用,并具有综合功能的小应用系列设计。使学 生不但能够将课堂上学到的理论学问与实际应用结合起来,而 且能够对电子电路,电子元器件等方面的学问进一步加深生疏, 同时在软件编程,调试,相关仪器设备和相关软件的使用技能 得到较全面的熬炼和提高。使学生增进对单片机的感兴生疏, 加深对单片机理论方面的理解,加深单片机的内部功能模块的 应用,如定时器/计时器、中断、片内外存储器、I/O 接口、串 行接口等。使学生了解和把握单片机应用系统的软硬件设计过 程、方法及实现,强化单片机应用电路的设计与分析力量。提 高学生在单片机应用方面的实践技能和科学

3、作风;培育学生综 合运用理论学问解决问题的力量。2、基于 AT89C51 单片机简易计算器的设计【摘 要】单片机的消灭是计算机制造技术高速进展的产物,它是嵌入式掌握系统的核心,如今,它已广泛的应用到我们生活的 各个领域,电子、科技、通信、汽车、工业等。本设计是基于51系列单片机来进展的数字计算器系统设计,可以完成计算器的键 盘输入,进展加、减、乘、除六位数范围内的根本四则运算,并在 LCD 上显示相应的结果。设计电路承受 AT89C51 单片机为主要掌握电路,利用 MM74C922 乍为计算器 4*4 键盘的扫描 IC 读取键盘 上的输入。显示承受字符 LCD 静态显示。软件方面使用 C 语言

4、编 程,并用PROTUES 仿真。3. 设计任务及要求1) 、基于 MCS-51 系列单片机 AT89C51,设计一个简洁的计算器。2) 通过 4*4 的矩阵键盘输入数字及运算符;3) 、可以进展 4 为十进制数以内的加法运算,假设计算结果超过 4 位十进制数,则屏幕显示 E。4) 、可以进展加法以外的计算乘、除、减。5) 、其他功能。二、设计步骤及方案 1、总体设计及方案依据功能和指标要求,本系统选用 MCS-5 係列单片机为主控 机。通过扩展必要的外围接口电路,实现对计算器的设计。具 体设计如下:(1) 由于要设计的是简洁的计算器,可以进展四则运算,为了 得到较好的显示效果,承受 LCD

5、显示数据和结果。(2) 另外键盘包括数字键0 9、符号键+、-、X、+、 去除键和等号键,故只需要 16 个按键即可,设计中承受集成的 计算键盘。(3) 执行过程:开机显示零,等待键入数值,当键入数字,通 过 LCD显示出来,当键入+、-、*、/运算符,计算器在内部执 行数值转换和存储,并等待再次键入数值,当再键入数值后将 显示键入的数值,按等号就会在 LCD 上输出运算结果。(4) 错误提示:当计算器执行过程中有错误时,会在 LCD 上显 示相应的提示,如:当输入的数值或计算得到的结果大于计算器 的表示范围时,计算器会在 LCD 上显示 E;当除数为 0 时,计算 器会在 LCD 上显示E。

6、系统方案图: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 ALEE

7、AP2.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/

8、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 液晶显示器来显示输

9、出数据。通过 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/

10、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/IN

11、T0 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

12、); 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!=0x

13、fe)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; whil

14、e(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&Ox

15、f; 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; te

16、mp=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)/处理显示

17、标志位键值信息显示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);

18、 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; wo

19、rk_ 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

20、: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(sum0)write_data(”_”); sum=abs(sum);if(sum=0)write_data(tab1sum);else if(sum=10)write_data(tab1sum/10); write_data(tab1sum%10);else i

21、f(sum=100)write_data(tab1sum/100); write_data(tab1sum%100/10); write_data(tab1sum%100%10);else if(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 文 件,

22、将该文件导入到 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 上显

23、示E,如图 2-6 所示:LCD1LM016LES1 VE RW E DDDDDDDD 4 2 347&|9 12 3 4图 2-6六、课程设计心得体会课程设计是培育我们综合运用所学学问,觉察、提出、分析和解决实际问题,熬炼实践力量的重要环节,是对我们实际工作力量的具 体训练和考察过程。随着科学技术进展的日日异,单片机已经成为 当今计算机应用中空前活泼的领域,在生活中可以说得是无处不在。因此作为计算机专业的学生来说把握单片机的开发技术是格外重要 的。我们的题目是基于单片机设计简易计算器, 对于我们这些实践中 的手来说,这是一次考验。这次课程设计我们学到很多很多的东西, 学会了怎么在遇到问题时去

24、解决问题。不仅稳固了以前所学过的知 识,而且学到了很多在书本上所没有学到过的学问,把握了一种系统 的争论方法,可以进展一些简洁的编程。通过这次课程设计使我懂得 了理论与实际相结合是很重要的, 只有理论学问是远远不够的,只有 把所学的理论学问与实践相结合起来,从而提高自己的实际动手力量 和独立思考的能力。同时在设计的过程中觉察了自己的缺乏之处,对以前所学过的学问理解得不够深刻,把握得不够结实。这次课程设计通过我们小组的努力最终顺当完成了,在设计中 遇到了很多问题,最终在指导教师的辛勤指导下,最终迎刃而解,在 此我们表示感谢!七、参考文献1 例说 51 单片机C 语言版 张义和、王敏男等 人民 邮

25、电出版社2 单片机原理与接口技术第 3 版李朝青编著 北京航空 航天大学出版社附录 程序清单1、/*函数声明 *#in clude #in clude#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;

26、 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;ico un t;i+) for(j=0;j=4) coun t=0;if(plus=1)处理加法运算write_com(0x

27、01); 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+=va

28、lue; 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;valu

29、e=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(sum0)write_data(”-”); sum=abs(sum);if(sum=0)write_data(tab1sum);else if(sum=10)write_data(tab1sum/10); write_data(

30、tab1sum%10);else if(sum=100)write_data(tab1sum/100); write_data(tab1sum%100/10); write_data(tab1sum%100%10);else if(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;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

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

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