单片机X键盘计算器课程方案设计

上传人:2127513****773577... 文档编号:211844648 上传时间:2023-05-21 格式:DOCX 页数:23 大小:342.18KB
收藏 版权申诉 举报 下载
单片机X键盘计算器课程方案设计_第1页
第1页 / 共23页
单片机X键盘计算器课程方案设计_第2页
第2页 / 共23页
单片机X键盘计算器课程方案设计_第3页
第3页 / 共23页
资源描述:

《单片机X键盘计算器课程方案设计》由会员分享,可在线阅读,更多相关《单片机X键盘计算器课程方案设计(23页珍藏版)》请在装配图网上搜索。

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

2、入设备。3、用 LED 或 LCD 进行显示。4、编写无符号数加、减、乘、除运算、输入和显示的程序。功能。6、编写课程设计的总结五、设计进度表序号设计内容所用时间1布置任务,学习简易计算器的工作原理以及硬 件电路设计3天2元成键盘、显示和计算功能的程序设计3天3制作电路板1天4答辩、撰写设计报告书3天合计10天六、设计报告课程设计报告的基本内容至少包括封面、正文、附录三部分。课程设计报告要求统一格式,字体工整规范。1、封面封面包括“单片机课程设计课程设计报告”、班级、姓名、学号以及完成日期等。2、正文正文是实践设计报告的主体,具体由以下几部分组成:1 )课程设计题目;2 )课程设计任务与要求;

3、3 )设计过程 包括设计方案、设计原理、创新点以及采用的新技术等);4)方案的比较与论证;5)硬件电路设计,各个模块的设计与器件的选择;6)软件程序的设计与调试;7)课程设计总结 包括自己的收获与体会;遇到的问题和解决的方法;技术实现 技巧和创新点;作品存在的问题和改进设想等);3 附录附录1:系统设计原理图附录2:系统硬件元器件清单附录3:系统的程序七、考核方式与成绩评定办法评定项目评分成绩1.设计的实物功能齐全,制作美观50分)2.态度认真、学习刻苦、遵守纪律15分)3.设计报告的规氾化、参考文献充分不少于5篇)20分)4.答辩15分)总分(100分备注:成绩等级:优 90分100分)、良

4、80分89分)、中70分79分)、及格60分69分)、60分以下为不及格。八、参考书目1 李朝青单片机原理及接口技术 简明修订版)杭州:北京航空航天大学出版社,19982 李广弟.单片机基础M.北京:北京航空航天大学出版社,19943 阎石.数字电子技术基础 第三版).北京:高等教育出版社,19894 廖常初.现场总线概述J.电工技术,1999.徐仁贵等编著单片微型计算机应用技术北京:机械工业出版社.2001年2月第1版张毅刚等编著.单片机原理及应用北京:高等教育出版社.2004年1月第1版一、课程设计任务与要求设计基于51单片机的简易计算器系统电路,并以该电路为基础进行编程,要求能够实现0-

5、99之间的数进行加、减、乘、除运算的功能,并要求如下:1 、设计简易计算器,要求能对0-99之间的数进行加、减、乘、除运算;2 、用4 X 4的键盘作为输入设备;3 、用LED或LCD进行显示;4 、使用C语言编写无符号数加、减、乘、5 、对系统的进行综合和调试,使其具有对 能,还具有清零功能等;6 、编写课程设计的总结。二、设计方案与选择方案1、芯片1.1、方案构思本设计中的芯片可以采用两种方案,一种是以 另一种是以STC89C52处理器,配备相应的外设。除运算、输入和显示的程序;0- 99之间的数进行加、减、乘、除运算的功FPGA为核心处理芯片,配备相应的外设;Xilinx 公司1985年

