日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单片机四位数加减计算机程序,51单片机简易计算器程序 实现数字的加减乘除运算...

發布時間:2025/3/11 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单片机四位数加减计算机程序,51单片机简易计算器程序 实现数字的加减乘除运算... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

//頭文件

#define uint unsigned int

#define uchar unsigned char

sbit lcden=P1^1; //LCD1602控制引腳

sbit rs=P1^0;

sbit rw=P1^2;

sbit busy=P0^7;//LCD忙

char i,j,temp,num,num_1;

long a,b,c;? ? ?//a,第一個數 b,第二個數 c,得數

float a_c,b_c;

uchar flag,fuhao;//flag表示是否有運算符鍵按下,fuhao表征按下的是哪個運算符

//flag=1表示運算符鍵按下,flag=0表示運算符鍵沒有按下;

//fuhao=1為加法,fuhao=2為減法,fuhao=3為乘法,fuhao=4為除法。

uchar code table[]={//運算數字輸入數組

7,8,9,0,

4,5,6,0,

1,2,3,0,

0,0,0,0};

uchar code table1[]={? ? ? ? //經處理后進行鍵輸入顯示準備的數組

7,8,9,0x2f-0x30,? ? ? ? //7,8,9,÷

4,5,6,0x2a-0x30,? ? ? ? //4, 5, 6,×

1,2,3,0x2d-0x30,? ? ? ? //1, 2, 3,-

0x01-0x30,0,0x3d-0x30,0x2b-0x30//C,0,=,+

};

void delay(uchar z) // 延遲函數

{

uchar y;

for(z;z>0;z--)

for(y=0;y<110;y++);

}

void write_com(uchar com) // 寫指令函數

{

rs=0;

P0=com;? ? //com指令付給P0口

delay(5);lcden=1;delay(5); lcden=0;

}

void write_date(uchar date) // 寫數據函數

{

rs=1; P0=date; delay(5);

lcden=1; delay(5); lcden=0;

}

void init() //初始化

{

num=-1;

lcden=1; //使能信號為高電平

rw=0;

write_com(0x38); //8位,2行

delay(5); write_com(0x38); //8位,2行

delay(5); write_com(0x0c); //顯示開,光標關,不閃爍*/

delay(1); write_com(0x06); //增量方式不移位 顯竟獗暌貧 柚?

delay(1); write_com(0x80); //檢測忙信號

delay(1); write_com(0x01); //顯示開,光標關,不閃爍

num_1=0;

i=0; j=0;

a=0;? ? ?//第一個參與運算的數

b=0;? ? ?//第二個參與運算的數

c=0;

flag=0; //flag表示是否有符號鍵按下,

fuhao=0; // fuhao表征按下的是哪個符號

}

void keyscan() // 鍵盤掃描程序

