




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电气与电子信息工程学院 单片机课设设计 单片机课程设计报告单片机课程设计报告 教教 学学 院:院: 专业班级:专业班级: 学学 号:号: 学生姓名:学生姓名: 指导教师:指导教师: 时时 间:间: 地地 点:点: 电气与电子信息工程学院 单片机课设设计 单片机课程设计任务书单片机课程设计任务书 一、课题名称 单片机课程设计 二、设计目的 为了进一步巩固学习的理论知识,增强学生对所学知识的实际应用能力和运用所学的知识 解决实际问题的能力,开始为期两周的单片机课程设计。通过实训使学生在巩固所学知识的基 础之上具有初步的单片机系统设计与应用能力。 三、设计内容 设计基于 51 单片机的简易计算器系统电路,并以该电路为基础进行编程,要求能够实 现 099 之间的数进行加、减、乘、除运算的功能。 四、设计要求 1、设计简易计算器,要求能对 099 之间的数进行加、减、乘、除运算。 2、用 44 的键盘作为输入设备。 3、用 led 或 lcd 进行显示。 4、编写无符号数加、减、乘、除运算、输入和显示的程序。 5、对系统的进行综合和调试,使其具有对 099 之间的数进行加、减、乘、除运算的 功能。 6、编写课程设计的总结 五、设计进度表 序号设计内容所用时间 1 布置任务,学习简易计算器的工作原理以及硬 件电路设计 3 天 2 完成键盘、显示和计算功能的程序设计3 天 3 制作电路板1 天 4 答辩、撰写设计报告书3 天 合 计10 天 六、设计报告 课程设计报告的基本内容至少包括封面、正文、附录三部分。课程设计报告要求统一格式, 字体工整规范。 1、封面 封面包括“单片机课程设计课程设计报告”、班级、姓名、学号以及完成日期等。 2、正文 正文是实践设计报告的主体,具体由以下几部分组成: 电气与电子信息工程学院 单片机课设设计 (1)课程设计题目; (2)课程设计任务与要求; (3)设计过程(包括设计方案、设计原理、创新点以及采用的新技术等); (4)方案的比较与论证; (5)硬件电路设计,各个模块的设计与器件的选择; (6)软件程序的设计与调试; (7)课程设计总结(包括自己的收获与体会;遇到的问题和解决的方法;技术实现 技巧和创新点;作品存在的问题和改进设想等); 3附录 附录 1:系统设计原理图 附录 2:系统硬件元器件清单 附录 3:系统的程序 七、考核方式与成绩评定办法 评定项目评分成绩 1. 设计的实物功能齐全,制作美观(50 分) 2. 态度认真、学习刻苦、遵守纪律(15 分) 3. 设计报告的规范化、参考文献充分(不少于 5 篇)(20 分) 4. 答辩(15 分) 总分(100 分) 备注:成绩等级:优(90 分100 分)、良(80 分89 分)、中(70 分79 分)、及格 (60 分69 分)、60 分以下为不及格。 八、参考书目 1 李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,1998 2 李广弟.单片机基础.北京:北京航空航天大学出版社,1994 3 阎石.数字电子技术基础(第三版). 北京:高等教育出版社,1989 4 廖常初.现场总线概述j.电工技术,1999. 5 徐仁贵等编著.单片微型计算机应用技术.北京:机械工业出版社.2001 年 2 月第 1 版 6 张毅刚等编著.单片机原理及应用. 北京:高等教育出版社.2004 年 1 月第 1 版 电气与电子信息工程学院 单片机课设设计 一、课程设计任务与要求一、课程设计任务与要求 设计基于 51 单片机的简易计算器系统电路,并以该电路为基础进行编程,要求能够实现 099 之间的数进行加、减、乘、除运算的功能,并要求如下: 1、设计简易计算器,要求能对 099 之间的数进行加、减、乘、除运算; 2、用 44 的键盘作为输入设备; 3、用 led 或 lcd 进行显示; 4、使用 c 语言编写无符号数加、减、乘、除运算、输入和显示的程序; 5、对系统的进行综合和调试,使其具有对 099 之间的数进行加、减、乘、除运算的功 能,还具有清零功能等; 6、编写课程设计的总结。 二、设计方案与选择方案二、设计方案与选择方案 1 1、芯片、芯片 1.11.1、方案构思、方案构思 本设计中的芯片可以采用两种方案,一种是以 fpga 为核心处理芯片,配备相应的外设; 另一种是以 stc89c52 处理器,配备相应的外设。 (1)方案一:采用 fpga 控制 fpga 是一种高密度的可编程逻辑器件,自从 xilinx 公司 1985 年推出第一片 fpga 以来, fpga 的集成密度和性能提高很快,其集成密度最高达 500 万门/片以上,系统性能可达 200mhz。由于 fpga 器件集成密度高,方便易用,开发和上市周期短,在数字设计和电子生产 中得到迅速普及和应用,并一度在高密度的可编程逻辑器件领域中独占鳌头。 但是基于 sram 编程的 fpga,其编程信息需存放在外部存储器上,需外部存储器芯片,且 使用方法复杂,保密性差,而其对于一个简单的计算器而言,使用 fpga 有点大材小用,成本 太高。 (2)方案二:采用 at89c51 单片机是单片微型机的简称,故又称为微控制器 mcu(micro control unit)。通常由单 块集成电路芯片组成,内部包含有计算机的基本功能部件:中央处理器 cpu,存储器和 i/o 接 口电路等。因此,单片机只要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。 单片机广泛应用于智能产品,智能仪表,测控技术,智能接口等,具有操作简单、实用方便、 价格便宜等优点。 at89c51 是一种带 4k 字节 flash 存储器(fperomflash programmable and erasable read only memory)的低电压、高性能 cmos 8 位微处理器,俗称单片机。 at89c2051 是一种带 2k 字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读 存储器可以反复擦除 1000 次。该器件采用 atmel 高密度非易失存储器制造技术制造,与 工业标准的 mcs-51 指令集和输出管脚相兼容。由于将多功能8 位 cpu 和闪烁存储器组合 在单个芯片中, atmel 的 at89c51 是一种高效微控制器 。 1.21.2、方案比较与选择、方案比较与选择 通过以上两种方案的论证和比较,从设计的实用性、方便性和成本等诸多方面考虑,最终 选择了以 at89c51 单片机作为中央处理单元进行计算器的设计,这样设计能够实现对六位整数、 两位小数的加、减、乘、除的四则运算。 2 2、输入模块、输入模块 2.12.1、方案构思方案构思 (1)方案一:采用独立式按键作为输入模块 电气与电子信息工程学院 单片机课设设计 独立式按键输入模块,其特点是:直接用 i/o 口构成单个按键电路,接口电路配置灵活、 按键识别和软件结构简单;但是当键数较多时,占用 i/o 口较多,比较浪费资源。其原理图如 图 1 所示。 图 1 独立的功能按键 图 2 矩阵键盘输入 (2)方案二:采用矩阵式键盘作为输入模块 矩阵式按键输入模块,其特点是:电路和软件稍复杂,但相比之下,当键数越多时,越节 约 i/o 口,比较节省资源。其原理图如图 2 所示。 2.22.2、方案比较与选择、方案比较与选择 本设计中的输入模块使用的是矩阵键盘输入。 键盘输入预置用于计算,按键较多。若是采用独立按键,需频繁按键,为软件设计增加负 担,且操作界面不友好;若是采用矩阵式按键,可以方便地输入一个数值,使操作界面更具有 人性化,且节约了宝贵的 i/o 口资源。 通过对比,故采用方案二作为系统输入模块。 3 3、显示模块、显示模块 3.13.1、方案构思、方案构思 (1)方案一:采用 led 数码管静态显示 采用 led 数码管的静态显示,其特点是:其亮度较高;这种显示方式接口,编程容易且管 理简单;不足的是,占用的 i/o 的线资源较多。如果采用单片机或 cpld/fpga 来控制的话,势 必存在浪费 i/o 口资源的问题。如图 3 所示。 图 3 4 位数码管静态显示 (2)方案二:采用 led 数码管动态显示 采用 led 数码管的动态显示,其特点是:其亮度比静态显示的亮度要差一些;但其电路比 较简单,适合于显示位数较多的情况。如图 4 所示。 电气与电子信息工程学院 单片机课设设计 图 4 4 位数码管的动态显示 (3)方案三:采用 lcd1602 液晶显示 采用 lcd1602 液晶显示,其特点是:可以调节其背光亮度,这种显示方式接口,编程虽然 有些麻烦,但管理较方便,占用的 i/o 口资源线也不多。 3.23.2、方案比较与选择、方案比较与选择 本设计中的显示模块使用的是 lcd1602 液晶显示。 在计算器运算中,需显示的数字、符号较多,按很据个方面的特点,而后可以发现 lcd 液 晶显示,虽然在价格上的确是稍贵于 led 数码管;但数码管在硬件设计电路中,会因线太多、 线路复杂而过于繁琐,则舍弃 led 数码管,选择 lcd 液晶显示。 通过对比,故采用方案三作为系统显示模块。 三、整体方案原理框图三、整体方案原理框图 1.11.1 硬件与软件系统设计硬件与软件系统设计 依据系统分析及实现功能,硬件小系统方框图如图 1 所示: 单片机 振荡电路 键盘输入液晶显示 对比度调节复位电路 图 5 依据系统硬件设计,软件系统主要包括: 电气与电子信息工程学院 单片机课设设计 单片机控制程序模块:作为系统的主控制程序模块,用 keilc 编程控制其他程序模块的协 调工作; 键盘程序模块:用来输入用户的功能,使单片机完成相应的控制功能; 液晶显示模块:使用字符型液晶显示器显示用户的选择。 1.21.2 单片机模块单片机模块 单片机控制主程序流程图如下: 图 6 单片机外围扩展电路程序模块 为了节约成本,本设计中液晶显示模块与单片机之间采用模拟口线的方式控制,键盘与单 片机之间采用扫描的工作方式。 键盘程序流程图(扫描方式) 键盘程序流程图如下所示: 开始 初始化 扫描键盘得键值 显示定位 显示 结束 开始 有键按下? 键盘消抖 扫描键盘得键值存入累加器 结束 有键按下? y y n n 电气与电子信息工程学院 单片机课设设计 图 7 lcm 程序流程图如下所示: 图 8 本设计的软件系统分别用伟福 e6000 和 keilc 编写及编译。4*4 键盘程序模块用汇编语言 和 c 语言编写,实现直接从 p2 口扫描得到键盘码,并采用查询方式得到与之对应的 lcd 字型 码,在 lcd 上显示出来。 四、单元电路设计四、单元电路设计 1.11.1 键盘输入键盘输入 计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情 况下,编程会很简单,但是会占用大量的 i/o 口资源,因此在很多情况下都不采用这种方式。 为此,我们引入了矩阵键盘的应用,采用四条 i/o 线作为行线,四条 i/o 线作为列线组成键盘。 在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为 44 个。这种行列 式键盘结构能有效地提高单片机系统中 i/o 口的利用率。 矩阵键盘的工作原理: 开 始 lcd 初始化 lcd 是否为忙? 单片机向 lcd 写命令 单片机向 lcd 写数据 显示数据 结束 y n 电气与电子信息工程学院 单片机课设设计 计算器的键盘布局如图 5 所示:一般有 16 个键组成,在单片机中正好可以用一个 p 口实现 16 个按键功能,这种形式在单片机系统中也最常用。 /*-+ clc963 =852 0741 图 9 键盘布局图 电气与电子信息工程学院 单片机课设设计 图 10 矩阵键盘内部电路图 键盘上的每一个按键都有一个键值。给键赋值的最直接办法是将行、列线按二进制顺序排列, 当某一键按下时,键盘扫描程序执行到给该列置低电平 0,若读出各行状态为非全 1,这时的 行、列数据组合成键值。键盘键值从左到右、从上到下依次是 77,7b,7d,7e;b7,bb,bd,be,e7,eb,ed,ee。这种负逻辑表示往往不够直观,因 而采用行、列线加反向器或软件求反的方法将键盘改成正逻辑。这时,键值依次为 88,84,82,81;48,44,42,41,18,14,12,11。不论是正逻辑还是负逻辑,这种键 值表示方式分散度在且不等距,用于指令不太方便。对于不是 4*4 或 8*4 或 8*8 键盘,使用也 不容易,故在许多场合下,采用依次排列键值的方法。这时的键值与键号相一致。 1.21.2 单片机控制单片机控制 mcs-51单片机是在一块芯片中集成了cpu、ram、rom、定时器/计数器和多功能i/o等一台 计算机所需要的基本功能部件。如果按功能划分,它由如下功能部件组成,即微处理器 (cpu)、数据存储器(ram)、程序存储器(rom/eprom)、并行i/o口、串行口、定时器/计 数器、中断系统及特殊功能寄存器(sfr)。 单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的 独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性!因此 我们采用单片机作为计算器的主要功能部件,可以进行很快地实现运算功能。 电气与电子信息工程学院 单片机课设设计 图 11 单片机控制电路的时钟电路和复位电路 lcd1602 显示 图 12 lcd1602 显示 1602 点阵字符液晶模块(lcm)引脚及功能 1 脚(vdd/vss):电源 5v10%或接地。 2 脚(vss/ vdd):接地或电源(50.5)v。 3 脚(vo):反视度调整。使用可变电阻调整,通常接地。 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):背光显示器接地。 五、实物效果图五、实物效果图 图 13 实物效果图 电气与电子信息工程学院 单片机课设设计 六、心得体会六、心得体会 两周的时间,终于顺利完成了单片机的课程设计。由于自己对单片机编程还不 是很熟悉,结果在设计的时候遇到了一系列问题,程序总是调试部处理,不过还好, 最后在同学的帮助下终于把程序调试出来了,虽然程序设计实现的功能与老师要求 的不尽相同,不过勉强还算可以。从这里我知道了基本知识的重要性。其实进行程 序设计的时候主要是对各功能模块的把握。计算器里面最难的一部分是矩阵键盘的 扫描和编码,那个费了很大力气。 另外一点就是硬件焊接调试部分。焊接的时候到时轻松,一个下午就焊接好了, 然后是调试部分。调试花费的时间还是比较长的。不过有了上个学期数字电路焊接 调试的经验,这次单片机调试还算是比较顺利。我也是从电路板的正负电源检测起, 一步一步来,最终得到了想要的结果。调试的时候主要遇到了两个问题。一个是键 盘总是没有反应,为了这个自己调试了很久,前前后后把电路板检查了几次,最后 才发现是键盘本身的问题,和同学们换了个好键盘才行。另一个问题是总是显示不 出来 1、4、7 这三个数字。检测来检测去,发现来是在测试最小系统时在一个位选 端接了高电平,对位选信号产生了影响。当把那个高电平去掉后,终于得到了正确 的结果。 总的来说这次课程设计达到了完成了基本任务,达到了基本要求。通过亲身对 程序设计和电路焊接调试的体会,自己对单片机有了进一步的了解,单片机编程能 力也得到了提高。电路板的焊接与调试,使自己电路调试的方法和思想进一步加强 了。这次单片机课程设计应该说是比较成功的。 七、参考文献七、参考文献 1 李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,1998 2 李广弟.单片机基础.北京:北京航空航天大学出版社,1994 3 阎石.数字电子技术基础(第三版). 北京:高等教育出版社,1989 4 廖常初.现场总线概述j.电工技术,1999. 八、附录八、附录 1.1. 系统程序系统程序 #include #define uchar unsigned char #define uint unsigned int sbit 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,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;x0;x-) for(y=110;y0;y-); void keyscan() uchar temp; p2=0xfe; temp=p2; temp=temp while(temp!=0xf0) delay(5); temp=p2; temp=temp 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 /*当按下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; /如果按了符号键,符号后的数值为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 while(temp!=0xf0) delay(5); temp=p2; temp=temp 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 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_dat(0x30+i); p2=0xfb; temp=p2; temp=temp while(temp!=0xf0) delay(5); temp=p2; temp=temp 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 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=table1num; write_dat(0x30+i); p2=0xf7; temp=p2; temp=temp while(temp!=0xf0) delay(5); temp=p2; temp=temp 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=p2; temp=temp 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; 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); write_com(0x04); c=a*b; while(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=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新型传感技术及应用 课件 第四部分:敏感结构的建模
- 2025年湖南省益阳市中考一模历史试题(原卷版+解析版)
- 生物动物体细胞核移植技术和克隆动物课件-2024-2025学年高二下学期生物人教版选择性必修3
- 绿色林业创新路径
- 2025年个人住宅装修合同范本
- 2025茶叶收购合同范本
- 2025网络安全协议合同书
- 2025石油化工管道工程监理安全环保合同
- 康乐园休闲会所创业计划书
- 2025网约车平台服务合同范本
- 四川省乐山市(2024年-2025年小学六年级语文)部编版阶段练习(下学期)试卷及答案
- 2024年西式面点师技师考试试题库附答案
- 外国教育史知到智慧树章节测试课后答案2024年秋山东师范大学
- CSSD医院感染预防与控制课件
- 社区创建消防安全示范社区方案样本(4篇)
- 甲醇合成工段设计
- 工业自动化设备维护保养操作手册
- 人教版语文六年级下册《第五单元》大单元整体教学设计2022课标
- 【基于Django框架的网上商城设计(论文)6800字】
- 2024年保安员业务知识考试复习题库及答案(共1000题)
- 公路水泥混凝土路面施工技术规范(JTGF30-2024)
评论
0/150
提交评论