51单片机矩阵键盘计算器

51单片机矩阵键盘计算器

/**********413暑假作品*********12864液晶显示屏,结合4*4矩阵键盘,简易计算器*,存储地址:STC-hex2 , LCD12864.c *************************************/

/***功能:1、基本整数的加减乘除; 2、有清除功能;3、除法计算,结果保留两位小数;4、分母为0报错********/

/*********5、小数减大数可显示负号;6、只能做两个数的加减乘除;7、可做10位数的有效运算***********************************/

/******注意:计算结果要求余显示,比如正确结果123,求余显示321,所以将321逐个赋给某一数组,倒序向12864输出**/

#include

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

sbit rs=P3^7;

sbit rw=P3^6;

sbit e=P3^5;

sbit psb=P3^4; //串并选择,H=串 L=并,此程序让12864并行输出

bit flag1=0; //数字标记位

bit flag11=0; // +标记位

bit flag12=0; // —标记位

bit flag13=0; // *标记位

bit flag14=0; // /标记位

bit flag15=0; // =标记位

bit flag16=0; //清除位

bit flag2=0; // 负号标记

bit flag3=0; // 分子小于分母,结果只有两位有效数字时,扩大100倍有两位有效数字

bit flag4=0; //分子小于分母,结果只有一位效数字时,扩大100倍有1位有效数字

void init(); //初始化16824子函数

void write_com(uchar); //写命令

void write_dat(uchar); //写数据,即显示内容

void display1(uchar); //显示字符

void delete(); //清除显示

void delay(uint); //延时

void keyscan(); //键盘扫描

void scan(); //扫描运算符,设定两个数计算

void display_value(); // 计算结果显示

void value(); // 计算

void begin(); //开机屏幕显示

void math_error(); //数学错误显示

uchar code table1[]="0123456789.+-*/=";

uchar code table3[]="welcome to";

uchar code table4[]=" 51 calculator" ;

uchar code table5[]="math error";

long table2[19]; //存储结果的数组,20就出错?

long s,a,b,num1; //s为计算结果,a为第一个数,b为第二个数,num1对应为键对应的值为显12864显示服务

/***********************************主**函**数***********************************************************/

void main()

{

init();

delay(5);

begin(); //开机初始化

delay(5);

write_com(0x80);//输入数在第一行显示

while(1) //大循环使其不断的显示

{

keyscan();

scan();

value();

display_value();

delete();

}

}

/***********初始化********************************/

void init()

{

psb=1; //并口传输方式

delay(50); //先等待50个毫秒

write_com(0x30); //基本操作指令

delay(5);

write_com(0x0e); //显示状态开/关,08什么也没有;0c无光标;0

c51单片机矩阵键盘1602计算器_51单片机矩阵键盘计算器.doc相关推荐

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

    2014级单片机原理与应用 课程设计报告 课题名称 4位数加法计算器的设计 一.设计任务及要求: 设计任务: 1.通过4*4矩阵键盘输入数字及运算符: 2.可以进行4位十进制数以内的加法预算.如果计算 ...

  2. 51单片机如何跳出wile循环_51单片机(九)汇编指令

    1 往期链接 Chenglin Li:51单片机(一)Visual Basic串口通信程序 Chenglin Li:51单片机(二)汇编语言设计流水灯 Chenglin Li:51单片机(三)汇编语言 ...

  3. 单片机加减法计算器_51单片机简易计算器程序 实现数字的加减乘除运算

    单片机源程序如下: #include //头文件 #define uint unsigned int #define uchar unsigned char sbit lcden=P1^1; //LC ...

  4. c51为啥要宏定义时钟_51单片机时钟实训报告

    时.分.秒计时器设计 一.任务及要求 用 51 单片机设计时.分.秒计时器,具体要求如下. 1 . 具有时.分.秒计时功能和 8 位数码管显示功能,显示格式为: "时-分-秒" : ...

  5. 51单片机基本刷屏测试实验_51单片机开发基础8——实时时钟实验

    8.1 实时时钟简介 RTC(Real Time Clock),是实时时钟的缩写,实时时钟是日常生活中应用最为广泛的功能.它为人们提供精确的实时时间,或者为电子系统提供精确的时间基准,目前实时时钟芯片 ...

  6. 51单片机怎么显示当前时间_51单片机玩转物联网基础篇06-LCD1602液晶显示器

    前言 本节我们开始学习LCD1602,LCD1602是字符型液晶显示屏,在实际项目中应用非常广泛,学完本节就可以逐步开发一些好玩的应用了. 一.基础知识 1.LCD1602简介 LCD1602是字符型 ...

  7. 51单片机如何跳出wile循环_51单片机C语言程序100例分析(4)外设

    和我预想的一致,接下来该涉及外设了! /******************************************************** *********数码管显示*****数码管显 ...

  8. 51单片机怎么显示当前时间_51单片机LM016L液晶显示实例

    先上仿真图,图比较简单,一个51单片机最小系统,加上一个LM016L液晶显示器,需要注意的是,实际的LM016L芯片内部有上拉电阻,但是仿真中是没有的,如果用P0口传输数据的话,需要给P0口接上拉电阻 ...

  9. 51单片机怎么显示当前时间_51单片机时钟电路图怎么设计?这7个时钟汇聚了所有,看看...

    01 在MCS-51单片机片内有一个高增益的反相放大器,反相放大器的输入端为XTAL1,输出端为XTAL2,由该放大器构成的振荡电路和时钟电路一起构成了单片机的时钟方式.根据硬件电路的不同,单片机的时 ...

最新文章

  1. java futher多线程_Java多线程系列--“JUC集合”05之 ConcurrentSkipListMap
  2. 未定义标识符 stringc/c++(20)_20款奔驰G63AMG霸气颜值 运动造型
  3. 三层架构实战篇—系统登录实例
  4. 删除归档日志_ORA-00257:archiver error.Connect internal only, until freed的问题
  5. jq php异步上传图片,PHP+Ajax实现图片异步上传预览
  6. 如何用Netty实现一个轻量级的HTTP代理服务器
  7. Linux 练习题-3文件与磁盘 问答
  8. 376. 摆动序列 golang
  9. java 8 biconsumcr_java8新特性
  10. String的底层分析 (学习笔记)
  11. java拯救苹果代码_java swing游戏编程高仿金山打字教程-拯救苹果
  12. Android gif 动画
  13. Infortrend 荣登“2019年十大云解决方案提供商”行列
  14. 考研政治——马克思原理之认知规律
  15. dd linux 格式化u盘启动盘_Ubuntu使用dd命令制作U盘系统启动盘
  16. 算法的力量 ——李开复
  17. 全新的 SHA-3 加密标准 —— Keccak
  18. Leet Code OJ 91. Decode Ways [Difficulty: Medium]
  19. 详解HTTP协议和HTTPS协议
  20. 解决Maya与输入法切换快捷键冲突问题Ctrl+Backspace

热门文章

  1. 利用jQuery插件扩展识别浏览器内核与外壳的类型和版本
  2. 华硕系列笔记本命名规则以及各型号的差别特点
  3. linux下的百度云客户端
  4. boilsoft video splitter破解版|boilsoft video splitter 7.02.2绿色破解版下载
  5. 如何利用GitHub Pages免费搭建个人网站以及绑定自己的域名
  6. UBNT RdgeRouter-X ipv6相关设置
  7. 网站性能优化时Cookie常用的优化方式
  8. 7-123 空心字母金字塔
  9. python控制手机拨号_Appium+Python-模拟手机按键操作
  10. 画论45 李开先《中麓画品》