{

P2=0xfe;

if(P2!=0xfe)

{

delay(20);// 延遲20ms

if(P2!=0xfe) {? temp=P2&0xf0;

switch(temp)

{

case 0xe0:num=0;? ?break;? ? ? ? //7

case 0xd0:num=1;? ?break;? ? ? ? ?//8

case 0xb0:num=2;? ?break;? ? ? ? //9

case 0x70:num=3;? ?break;? ? ? ? //÷

}

}? ?while(P2!=0xfe);

if(num==0||num==1||num==2)//如果按下的是'7','8'或'9

{

if(j!=0){write_com(0x01); j=0;? }

if(flag==0)//沒有按過運算符鍵

{ a=a*10+table[num];? ? } //按下數字存儲到a

else//如果按過運算符鍵

{? ? b=b*10+table[num];? ?}//按下數字存儲到b

}

else//如果按下的是'/'? ? ? ? ? ? 除法

{

flag=1;? ? ? ? ?//按下運算符

fuhao=4;//4表示除號已按

}

i=table1[num];? ? ?//數據顯示做準備

write_date(0x30+i);//顯示數據或操作符號

}

P2=0xfd;

if(P2!=0xfd)

{

delay(20);

if(P2!=0xfd){? temp=P2&0xf0;

switch(temp)

{

case 0xe0:num=4; break; //4

case 0xd0:num=5; break; //5

case 0xb0:num=6; break; //6

case 0x70:num=7; break; //×

}

}? ?while(P2!=0xfd);//等待按鍵釋放

if(num==4||num==5||num==6&&num!=7)//如果按下的是'4','5'或'6'

{

if(j!=0){ write_com(0x01);? j=0;? ?}

if(flag==0)//沒有按過運算符鍵

{ a=a*10+table[num];? ? ?}

else//如果按過運算符鍵

{ b=b*10+table[num];? ?}

}

else//如果按下的是'×'

{? flag=1;

fuhao=3;//3表示乘號已按

}

i=table1[num];? ? ? //數據顯示做準備

write_date(0x30+i);//顯示數據或操作符號

}

P2=0xfb;

if(P2!=0xfb){? delay(20);

if(P2!=0xfb) { temp=P2&0xf0;

switch(temp)

{

case 0xe0:num=8;? ? break;? ? ? ? ?//1

case 0xd0:num=9;? ? break;? ? ? ? ?//2

case 0xb0:num=10;? ?break;? ? ? ? ?//3

case 0x70:num=11;? ?break;? ? ? ? ?//-

}

}? ?while(P2!=0xfb);

if(num==8||num==9||num==10)//如果按下的是'1','2'或'3'

{

if(j!=0){ write_com(0x01);? j=0;? }

if(flag==0)//沒有按過運算符鍵

{ a=a*10+table[num];? ?}

else//如果按過運算符鍵

{ b=b*10+table[num]; }

}

else if(num==11)//如果按下的是'-'

{

flag=1;

fuhao=2;//2表示減號已按

}

i=table1[num];? //數據顯示做準備

write_date(0x30+i);//顯示數據或操作符號

}

P2=0xf7;

if(P2!=0xf7){? ?delay(20);

if(P2!=0xf7){ temp=P2&0xf0;

switch(temp)

{

case 0xe0:num=12; break;? //清0鍵

case 0xd0:num=13; break;? //數字0

case 0xb0:num=14; break;? //等于鍵

case 0x70:num=15; break;? //加

}

} while(P2!=0xf7);

switch(num)

{

case 12:{write_com(0x01);a=0;b=0;flag=0;fuhao=0;}//按下的是"清零"

break;

case 13:{? ? ? ? ? ? ? ? //按下的是"0"

if(flag==0)//沒有按過運算符鍵

{ a=a*10;? write_date(0x30);? ? ?P2=0;? ? ? ?}

else if(flag>=1)//如果按過運算符鍵

{? b=b*10;? ?write_date(0x30);? ? ? ?}

}? ? ?break;

case 14:{j=1; //按下等于鍵,根據運算符號進行不同的算術處理

if(fuhao==1)? ? ? ? ? ?//加法運算

{

write_com(0x80+0x4f);//按下等于鍵,光標前進至第二行最后一個顯示處

write_com(0x04);? ? ?//設置從后住前寫數據,每寫完一個數據,光標后退一格

c=a+b;

[1] [2] [3]

總結

以上是生活随笔為你收集整理的单片机四位数加减计算机程序,51单片机简易计算器程序 实现数字的加减乘除运算...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美激情福利 | 国产福利视频在线观看 | 亚洲三级成人 | 中文字幕人妻一区 | 美腿丝袜av | 久草最新网址 | 国产福利一区二区三区在线观看 | 国产视频在线观看视频 | 午夜激情电影院 | 古装三级吃奶做爰 | 都市激情中文字幕 | 黑人巨大精品欧美黑白配亚洲 | 精品人妻一区二区三区久久嗨 | 日韩一区二区在线观看 | 精品国产96亚洲一区二区三区 | 国产免费黄色小视频 | 一级毛片黄片 | 五月香蕉网 | 免费在线观看一区二区 | 河北彩花av在线播放 | 日日操日日 | 日本艳妇 | 岛国一区| 国产在线播放一区二区三区 | av日韩一区二区 | 国产亚洲精品美女久久久 | 亚洲免费在线 | 男人操女人逼逼视频 | 国产老女人乱淫免费 | 爱福利视频一区 | 亚洲av无码一区二区乱子仑 | av一区二区三 | 日本不卡视频一区二区三区 | 久久免费视频99 | 免费视频www在线观看网站 | 国内精品视频在线播放 | www.国产.com| 国产精品九九九九九 | 亚洲成人精选 | 女人囗交吞精囗述 | 黄色网页在线观看 | 久久精品伊人 | 91破处视频 | 少妇性bbb搡bbb爽爽爽欧美 | 69xxx免费视频 | 色欲亚洲Av无码精品天堂 | av黄色片在线观看 | 偷拍中国夫妇高潮视频 | 激情av在线播放 | 国产精品久久久久久久9999 | 大黄毛片 | 亚洲av成人精品一区二区三区 | 欧美顶级毛片在线播放 | 亚洲s码欧洲m码国产av | 色偷偷噜噜噜亚洲男人的天堂 | 免费观看黄一级视频 | 色.com| 天堂va蜜桃一区二区三区漫画版 | 篠田优在线观看 | 污视频在线网站 | 国产黄a三级三级三级 | 97超碰人人爱 | 五月综合激情网 | 蜜桃精品噜噜噜成人av | av大片在线 | 免费的毛片网站 | 国产精品视频免费网站 | 精品视频一区二区在线 | 8x8x国产精品一区二区 | 欧美精品在线免费观看 | 两口子交换真实刺激高潮 | 91视频官网 | 激情亚洲色图 | 亚洲天堂五月 | 一卡二卡三卡在线观看 | 国产精品免费在线 | 97插插插 | 亚洲97视频| 亚洲成人不卡 | 一个色综合网 | wwww日本60 | 久久久性视频 | 中文字幕123区 | 国产在线麻豆精品观看 | 最新av观看 | 欧美激情中文字幕 | 亚洲欧美视频一区 | 国产露脸150部国语对白 | 91丨九色丨蝌蚪丨丝袜 | 国产深夜福利在线 | 欧美人与性动交α欧美精品 | 91精品国产一区 | 欧美日韩一级黄色片 | 欧美精品一区二区久久婷婷 | 欧美一区二区三区影院 | 国产大片一区 | 欧美久久免费 | 日韩福利片在线观看 | 操操日|