单片机技术课程设计报告简单计算器.doc_第1页
单片机技术课程设计报告简单计算器.doc_第2页
单片机技术课程设计报告简单计算器.doc_第3页
单片机技术课程设计报告简单计算器.doc_第4页
单片机技术课程设计报告简单计算器.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课设报告福建工程学院软件学院题 目: 简单的整形计算器班 级: 物联网2班姓 名: 孙建兴学 号: 3112113229指导老师: 郑旭丹日 期: 2013 年 12 月 24 日 目录1摘要32设计要求32.1功能需求32.2设计要求33硬件设计及描述53.1总体描述53.2系统总体框图63.3Proteus电路图63.4各部分硬件介绍64软件设计流程及描述94.1程序流程图94.2函数模块及功能95功能实现(功能介绍+照片)196心得体会197源程序201摘要通过本课程设计使学生进一步巩固单片机原理与技术的基本概念、理论,分析问题的基本方法;增强学生的软件编程实现能力和解决实际问题的能力,使学生能有效的将理论和实际紧密结合,拓展学生在工程实践方面的专业知识和相关技能。2设计要求分别对键盘输入检测模块;LCD显示模块;算术运算模块;并用Visio画系统方框图,keil与protues仿真分析其结果。2.1功能需求现实生活中人们熟知的计算器,其功能主要如下:(1)键盘输入;(2)数值显示;(3)加、减、乘、除四则运算。针对上述功能,计算器软件程序要完成以下模块的设计:(1)键盘输入检测模块;(2)LCD显示模块;(3)算术运算模块。2.2设计要求本系统选用AT89C51单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计,具体设计如下:(1)由于设计的计算器要进行四则运算,为了得到较好的显示效果,经综合分析后,最后采用LCD 显示数据和结果。(2)采用键盘输入方式,键盘包括数字键(09)、符号键(+、-、)、清除键(onc)和等号键(=),故只需要16 个按键即可。(3)在执行过程中,开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。3、主体设计部分:3.1系统总体框图图3.1 系统总体框图3.2、算术运算程序流程图: 图3.2 算术运算程序流程图3.3、系统总流程图: 图3.3 系统总流程图4、各部分硬件介绍(一)、总体硬件设计:本设计选用AT89C51单片机为主控单元; 显示部分:采用LCD静态显示;按键部分:采用4*4键盘;用LCD1602为4*4键盘扫描IC,读取输入的键值。总体设计效果如下图: 图4.41总体设计效果如下图(二)、LCD显示模块:本设计采用LCD液晶显示器来显示输出数据。通过D0-D7引脚向LCD写指令字或写数据以使LCD实现不同的功能或显示相应数据。 图4.42 LCD显示模块 (三)、排阻作用 第一个是为了加大传感器驱动电流。第二个只有在用p0口时才需要排阻作为上拉电阻 图4.43 排阻(四)、键盘接口电路:计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。矩阵键盘采用四条I/O 线作为行线,四条I/O 线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为44个。这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。矩阵键盘的工作原理:计算器的键盘布局如图1所示:一般有16个键组成,在单片机中正好可以用一个P口实现16个按键功能,这种形式在单片机系统中也最常用。图4.44矩阵键盘模块(五)、AT89C51简介 AT89C51是一种带4K 字节FLASH 存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位 微处理器,俗称 单片机。AT89C2051是一种带2K 字节闪存可编程可擦除 只读存储器的 单片机。 单片机的可擦除 只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失 存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁 存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51 单片机为很多 嵌入式控制系统提供了一种灵活性高且价廉的方案。图4.45AT89C51 功能说明:外部中断0调用函数,计时开始并实时显示定时计数器跳变的时间及按键的判断。5、功能实现(功能介绍+照片)5.1、加法功能: 图5.1加法功能5.2、减法功能: 图5.2减法功能5.3、乘法功能: 图5.3乘法功能5.4、除法功能: 图5.4除法功能6、心得体会通过本次课程设计让我更加了解了单片机各模块的功能,包括数码管显示,4*4键盘,独立按键。实验过程让我更加了解并进一步掌握了中断,定时计数,4*4键盘输入等程序编写。以及掌握了通过Proteus构造自己所需要的外围电路,进行仿真实验。通过此次课程设计,初步掌握了使单片机多个模块进行工作的原理和方法。7源程序#include#include#define int8 unsigned char#define int16 unsigned intsbit EN=P23; /LCD定义引脚sbit RS=P24;sbit RW=P20;sbit busy=P07; /矩阵键盘键值表 char code num= 7,8,9,*, 4,5,6,/, 1,2,3,-, c,0,=,+;char code num1=0,1,2,3,4,5,6,7,8,9;static char ckey; /当前按键字符long a,b;/前后两数 char flag;/是否有符号键按下char f;/判断按下的是什么符号键(+,-,*,/)long result;/运算结果static int16 c=0;/字符显示位置void delay_ms(int8 z); / 延迟函数void wait_busy();/忙等待void write_cmd(int8 cmd);/写指令void write_data(int8 dat);/写数据void Initialize_LCD(); /LCD1602 初始化void LCD_ShowString(int8 r, int8 c,int8 *str); /在指定位置显示字符串void keyboard();/键盘按键扫描void digit_a();/加减乘除处理void digit_b();/a和b运算的结果在1602上显示void digit_c();/把输入的数存入到a和b/-/名称:lcd1602液晶屏控制与显示程序/-/-/延时void delay_ms(int8 z) / 延迟函数int8 y;for(z;z0;z-)for(y=0;y110;y+); /-/忙等待void wait_busy() do P0=0XFF; RS=0; RW=1; EN=0; delay_ms(1); EN=1; while(busy=1);/-/写指令/-void write_cmd(int8 cmd) P0=cmd; RS=0; RW=0; EN=0; wait_busy(); EN=1; /-/写数据/-void write_data(int8 dat) P0=dat; RS=1; RW=0; EN=0; wait_busy(); EN=1; /-/LCD1602 初始化/-void Initialize_LCD() write_cmd(0x38); write_cmd(0x0c); write_cmd(0x06); write_cmd(0x80); write_cmd(0x01); a=0;b=0; flag=0; result=0; c=0; ckey=0;/-/在指定位置显示字符串/-void LCD_ShowString(int8 r, int8 c,int8 *str) int8 i=0; code int8 DDRAM=0X80,0XC0; write_cmd(DDRAMr | c); for(i=0;stri & i16;i+) write_data(stri); for(;i15) c=0; void digit_c()/把输入的数存入到a和b if(flag=0) a=ckey+a*10; else b=ckey+b*10; /-/ 数据处理/-void digit_a()/加减乘除处理 switch(f) case 0: result=a*b; digit_b();break;case 1:result=a/b; digit_b();break; case 2:result=a-b; digit_b();break; case 3:result=a+b;digit_b();break; case 4: Initialize_LCD(); break;default:break; void digit_b()/a和b运算的结果在1602上显示 int8 i=0,j=0,k; long r; r=result; while(0!=result) result/=10; i+;if(result=0)write_cmd(0x80+0x4f); write_data(num10);for(;ji;j+) k=r/10; r%=10; write_cmd(0x80+0x4f-j); write_data(num1r); r=k; writ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论