单片机44键盘计算器课程设计资料.docx

上传人:1564****418 文档编号:96667810 上传时间:2024-02-25 格式:DOCX 页数:24 大小:1.82MB
返回 下载 相关 举报
单片机44键盘计算器课程设计资料.docx_第1页
第1页 / 共24页
单片机44键盘计算器课程设计资料.docx_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《单片机44键盘计算器课程设计资料.docx》由会员分享,可在线阅读,更多相关《单片机44键盘计算器课程设计资料.docx(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、单片机课程设计报告教学院: 专业班级: 学 号: 学生姓名: 指导教师: 时 间: 地 点: 单片机课程设计任务书一、课题名称单片机课程设计二、设计目的为了进一步稳固学习的理论学问,增加学生对所学学问的实际应用力量和运用所学的学问 解决实际问题的力量,开头为期两周的单片机课程设计。通过实训使学生在稳固所学学问的基 础之上具有初步的单片机系统设计与应用力量。三、设计内容设计基于 51 单片机的简易计算器系统电路,并以该电路为根底进展编程,要求能够实 现 0 99 之间的数进展加、减、乘、除运算的功能。四、设计要求1、 设计简易计算器,要求能对2、用 4X 4 的键盘作为输入设备。3、用LED 或

2、LCD 进展显示。0 99 之间的数进展加、减、乘、除运算。4、编写无符号数加、减、乘、除运算、输入和显示的程序。5、 对系统的进展综合和调试,使其具有对0 99 之间的数进展加、减、乘、除运算的 功能。6、编写课程设计的总结序号设计内容所用时间1布置任务,学习简易计算器的工作原理以及硬 件电路设计3 天234元成键盘、显示和计算功能的程序设计制作电路板辩论、撰写设计报告书合计3 天1 天3 天10 天五、设计进度表六、设计报告课程设计报告的根本内容至少包括封面、正文、附录三局部。课程设计报告要求统一格 式,字体工整规范。1、封面封面包括“单片机课程设计课程设计报告”、班级、姓名、学号以及完成

3、日期等。2、正文正文是实践设计报告的主体,具体由以下几局部组成:(1) 课程设计题目;(2) 课程设计任务与要求;(3) 设计过程包括设计方案、设计原理、创点以及承受的技术等;(4) 方案的比较与论证;(5) 硬件电路设计,各个模块的设计与器件的选择;(6) 软件程序的设计与调试;(7) 课程设计总结包括自己的收获与体会;遇到的问题和解决的方法;技术实现3 附录技巧和创点;作品存在的问题和改进设想等;附录 1:系统设计原理图附录 2:系统硬件元器件清单附录 3:系统的程序七、考核方式与成绩评定方法评定工程评分成绩1.设计的实物功能齐全,制作美观50 分2.态度认真、学习刻苦、遵守纪律15 分3

4、.设计报告的规氾化、参考文献充分不少于5 篇20 分4.辩论15 分总分100 分备注:成绩等级:优90 分100 分、良80 分89 分、中70 分79 分、及格60 分69 分、60 分以下为不及格。八、参考书目1234李朝青单片机原理及接口技术简明杭州:北京航空航天大学出版社, 李广弟.单片机根底M.北京:北京航空航天大学出版社,1994阎石.数字电子技术根底第三版.北京:高等教育出版社,1989廖常初.现场总线概述J.电工技术,1999.1998 徐仁贵等编著单片微型计算机应用技术北京:机械工业出版社.2023 年 2 月第 1 版 张毅刚等编著.单片机原理及应用北京:高等教育出版社.

5、2023 年 1 月第 1 版一、课程设计任务与要求设计基于 51 单片机的简易计算器系统电路,并以该电路为根底进展编程,要求能够实现 0-99 之间的数进展加、减、乘、除运算的功能,并要求如下:1 、设计简易计算器,要求能对 0-99 之间的数进展加、减、乘、除运算;2 、用 4 X 4 的键盘作为输入设备;3 、用LED 或LCD 进展显示;4 、使用C 语言编写无符号数加、减、乘、除运算、输入和显示的程序;5 、对系统的进展综合和调试,使其具有对0- 99 之间的数进展加、减、乘、除运算的功能,还具有清零功能等;6 、编写课程设计的总结。二、设计方案与选择方案1、芯片1.1 、方案构思本

6、设计中的芯片可以承受两种方案,一种是以 另一种是以STC89C52 处理器,配备相应的外设。(1) 方案一:承受 FPGA 空制FPGA 是一种高密度的可编程规律器件,自从FPGA 为核心处理芯片,配备相应的外设;Xilinx 公司 1985 年推出第一片 FPGA 以来,FPGA 勺集成密度和性能提高很快,其集成密度最高达 200MHz 500 万门/片以上,系统性能可达由于FPGA 器件集成密度高,便利易用,开发和上市周期短,在数字设计和电子生产 中得到快速普及和应用,并一度在高密度的可编程规律器件领域中独占鳌头。但是基于SRAM 编程的FPGA 其编程信息需存放在外部存储器上,需外部存储

7、器芯片,且 使用方法简单,保密性差,而其对于一个简洁的计算器而言,使用FPGA 有点大材小用,本钱太高。(2) 方案二:承受 AT89C51单片机是单片微型机的简称,故又称为微掌握器MCU( Micro Control Unit )。通常由单块集成电路芯片组成,内部包含有计算机的根本功能部件:中心处理器CPU 存储器和I/O 接口电路等。因此,单片机只要和适当的软件及外部设备相结合,便可成为一个单片机掌握系 统。单片机广泛应用于智能产品,智能仪表,测控技术,智能接口等,具有操作简洁、有用方 便、价格廉价等优点。AT89C51 是一种带 4K 字节 FLASH 存储器(FPERO Flash P

8、rogrammable and Erasable ReadOnly Memory)的低电压、高性能CMOS 8 位微处理器,俗称单片机。AT89C2051 是一种带 2K 字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000 次。该器件承受 ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51 指令集和输出管脚相兼容。由于将多功能8 位CPU 和闪耀存储器组合在单个芯片中,ATMEL 的AT89C51 是一种高效微掌握器。1.2 、方案比较与选择通过以上两种方案的论证和比较,从设计的有用性、便利性和本钱等诸多方面考虑,最终 选择了以AT89C51

9、 单片机作为中心处理单元进展计算器的设计,这样设计能够实现对六位整 数、两位小数的加、减、乘、除的四则运算。2、输入模块2.1 、方案构思(1) 方案一:承受独立式按键作为输入模块独立式按键输入模块,其特点是:直接用TSTMTT5 TS-1_111-n“jl | 1亠独立的功能按键图 2 矩阵键盘输入按键识别和软件构造简洁;但是当键数较多时,占用 图 1 所示。(2) 方案二:承受矩阵式键盘作为输入模块I/O 口构成单个按键电路,接口电路配置敏捷、I/O 口较多,比较铺张资源。其原理图女口矩阵式按键输入模块,其特点是:电路和软件稍简单,但相比之下,当键数越多时,越节 约I/O 口,比较节约资源

10、。其原理图如图2.2 、方案比较与选择2 所示。本设计中的输入模块使用的是矩阵键盘输入。键盘输入预置用于计算,按键较多。假设是承受独立按键,需频繁按键,为软件设计增加负 担,且操作界面不友好;假设是承受矩阵式按键,可以便利地输入一个数值,使操作界面更具有 人性化,且节约了贵重的 I/O 口资源。通过比照,故承受方案二作为系统输入模块。3 、显示模块3.1 、方案构思(1) 方案一:承受 LED 数码管静态显示承受LED 数码管的静态显示,其特点是:其亮度较高;这种显示方式接口,编程简洁且管理简洁;缺乏的是,占用的 I/O 的线资源较多。假设承受单片机或必存在铺张I/O 口资源的问题。如图 3

11、所示。CPLD/FPGA 来掌握的话,势H4.1 1 J?1口 U*1 bH Sp* b. 卜0riln小1prT/ 1 I/O CZ UO (3 I/O C4 (2) 方案二:承受 LED 数码管动态显示图 3 4 位数码管静态显示承受LED 数码管的动态显示,其特点是:其亮度比静态显示的亮度要差一些;但其电路比 较简洁,适合于显示位数较多的状况。如图4 所示。-4 u1 i4-Y1*il/f)T- T T1- 丨I - 4-!1q 十卜il 斷* llji hQif p4 hl. dp卜p tljvr1“4 亠Elr卜b 4 亠卜叩IlxDlIrIJC2图 4 4 位数码管的动态显示(3)

12、 方案三:承受 LCD1602 液晶显示承受LCD1602 液晶显示,其特点是:可以调整其背光亮度,这种显示方式接口,编程虽然 有些麻烦,但治理较便利,占用的 I/O 口资源线也不多。3.2 、方案比较与选择本设计中的显示模块使用的是LCD1602 液晶显示。在计算器运算中,需显示的数字、符号较多,按很据个方面的特点,而后可以觉察LCD 液晶显示,虽然在价格上确实是稍贵于LED 数码管;但数码管在硬件设计电路中,会因线太多、线路简单而过于繁琐,则舍弃LED 数码管,选择LCD 液晶显示。通过比照,故承受方案三作为系统显示模块。三、整体方案原理框图1.1 硬件与软件系统设计依据系统分析及实现功能

13、,硬件小系统方框图如图1 所示:振荡电路单片机键盘输入复位电路依据系统硬件设计,软件系统主要包括:单片机掌握程序模块:作为系统的主掌握程序模块,用 调工作;KeilC 编程掌握其他程序模块的协键盘程序模块:用来输入用户的功能,使单片机完成相应的掌握功能;液晶显示模块:使用字符型液晶显示器显示用户的选择。1.2单片机模块单片机掌握主程序流程图如下:图 6单片机外围扩展电路程序模块为了节约本钱,本设计中液晶显示模块与单片机之间承受模拟口线的方式掌握,键盘与单 片机之间承受扫描的工作方式。键盘程序流程图扫描方式 键盘程序流程图如下所示:开头键盘消抖扫描键盘得键值存入累加器完毕LCM 程序流程图如下所

14、示:图 8本设计的软件系统分别用伟福E6000 和KeilC 编写及编译。4*4 键盘程序模块用汇编语言和C 语言编写,实现直接从 P2 口扫描得到键盘码,并承受查询方式得到与之对应的码,在LCD 上显示出来。四、单元电路设计1.1键盘输入计算器输入数字和其他功能按键要用到很多按键,假设承受独立按键的方式,在这种情LCD 字型况下,编程会很简洁,但是会占用大量的为此,我们引入了矩阵键盘的应用,承受四条I/O 口资源,因此在很多状况下都不承受这种方式。I/O 线作为行线,四条I/O 线作为列线组成键盘。在行线和列线的每个穿插点上设置一个按键。这样键盘上按键的个数就为4X4 个。这种行列式键盘构造

15、能有效地提高单片机系统中矩阵键盘的工作原理:I/O 口的利用率。计算器的键盘布局如图 5 所示:一般有 16 个键组成,在单片机中正好可以用一个个按键功能,这种形式在单片机系统中也最常用。P 口实现 16图 9 键盘布局图当某一键按下时,键盘扫描程序执行到给该列置低电平0,假设读出各行状态为非全 1,这时的行、列数据组合成键值。键盘键值从左到右、从上到下依次是77,7B, 7D, 7E; B7,BB,BD BE,,E7, EB ED, E 巳这种负规律表示往往不够直观,因而承受行、列线加反向器或 软件求反的方法将键盘改成正规律。这时,键值依次为88, 84 , 82, 81; 48, 44,

16、42,41,,18, 14, 12, 11。不管是正规律还是负规律,这种键值表示方式分散度在且不等距, 用于指令不太便利。对于不是4*4 或 8*4 或 8*8 键盘,使用也不简洁,故在很多场合下,承受依次排列键值的方法。这时的键值与键号相全都。1.2单片机掌握MCS-5 单片机是在一块芯片中集成了CPU RAM ROM 定时器/计数器和多功能I/O 等一台计算机所需要的根本功能部件。假设按功能划分,它由如下功能部件组成,即微处理器CPU、数据存储器RAM、程序存储器ROM/EPROM 并行I/O 口、串行口、定时器/计 数器、中断系统及特别功能存放器SFR。单片机是靠程序运行的,并且可以修改

17、。通过不同的程序实现不同的功能,尤其是特别的 独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高牢靠性!因此我们承受单片机作为计算器的主要功能部件,可以进展很快地实现运算功能。C3 :10 uF -T EXT頁图 11 单片机掌握电路的时钟电路和复位电路LCDT .LM01&LLCD1602 显示图 12 LCD1602 显示1602 点阵字符液晶模块(LCM)引脚及功能1 脚(VDDVSS):电源 5V 10%或接地。2 脚(VSS/ V DE):接地或电源(5 0.5)V。3 脚(VO):反视度调整。使用可变电阻调整,通常接地。4 脚(RS):存放器选择(1 :选择数据

18、存放器;0:选择指令存放器)。5 脚(R/W):读/写选择(1 :读;0 :写)。6 脚(E):使能操作(1 : LCM 可做读写操作;0: LCM 不行做读写操作)。7 脚(DB0):双向数据总线的第 0 位。8 脚(DB1):双向数据总线的第 1 位。9 脚(DB2):双向数据总线的第 2 位。10 脚(DB3):双向数据总线的第 3 位。11 脚(DB4):双向数据总线的第 4 位。12 脚(DB5):双向数据总线的第 5 位。13 脚(DB6):双向数据总线的第 6 位。14 脚(DB7):双向数据总线的第 7 位。15 脚(VDC ):背光显示器电源+5V。16 脚(Vss):背光显

19、示器接地。五、实物效果图图13实物效果图六、 心得体会两周的时间,最终顺当完成了单片机的课程设计。由于自己对单片机编程还不 是很生疏,结果在设计的时候遇到了一系列问题,程序总是调试部处理,不过还好,最终在 同学的帮助下最终把程序调试出来了,虽然程序设计实现的功能与教师 要求的不尽一样, 不过牵强还算可以。从这里我知道了根本学问的重要性。其实进展程序设计的时候主要 是对各功能模块的把握。计算器里面最难的一局部是矩阵键 盘的扫描和编码,那个费了很大力气。另外一点就是硬件焊接调试局部。焊接的时候到时轻松,一个下午就焊接好 了, 然后是调试局部。调试花费的时间还是比较长的。不过有了上个学期数字电路 焊

20、接调试的阅历,这次单片机调试还算是比较顺当。我也是从电路板的正负电源检 测起,一步一步来,最终得到了想要的结果。调试的时候主要遇到了两个问题。一 个是键盘总是没有反响,为了这个自己调试了很久,前前后后把电路板检查了几 次,最终才觉察是键盘本身的问题,和同学们换了个好键盘才行。另一个问题是总 是显示不出来 1、4、7 这三个数字。检测来检测去,觉察来是在测试最小系统时在 一个位选端接了高电平,对位选信号产生了影响。当把那个高电平去掉后,最终得 到了正确的结果。总的来说这次课程设计到达了完成了根本任务,到达了根本要求。通过亲身对 程序设计和电路焊接调试的体会,自己对单片机有了进一步的了解,单片机编

21、程能 力也得到了提高。电路板的焊接与调试,使自己电路调试的方法和思想进一步加强 了。这次单片机课程设计应当说是比较成功的。七、 参考文献1 李朝青单片机原理及接口技术简明杭州:北京航空航天大学出版社,19982 李广弟.单片机根底M.北京:北京航空航天大学出版社,3 阎石.数字电子技术根底第三版 .北京:高等教育出版社,19894 廖常初.现场总线概述J.电工技术,1999.八、附录1. 系统程序#in elude vreg52.h#defi ne uchar un sig ned char#defi ne uint un sig ned int sbit rs=P1A0; sbit rw=P

22、1A1;sbit e=P1A2;void write_dat(uchar dat); void write_com(uchar com); void keysca n;/*功能说明:显示编码,加上 0x30, 分别为”1”,”2”,3,”+”,”4”,”5”,”6”,”-”,等*/1994uchar code table1=1,2,3,0x2b-0x30,4,5,6,0x2d-0x30,7,8,9,0x2a-0x30,0,0x3d-0x30,0x01-0x30,0x2f-0x30 ;uchar k=O,flag=0,nu m,fuhao,i; long a,b,c;void delay( ui

23、nt z)uint x,y; for(x=z;x0;x-)for(y=11O;yO;y-);void keysca nuchar temp;P2=0xfe;temp=P2; temp=temp&0 xfO; while(temp!=OxfO)delay(5); temp=P2; temp=temp&0 xfO;while(temp!=0xf0)temp=P2; switch(temp)case 0xee:num=0; break;case 0xde:num=1; break;case 0xbe:num=2; break;case 0x7e:num=3; break;while(temp!=Ox

24、fO) temp=P2;temp=temp&0 xf0;/*当按下 1,2,3,松手后执行下面这段语句*/ if(num=0| num=1| num=2)if(flag=0)a=a*10+table1 nu m;else if(flag=1)b=b*10+table1 nu m; /假设没有按符号键,符号前的数值为 a假设按了符号键,符号后的数值为 bif(k=1)/k=0;write_com(0x01);else if(num=3) / flag=1; fuhao=1;i=table1 nu m; / write_dat(0x30+i);P2=0xfd; temp=P2; temp=temp

25、&0 xf0;while(temp!=OxfO)假设之前按了推断按下”+”显示按下的键”=”号,再按键时清屏,进展下一次计算delay(5); temp=P2; temp=temp&0 xf0; while(temp!=OxfO)temp=P2; switch(temp)case 0xed:num=4; break; case 0xdd:num=5; break;case Oxbd:num=6; break;case 0x7d:num=7; break;while(temp!=OxfO) temp=P2; temp=temp&0 xf0;if(num=4|num=5|num=6) /if(k=

26、1)推断是否按下4”,”5”,”6”k=0;write_com(0x01); _ if(flag=0)a=a*1O+table1 nu m; else if(flag=1)b=b*10+table1 nu m;else if(num=7)flag=1; fuhao=2;i=table1 nu m; / write_dat(0x30+i);显示按下的键P2=0xfb; temp=P2; temp=temp&0 xf0;while(temp!=OxfO)delay(5); temp=P2; temp=temp&0 xf0; while(temp!=OxfO)temp=P2; switch(temp

27、) /case 0xeb:num=8; break;case Oxdb:num=9; break;case 0xbb:num=10; break;case 0x7 b:num=11; break;while(temp!=0xf0) temp=P2; temp=temp&0 xf0;if(num=8|num=9|num=10) /推断是否按下7”,8,9if(k=1)k=0;write_com(0x01);if(flag=0) a=a*10+table1 nu m;else if(flag=1) b=b*10+table1 nu m;else if(num=11)/推断是否按下”*”flag=1

28、; fuhao=3;i=table1 nu m; write_dat(0x30+i); P2=0xf7;temp=P2; temp=temp&0 xf0; while(temp!=0xf0)delay(5); temp=P2; temp=temp&0 xf0; while(temp!=0xf0)temp=P2; switch(temp)case 0xe7:n um=12;/ 0 break;case 0xd7: nu m=13; break;case 0xb7:num=14; / break;/ ”=”清零键case 0x77: nu m=15; /”/” break;while(temp!=

29、OxfO) temp=P2; temp=temp&0 xf0;switch( num)case 12:if(k=1)k=0;write_com(0x01);if(flag=0) a=a*10;else if(flag=1)b=b*10; write_dat(0x30);break;case 13:/k=1;if(fuhao=1) /按=键假设符号键是+,执行+运算write_com(0x80+0x4f); write_com(0x04);c=a+b;while(c!=0)c=c/10; write_dat(0x3d); fuhao=0;a=O;b=O;flag=O;if(fuhao=2)wri

30、te_com(0x80+0x4f); write_com(0x04); if(a=b)c=a-b; while(c!=0)write_dat(0x30+c%10); c=c/10;/假设符号键是-,执行-运算else if(ab)c=b-a;while(c!=0)write_dat(0x30+c%10); c=c/10;write_dat(0x2d);write_dat(0x3d); a=O;b=O;flag=O;fuhao=O;if(fuhao=3) /write_com(0x80+0x4f); write_com(0x04); c=a*b;while(c!=0) c=c/10;write_

31、dat(0x3d);假设符号键是*a=0;b=0;flag=0;fuhao=0;if(fuhao=4) /i=0;write_com(0x80+0x4f); write_com(0x04);c=(long)(float)a/b)*1000000); / while(c!=0)write_dat(0x30+c%10); c=c/10;i+;假设符号键是/结果保存 6 位小数if(i=6)/ write_dat(0x2e); _if(a/b._4_阳 J.ir下W工 T“冉到睛:EFJ.4HUHW,HJWI1PSJJRTF 皿柚甲喩严曲尊側.旧3. 原器件清单序号1名称单片机型号8051数量1备注

32、23456789电阻电阻电容按键开关按钮 石英晶振电容 液晶屏4x4 键盘AT89C51200 Q1k Q22uF12MHz30pF16011111121用 16 个按钮实 现复位电路复位电路复位电路复位电路晶振电路晶振电路显示电路10111213单片机插座电源插座电路基板电源DC5V1111可合买或利用电子技 术课程 设计中 制作的电源14焊锡、导线假设干15滑动变阻器10KQ1液晶比照度调整课程设计成绩评定表学号用序H f)皿aaLLuScThS哝THwsgtr断行编=哪列显数h ssh我盗时是訥是放位课程设计辩论记录; 程写讦Uxff5$释x har詩u一2Usho,卫刮|半晌Kcc初慚则一陆y ?zzu 示rrr济数?勤考辩报告最终评定成绩日:月希年指

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

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

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

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