【平台测速网址】沐鸣2测速^亿兴测速^尚都测速^金烽2测速^摩鑫测速^尖叫测速^优亿测速^金马测速^恒煊2测速^恒达测速^WD测速^摩天测速^杏悦测速^杏鑫测速^百事2测速^恒耀测速^万和城测速^凤凰城测速^宝格测速^无极4测速^赢咖2测速^金洋2测速^太阳2测速^脉动测速^天极2测速^盛图测速^齐天测速^东信测速^菲娱2测速^摩登4测速^银猫2测速^星图测速^汇盈3测速^顺达测速^腾越测速^恩佐测速^天悦测速^星辰测速^恒行测速【平台娱乐登录注册网址线路官网】

用51单片机建造的简朴计较器措施

一、硬件仿真图

 

件部门较量简朴,当键盘按键按下时它的那一行、那一列的端口为低电平。因此,只要扫描行、列端口是否都为低电平就可以确定是哪个键被按下。
 二、主措施流程图

措施的主要思想是:将按键抽象为字符,然后就是对字符的处理惩罚。将操纵数分别转化为字符串存储,【平台测速网首页:http://www.xb004.com】,操纵符存储为字符形式。然后挪用compute()函数举办计较并返回功效。详细措施及看注释尚有流程图。

三、措施源代码

#include <</font>reg51.h>#include <</font>intrins.h>

#include <</font>ctype.h>            

#include <</font>stdlib.h>            

#define uchar unsigned char

#define uint unsigned int

uchar operand1[9], operand2[9];  

uchar operator;                     

void delay(uint);

uchar keyscan();

void disp(void);

void buf(uint value);

uint compute(uint va1,uint va2,uchar optor);

uchar code table[] = {0xc0,0xf9,0xa4,0xb0,0x99,

0x92,0x82,0xf8,0x80,0x90,0xff};     

uchar dbuf[8] = {10,10,10,10,10,10,10,10};            

void delay(uint z)

{

uint x,y;

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

for(y=110;y>0;y--);

}

uchar keyscan()

{

uchar skey;                     

P1 = 0xfe;

while((P1 & 0xf0) != 0xf0)        

{

delay(3);                    

while((P1 & 0xf0) != 0xf0)    

{

switch(P1)                

{

case 0xee: skey = '7'; break;

case 0xde: skey = '8'; break;

case 0xbe: skey = '9'; break;

case 0x7e: skey = '/'; break;

default:   skey = '#';

}

while((P1 & 0xf0) != 0xf0) 

;

}

}

P1 = 0xfd;    

while((P1 & 0xf0) != 0xf0)

{

delay(3);

while((P1 & 0xf0) != 0xf0)

{

switch(P1)

{

case 0xed: skey = '4'; break;

case 0xdd: skey = '5'; break;

case 0xbd: skey = '6'; break;

case 0x7d: skey = '*'; break;

default:   skey = '#';

}

while((P1 & 0xf0) != 0xf0)

;

}

}

P1 = 0xfb;

while((P1 & 0xf0) != 0xf0)

{

delay(3);

while((P1 & 0xf0) != 0xf0)

{

switch(P1)

{

case 0xeb: skey = '1'; break;

case 0xdb: skey = '2'; break;

case 0xbb: skey = '3'; break;

case 0x7b: skey = '-'; break;

default: skey = '#';

}

while((P1 & 0xf0) != 0xf0)

;

}

}

P1 = 0xf7;

while((P1 & 0xf0) != 0xf0)

{

delay(3);

while((P1 & 0xf0) != 0xf0)

{

switch(P1)

{

case 0xe7: skey = '$'; break;

case 0xd7: skey = '0'; break;

case 0xb7: skey = '='; break;

case 0x77: skey = '+'; break;

default:   skey = '#';

}

while((P1 & 0xf0) != 0xf0)

;

}

}

return skey;

}

void main()

{    

uint value1, value2, value;           

uchar ckey, cut1 = 0, cut2 = 0;    

uchar operator;                       

uchar i, bool = 0;

init:                                   

buf(0);                            

disp();

value = 0;

cut1 = cut2 = 0;

bool = 0;

for(i = 0;i <</font> 9;i++)

{

operand1[i] = '\0';

operand2[i] = '\0';

}                                  

while(1)

{

ckey = keyscan();             

if(ckey != '#')

if(isdigit(ckey))         

{

switch(bool)    

{

case 0:

operand1[cut1] = ckey;

operand1[cut1+1] = '\0';

value1 = atoi(operand1);  

cut1++;

buf(value1);

disp();

break;

case 1:

operand2[cut2] = ckey;

operand2[cut2+1] = '\0';

value2 = atoi(operand2);

cut2++;

buf(value2);

disp();

break;

default: break;

}

}

else if(ckey=='+'||ckey=='-'||ckey=='*'||ckey=='/')

{

bool = 1;    

operator = ckey;

buf(0);

dbuf[7] = 10;

disp();

}

else if(ckey == '=')

{

value = compute(value1,value2,operator);

buf(value);

disp();

while(1)                     

{

ckey = keyscan();

if(ckey == '$')          

goto init;

else

{

buf(value);

disp();

}

}

}

else if(ckey == '$') 

{    goto init;}

}

disp();

}

}

uint compute(uint va1,uint va2,uchar optor)

{

uint value;

switch(optor)

{

case '+' : value = va1+va2;    break;

case '-' : value = va1-va2;    break;

case '*' : value = va1*va2;    break;

case '/' : value = va1/va2;    break;

default :  break;

}

return value;

}

void buf(uint val)

{

uchar i;

if(val == 0)

{

dbuf[7] = 0;

i = 6;

}

else

for(i = 7; val > 0; i--)

{

dbuf[i] = val % 10;

val /= 10;

}

for( ; i > 0; i--)

dbuf[i] = 10;

}

void disp(void)

{

uchar bsel, n;

bsel=0x01;

for(n=0;n<</font>8;n++)

P2=bsel;

P0=table[dbuf[n]];

bsel=_crol_(bsel,1);

delay(3);

P0=0xff;

}

}


仿真文件下载: 简朴计较器.zip
 

keywords:【平台测速网址】沐鸣2测速^亿兴测速^尚都测速^金烽2测速^摩鑫测速^尖叫测速^优亿测速^金马测速^恒煊2测速^恒达测速^WD测速^摩天测速^杏悦测速^杏鑫测速^百事2测速^恒耀测速^万和城测速^凤凰城测速^宝格测速^无极4测速^赢咖2测速^金洋2测速^太阳2测速^脉动测速^天极2测速^盛图测速^齐天测速^东信测速^菲娱2测速^摩登4测速^银猫2测速^星图测速^汇盈3测速^顺达测速^腾越测速^恩佐测速^天悦测速^星辰测速^恒行测速【平台娱乐登录注册网址线路官网】
天悦
名人
高德
天辰
天辰
恒行
摩登4
星辰
星辰
天富
摩杰
沐鸣2
沐鸣2
恒耀
亿兴
盛图
盛图
注册登录网址
平台注册
登录平台娱乐
平台娱乐
登录平台娱乐
平台娱乐
注册登陆网址
注册平台娱乐
平台娱乐
娱乐平台
平台注册网址
平台娱乐登录
注册登录线路
平台娱乐
平台娱乐