版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机课程设计报告教学院:专业班级:学 号:学生姓名:指导教师:时 间:地 点:单片机课程设计任务书一、课题名称单片机课程设计二、设计目的为了进一步巩固学习的理论知识,増强学生对所学知识的实际应用能力和运用所学的知识 解决实际问题的能力,开始为期两周的单片机课程设计。通过实训使学生在巩固所学知识的基 础z上具有初步的单片机系统设计与应用能力。三、设计内容设计基丁-51单片机的简易计算器系统电路,并以该电路为基础进行编程,要求能够实 现099之间的数进行加、减、乘、除运算的功能。四、设计要求1、设计简易计算器,要求能对099之间的数进行加、减、乘、除运算。2、用4x4的键盘作为输入设备。3、用l
2、ed或lcd进行显示。4、编写无符号数加、减、乘、除运算、输入和显示的程序。5、对系统的进行综合和调试,使其具有对099之间的数进行加、减、乘、除运算的 功能。6、编写课程设计的总结五、设计进度表序号设计内容所用时间1布置任务,学习简易计算器的工作原理以及换 件电路设计3天2完成键盘、显示和计算功能的程序设计3天3制作电路板1天4答辩、撰写设计报告书3天合计10天六、设计报告课程设计报告的基木内容至少包括封而、正文、附录三部分。课程设计报告要求统一格 式,字体工整规范。1、封面封而包括“单片机课程设计课程设计报告”、班级、姓名、学号以及完成日期等。2、正文正文是实践设计报告的主体,具体由以下几
3、部分组成:(1)课程设计题lh(2)课程设计任务与要求;(3)设计过程(包括设计方案、设计原理、创新点以及采用的新技术等);(4)方案的比较与论证;(5)破件电路设计,各个模块的设计与器件的选择;(6)软件程序的设计与调试;(7)课程设计总结(包括自己的收获与体会;遇到的问题和解决的方法;技术实现 技巧和创新点;作甜存在的问题和改进设想等);3. 附录附录1:系统设计原理图附录2:系统硕件元器件清单附录3:系统的程序七、考核方式与成绩评定办法评定项目评分成绩1.设计的实物功能齐全,制作美观(50分)2.态度认真、学习刻苦、遵守纪律(15分)3.设计报告的规范化、参考文献充分(不少于5篇)(20
4、分)4.答辩(15分)总分(100分)备注:成绩等级:优(90分100分)、良(80分89分)、中(70分79分)、及格(60分69分)、60分以下为不及格。八、参考书冃1 李朝青单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,19982 李广弟.单片机基础m.北京:北京航空航天犬学岀版社,19943 阎右.数字电子技术基础(第三版).北京:高等教育出版社,19894 燼常初.现场总线概述j电工技术,1999.5 徐仁贵等编著.单片微型计算机应用技术.北京:机械工业出版社.2001年2月第1版6 张毅刚等编著.单片机原理及应用.北京:高等教育出版社.2004年1月第1版一、课
5、程设计任务与要求设计基于51单片机的简易计算器系统电路,并以该电路为基础进行编程,要求能够实现 099之间的数进行加、减、乘、除运算的功能,并要求如下:1、设计简易计算器,要求能对0 99z间的数进行加、减、乘、除运算;2、用4x4的键盘作为输入设备;3、用led或lcd进行显示;4、使用c语言编写无符号数加、减、乘、除运算、输入和显示的程序;5、对系统的进行综合和调试,使其具有对099之间的数进行加、减、乘、除运算的功 能,还具有清零功能等;6、编写课程设计的总结。二、设计方案与选择方案1、芯片11、方案构思木设计中的芯片可以采用两种方案,一种是以fpga为核心处理芯片,配备相应的外设; 另
6、一种是以stc89c52处理器,配备相应的外设。(1) 方案一:釆用fpga控制fpga是一种高密度的可编程逻辑器件,自从xilinx公司1985年推出第一片fpga以来, fpga的集成密度和性能提高很快,其集成密度最高达500万门/片以上,系统性能可达 200mhzo ± t fpga器件集成密度高,方便易用,开发和上市周期短,在数?设计和电子生产 屮得到迅速普及和应用,并一度在高密度的可编程逻辑器件领域屮独占鳌头。但是基于sram编程的fpga,其编程信息需存放在外部存储器上,需外部存储器芯片,且 使用方法复杂,保密性差,而其对于一个简单的计算器而言,使用fpga有点人材小用,
7、成本 太高。(2) 方案二:采用at89c51单片机是单片微型机的简称,故又称为微控制器mcu (micro control unit)。通常由单 块集成电路芯片组成,内部包含有计算机的基本功能部件:中央处理器cpu,存储器和t/0接 口电路等。因此,单片机只要和适当的软件及外部设备相结合,便可成为一个单片机控制系 统。单片机广泛应用于智能产品,智能仪表,测控技术,智能接口等,具有操作简单、实用方 便、价格便宜等优点。at89c51 是一种带 4k 字节 flash 存储器(fper0mflash programmable and erasable read only memory)的低电压、
8、高性能cmos 8位微处理器,俗称单片机。 at89c2051是一种带2k字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除 只读存储器可以反复擦除1000次。该器件采用atmel高密度非易失存储器制造技术制 造,与工业标准的mcs-51指令集和输出管脚相兼容。由于将多功能8位cpu和闪烁存 储器组合在单个芯片中,atmel的at89c51是一种高效微控制器。12、方案比较与选择通过以上两种方案的论证和比较,从设计的实用性、方便性和成本等诸多方面考虑,最终 选择了以at89c51单片机作为中央处理单元进行计算器的设计,这样设计能够实现对六位整 数、两位小数的加、减、乘、除的四则运算。2、输
9、入模块21、方案构思(1)方案一:采用独立式按键作为输入模块图1 独立的功能按键图2矩阵键盘输入独立式按键输入模块,其特点是:百接用i/o 口构成单个按键电路,接口电路配置灵活、 按键识别和软件结构简单;但是当键数较多时,占用i/o 口较多,比较浪费资源。其原理图如 图1所示。(2)方案二:采用矩阵式键盘作为输入模块矩阵式按键输入模块,其特点是:电路和软件稍复杂,但相比之卜,当键数越多时,越节 约i/o 口,比较节省资源。其原理图如图2所示。2.2、方案比较与选择木设计中的输入模块使用的是矩阵键盘输入。键盘输入预置用于计算,按键较多。若是采用独立按键,需频繁按键,为软件设计增加负 担,且操作界
10、面不友好;若是采用矩阵式按键,可以方便地输入一个数值,使操作界面更具有 人性化,且节约了宝贵的i/o 口资源。通过对比,故采用方案二作为系统输入模块。3、显示模块31、方案构思(1)方案一:采用led数码管静态显示采用led数码管的静态显示,其特点是:其亮度较高;这种显示方式接口,编程容易且管 理简单;不足的是,占用的i/o的线资源较多。如果采用单片机或cpld/fpga來控制的话,势 必存在浪费i/o 口资源的问题。如图3所示。图3 4位数码管静态显示(2)方案二:采用led数码管动态显示采用led数码管的动态显示,其特点是:其亮度比静态显示的亮度要差一些;但其电路比 较简单,适合于显示位数
11、较多的情况。如图4所示。ll-ll-ll-1a b& dpd亠卜4亠1:<*pa b dp寸亠卜a b g dpd亠卜 4亠kbg <ipd亠卜4亠1:<irix)diij2d31/0(8 位)图4 4位数码管的动态显示(3)方案三:采用lcd1602液品显示采m lcd 1602液品显示,其特点是:对以调节其背光亮度,这种显示方式接口,编程虽然 有些麻烦,但管理较方便,占用的i/o 口资源线也不多。3.2、方案比较与选择木设计中的显示模块使用的是lcd1602液晶显示。在计算器运算中,需显示的数字、符号较多,按很据个方面的特点,而后可以发现lcd液 晶显示,虽然在价
12、格上的确是稍贵于led数码管;但数码管在硬件设计电路屮,会因线太多、 线路复杂而过于繁琐,则舍弃led数码管,选择lcd液晶显示。通过对比,故采用方案三作为系统显示模块。三、整体方案原理框图1. 1硬件与软件系统设计依据系统分析及实现功能,硕件小系统方框图如图1所示:振荡电路液品显小单片机键盘输入复位电路对比度调节依据系统硕件设计,软件系统主耍包括:单片机控制程序模块:作为系统的主控制程序模块,用keilc编稈控制其他稈序模块的协 调工作;键盘程序模块:用来输入用户的功能,使单片机完成相应的控制功能; 液品显示模块:使用字符型液品显示器显示用户的选择。1.2单片机模块单片机控制主程序流程图如下
13、:图6单片机外闌扩展电路程序模块为了节约成本,本设计中液品显示模块与单片机之间采用模拟口线的方式控制,键盘与单 片机z间采用扫描的工作方式。键盘程序流程图(扫描方式)键盘程序流程图如下所示:lcm程序流程图如卜所示:图8木设计的软件系统分别用伟福e6000和ku1c编写及编译。4*4键盘程序模块用汇编语言 和c语言编写,实现直接从卩2 口扫描得到键盘码,并釆用查询方式得到与z对应的lcd字型 码,在lcd上显示出來。四、单元电路设计1. 1键盘输入计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情 况下,编程会很简单,但是会占用大量的i/o 口资源,因此在很多情况下都
14、不釆用这种方式。 为此,我们引入了矩阵键盘的应用,釆用四条i/o线作为行线,四条i/o线作为列线纽成键 盘。在行线和列线的每个交义点卜-设置一个按键。这样键盘上按键的个数就为4x4个。这种 行列式键盘结构能有效地提高单片机系统中i/o 口的利用率。短阵键盘的工作原理:计算器的键盘布局如图5所示:一般有16个键组成,在单片机中止好可以用一个p 口实现16 个按键功能,这种形式在单片机系统中也最常用。图9键盘布局图图10矩阵键盘内部电路图键盘上的每一个按键都有-个键值。给键赋值的最直接办法是将行、列线按二进制顺序排列, 当某一键按下吋,键盘扫描程序执行到给该列置低电平0,若读出各行状态为非全i,这
15、时的 行、列数据组合成键值。键盘键值从左到右、从上到下依次是77, 7b, 7d, 7e; b7, bb,bd, be, ,e7, eb, ed, ee。这种负逻辑表示往往不够直观,因而釆用行、列线加反向器或软件求反的方法将键盘改成正逻辑。这时,键值依次为88, 84, 82, 81; 4& 44, 42,41,18, 14, 12, 1u不论是正逻辑还是负逻辑,这种键值表示方式分散度在且不等距, 用于指令不太方便。对于不是4*4或8*4或8*8键盘,使用也不容易,故在许多场合下,采用 依次排列键值的方法。这吋的键值与键号相一致。1.2单片机控制mcs-51单片机是在一块芯片中集成了c
16、pu、ram、rom、定时器/计数器和多功能i/o等一台 计算机所需要的基本功能部件。如果按功能划分,它由如下功能部件组成,即微处理器(cpu)、数据存储器(ram)、程序存储器(rom/eprom)、并行i/o口、出行口、定时器/计 数器、中断系统及特殊功能寄存器(sfr)。单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的 独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性!因此 我们采用单片机作为计算器的主要功能部件,可以进行很快地实现运算功能。图11单片机控制电路的时钟电路和复位电路lcd 1602 显示lcd1-lm016l<
17、;text>殆出§ o> > >寸oco图12 lcd 1602显示1602点阵字符液晶模块(lcm)引脚及功能1脚(vdd/vss):电源5v± 10%或接地。2 脚(vss/ vdd):接地或电源(5±0.5)v。3脚(v0):反视度调整。使用可变迫阻调整,通常接地。4脚(rs):寄存器选择仃:选择数据寄存器;0:选择指令寄存器)。5脚(r/w):读/写选择(1:读;0:写)。6脚(e):使能操作(1: lcm可做读写操作;0: lcm不可做读写操作)。7脚(db0):双向数据总线的第0位。8脚(db1):双向数据总线的第1位。9脚(d
18、b2):双向数据总线的第2位。10脚(db3):双向数据总线的第3位。11脚(db4):双向数据总线的第4位。12脚(db5):双向数据总线的笫5位。13脚(db6):双向数据总线的第6位。14脚(db7):双向数据总线的第7位。15脚(vdd):背光显示器电源+5v。16脚(vss):背光显示器接地°五、实物效果图图13 实物效果图六、心得体会两周的时间,终于顺利完成了单片机的课程设计。由于自己对单片机编程还不 是很熟悉,结果在设计的时候遇到了i系列问题,程序总是调试部处理,不过还 好,最后在同学的帮助下终于把程序调试出來了,虽然程序设计实现的功能与老师 要求的不尽相同,不过勉强还
19、算可以。从这里我知道了基本知识的重要性。其实进 行程序设计的时候主要是对各功能模块的把握。计算器里面最难的一部分是矩阵键 盘的扫描和编码,那个费了很大力气。另外一点就是硬件焊接调试部分。焊接的时候到时轻松,一个下午就焊接好 t,然后是调试部分。调试花费的吋间还是比较长的。不过有了上个学期数字电路 焊接调试的经验,这次单片机调试还算是比较顺利。我也是从电路板的正负电源检 测起,一步一步來,最终得到了想要的结果。调试的时候主要遇到了两个问题。一 个是键盘总是没有反应,为了这个自c调试了很久,前前后后把电路板检查了几 次,最后才发现是键盘木身的问题,和同学们换了个好键盘才行。另一个问题是总 是显示不
20、出来1、4、7这三个数字。检测来检测去,发现来是在测试最小系统时在 一个位选端接了高电平,对位选信号产牛了影响。当把那个高电平去掉后,终于得 到了正确的结果。总的來说这次课程设计达到了完成了基本任务,达到了基本要求。通过亲身对 程序设计和电路焊接调试的体会,自己对单片机有了进一步的了解,单片机编程能 力也得到了提高。电路板的焊接与调试,使自己电路调试的方法和思想进一步加强 to这次单片机课程设计应该说是比较成功的。七、参考文献1 李朝青单片机原理及接口技术(简明修订版)杭州:北京航空航天大学岀版社,19982 李广弟.单片机基础m.北京:北京航空航天大学出版社,19943 阎石.数字电了技术基
21、础(第三版).北京:高等教育出版社,19894 廖常初.现场总线概述j 电工技术,1999.八、附录1.系统程序#include <reg52h>#define uchar unsigned char #define uint unsigned int sbit rs=pl 0;sbit rw二pl;sbit e二p2;void write_dat(uchar dat); void wri te_com(uchar com); void keyscan();功阴说明:显示编码,加上0x30, 分别为 t','2','3','+'
22、;,'4',' 5',' 6',',等xr%2 *l vt*/char code tablel=1,2, 3, 0x2b-0x30,4, 5, 6, 0x2d-0x30,7, & 9, 0x2a-0x30,0,0x3d-0x30, 0x01-0x30, 0x2f-0x30;uchar k二0, f lag=0, num, fuhao, i;1 ong a, b, c;void delay (uint z)uint x, y;for (x=z;x>0;x-)for (y=110;y>0;y);void kevscan()
23、uchar temp;p2二oxfe;temp=p2;temp二temp&0xf0;while(temp!=0xf0)delay(5);temp=p2;temp二temp&0xf0;while(temp!=0xf0)temp二p2;switch(temp)case oxeo:num二0; break;case 0xde:num=l; break;case oxbe:num=2;break;case 0x7e:num=3;break;while(temp!=0xf0) temp二p2;temptemp&0xfo;/*当按下1, 2, 3,松手后执行下面这段语句*/ if(
24、num=0|num=l|num=2)if (flag=0)a=a*10+tablelnum ;/如果没有按符号键,符号前的数值为a else if(flag二二1)b二b*10+tablel num ;/如果按了符号键,符号后的数值为bif(k=l)/如果之前按了'号,再按键时清屏,进行下一次计算k=0;write com(0x01);else if(num=3)/判断按下'+'flag=l;fuhao二1;i=tablel num ;/显示按下的键write_dat (0x30+i);p2二oxfd;te 叩二 p2;temp二temp&0xf0;while
25、(temp!=0xf0)delay(5);temp=p2;temp二temp&0xfo;wh订e(temp!=0xf0)temp=p2;switch(temp)case oxed:num=4;break;case oxdd:num=5;break;case oxbd:num=6;break;case 0x7d:num二7;break;while (temp!=0xf0) temp二p2; temp二temp&oxfo;)if (num=41 |num=51 | num=6) /判断是否按下'4',' 5',' 6' if(k=l)
26、k=0;write com(0x01);if (flag=0)a=a*10+tablelnum;else if(flag=l)b=b*10+tablelnum;else if(num=7)flag=l;fuhao=2;i=tablelnum;/显示按下的键write_dat(0x30+i);"p2=0xfb;temp二p2;temp二temp&0x0;while(temp!=0xf0)delay(5);temp=p2;tcmp=temp&0xh);while(temp!=0xf0)temp=p2;switch(temp) /case oxeb:num=8;break;
27、case oxdb:num=9;break;case oxbb:num=10;break;case 0x7b:num=ll;break;while (temp!=oxfo) temp二p2;temp二temp&oxfo;)if (num=81 | num=91 | num=10)/判断是否按-f' 7',' 8',' 9'if(k=l)k 二0; write_com(0x01);if (fla 萨二 0) a=a*10+tablelnum;else if(flag=l) b=b*10+tablelnum;)else if (num=ll)
28、/判断是否按卜'*'flag=l;fuhao=3;i=tablelnum;writedat (0x30+i);p2=0xf7;temp二p2;temp=tcmp&0xf0;while(temp!=0xf0)delay(5);temp=p2;temp=temp&oxfo;while(temp!=oxfo)temp=p2;switch(temp)case 0xe7:num=12;/ 0键break;case 0xd7:num=13;/ '二'break;case 0xb7:num=14; 清零键 break;case 0x77:num=15;/
29、9;/'break;while (temp!=0xf0) temp二p2;temp=temp&0x0;switch(num)case 12:if (k=l)writecom(oxol);if(flag=0)a二a*10;else if (flag1)b二b*10;write_dat(0x30);break;case 13:/按二键k=l;if(fuhao-l)/如果符号键是+,执行+运算write_com(0x80+0x4f);write_com(0x04);c=a+b;while (c!=0)write_dat(0x30+c%10);write_dat(0x3d);fuhao
30、=0; a二0;b=0;f1ag=o;if(fuhao=2)如果符号键是-,执行-运算write_com(0x80+0x4f); write_com(0x04);if(a>=b)c=ab;while(c!=0)write_dat(0x30+c%10);c=c/10;else if(a<b) c=ba;while (c!=0)write_dat(0x30+c%10); c二c/10;write_dat(0x2d);write dat(0x3d);a=0;b=0;f1ag=o;fuhao=0;if (fuhao=3)/如果符号键是*writ e_com(0x80+0x4f);vrite
31、_com(0x04);c=a*b;while(c!=o)writedat(0x30+c%10);write dat(0x3d);a=0;b=0;flag=o;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: w
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 入户走访安全责任制度
- 2025年电子城社区卫生服务中心招聘备考题库及答案详解(夺冠系列)
- 工程代建制法人责任制度
- 水厂维修工岗位责任制度
- 如何落实网格责任制度
- 工程职业卫生责任制度
- 民声接听员岗位责任制度
- 落实施工单位责任制度
- 龙湖物业管家责任制度
- 企业日常安全责任制度
- 2026-2030中国一次性餐盒行业深度调研及投资前景预测研究报告
- 2026年春苏教版新教材小学科学二年级下册(全册)教学设计(附教材目录P97)
- 2026年考试题库北汽集团高管知识水平测试
- 三项管理制度及生产安全事故应急救援预案
- 2026年国家电网招聘之电网计算机考试题库500道含完整答案(历年真题)
- 医学影像学(第8版)第一章影像诊断学总论
- 2026考核消防设施操作员中级监控操作方向试题与答案
- 2026江苏中烟工业有限责任公司高校毕业生招聘14人备考题库(第一批次)及答案详解(必刷)
- 2025~2026学年江苏省徐州市高三上学期期中零模英语试卷
- 自然语言处理:大模型理论与实践 课件全套 第1-12章 绪论、词向量-评价指标
- 钢管桁架结构制作与安装施工技术
评论
0/150
提交评论