基于51单片机的lcd1602液晶显示的计算器可编辑.docx

上传人:b****0 文档编号:668310 上传时间:2022-10-11 格式:DOCX 页数:11 大小:32.72KB
下载 相关 举报
基于51单片机的lcd1602液晶显示的计算器可编辑.docx_第1页
第1页 / 共11页
基于51单片机的lcd1602液晶显示的计算器可编辑.docx_第2页
第2页 / 共11页
基于51单片机的lcd1602液晶显示的计算器可编辑.docx_第3页
第3页 / 共11页
基于51单片机的lcd1602液晶显示的计算器可编辑.docx_第4页
第4页 / 共11页
基于51单片机的lcd1602液晶显示的计算器可编辑.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

基于51单片机的lcd1602液晶显示的计算器可编辑.docx

《基于51单片机的lcd1602液晶显示的计算器可编辑.docx》由会员分享,可在线阅读,更多相关《基于51单片机的lcd1602液晶显示的计算器可编辑.docx(11页珍藏版)》请在冰豆网上搜索。

基于51单片机的lcd1602液晶显示的计算器可编辑.docx

基于51单片机的lcd1602液晶显示的计算器可编辑

基于51单片机的lcd_1602液晶显示的计算器

 

基于51单片机的lcd1602液晶显示的计算器

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

阿斌独家制作:

计算器,1602液晶显示可计算10以下数加减乘除可连续运算,最大显示结果数值65536

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

键盘设置:

液晶初始显示:

运算显示:

主程序:

#include

#include

#defineuintunsignedint

#defineucharunsignedchar

sbitlcdenP2^2;

sbitlcdrwP2^1;

sbitlcdrsP2^0;

ucharnum,temp,jia0,jian0,cheng0,chu0,qing0;

uintkey,key1,shu;

ucharfuhao,flag1,flag0;

uchartable[]

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x0;

voiddelayuintz

uintx,y;

forxz;x0;x--

fory110;y0;y--;

bitlcd_bz

bitresult;

lcdrs0;

lcdrw1;

lcden1;

_nop_;

_nop_;

_nop_;

_nop_;

resultbitP0&0x80;lcden0;

returnresult;

voidwrite_comucharcom

whilelcd_bz;

lcdrs0;

lcden0;

lcdrw0;

P0com;

delay5;

lcden1;

delay5;

lcden0;

voidwrite_dateuchardate

whilelcd_bz;

lcdrs1;

lcden0;

lcdrw0;

P0date;

delay5;

lcden1;

delay5;

lcden0;

voidlcd_init

lcden0;write_com0x38;

write_com0x0c;

write_com0x06;

write_com0x01;

voidkeyscan

P30xfe;

tempP3;

temptemp&0xf0;

whiletemp!

0xf0

delay5;

tempP3;

temptemp&0xf0;

whiletemp!

0xf0

tempP3;

switchtemp

case0xee:

key1;num0;break;

case0xde:

key2;num0;break;

case0xbe:

key3;num0;break;

case0x7e:

num1;break;//加号

whiletemp!

0xf0

tempP3;

temptemp&0xf0;

P30xfd;

tempP3;

temptemp&0xf0;

whiletemp!

0xf0

delay5;

tempP3;

temptemp&0xf0;

whiletemp!

0xf0

tempP3;

switchtemp

case0xed:

key4;num0;break;

case0xdd:

key5;num0;break;

case0xbd:

key6;num0;break;

case0x7d:

num2;break;//减号

whiletemp!

0xf0

tempP3;

temptemp&0xf0;

P30xfb;

tempP3;

temptemp&0xf0;

whiletemp!

0xf0

delay5;

tempP3;

temptemp&0xf0;

whiletemp!

0xf0

tempP3;

switchtemp

case0xeb:

key7;num0;break;

case0xdb:

key8;num0;break;

case0xbb:

key9;num0;break;

case0x7b:

num3;break;//乘号

whiletemp!

0xf0

tempP3;

temptemp&0xf0;

P30xf7;

tempP3;

temptemp&0xf0;

whiletemp!

