微控制器實現計算器功能

2021-08-16 02:56:16 字數 2008 閱讀 5748

#include

sbit e=p2^2;

sbit rs=p2^0;

sbit rw=p2^1;

#define gpio_key p1

unsigned char keyvalue=17;

//鍵盤按鍵值

void keydown(void);   //鍵盤掃瞄

void delay1ms(unsigned int x);

void init();      //lcd1602初始化

void writecom(unsigned char j);

//寫命令

void writedata(unsigned char j);   //寫資料

void fbusy();

//忙檢測

unsigned char ledbuffer[5];

unsigned char i=0;           //x作為第乙個資料   注意char型的資料位數只有8位,最高計數到256

unsigned char flag=0;

unsigned int result=0,temp=0,x;

unsigned int numbuffer[10];   //用於快取資料

unsigned int j=0;

unsigned char pflag=0,mflag=0,hflag=0,lflag=0;     //用於定義乘除法的優先順序

void main()

break;

case 10:

if(mflag)

if(hflag)

if(lflag)

keyvalue=17;

flag=1;    //定義乙個加法的標誌位

}break;

case 11:

if(mflag)

if(hflag)

if(lflag)

hflag=1;

keyvalue=17;

flag=2;

}break;

case 12:

if(mflag)

if(hflag)

if(lflag)

temp=0;

pflag=1;     //定義乘除法的高優先順序

keyvalue=17;

flag=3;

}break;

case 13:

if(mflag)

if(hflag)

if(lflag)

temp=0;

mflag=1;

keyvalue=17;

flag=4;

}break;

case 14:

break;

case 15:

if(mflag)

if(hflag)

if(lflag)

keyvalue=17;

for(i=0;i<=j;i++)

i=0;

while(result)

for(i;i>0;i--)  }

break; }}

}void init()

void writecom(unsigned char j)

void fbusy()

}void writedata(unsigned char j)

void keydown(void)

//鍵盤掃瞄

//測試行

gpio_key=0xf0;

switch(gpio_key)

while((a<50)&&(gpio_key!=0xf0))

//檢測按鍵鬆手檢測}}

}void delay1ms(unsigned int x)

for(i=0;i<=8;i++)

result=0;

i=0;

x=0;

temp=0;

init();

writecom(0x80);

}

51微控制器計算器的編寫及實現

code s16 s12 s8 s4分別是123 s15 s11 s7 s3分別是456 s14 s10 s6 s2分別是789 s13 s9 s5 s1分別是0 clr 實現兩個數的運算,每個數的位數至少可以八位 includetypedef unsigned char uint8 typedef...

51微控制器LCD1602實現計算器

整合 include include define kong1 p1 控制矩陣按鍵 kong0 p0 傳送命令傳送資料 uc code a long sum1,sum2 float sum3 用於除法 long sum4,sum5 用於除法 uc addflag,subflag,mulflag,di...

基於51微控制器的計算器

繼續寫一下寒假做的51小專案,這一次是基於at89c51的計算器,帶乙個八位密碼鎖功能。具體實現了計算器的加減乘除功能,並且自帶八位密碼鎖,輸入密碼後按 確定,錯誤輸入三次密碼就會鎖定,重啟後解除鎖定,密碼可以在密碼表中設定。顯示部分採用了1602顯示屏。這一次在使用ad畫pcb時,考慮到計算器要脫...