




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电气与电子信息工程学院单片机课设设计单片机课程设计报告教学院: 专业班级: 学 号: 学生姓名: 指导教师:单片机课程设计任务书一、课题名称单片机课程设计二、设计目的为了进一步巩固学习的理论知识,增强学生对所学知识的实际应用能力和运用所学的知识 解决实际问题的能力,开始为期两周的单片机课程设计。通过实训使学生在巩固所学知识的基 础之上具有初步的单片机系统设计与应用能力。三、设计内容设计基于51单片机的简易计算器系统电路,并以该电路为基础进行编程,要求能够实现099之间的数进行加、减、乘、除运算的功能。四、设计要求1、设计简易计算器,要求能对0 99之间的数进行加、减、乘、除运算。2、用4x 4
2、的键盘作为输入设备。3、用led或lcd进行显示。4、编写无符号数加、减、乘、除运算、输入和显示的程序。5、对系统的进行综合和调试,使其具有对0 99之间的数进行加、减、乘、除运算的功能。6、编写课程设计的总结五、设计进度表序号设计内容所用时间1布置任务,学习简易计算器的工作原理以及硬 件电路设计3天2完成键盘、显示和计算功能的程序设计3天3制作电路板1天4答辩、撰写设计报告书3天合计10天六、设计报告课程设计报告的基本内容至少包括封面、正文、附录三部分。课程设计报告要求统一格 式,字体工整规范。1、封面封面包括“单片机课程设计课程设计报告”、班级、姓名、学号以及完成日期等。2、正文正文是实践
3、设计报告的主体,具体由以下几部分组成:(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分以下为不及格。八、参考书目1 李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,19982 李广弟.单片机基础m.北京:北京航空航天大学出版社,19943 阎石.数字电子技术基石(第三版).北京:高等教育出版社,19894 廖常初.现场总线概述j.电工技术,1999.5 徐仁贵等编著.单片微型计算机应用技术.北京:机械工业出版社.2001年2月第1版6 张毅刚等编著.单片机原理及应用.北京:高等教育出
5、版社.2004年1月第1版一、课程设计任务与要求设计基于51单片机的简易计算器系统电路,并以该电路为基础进行编程,要求能够实现099之间的数进行加、减、乘、除运算的功能,并要求如下:1 、设计简易计算器,要求能对 0 99之间的数进行加、减、乘、除运算;2 、用4x4的键盘作为输入设备;3 、用led或lcds行显示;4 、使用c语言编写无符号数加、减、乘、除运算、输入和显示的程序;5 、对系统的进行综合和调试,使其具有对0- 99之间的数进行加、减、乘、除运算的功能,还具有清零功能等;6 、编写课程设计的总结。二、设计方案与选择方案1、芯片1.1、 方案构思本设计中的芯片可以采用两种方案,一
6、种是以fpgw核心处理芯片,配备相应的外设;另一种是以stc89c52处理器,配备相应的外设。(1)方案一:采用fpga空制fpga一种高密度的可编程逻辑器件,自从xilinx 公司1985年推出第一片fpgaa来,fpga勺集成密度和性能提高很快,其集成密度最高达500万门/片以上,系统性能可达200mhz由于fpg湍件集成密度高,方便易用,开发和上市周期短,在数字设计和电子生产 中得到迅速普及和应用,并一度在高密度的可编程逻辑器件领域中独占鳌头。但是基于sra蝙程的fpga其编程信息需存放在外部存储器上,需外部存储器芯片,且 使用方法复杂,保密性差,而其对于一个简单的计算器而言,使用fpg
7、m点大材小用,成本太高。(2)方案二:采用 at89c51单片机是单片微型机的简称,故又称为微控制器mcu(micro control unit)。通常由单块集成电路芯片组成,内部包含有计算机的基本功能部件:中央处理器cpu存储器和i/o接口电路等。因此,单片机只要和适当的软件及外部设备相结合,便可成为一个单片机控制系 统。单片机广泛应用于智能产品,智能仪表,测控技术,智能接口等,具有操作简单、实用方 便、价格便宜等优点。at89c51 是一种带 4k 字节 flash存储器(fperoim- flash programmable anderasable read only memory )的
8、低电压、高性能cmos 8位微处理器,俗称单片机。at89c2051是一种带2k字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除 只读存储器可以反复擦除1000、次。该器件采用atmel高密度非易失存储器制造技术制造,与工业标准的mcs-51指令集和输出管脚相兼容。由于将多功能8位cpu和闪烁存储器组合在单个芯片中,atmel的at89c51是一种高效微控制器。1.2、 方案比较与选择通过以上两种方案的论证和比较,从设计的实用性、方便性和成本等诸多方面考虑,最终 选择了以at89c51单片机作为中央处理单元进行计算器的设计,这样设计能够实现对六位整 数、两位小数的加、减、乘、除的四则运算
9、。2、输入模块2.1、 方案构思(1)方案一:采用独立式按键作为输入模块独立式按键输入模块,其特点是:直接用 i/o 构成单个按键电路,接口电路配置灵活、 按键识别和软件结构简单;但是当键数较多时,占用 i/o 口较多,比较浪费资源。其原理图如 图1所示。tstst5 ts1 独立的功能按键图2矩阵键盘输入(2)方案二:采用矩阵式键盘作为输入模块矩阵式按键输入模块,其特点是:电路和软件稍复杂,但相比之下,当键数越多时,越节 约i/o 口,比较节省资源。其原理图如图 2所示。2.2、 方案比较与选择本设计中的输入模块使用的是矩阵键盘输入。键盘输入预置用于计算,按键较多。若是采用独立按键,需频繁按
10、键,为软件设计增加负 担,且操作界面不友好;若是采用矩阵式按键,可以方便地输入一个数值,使操作界面更具有 人性化,且节约了宝贵的 i/o 资源。通过对比,故采用方案二作为系统输入模块。2.3、 模块3.1、 方案构思(1)方案一:采用led数码管静态显示采用led数码管的静态显示,其特点是:其亮度较高;这种显示方式接口,编程容易且管 理简单;不足的是,占用的 i/o的线资源较多。如果采用单片机或cpld/fpg麻控制的话,势必存在浪费i/o 资源的问题。如图 3所示。图3 4 位数码管静态显示(2)方案二:采用led数码管动态显示采用led数码管的动态显示,其特点是:其亮度比静态显示的亮度要差
11、一些;但其电路比较简单,适合于显示位数较多的情况。如图 4所示。l/cxk('b,)图4 4 位数码管的动态显示(3)方案三:采用lcd16021晶显示采用lcd1602液晶显示,其特点是:可以调节其背光亮度,这种显示方式接口,编程虽然 有些麻烦,但管理较方便,占用的 i/o 口资源线也不多。3.2、 方案比较与选择本设计中的显示模块使用的是lcd1602液晶显示。在计算器运算中,需显示的数字、符号较多,按很据个方面的特点,而后可以发现lcd液晶显示,虽然在价格上的确是稍贵于led数码管;但数码管在硬件设计电路中,会因线太多、线路复杂而过于繁琐,则舍弃led数码管,选择lcd液晶显示。
12、通过对比,故采用方案三作为系统显示模块。三、整体方案原理框图1.1 硬件与软件系统设计依据系统分析及实现功能,硬件小系统方框图如图1所示:振荡电路液晶显示对比度调节单片机键盘输入复位电路依据系统硬件设计,软件系统主要包括:单片机控制程序模块:作为系统的主控制程序模块,用keilc编程控制其他程序模块的协调工作;键盘程序模块:用来输入用户的功能,使单片机完成相应的控制功能;液晶显示模块:使用字符型液晶显示器显示用户的选择。1.2 单片机模块单片机控制主程序流程图如下:图6单片机外围扩展电路程序模块为了节约成本,本设计中液晶显示模块与单片机之间采用模拟线的方式控制,键盘与单 片机之间采用扫描的工作
13、方式。键盘程序流程图(扫描方式)键盘程序流程图如下所示:开始键盘消抖扫描键盘得键值存入累加器结束lcm程序流程图如下所示:图8本设计的软件系统分别用伟福e6000和keilc编写及编译。4*4键盘程序模块用汇编语言和c语言编写,实现直接从 p2 口扫描得到键盘码,并采用查询方式得到与之对应的lcd字型码,在lcd上显示出来。四、单元电路设计1.1 键盘输入计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的i/o 口资源,因此在很多情况下都不采用这种方式。为此,我们引入了矩阵键盘的应用,采用四条i/o线作为行线,四条i/o线作为列线组
14、成键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4x4个。这种行列式键盘结构能有效地提高单片机系统中i/o 口的利用率。矩阵键盘的工作原理:计算器的键盘布局如图 5所示:一般有16个键组成,在单片机中正好可以用一个p 口实现16个按键功能,这种形式在单片机系统中也最常用。图9键盘布局图图10矩阵键盘内部电路图键盘上的每一个按键都有一个键值。给键赋值的最直接办法是将行、列线按二进制顺序排列,当某一键按下时,键盘扫描程序执行到给该列置低电平0,若读出各行状态为非全 1,这时的行、列数据组合成键值。键盘键值从左到右、从上到下依次是77, 7b, 7d, 7e; b7, brb
15、q be,,e7, eb, ed, ee这种负逻辑表示往往不够直观,因而采用行、列线加反向器或 软件求反的方法将键盘改成正逻辑。这时,键值依次为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定日器/计数器和多功能i/o等一台 计算机所需要的基本功能部件。如果按功能划分,它由如下功能部
16、件组成,即微处理器(cpu、数据存储器(ram、程序存储器(rom/eprom 并行i/o 口、串行口、定时器/计 数器、中断系统及特殊功能寄存器( sfr 。单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的 独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性!因此 我们采用单片机作为计算器的主要功能部件,可以进行很快地实现运算功能。s彦以10 uf .,丘xt *的k -e 2 rrelx .c3o5 n一图11单片机控制电路的时钟电路和复位电路lcd1602 显示lcdt '1 ' ' lmoial .
17、9;、/ a yu *:414 目朝蛔:图12 lcd1602显示1602点阵字符液晶模块(lcm)引脚及功能1脚(vdd/vss):电源5v± 10碗接地。2 脚(vss/ v d。:接地或电源(5±0.5)v。3脚(vo):反视度调整。使用可变电阻调整,通常接地。4脚(rs):寄存器选择(1 :选择数据寄存器;0:选择指令寄存器)。5脚(r/w):读/写选择(1 :读;0:写)。6脚(e):使能操作(1 : lcmm做读写操作;0: lcm可做读写操作)。7脚(db0):双向数据总线的第 0位。8脚(db1):双向数据总线的第 1位。电气与电子信息工程学院单片机课设设计
18、9脚(db2):双向数据总线的第 2位。10脚(db3):双向数据总线的第 3位。11脚(db4):双向数据总线的第 4位。12脚(db5):双向数据总线的第 5位。13脚(db6):双向数据总线的第 6位。14脚(db7):双向数据总线的第 7位。15脚(vdd):背光显示器电源+5v。16脚(vss):背光显示器接地。五、实物效果图图13 实物效果图电气与电子信息工程学院单片机课设设计六、心得体会两周的时间,终于顺利完成了单片机的课程设计。由于自己对单片机编程还不 是很熟悉,结果在设计的时候遇到了一系列问题,程序总是调试部处理,不过还 好,最后在同学的帮助下终于把程序调试出来了,虽然程序设
19、计实现的功能与老师 要求的不尽相同,不过勉强还算可以。从这里我知道了基本知识的重要性。其实进 行程序设计的时候主要是对各功能模块的把握。计算器里面最难的一部分是矩阵键 盘的扫描和编码,那个费了很大力气。另外一点就是硬件焊接调试部分。焊接的时候到时轻松,一个下午就焊接好 了,然后是调试部分。调试花费的时间还是比较长的。不过有了上个学期数字电路 焊接调试的经验,这次单片机调试还算是比较顺利。我也是从电路板的正负电源检 测起,一步一步来,最终得到了想要的结果。调试的时候主要遇到了两个问题。一 个是键盘总是没有反应,为了这个自己调试了很久,前前后后把电路板检查了几 次,最后才发现是键盘本身的问题,和同
20、学们换了个好键盘才行。另一个问题是总 是显示不出来1、4、7这三个数字。检测来检测去,发现来是在测试最小系统时在 一个位选端接了高电平,对位选信号产生了影响。当把那个高电平去掉后,终于得 到了正确的结果。总的来说这次课程设计达到了完成了基本任务,达到了基本要求。通过亲身对 程序设计和电路焊接调试的体会,自己对单片机有了进一步的了解,单片机编程能 力也得到了提高。电路板的焊接与调试,使自己电路调试的方法和思想进一步加强 了。这次单片机课程设计应该说是比较成功的。七、参考文献1 李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,19982 李广弟.单片机基础m.北京:北京航
21、空航天大学出版社,19943 阎石.数字电子技术基石(第三版).北京:高等教育出版社,19894 廖常初.现场总线概述j.电工技术,1999.八、附录1.系统程序#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit rs=p1a0;sbit rw=p1a1;sbit e=p1a2;void write_dat(uchar dat);void write_com(uchar com);void keyscan();/*功能说明:显示编码,加上0x30,分别为'1','
22、;2','3','+','4','5','6','-',*/ uchar code tablel尸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 z)uint x,y;for(x=z;x>0;x-) for(y=110;y>0;y-);void keysca
23、n()uchar temp;p2=0xfe;temp=p2;temp=temp&0xf0;while(temp!=0xf0)delay(5);temp=p2;temp=temp&0xf0;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!=0xf0) temp=p2;temp=temp&0xf0; */*当按下1,2,3,松手后执行下面这段语句if(
24、num=0|num=1|num=2)if(flag=0)a=a*10+table1num;/如果没有按符号键,符号前的数值为aelse if(flag=1)b=b*10+table1num;/如果按了符号键,符号后的数值为bif(k=1) /如果之前按了 '='号,再按键时清屏,进行下一次计算k=0;write_com(0x01); 一else if(num=3) /判断按下'+'flag=1;fuhao=1;显示按下的键i=table1num; / write_dat(0x30+i);p2=0xfd;temp=p2;temp=temp&0xf0;whi
25、le(temp!=0xf0)delay(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=1)k=0;write_com(
26、0x01); 一if(flag=0)a=a*10+table1num;else if(flag=1)b=b*10+table1num;else if(num=7)flag=1;fuhao=2;i=table1num; /显示按下的键write_dat(0x30+i);p2=0xfb;temp=p2;temp=temp&0xf0;while(temp!=0xf0)delay(5);temp=p2;temp=temp&0xf0;while(temp!=0xf0)temp=p2;switch(temp) /case 0xeb:num=8;break;case 0xdb:num=9;b
27、reak;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=0)a=a*10+table1num;else if(flag=1)b=b*10+table1num;else if(num=11)/判断是否按下'*'flag=1;fuhao=3;i=tab
28、le1num;write_dat(0x30+i);p2=0xf7;temp=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; / 0 break;case 0xd7:num=13;/ '='break;case 0xb7:num=14; / break;case 0x77:num=15; /'/' break;while(temp!=0xf0) temp=
29、p2;temp=temp&0xf0;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)键清零键按=键如果符号键是+,执行+运算write_dat(0x30+c%10);c=c/10;write_dat(0x3d);fuhao=0;a=0;b=0;flag=0;i
30、f(fuhao=2)/如果符号键是-,执行-运算write_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(a<b)c=b-a;while(c!=0)write_dat(0x30+c%10);c=c/10;write_dat(0x2d);write_dat(0x3d);a=0;b=0;flag=0;fuhao=0;if(fuhao=3) /如果符号键是*write_com(0x80+0x4f);write_com(0x04);c=a*b;while
31、(c!=0)write_dat(0x30+c%10);电气与电子信息工程学院单片机课设设计c=c/10;write_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); /结果保留 6位小数while(c!=0)write_dat(0x30+c%10);c=c/10;i+;if(i=6)/显示完六位小数后,显示write_dat(0x2e);一if(a/b<=0)write_dat(0x30);write_dat(0x3d);a=0;b=0;flag=0;fuhao=0;break;case 14: write_com(0x01);a=0;b=0;flag=0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/SZIAM 0002-2024中央空调系统维护保养技术规范
- 合同教育信息咨询服务合同4篇
- T/CHTS 20044-2024高速公路沥青路面矿料及其加工技术指南
- 哌库溴铵代销合同6篇
- 2025年猎聘人才委托合同3篇
- 茶叶购销合同范本6篇
- T/ZHCA 602-2020学校消毒操作技术规范
- 中华优传统文化 课件 第十章 中国传统艺术
- 2025甘孜职业学院辅导员考试试题及答案
- 教师个人工作年终总结
- 中医食疗学智慧树知到期末考试答案2024年
- 中学德育工作顶层设计方案
- 抗滑桩施工监测监控措施
- 最新食品工程原理考卷
- 《基于VerilogHDL的乐曲演奏电路设计》
- 硅烷偶联剂及其应用技术
- 甲状腺的外科治疗与病ppt课件
- 大坝填筑实施细则
- 败血症PPT优质课件
- 酸碱平衡判断(杜斌教授)血气分析六步法
- 07北工大高数工2期末考试A卷工答案1
评论
0/150
提交评论