0xf0

delay5;

tempP3;

temptemp&0xf0;

whiletemp!

0xf0

tempP3;

switchtemp

case0xe7:

key0;num0;break;

case0xd7:

num6;break;//清除

case0xb7:

num5;break;//等于号

case0x77:

num4;break;//除号

whiletemp!

0xf0

tempP3;

temptemp&0xf0;

voiddisplay0uintshu

uintge;

geshu;

write_date0x30+ge;

voiddisplay1uintshu

uintshi,ge;

shishu/10;

geshu%10;

write_date0x30+shi;

write_date0x30+ge;

voiddisplay2uintshu

uintbai,shi,ge;

baishu/100;

shishu%100/10;

geshu%10;

write_date0x30+bai;

write_date0x30+shi;

write_date0x30+ge;

voiddisplay3uintshu

uintqian,bai,shi,ge;

qianshu/1000;

baishu%1000/100;

shishu%100/10;

geshu%10;write_date0x30+qian;

write_date0x30+bai;

write_date0x30+shi;

write_date0x30+ge;

voiddisplay4uintshu

uintwan,qian,bai,shi,ge;

wanshu/10000;

qianshu%10000/1000;

baishu%1000/100;

shishu%100/10;

geshu%10;write_date0x30+wan;

write_date0x30+qian;

write_date0x30+bai;

write_date0x30+shi;

write_date0x30+ge;

voiddisplay_key1uintresult

ifflag11

write_com0x01;

flag10;

shuresult;

write_com0x80;

ifresult10

display0result;

ifresult10&&result100

display1result;

ifresult100&&result1000

display2result;

ifresult1000&&result10000

display3result;

ifresult10000

display4result;

voiddis_keyresult

ifresult10

display0result;

ifresult10&&result100

display1result;

ifresult100&&result1000

display2result;

ifresult1000&&result10000

display3result;

ifresult10000

display4result;

voiddisplay_keyuintresult

ifshu10

write_com0x80+2;

dis_keyresult;

ifshu10&&shu100

write_com0x80+3;

dis_keyresult;

ifshu100&&shu1000

write_com0x80+4;

dis_keyresult;

ifshu1000&&shu10000

write_com0x80+5;

dis_keyresult;

ifshu10000

write_com0x80+6;

dis_keyresult;

voiddisplay_fuhao

switchfuhao

case1:

write_date0x2b;break;

case2:

write_date0x2d;break;

case3:

write_date0x2a;break;

case4:

write_date0x2f;break;

fuhao0;

voidfuhao_pan

ifflag11

flag10;

write_com0x01;

write_com0x80+1;

display_fuhao;

ifshu10

write_com0x80+1;

ifshu10&&shu100

write_com0x80+2;

ifshu100&&shu1000

write_com0x80+3;

ifshu1000&&shu10000

write_com0x80+4;

ifshu10000

write_com0x80+5;

display_fuhao;

flag1;

voidfuhao_deng

write_com0x80+0x40;

write_date0x3d;

flag11;

flag0;

voiddisplay_resultuintresult

write_com0x80+0x40+1;

ifresult10

display0result;

ifresult10&&result100

display1result;

ifresult100&&result1000

display2result;

ifresult1000&&result10000

display3result;

ifresult10000

display4result;

voidjia1

jia1;

jianchengchuqing0;

key1key;

fuhao1;

fuhao_pan;

voidjian1

jian1;

jiachengchuqing0;

key1key;

fuhao2;

fuhao_pan;

voidcheng1

cheng1;

jiajianchuqing0;

key1key;

fuhao3;

fuhao_pan;

voidchu1

chu1;

jiajianchengqing0;

key1key;

fuhao4;

fuhao_pan;

voidqing1

qing1;

jiajianchengchu0;

key1key0;

voiddeng1

ifjia

keykey1+key;

ifjian

keykey1-key;

ifcheng

keykey1*key;

ifchu

keykey1/key;

fuhao_deng;

display_resultkey;

jiajianchengchuqing0;

voiddeal

switchnum

case0:

switchflag

case0:

display_ke

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1