当前位置 :
【按下16个矩阵键盘依次在数码管上显示1-16的平方.如按下第一个显示1,第二个显示4...#include#defineucharunsignedchar#defineuintunsignedintucharb,bai,shi,ge;ucharconstel[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7】
更新时间: 2025-08-28 17:05:57
3人问答
问题描述:

按下16个矩阵键盘依次在数码管上显示1-16的平方.如按下第一个显示1,第二个显示4...

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharb,bai,shi,ge;

ucharconstel[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,

x09x09x090x77,0x7c,0x39,0x5e,0x79,0x71};

ucharkeycan(void);

voiddelay(uintz);

voiddisplay(ucharbai,ucharshi,ucharge);

voidmain()

{

ucharkey;

P0=0x00;

while(1)

{

x09key=keycan();

x09switch(key)

x09{

x09case0xee:b=1*1;break;

x09case0xde:b=2*2;break;

x09case0xbe:b=3*3;break;

x09case0x7e:b=4*4;break;

x09case0xed:b=5*5;break;

x09case0xdd:b=6*6;break;

x09case0xbd:b=7*7;break;

x09x09case0x7d:b=8*8;break;

x09x09case0xeb:b=9*9;break;

x09x09case0xdb:b=10*10;break;

x09x09case0xbb:b=11*11;break;

x09x09case0x7b:b=12*12;break;

x09x09case0xe7:b=13*13;break;

x09x09case0xd7:b=14*14;break;

x09case0xb7:b=15*15;break;

x09x09case0x77:b=16*16;break;

x09}

x09bai=b/100;

x09shi=b%100/10;

x09ge=b%10;

x09display(bai,shi,ge);

}

}

ucharkeycan()

{

ucharcord_h,cord_l;

P3=0x0f;

cord_h=P3&0x0f;

if(cord_h!=0x0f)

{

delay(100);

x09cord_h=P3&0x0f;

x09if(cord_h!=0x0f)

x09{

x09P3=cord_h|0xf0;

x09cord_l=P3&0xf0;

x09return(cord_h+cord_l);

x09}

}return(0xff);x09

}

voiddelay(uintz)

{

uintx,y;

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

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

}

voiddisplay(ucharbai,ucharshi,ucharge)

