一、简介
此电路由AT89C51最小系统、LCD1602液晶显示模块和矩阵键盘模块组成。
二、执行效果
三、部分代码
/* S16 S12 S8 S4分别是123+
S15 S11 S7 S3分别是456-
S14 S10 S6 S2分别是789*
S13 S9 S5 S1分别是0 CLR = /
*/
/*想要更多项目私wo!!!*/
/* 实现两个数的运算,每个数的位数至少可以八位 */
#include #include"lcd.h" typedef unsigned char uint8; typedef unsigned int uint16; sbit led=P3^7; sbit beep=P2^0; uint8 key,num; uint8 fuhao;//定义具体的那个符号,是加减还是乘除。 uint8 flag; //定义有没有按下符号键,这个是统称 long a,b,c,d; //定义运算数据的第一个和第二个及等于的数变量 uint8 k; //定义小数点后面显示的位数 uint8 biao; void delay(uint16 i) { while(i--); } void keyscan() { P1=0xfe; //令第一行为0,然后判断是哪一列按下 if(P1!=0xfe) { delay(1000); if(P1!=0xfe) { key=P1&0xf0; switch(key) { case 0xe0: num=0;break; //1 case 0xd0: num=1;break; //2 case 0xb0: num=2;break; //3 case 0x70: num=3;break; //加 } } while(P1!=0xfe); if(num==0||num==1||num==2) //确认第一行的数1,2,3 { if(flag==0) //没有按下符号键 { //led=1; a=a*10+dat1[num]; } else { //led=1; b=b*10+dat1[num]; } } if(num==3) { //led=0; flag=1; fuhao=1;//加号+ } lcdwrd(0x30+dat1[num]); } P1=0xfd; //令第二行为0,判断是哪一列按下 if(P1!=0xfd) { delay(1000); if(P1!=0xfd) { key=P1&0xf0; switch(key) { case 0xe0: num=4;break; //4 case 0xd0: num=5;break; //5 case 0xb0: num=6;break; //6 case 0x70: num=7;break; //减— } } while(P1!=0xfd); if(num==4||num==5||num==6) { if(flag==0) //没有按下符号键 { //led=1; a=a*10+dat1[num]; } else { //led=1; b=b*10+dat1[num]; } } else { flag=1; fuhao=2;//带表减号 } lcdwrd(0x30+dat1[num]); } P1=0xfb; //令第三行为0,判断哪一列按下 if(P1!=0xfb) { delay(1000); if(P1!=0xfb) { key=P1&0xf0; switch(key) { case 0xe0: num=8;break; //7 case 0xd0: num=9;break; //8 case 0xb0: num=10;break; //9 case 0x70: num=11;break; //乘* } } while(P1!=0xfb); if(num==8||num==9||num==10) { if(flag==0) //没有按下符号键 { //led=1; a=a*10+dat1[num]; } else { //led=1; b=b*10+dat1[num]; } } else { flag=1; fuhao=3;//带表乘号* } lcdwrd(0x30+dat1[num]); } } void main() { lcdinit(); while(1) { keyscan(); } }
上一篇:单片机液晶滚动显示(AT89C51、LCD1602)
下一篇:单片机万年历(LCD12864、DS18B20、DS1302)
推荐阅读最新更新时间:2024-11-03 04:31
设计资源 培训 开发板 精华推荐
- DC427B-A,使用 LTC1966CMS8 RMS 至 DC 转换器的演示板
- EVAL-LED-ICL8001G-BULB02,演示 LED 灯泡应用中的单级反激和 PFC 控制器 ICL8001G
- Windows hello转接板
- 基于DS18B20的数字温度计
- 宿舍开门底板 LDO方案
- 使用 Analog Devices 的 LT1110CS8 的参考设计
- LT1171HVCT、-10 至 -26/2.5A LCD 对比度电源的典型应用
- 联网 PWM 风扇调速模块
- EVAL-AD7851CB,用于伺服电机的 AD7851、14 位、333KSPS ADC 的评估板
- LTC7149EUFD 24V 输入至 -12V 输出、1MHz 降压稳压器的典型应用电路