基于单片机的计算器课程设计报告

上传人:M****1 文档编号:490104580 上传时间:2022-07-21 格式:DOC 页数:21 大小:1.17MB
返回 下载 相关 举报
基于单片机的计算器课程设计报告_第1页
第1页 / 共21页
基于单片机的计算器课程设计报告_第2页
第2页 / 共21页
基于单片机的计算器课程设计报告_第3页
第3页 / 共21页
基于单片机的计算器课程设计报告_第4页
第4页 / 共21页
基于单片机的计算器课程设计报告_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《基于单片机的计算器课程设计报告》由会员分享,可在线阅读,更多相关《基于单片机的计算器课程设计报告(21页珍藏版)》请在金锄头文库上搜索。

1、昆明理工大学课程设计报告 设计名称: 单片机计算器课程设计 姓 名: 学 号: 2011118521XXX 专业班级: 测控技术与仪器 1111 院(系): 信息工程 设计时间: 2013年6月21日 设计地点: 昆明理工大学 德信楼 目录一、 题目二、 任务与要求三、 课程设计及整体方框图a.总体设计思路简述b.硬件设计简述c.软件设计简述d.程序主流程图四、 课程设计原理分析及相关知识概述五、 结论六、 体会与收获附件:1、 源程序代码(根据需要选择)2、整体电路原理图(根据需要选择)2、 元件表(根据需要选择) 3、实验操作(根据需要选择)一、题目使用单片机芯片AT89C51、LCD 1

2、602 液晶显示屏,用KEIL uVision与 porteus仿真软件实现简易计算器的仿真与调试。 设计制作一个计算器,KEYPAD 4*4键盘输入,用LCD显示计算数值及结果。二、任务与要求 要求计算器能实现加减乘除四种运算,具体如下:1. 加法:多位数加法,计算结果不超过8位则显示计算。2. 减法:多位整数减法,计算结果可以算小于零则显示计算。3. 乘法:多位整数乘法,计算结果若超过8位则显示计算 。4. 除法:整数除法,可以算出小数点3位。5. 有清除功能三、课程设计简述及整体方框图1.总体设计思路简述按照系统设计的功能的要求,初步确定设计系统由主控模块、显示模块、键扫描接口电路共三个

3、模块组成,电路系统构成框图如图1.1所示。主控芯片使用AT89C51单片机, 功能更强,由先进工艺制造,并带有非易失性Flash程序存储器。它是一种高性能、低功耗的8位COMS微处理芯片,市场应用最多。键盘电路采用4*4矩阵键盘电路。显示模块采用1枚LCD 1602 与RES-V构成器件构成。2硬件设计简述 单片机最小系统就是支持主芯片正常工作的最小电路部分,包括运算器.控制器.存储器,输入输出设备构成.主控芯片选取AT89C51芯片,因其具有良好的性能及稳定性,价格便宜应用方便。晶振选取11.0592MHz,晶振旁电容选取22pF。采用按键清零电路, KEYPAD 4*4 C.键盘接口电路

4、计算器所需按键有: 数字键:1,2,3,4,5,6,7,8,9,0 功能键:+, - , *, / , = , C( 清零)共计16个按键,采用4*4矩阵键盘,键盘的行和列之间都有公共端相连,四行和四列的8个公共端分别接P3.0P3.7,这样扫描P3口就可以完成对矩阵键盘的扫描,通过对16个按键进行编码,从而得到键盘的口地址,对比P3口的扫描结果和各按键的地址,我们就可以得到是哪个键按下,从而完成键盘扫描的功能。 LCD显示电路 采用LCD对计算数据和结果的显示,动态扫描。 为了实现LCD的动态显示,P0口输出显示值,通过P0口的二进制代码送到LCD进行显示。 3.软件设计简述键盘扫描子程序设

5、计 要进行数据的计算就必须先进行数据的输入,也就必须确定按键输入的数值是什么,这就需要对键盘进行扫描,从而确定究竟是哪个键按下。对于键盘的扫描,这里采用行列扫描的方法来完成对键盘的扫描。原理就是先确定按键在哪一行,接着再确定是哪一列,这样就可以知道是哪个按键被按下了。我是将P3口作为按键扫描口的,比如开始先给P3口设置,每个按键都会有一个对应的十六进制值,我把它们列出来进行一一对应就行了,下面是扫描按键图。 以下为键盘扫描子程序的程序清单。uchar code table=7,8,9,0,4,5,6,0,1,2,3,0,0,0,0,0;uchar code table1=7,8,9,0x2f-