6、推出第一片 FPGA以来,500万门/片以上,系统性能可达1)方案一:采用FPGA空制FPGA是一种高密度的可编程逻辑器件,自从 FPGA勺集成密度和性能提高很快,其集成密度最高达 200MHz因为FPGA器件集成密度高,方便易用,开发和上市周期短,在数字设计和电子生产中得到迅速普及和应用,并一度在高密度的可编程逻辑器件领域中独占鳌头。但是基于SRAM编程的FPGA其编程信息需存放在外部存储器上,需外部存储器芯片,且 使用方法复杂,保密性差,而其对于一个简单的计算器而言,使用 太高。2)方案二:采用 AT89C51单片机是单片微型机的简称,故又称为微控制器MCUMicro Control Un

7、it块集成电路芯片组成,内部包含有计算机的基本功能部件:中央处理器FPGA有点大材小用,成本)。通常由单I/O接CPU存储器和口电路等。因此,单片机只要和适当的软件及外部设备相结合,便可成为一个单片机控制系I/O I/O VO (3 VO 4、统。单片机广泛应用于智能产品,智能仪表,测控技术,智能接口等,具有操作简单、实用方 便、价格便宜等优点。AT89C51 是一种带 4K 字节 FLASH存储器 FPEROM Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字

8、节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读 存储器可以反复擦除1000次。该器件采用 ATMEL高密度非易失存储器制造技术制造,与工业标准的 MCS-51指令集和输出管脚相兼容。因为将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。1.2、方案比较与选择通过以上两种方案的论证和比较,从设计的实用性、方便性和成本等诸多方面考虑,最终 选择了以AT89C51单片机作为中央处理单元进行计算器的设计,这样设计能够实现对六位整 数、两位小数的加、减、乘、除的四则运算。2、输入模块2.1、方案构思1)方案一:采用独立式按键作为输入模块独立式按键输入

9、模块,其特点是:直接用I/O 口构成单个按键电路,接口电路配置灵活、按键识别和软件结构简单;但是当键数较多时,占用I/O 口较多,比较浪费资源。其原理图如图1所示。1111 图1独立的功能按键*ej|i* In1_S11TJ1 ji*I491=1图2 矩阵键盘输入2)方案二:采用矩阵式键盘作为输入模块矩阵式按键输入模块,其特点是:电路和软件稍复杂,但相比之下,当键数越多时,越节 约I/O 口,比较节省资源。其原理图如图2所示。2.2、方案比较与选择本设计中的输入模块使用的是矩阵键盘输入。键盘输入预置用于计算,按键较多。若是采用独立按键,需频繁按键,为软件设计增加负 担,且操作界面不友好;若是采

10、用矩阵式按键,可以方便地输入一个数值,使操作界面更具有 人性化,且节约了宝贵的 I/O 口资源。通过对比,故采用方案二作为系统输入模块。3、显示模块3.1、方案构思1)方案一:采用LED数码管静态显示采用LED数码管的静态显示,其特点是:其亮度较高;这种显示方式接口,编程容易且管理简单;不足的是,占用的 I/O的线资源较多。如果采用单片机或CPLD/FPGA来控制的话,势必存在浪费I/O 口资源的问题。如图 3所示。图3 4 位数码管静态显示C lilSJ2)方案二:采用LED数码管动态显示采用LED数码管的动态显示,其特点是:其亮度比静态显示的亮度要差一些;但其电路比较简单,适合于显示位数较

11、多的情况。如图4所示。 *r/otsR)1I* hg dpa bg dpd Hg dpt hje dipTl t卜巾亠卜Jp130DImIJ3图4 4 位数码管的动态显示3)方案三:采用LCD1602液晶显示采用LCD1602液晶显示,其特点是:可以调节其背光亮度,这种显示方式接口,编程虽然 有些麻烦,但管理较方便,占用的I/O 口资源线也不多。3.2、方案比较与选择本设计中的显示模块使用的是LCD1602液晶显示。LCD液在计算器运算中,需显示的数字、符号较多,按很据个方面的特点,而后可以发现 晶显示,虽然在价格上的确是稍贵于LED数码管;但数码管在硬件设计电路中,会因线太多、线路复杂而过于

