ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:419.33KB ,
资源ID:9583745      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9583745.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机课设报告.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机课设报告.docx

1、单片机课设报告 单片机课程设计报告教 学 院: 电气与电子信息工程学院专业班级: xx电信本x 学 号: xxxxxxxxxxxx 学生姓名: 坏 水 指导教师: xxxxxxxxxxxxx 时 间: 2012.5.28. 6.8 地 点: K2 - 406 单片机课程设计任务书一、课题名称单片机课程设计二、设计目的 为了进一步巩固学习的理论知识,增强学生对所学知识的实际应用能力和运用所学的知识解决实际问题的能力,开始为期两周的单片机课程设计。通过实训使学生在巩固所学知识的基础之上具有初步的单片机系统设计与应用能力。三、设计内容设计基于51单片机的简易计算器系统电路,并以该电路为基础进行编程,

2、要求能够实现099之间的数进行加、减、乘、除运算的功能。 四、设计要求 1、设计简易计算器,要求能对099之间的数进行加、减、乘、除运算。2、用44的键盘作为输入设备。3、用LED或LCD进行显示。4、编写无符号数加、减、乘、除运算、输入和显示的程序。5、对系统的进行综合和调试,使其具有对099之间的数进行加、减、乘、除运算的功能。6、编写课程设计的总结五、设计进度表序号设计内容所用时间1布置任务,学习简易计算器的工作原理以及硬件电路设计3天2完成键盘、显示和计算功能的程序设计3天3制作电路板1天4答辩、撰写设计报告书3天合 计10天六、设计报告课程设计报告的基本内容至少包括封面、正文、附录三

3、部分。课程设计报告要求统一格式,字体工整规范。1、封面封面包括“单片机课程设计课程设计报告”、班级、姓名、学号以及完成日期等。2、正文正文是实践设计报告的主体,具体由以下几部分组成:(1)课程设计题目;(2)课程设计任务与要求;(3)设计过程(包括设计方案、设计原理、创新点以及采用的新技术等);(4)方案的比较与论证;(5)硬件电路设计,各个模块的设计与器件的选择;(6)软件程序的设计与调试;(7)课程设计总结(包括自己的收获与体会;遇到的问题和解决的方法;技术实现技巧和创新点;作品存在的问题和改进设想等);3附录附录1:系统设计原理图附录2:系统硬件元器件清单附录3:系统的程序七、考核方式与

4、成绩评定办法评定项目评分成绩1. 设计的实物功能齐全,制作美观(50分)2. 态度认真、学习刻苦、遵守纪律(15分)3. 设计报告的规范化、参考文献充分(不少于5篇)(20分)4. 答辩(15分)总分(100分)备注:成绩等级:优(90分100分)、良(80分89分)、中(70分79分)、及格(60分69分)、60分以下为不及格。八、参考书目1李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,19982李广弟.单片机基础.北京:北京航空航天大学出版社,19943阎石.数字电子技术基础(第三版). 北京:高等教育出版社,19894廖常初.现场总线概述J.电工技术,1999

5、.5 徐仁贵等编著.单片微型计算机应用技术.北京:机械工业出版社.2001年2月第1版 6 张毅刚等编著.单片机原理及应用. 北京:高等教育出版社.2004年1月第1版 一、课程设计任务与要求 设计基于51单片机的简易计算器系统电路,并以该电路为基础进行编程,要求能够实现099之间的数进行加、减、乘、除运算的功能,并要求如下: 1、设计简易计算器,要求能对099之间的数进行加、减、乘、除运算; 2、用44的键盘作为输入设备; 3、用LED或LCD进行显示; 4、使用C语言编写无符号数加、减、乘、除运算、输入和显示的程序; 5、对系统的进行综合和调试,使其具有对099之间的数进行加、减、乘、除运

6、算的功能,还具有清零功能等; 6、编写课程设计的总结。二、设计方案与选择方案1、芯片1.1、方案构思本设计中的芯片可以采用两种方案,一种是以FPGA为核心处理芯片,配备相应的外设;另一种是以STC89C52处理器,配备相应的外设。(1)方案一:采用FPGA控制FPGA是一种高密度的可编程逻辑器件,自从Xilinx公司1985年推出第一片FPGA以来,FPGA的集成密度和性能提高很快,其集成密度最高达500万门/片以上,系统性能可达200MHz。由于FPGA器件集成密度高,方便易用,开发和上市周期短,在数字设计和电子生产中得到迅速普及和应用,并一度在高密度的可编程逻辑器件领域中独占鳌头。但是基于

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

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

9、T89C51单片机作为中央处理单元进行计算器的设计,这样设计能够实现对六位整数、两位小数的加、减、乘、除的四则运算。2、输入模块2.1、方案构思(1)方案一:采用独立式按键作为输入模块独立式按键输入模块,其特点是:直接用I/O口构成单个按键电路,接口电路配置灵活、按键识别和软件结构简单;但是当键数较多时,占用I/O口较多,比较浪费资源。其原理图如图1所示。 图 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位数码管静态显示(2)方案二:采用LED数码

