c51单片机矩阵键盘1602计算器_基于单片机的计算器设计资料 矩阵键盘+LCD1602显示...

这是一个基于C51单片机的矩阵键盘和LCD1602显示器实现的计算器设计。用户可以进行基本的加、减、乘、除运算,结果显示在LCD1602上,最大运算值受限于9999。程序包括延时函数、LCD1602的初始化和操作,以及矩阵键盘的反转法扫描。
摘要由CSDN通过智能技术生成

//操作简介

// 按第一个数,再按'+-*/',再按'='显示出结果,然后按C清屏

// 加最大9999+9999=19998

// 减最大9999-0   =9999

// 乘最大9999*9999=99980001

// 除 1/9=0.1111 保留小数点后4位

#include

#define uint unsigned int

#define uchar unsigned char

//--------LCD1602-------------------

//P00-07==== D0-7

sbit rs=P2^5;        //指令or数据

sbit wela=P2^6;      //读or写

sbit lcden=P2^7;         //使能信号

//--------LCD1602-------------------

//--------KEY-----------------------

//P1口

//--------KEY-----------------------

uchar code table[]= "                ";

long  int data_a,data_b;         //第一个数和第二个数

long  int data_c;                        //计算结果

uchar dispaly[10];         //显示缓冲

//************************************************************************/

// 描述: 延时t us函数

//************************************************************************/

void LCD_Delay_us(unsigned int t)

{

while(t--);           //t=0,退出

}

//************************************************************************/

// 描述: 延时t ms函数

//************************************************************************/

void LCD_Delay_ms(unsigned int t)

{

unsigned int i,j;

for(i=0;i

for(j=0;j<113;j++)                     //执行113次循环

;

}

//************************************************************************/

// 描述: 1602液晶写指令

//************************************************************************/

void write_com(uchar com)            //1602液晶写指令

{

rs=0;                       //写指令

lcden=0;                    //使能1602

P0=com;                     //写入指令com

LCD_Delay_ms(1);            //延时1ms

lcden=1;                    //使能1602

LCD_Delay_ms(2);            //延时2ms

lcden=0;                        //使能1602

}

//************************************************************************/

// 描述:1602液晶写数据

//************************************************************************/

void write_date(uchar date) //1602液晶写数据

{

rs=1;                        //写数据

lcden=0;                     //使能1602

P0=date;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值