{

P2=0;x09

P0=el[bai];

delay(10);

P2=1;

P0=el[shi];

delay(10);

P2=2;

P0=el[ge];

delay(10

钱建平回答:
  #include   #defineucharunsignedchar   #defineuintunsignedint   ucharb,bai,shi,ge;   ucharconsttable[]={0x3f,0x06,0x5b,0x4f,   0x66,0x6d,0x7d,0x07,   0x7f,0x6f,0x76,0x79,0x38,0x00};   sbitdula=P2^6;   sbitwela=P2^7;   ucharkeycan(void);   voiddelay(uintz);   voiddisplay(ucharbai,ucharshi,ucharge);   voidmain()   {   ucharkey;   P0=0x00;   while(1)   {   x05key=keycan();   x05switch(key)   x05{   x05case0xee:b=1*1;break;   x05case0xde:b=2*2;break;   x05case0xbe:b=3*3;break;   x05case0x7e:b=4*4;break;   x05case0xed:b=5*5;break;   x05case0xdd:b=6*6;break;   x05case0xbd:b=7*7;break;   x05x05case0x7d:b=8*8;break;   x05x05case0xeb:b=9*9;break;   x05x05case0xdb:b=10*10;break;   x05x05case0xbb:b=11*11;break;   x05x05case0x7b:b=12*12;break;   x05x05case0xe7:b=13*13;break;   x05x05case0xd7:b=14*14;break;   x05case0xb7:b=15*15;break;   x05x05case0x77:b=16*16;break;   x05}   x05bai=b/100;   x05shi=b%100/10;   x05ge=b%10;   x05display(bai,shi,ge);   }   }   ucharkeycan()   {   ucharcord_h,cord_l;   P3=0x0f;   cord_h=P3&0x0f;   if(cord_h!=0x0f)   {   delay(100);   x05cord_h=P3&0x0f;   x05if(cord_h!=0x0f)   x05{   x05P3=cord_h|0xf0;   x05cord_l=P3&0xf0;   x05return(cord_h+cord_l);   x05}   }return(0xff);x05   }   voiddelay(uintz)   {   uintx,y;   for(x=z;x>0;x--)   for(y=110;y>0;y--);   }   voiddisplay(ucharbai,ucharshi,ucharge)   {   dula=1;   x05x05P0=table[bai];   x05x05dula=0;   x05x05P0=0xff;   x05x05wela=1;   x05x05P0=0xf7;   x05x05wela=0;   x05x05delay(1);   dula=1;   x05x05P0=table[shi];   x05x05dula=0;   x05x05P0=0xff;   x05x05wela=1;   x05x05P0=0xef;   x05x05wela=0;   x05x05delay(1);   dula=1;   x05x05P0=table[ge];   x05x05dula=0;   x05x05P0=0xff;   x05x05wela=1;   x05x05P0=0xdf;   x05x05wela=0;   x05x05delay(1);   }   我认为是你的voiddisplay(ucharbai,ucharshi,ucharge)这里有错误,上面是我的程序,只是改了一点,我的好用,你的显示程序外围我不知道,
景玉峰回答:
  这是我的这个单片机的数码管的电路图,我的单片机的数码管那里就是多了一个译码器,这个程序就是最后一列按键的数16,64,144,256在数码上显示不出来,这四个数总是在按下按键后一闪而过,其他的数都能很好的显示,我不知道是什么原因,可以帮帮我吗
钱建平回答:
  #include#defineucharunsignedchar#defineuintunsignedintucharb,bai,shi,ge;ucharconstel[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};sbitHC=P3^7;ucharkeycan(void);voiddelay(uintz);voiddisplay(ucharbai,ucharshi,ucharge);voidmain(){ucharkey;P0=0x00;while(1){key=keycan();switch(key){case0xee:b=1*1;break;case0xde:b=2*2;break;case0xbe:b=3*3;break;case0x7e:b=4*4;break;case0xed:b=5*5;break;case0xdd:b=6*6;break;case0xbd:b=7*7;break;case0x7d:b=8*8;break;case0xeb:b=9*9;break;case0xdb:b=10*10;break;case0xbb:b=11*11;break;case0x7b:b=12*12;break;case0xe7:b=13*13;break;case0xd7:b=14*14;break;case0xb7:b=15*15;break;case0x77:b=16*16;break;}bai=b/100;shi=b%100/10;ge=b%10;display(bai,shi,ge);}}ucharkeycan(){ucharcord_h,cord_l;P3=0x0f;cord_h=P3&0x0f;if(cord_h!=0x0f){delay(100);cord_h=P3&0x0f;if(cord_h!=0x0f){P3=cord_h|0xf0;cord_l=P3&0xf0;return(cord_h+cord_l);}}return(0xff);}voiddelay(uintz){uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voiddisplay(ucharbai,ucharshi,ucharge){HC=1;P0=el[bai];HC=0;P2=0x00;delay(10);HC=1;P0=el[shi];HC=0;P2=0x01;delay(10);HC=1;P0=el[ge];HC=0;P2=0x02;delay(10);}你再下载一下你的HC573芯片那个控制端有问题,这程序不知道好不好用,我的没有138芯片,帮你分析了很久!!有什么事打我电话134567740004
最新更新
保卡通(baokatong.com)汇总了汉语字典,新华字典,成语字典,组词,词语,在线查字典,中文字典,英汉字典,在线字典,康熙字典等等,是学生查询学习资料的好帮手,是老师教学的好助手。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
Copyright©2009-2021 保卡通 baokatong.com 版权所有