12、繁琐,则舍弃LED数码管,选择LCD液晶显示。通过对比,故采用方案三作为系统显示模块。三、整体方案原理框图1.1硬件与软件系统设计依据系统分析及实现功能,硬件小系统方框图如图1所示:图5依据系统硬件设计,软件系统主要包括:单片机控制程序模块:作为系统的主控制程序模块,用KeilC编程控制其他程序模块的协调工作;键盘程序模块:用来输入用户的功能,使单片机完成相应的控制功能;液晶显示模块:使用字符型液晶显示器显示用户的选择。1.2单片机模块单片机控制主程序流程图如下:1开始图6丿单片机外围扩展电路程序模块为了节约成本,本设计中液晶显示模块与单初始化片机之间采用模拟口线的方式控制,键盘与单片机之间采

13、用扫描的工作方式。扫描键盘得键值键盘程序流程图 扫描方式)键盘程序流程图如下所示:显示定位LCM程序流程图如下所示:二口有键按下?开图8显示.开始7本设计的软件系统分别用伟福1C编写及编译。4*4键盘程序模块用汇编语言和C语言编写,实现直接从 P2 口扫描得到键盘并采用查询方式得到与之对应的N码,在LCD上显示出来。YY单片机向LCD写命令iE6000和一 Lcf有键按下?LCD是否为忙?LCD字 型四、单元电路设计1.1键盘输入计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式。为此

14、,我们引入了矩阵键盘的应用,采用四条 I/O线作为行线,四条I/O线作为列线组成键盘。在行 线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4X4个。这种行列式键盘结构能有效地提高单片机系统中 I/O 口的利用率。矩阵键盘的工作原理:计算器的键盘布局如图 5所示:一般有16个键组成,在单片机中正好可以用一个P 口实现16个按键功能,这种形式在单片机系统中也最常用。CLC0图10矩阵键盘内部电路图键盘上的每一个按键都有一个键值。给键赋值的最直接办法是将行、列线按二进制顺序排列,当某一键按下时,键盘扫描程序执行到给该列置低电平0,若读出各行状态为非全 1,这时的行、列数据组合成键值。键

15、盘键值从左到右、从上到下依次是77,7B, 7D, 7E; B7,BB,BD BE,,E7, EB ED, E巳这种负逻辑表示往往不够直观,因而采用行、列线加反向器或 软件求反的方法将键盘改成正逻辑。这时,键值依次为88, 84 , 82, 81; 48, 44, 42,41,,18, 14, 12, 11。不论是正逻辑还是负逻辑,这种键值表示方式分散度在且不等距, 用于指令不太方便。对于不是4*4或8*4或8*8键盘,使用也不容易,故在许多场合下,采用依次排列键值的方法。这时的键值与键号相一致。1.2单片机控制MCS-5单片机是在一块芯片中集成了 CPU RAM ROM定时器/计数器和多功能