11、管动态显示采用LED数码管的动态显示,其特点是:其亮度比静态显示的亮度要差一些;但其电路比较简单,适合于显示位数较多的情况。如图4所示。图 4 4位数码管的动态显示(3)方案三:采用LCD1602液晶显示采用LCD1602液晶显示,其特点是:可以调节其背光亮度,这种显示方式接口,编程虽然有些麻烦,但管理较方便,占用的I/O口资源线也不多。3.2、方案比较与选择本设计中的显示模块使用的是LCD1602液晶显示。在计算器运算中,需显示的数字、符号较多,按很据个方面的特点,而后可以发现LCD液晶显示,虽然在价格上的确是稍贵于LED数码管;但数码管在硬件设计电路中,会因线太多、线路复杂而过于繁琐,则舍

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

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

14、设置一个按键。这样键盘上按键的个数就为44个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。矩阵键盘的工作原理:计算器的键盘布局如图5所示:一般有16个键组成,在单片机中正好可以用一个P口实现16个按键功能,这种形式在单片机系统中也最常用。 图9 键盘布局图图10 矩阵键盘内部电路图键盘上的每一个按键都有一个键值。给键赋值的最直接办法是将行、列线按二进制顺序排列,当某一键按下时,键盘扫描程序执行到给该列置低电平0,若读出各行状态为非全1,这时的行、列数据组合成键值。键盘键值从左到右、从上到下依次是77,7B,7D,7E;B7,BB,BD,BE,E7,EB,ED,EE。这种负逻辑表

15、示往往不够直观,因而采用行、列线加反向器或软件求反的方法将键盘改成正逻辑。这时,键值依次为88,84,82,81;48,44,42,41,18,14,12,11。不论是正逻辑还是负逻辑,这种键值表示方式分散度在且不等距,用于指令不太方便。对于不是4*4或8*4或8*8键盘,使用也不容易,故在许多场合下,采用依次排列键值的方法。这时的键值与键号相一致。1.2 单片机控制MCS-51单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O等一台计算机所需要的基本功能部件。如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EP

16、ROM)、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性!因此我们采用单片机作为计算器的主要功能部件,可以进行很快地实现运算功能。 图11 单片机控制电路的时钟电路和复位电路LCD1602显示 图12 LCD1602显示 1602点阵字符液晶模块(LCM)引脚及功能 1脚(VDD/VSS):电源5V10%或接地。 2脚(VSS/ VDD):接地或电源(50.5)V。 3脚(VO):反视度调整。使用可变电阻调整,通常

17、接地。 4脚(RS):寄存器选择(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):背光显示

18、器接地。五、实物效果图 图13 实物效果图六、心得体会此次课程设计圆满结束了,对于大家经过努力所得的结果,我们感到非常满意。我们做的是计算器。由于平时大家都是学理论,没有过实际开发设计的经验,虽然上课的时候讲过很多关于单片机的应用,但课后也从没真正地实际做过这个东西,对它一点都不熟悉,拿到的时候都不知道怎么做。但通过对单片机进行了几天的摸索学习,我们终于把课程设计做好了,并发现单片机很实用。通过这次课程设计我基本学会了单片机设计的步聚和程序编写的基本方法,提高了动手能力,增强了理论联系实际的能力,分组工作的方式给了我与同学合作的机会,提高了与人合作的意识与能力,同时也培养和发展了同学之间的感情

19、,对此感到非常欣慰。总之,在这次课程设计中我受益匪浅。课程设计的过程中,我们组遇到了不少的问题,但最终我终究还是战胜困难,取得了成功,当然其中很大一部分功劳都要归功于指导老师齐老师、章老师和同学们,要不是没有指导老师的指导和与同学们的相互交流学习,我的课程设计肯定不会如此轻松。七、参考文献1李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,19982李广弟.单片机基础.北京:北京航空航天大学出版社,19943阎石.数字电子技术基础(第三版). 北京:高等教育出版社,19894廖常初.现场总线概述J.电工技术,1999.5 徐仁贵等编著.单片微型计算机应用技术.北京:机械

20、工业出版社.2001年2月第1版 6 张毅刚等编著.单片机原理及应用. 北京:高等教育出版社.2004年1月第1版八、附录1. 系统程序#include #define uchar unsigned char#define uint unsigned intsbit rs=P10;sbit rw=P11;sbit e=P12;void write_dat(uchar dat); void write_com(uchar com);void keyscan();/* 功能说明:显示编码,加上0x30,分别为1,2,3,+,4,5,6,-,等*/uchar code table1=1,2,3,0x

21、2b-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;x0;x-) for(y=110;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!=0

22、xf0) 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(num=0|num=1|num=2) if(flag=0) a=a*10+table1num;/如果没有按符号键,符号前的数值为a else if(flag=1) b=b*10+table1num; /如果按了符

23、号键,符号后的数值为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=P2; temp=temp&0xf0; while(temp!=0xf0) delay(5); temp=P2; temp=temp&0xf0; while(temp!=0xf0) temp=P2; switch(temp) case 0xed:num=4; break; cas

24、e 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(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_d

25、at(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; 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

26、=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=table1num; 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; s

27、witch(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=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: /按

28、=键 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+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=0;b=0;flag=0;fuhao=0; if(fuhao=3) /如果符号键是* write_com(0x80+0x4f);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1