单片机加减法计算器_51单片机之4位数加法计算器的设计报告

这是一份关于2014级单片机原理与应用课程设计的报告,任务是设计一个4位数加法计算器。设计内容包括通过4*4矩阵键盘输入数字和运算符,进行4位十进制加法运算,结果显示在LCD1602屏幕上。报告详细介绍了系统设计、硬件电路设计、程序流程图和C语言程序设计,并进行了各种方案的比较与论证,如单片机、键盘、显示模块和蜂鸣器的选择。最终选择了AT89C52单片机,4*4矩阵键盘,LCD1602显示和有源蜂鸣器,实现了加减乘除运算及结果超限显示为'E'的功能。
摘要由CSDN通过智能技术生成

2014级单片机原理与应用

课程设计报告

课题名称 4位数加法计算器的设计

一、设计任务及要求:

设计任务:

1、通过4*4矩阵键盘输入数字及运算符;

2、可以进行4位十进制数以内的加法预算。如果计算结果超出四位数,则全部显示“E”;

3、可以进行加减乘除所有运算;

4、添加其他功能。

要 求:

首先进行预设计,根据设计的任务要求,先确定设计的硬件电路方案,然后进行硬件电路的初步设计,在计算机上画出硬件电路图,在老师的指导下进行修正硬件电路图,并对所涉及的参数进行计算。

在确定硬件的基础上,要进行软件的总体设计,包括软件主流程的设计以及各子程序的设计,同时,要写出详细的操作说明,如时间的调整方法,显示窗口的时间切换等,以配合软件的设计。

然后进入硬件的调试及编程工作,设计组内的同学可根据任务分工,有调试硬件各功能模块的,如键盘子程序、显示子程序等,有进行整体程序的编制的,各模块的编制过程中要注意资源的衔接。

最后进入联机调试,联机调试的原则也要采用分步走的原则,各个功能模块要逐步套入,通过一个再增加一项功能,从而达到设计的总体要求,不要上来编制个最大的程序,最后无法查找错误。

最后写出设计报告。

目    录

一、 绪 言1

二、系统设计1

2.1设计任务1

2.2方案比较与论证1

2.2.1系统整体流程图2

2.2.2单片机的选择方案论证2

2.2.3键盘选择方案论证2

2.2.4显示模块的选择方案论证2

2.2.5蜂鸣器的选择方案论证2

三、硬件电路设计2

3.1计算器的控制电路图2

3.2矩阵键盘的设计3

3.3 LCD1602显示电路的设计3

3.4蜂鸣器驱动电路的设计4

3.5主要元器件选择4

四、程序流程图5

五、c语言程序设计5

六、计算器的仿真19

6.1 Keil调试19

6.2 Proteus调试19

7、结束语20

参考文献21

一、绪 言

近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。 电子时钟是现代社会中的主要计时工具之一,广泛应用于手机,电脑,汽车等社会生活需要的各个方面,及对时间有要求的场合。本设计采用AT89C52单片机作为主要核心部件,附以上电复位电路,时钟电路及按键调时电路组成。数字钟已成为人们日常生活中: 必不可少的必需品, 广泛用于个人家庭以及车站、 码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。 由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性 能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。二、系统设计2.1 设计任务

1、通过4*4矩阵键盘输入数字及运算符;

2、可以进行4位十进制数以内的加法预算。如果计算结果超出四位数,则全部显示“E”;

3、可以进行加减乘除所有运算;

4、添加其他功能。2.2 方案比较与论证

2.2.1 系统整体流程图

图1 系统整体流程图

2.2.2计算器的控制方案论证

用4*4的矩阵键盘组成0-9数字键及加、减、乘、除、等于、清零按键,LCD屏幕实时显示输入的数字和运算符号,每按下一个按键都有蜂鸣器发出的响声。从矩阵键盘输入一个数字,选择运算符,再输入一个数字࿰

  • 2
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目一:简单计算器 1.实验题目:用51单片机实现简单的计算器功能 2.实验截图: 1).实验运行前截图: 2).实验运行后截图: 3.实验代码: #include<reg52.h> #include<intrins.h> #include<math.h> #include<defined.H> #include<LCD1602.h> unsigned char table1[16]; //1602第一行显示字符 unsigned char table2[16]; //1602第二行显示字符 unsigned char code table_error[] = "error"; /* 键扫描函数 */ unsigned char keyscan() //扫描键盘函数 { unsigned char key_l,key_h,addres,num; P0=0x0f; key_l=P0; P0=0xf0; key_h=P0; addres=key_l " key_h; if(addres!=0xff) { Delayms(1); if(addres!=0xff) { P0=0x0f; key_l=P0; P0=0xf0; key_h=P0; addres=key_l " key_h; switch(addres) { case 0xee:num='1';break; case 0xde:num='2';break; case 0xbe:num='3';break; case 0xed:num='4';break; case 0xdd:num='5';break; case 0xbd:num='6';break; case 0xeb:num='7';break; case 0xdb:num='8';break; case 0xbb:num='9';break; case 0xd7:num='0';break;//按键0 case 0xe7:num='C';break;//按键* case 0xb7:num='=';break;//按键# case 0x7e:num='/';break;//按键A case 0x7d:num='*';break;//按键B case 0x7b:num='-';break;//按键C case 0x77:num='+';break;//按键D } while(addres!=0xff) { P0=0x0f; key_l=P0; P0=0xf0; key_h=P0; addres=key_l " key_h; } return num; } } return 0; } void clear_lcd(void) //清屏 { unsigned char j; for(j=0;j<16;j++) { table1[j]='\0'; table2[j]='\0'; } } void main() { unsigned char i=0,j; unsigned char key; unsigned char flag_operator = 0; //加减乘除标志位 unsigned char flag_equ = 0; //等于标志位 unsigned char flag_key = 0; //运算位标志 bit flag_MaxValue = 0; bit flag_minus = 0;//负数 long int value = 0; //最终运算结果 unsigned long int value_H =0; //第一个数据 unsigned long int value_L = 0; //第二个数据 unsigned long int temp[]={1, 10, 100,1000,10000,100000,1000000,10000000,100000000}; Initialize_LCD(); while(1) { key=keyscan(); if(key != 0) { if(key == 'C') //清除键C按下 { clear_lcd(); i=0; flag_operator = 0; flag_equ = 0; value = 0; value_H =0; value_L = 0; flag_key = 0; flag_minus=0; } else { for(j=0; j<i; j++) { table1[15-i+j] = table1[15-i+j+1]; } table1[15] = key; //table1[i] = key; i++; } if(key == '=') { for(j=0; j<16; j++) //确定运算符位置 { if(table1[j] == '='

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值