16、I/O等一台 计算机所需要的基本功能部件。如果按功能划分,它由如下功能部件组成,即微处理器CPU、数据存储器RAM、程序存储器ROM/EPROM并行I/O 口、串行口、定时器/计数 器、中断系统及特殊功能寄存器 .T03 :10 uFwTEXTa图11单片机控制电路的时钟电路和复位电路LCD1602 显示1602点阵字符功能1脚10%或接地。2脚源(5 3脚LCDTLM01&L如 a yu乂倉出超墨山呂占営営芝罢图12 LCD1602显示液晶模块(LCM|脚及(Vdd/Vss:电源 5V(V ss/ V D :接地或电0.5V。(VO:反视度调整。使用可变电阻调整,通常接地。4脚(RS:寄存器

17、选择(1 :选择数据寄存器;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脚(Vdd:背光显示器电源+5V。16脚(Vss :背光显示器接地。五、实物效果图图13 实物效果图六、心得体

18、会两周的时间,终于顺利完成了单片机的课程设计。因为自己对单片机编程还不 是很熟悉,结果在设计的时候遇到了一系列问题,程序总是调试部处理,不过还 好,最后在同学的帮助下终于把程序调试出来了,虽然程序设计实现的功能与老师 要求的不尽相同,不过勉强还算可以。从这里我知道了基本知识的重要性。其实进 行程序设计的时候主要是对各功能模块的把握。计算器里面最难的一部分是矩阵键 盘的扫描和编码,那个费了很大力气。另外一点就是硬件焊接调试部分。焊接的时候到时轻松,一个下午就焊接好 了,然后是调试部分。调试花费的时间还是比较长的。不过有了上个学期数字电路 焊接调试的经验,这次单片机调试还算是比较顺利。我也是从电路

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

20、的方法和思想进一步加强 了。这次单片机课程设计应该说是比较成功的。七、参考文献1 李朝青 .单片机原理及接口技术 简明修订版) . 杭州:北京航空航天大学出版社, 19982 李广弟.单片机基础M.北京:北京航空航天大学出版社,19943 阎石.数字电子技术基础 第三版) . 北京:高等教育出版社, 19894 廖常初 . 现场总线概述 J . 电工技术, 1999.八、附录1. 系统程序#include #define uchar unsigned char#define uint unsigned intsbit rs=P1A0。sbit rw=P1Al 。sbit e=P1A2 。voi

21、d write_dat(uchar dat。void write_com(uchar com。void keyscan( 。/*功能说明:显示编码,加上 0x30,分别为 1,2,3,+,4,5,6,-, 等*/uchar 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=0,flag=0,num,fuhao,i 。long a,b,c 。void delay(uint zuint x,y 。for(x=z 。 x0。 x-for(y=110。

22、y0。 y- 。void keyscan(uchar temp 。P2=0xfe 。 temp=P2 。 temp=temp&0xf0 。 while(temp!=0xf0 delay(5 。 temp=P2 。 temp=temp&0xf0 。while(temp!=0xf0temp=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!=0xf0 temp=P2 。temp=temp&0xf0 。/* 当按下

23、1,2,3 ,松手后执行下面这段语句 */ if(num=0|num=1|num=2if(flag=0a=a*10+table1num。 / 如果没有按符号键 , 符号前的数值为 aelse if(flag=1b=b*10+table1num 。 / 如果按了符号键 , 符号后的数值为 b if(k=1 / 如果之前按了 = 号 , 再按键时清屏,进行下一次计算 k=0 。write_com(0x01 。 else if(num=3 / 判断按下 +flag=1 。 fuhao=1 。i=table1num 。 / 显示按下的键 write_dat(0x30+i 。P2=0xfd 。temp=

24、P2 。 temp=temp&0xf0 。while(temp!=0xf0delay(5 。 temp=P2 。 temp=temp&0xf0 。 while(temp!=0xf0 temp=P2 。 switch(temp case 0xed:num=4。break 。case 0xdd:num=5。break。case 0xbd:num=6。break。case 0x7d:num=7。break。 while(temp!=0xf0 temp=P2 。 temp=temp&0xf0 。if(num=4|num=5|num=6 / 判断是否按下 4,5,6 if(k=1k=0 。 write_

25、com(0x01 。 if(flag=0 a=a*10+table1num。else if(flag=1b=b*10+table1num。else if(num=7flag=1 。 fuhao=2 。i=table1num 。 / 显示按下的键 write_dat(0x30+i 。P2=0xfb 。temp=P2 。 temp=temp&0xf0 。while(temp!=0xf0delay(5 。 temp=P2 。temp=temp&0xf0 。while(temp!=0xf0 temp=P2 。switch(temp /case 0xeb:num=8。break 。case 0xdb:n

26、um=9。break。case 0xbb:num=10。break。case 0x7b:num=11。break 。 while(temp!=0xf0 temp=P2 。temp=temp&0xf0 。if(num=8|num=9|num=10 / 判断是否按下 7,8,9 if(k=1 k=0 。write_com(0x01 。if(flag=0a=a*10+table1num 。else if(flag=1b=b*10+table1numelse if(num=11 /flag=1 。 fuhao=3 。i=table1num write_dat(0x30+iP2=0xf7 。 temp=

27、P2 。 temp=temp&0xf0 。 while(temp!=0xf0 delay(5 。 temp=P2 。 temp=temp&0xf0 。 while(temp!=0xf0 temp=P2 。 switch(temp case 0xe7:num=12 break 。case 0xd7:num=13 break。case 0xb7:num=14 break。case 0x77:num=15 break 。 while(temp!=0xf0 temp=P2 temp=temp&0xf0switch(numcase 12: if(k=1判断是否按下 */ 0 键/ =/ 清零键/k=0w

28、rite_com(0x01 if(flag=0a=a*10。else if(flag=1b=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 write_dat(0x30+c%10 。 c=c/10 。 write_dat(0x3d 。fuhao=0 。a=0。 b=0。 flag=0 。if(fuhao=2 / 如果符号键是 - ,执行 - 运算 write_com(0x80+0

29、x4f 。 write_com(0x04 。if(a=bc=a-b 。while(c!=0write_dat(0x30+c%10 。 c=c/10 。else if(a c=b-a 。while(c!=0write_dat(0x30+c%10c=c/10write_dat(0x2dwrite_dat(0x3da=0。 b=0。 flag=0if(fuhao=3 /write_com(0x80+0x4f write_com(0x04 c=a*b 。while(c!=0 write_dat(0x30+c%10 c=c/10 。write_dat(0x3da=0。 b=0。 flag=0if(fuh

30、ao=4 /i=0 。 write_com(0x80+0x4f write_com(0x04 c=(long(floata/b*1000000 while(c!=0write_dat(0x30+c%10 c=c/10 。i+ 。if(i=6 / write_dat(0x2eif(a/bwrite_dat(0x30 write_dat(0x3d a=0。 b=0。 flag=0break 。case 14: write_com(0x01a=0。 b=0。 flag=0。 fuhao=0 。如果符号键是。 fuhao=0 。如果符号键是 /。 / 结果保留 6位小数。显示完六位小数后,显示fuha

31、o=0fuhao=0 。break case 15:flag=1 。 fuhao=4 。 write_dat(0x30+table1num break 。void write_com(uchar com rs=0 。 / 选择写指令rw=0 。P3=com 。e=1 。delay(5 。 / 无延时不能正常工作 e=0 。void write_dat(uchar datrs=1 。 / 选择写数据rw=0 。P3=dat 。e=1 。delay(5 。 / 无延时不能正常工作 e=0 。void init( / 初始化delay(15 。 write_com(0x38 。delay(6 。 w

32、rite_com(0x38 。delay(6 。write_com(0x38 。write_com(0x38 。write_com(0x0c 。 / 开显示,关光标 write_com(0x06 。 / 光标移动设置 write_com(0x01 。 / 清屏void main(in it(。while(1keyscan(2. 电路图r:p-. | XI .听皿讯 MBO 1如 iJOn町二沁XT炬a.iraJ或取1RET对工直F旳何pi mPi j-W时阿吐p?wn0Pi湘Pii对砂FIJ?RlM.r町.|冋M-gj.iwirF1JPJjSJEH门.师.如阳NS?M.7ps?ra1311那3

33、. 原器件清单序号名称型号数量备注1单片机8051AT89C51)12电阻200 Q1复位电路3电阻1k Q1复位电路4电容22uF1复位电路5按键开关(按钮1复位电路6石英晶振12MHz1晶振电路7电容30pF2晶振电路8液晶屏16011显示电路94x4键盘用16个按钮实 现10单片机插座111电源插座112n电路基板113电源DC5V1可合买 或利用电子技 术课程 设计中制作的 电源)14焊锡、导线若干15滑动变阻器10KQ1液晶对比度调节课程设计成绩评定表号 学课程设计答辩记录託数 据? 数tr 放 一示*s 济 显aa 是 位unc 砒 5列 按下H叭 刮 HLLuch 躺 少控乂 X wff waa K断oxwcc % 判!=序gu 讦 他用 K他vst 女:仗攸0W 仁答 2SS勤 考辩报告最终评定成绩日 指心

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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