|
在實(shí)驗(yàn)板上欲實(shí)現(xiàn)一個(gè)簡單的功能,按K1鍵 數(shù)碼管LED1 顯1 按K2鍵 數(shù)碼管LED2 顯2 按K3鍵 數(shù)碼管LED3 顯3 按K4鍵 數(shù)碼管LED1 顯4問題?現(xiàn)在按K1四個(gè)管子同時(shí)顯示1,其它按鍵也是四個(gè)數(shù)碼管同時(shí)顯示,不知問題出在那里,請高手指正,萬分感謝!
實(shí)驗(yàn)板圖紙
數(shù)碼管.jpg (36.84 KB, 下載次數(shù): 95)
下載附件
sawed.cn數(shù)碼管
2016-8-25 10:12 上傳
獨(dú)立按鍵.jpg (12.53 KB, 下載次數(shù): 90)
下載附件
sawed,cn獨(dú)立按鍵
2016-8-25 10:13 上傳
下面是C代碼
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define LED P2
#define SMG P0 //數(shù)碼管段選
#define GPIO_PLACE P1 //位選
sbit K1=P1^4; //位操作
sbit K2=P1^5;
sbit K3=P1^6;
sbit K4=P1^7;
sbit ws1=P1^0; //數(shù)碼管位選
sbit ws2=P1^1;
sbit ws3=P1^2;
sbit ws4=P1^3;
unsigned char code DIG_CODE[17] = {
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼
void delay5(uint);
main()
{
SMG=0xff;
while(1)
{
if((P1&0xf0)!=0xff){
delay5(1);
SMG=0xff;
switch(P1&0xf0)
{
case 0xe0:SMG=DIG_CODE[1];ws1=0;delay5(1);ws1=1;break;
case 0xd0:SMG=DIG_CODE[2];ws2=0;delay5(1);ws2=1;break;
case 0xb0:SMG=DIG_CODE[3];ws3=0;delay5(1);ws3=1;break;
case 0x70:SMG=DIG_CODE[4];ws4=0;delay5(1);ws4=1;break;
}
}
}
}
void delay5(uint c) //延時(shí)5ms
{
uchar a,b;
for(;c>0;c--)
for(b=19;b>0;b--)
for(a=130;a>0;a--);
}
|
|