6、0x30,4,5,6,0x2a-0x30,1,2,3,0x2d-0x30,0x01-0x30,0,0x3d-0x30,0x2b-0x30;LCD显示电路采用 LCD 1602对计算数据和结果的显示, P0口进行输出显示,D0D7 口接P0.0P0.7口,RW 接P2.0,RS 接P2.4,E 接P2.3. void delay(uchar z) / 延迟函数uchar y;for(z;z0;z-) for(y=0;y110;y+);void check() / 判断忙或空闲do P0=0xFF; rs=0; /指令 rw=1; /读 lcden=0; /禁止读写 delay(1); /等待,液

7、晶显示器处理数据 lcden=1; /允许读写 while(busy=1); /判断是否为空闲,1为忙,0为空闲void write_com(uchar com) / 写指令函数P0=com; /com指令付给P0口rs=0;rw=0;lcden=0;check();lcden=1;void write_date(uchar date) / 写数据函数 P0=date;rs=1;rw=0;lcden=0;check();lcden=1;void init() /初始化 num=-1;lcden=1; /使能信号为高电平write_com(0x38); /8位,1行write_com(0x0c)

8、; /显示开,光标关,不闪烁*/write_com(0x06); /增量方式不移位 显竟獗暌贫 柚?write_com(0x80); /检测忙信号write_com(0x01); /显示开,光标关,不闪烁num_1=0;i=0;j=0;a=0; /第一个参与运算的数b=0; /第二个参与运算的数c=0;flag=0; /flag表示是否有符号键按下, fuhao=0; / fuhao表征按下的是哪个符号除法子程序设计除法的运算,可以显示小数点3位。 write_com(0x04); i=0; c=(long)(float)a/b)*1000); while(c!=0) write_date(0

9、x30+c%10); c=c/10; i+; if(i=3) write_date(0x2e); if(a/b=0) write_date(0x30); write_date(0x3d); a=0;b=0;flag=0;fuhao=0; break;主程序见附录1 4.程序主框图 主程序流程四、课程设计原理分析及相关知识概述 本次课程设计用的 AT89C51具有速度快、功耗低、抗干扰强的特点,有多种I/O端口模式。Vcc=5v五、结论完成硬件和软件的设计和制作后,进行系统的调试,并处理不断出现的问题。对于计算器的性能,主要的衡量指标就在于计算的精度,本次制作的计算器性能情况如下:a.加法运算:

10、8位整数加法运算,和值不超过99999,若超过上限,则显示错误提示。b.减法运算:4位正整数减法运算, 结果为正或负。 c.乘法运算:积不超过999999的整数乘法运算,若超出上限,显示错误提示。d.除法运算:整数除法,既计算结果为可显示小数。六、体会与收获 单片机课程设计, 体会是单片机学的不够扎实,不会的很多啊,当然这次的课程设计做计算器程序用的是c语言,不是课上初学的汇编,所以很难适应,尽管大家都知道汇编编这个程序也很困难,但还是互相学习,到处找资料看,问同学,所以我的软件主程序才能编译成功,系统才能调试出结果。很感谢那些热心教导我的同学和指导我的老师。 在软件方面,感觉困难更多一些,一

11、开始真的很着急,毫无头绪啊,一时间,百度,论坛,贴吧逛了个遍,找了很多资料,也参考了同学的程序,其中每一个子程序模块都认真去读,去分析,化为己用,最重要的按键扫描和显示程序,还有包括加减乘除的运算程序,还了解了c语言在单片机编程中的一些特点,包括函数的声明和调用等等。而且在用uvison编译的时候出了很多问题,其中一个就是关于头文件的,要加上“#include ”,不仅如此,还要将有关 的文件覆盖在uvison安装路径下,这样头文件才有效啊,所以,一开始找不出问题所在,极其郁闷。但是总的来说,软件设计能够把结果调出来还是很激动的, 同时,我们还亲自动手试验箱进行操作,在老师的帮助下得以突破,完美的结束了实训。附录1 程序源代码#include /头文件#define uint unsigned int / #define uchar unsigned charsbit lcden=

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号