#include<reg52.h>
#define uchar signed char
#define uint signed int
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
0x76,0x79,0x38,0x3f,0};
uchar temp,num;
sbit dule = P2^6;
sbit wale = P2^7;
void display(uchar);
void delay(uint z);
uchar keyscan();
void init();
void main()
{
init();
while(1)
{
display(keyscan());
}
}
void init()
{
num = 0;
dule = 1;
P0 = 0x3f;
dule = 0;
wale = 1;
P0 = 0x00;
wale = 0;
}
uchar keyscan()
{
P3 = 0xfe;
temp = P3;
temp = temp & 0xf0;
if(temp != 0xf0)
{
delay(5);
temp = P3;
temp = temp & 0xf0;
if(temp != 0xf0)
{
temp = P3;
switch(temp)
{
case 0xee:num = 1;
break;
case 0xde:num = 2;
break;
case 0xbe:num = 3;
break;
case 0x7e:num = 4;
break;
}
while(temp != 0xf0)
{
temp = P3;
temp = temp & 0xf0;
}
}
}
return(num);
}
void display(uchar num)
{
dule = 1;
P0 = table[num];
dule = 0;
P0 = 0xff;
wale = 1;
P0 = 0x00;
wale = 0;
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
我這段程式為什莫不能完成松手檢測
uj5u.com熱心網友回復:
可參https://blog.csdn.net/xianfajushi/article/details/80884859?ops_request_misc=%7B%22request%5Fid%22%3A%22158296947219724845017776%22%2C%22scm%22%3A%2220140713.130056874..%22%7D&request_id=158296947219724845017776&biz_id=0&utm_source=distribute.pc_search_result.none-taskuj5u.com熱心網友回復:
keyscan(),display(uchar num) 改了:#include<reg52.h>
#define uchar signed char
#define uint signed int
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
0x76,0x79,0x38,0x3f,0};
uchar temp,num;
sbit dule = P2^6;
sbit wale = P2^7;
void display(uchar);
void delay(uint z);
uchar keyscan();
void init();
void main()
{
init();
while(1)
{
uchar key;
key=keyscan();
display(key);
}
}
void init()
{
num = 0;
dule = 1;
P0 = 0x3f;
dule = 0;
wale = 1;
P0 = 0x00;
wale = 0;
}
uchar keyscan()
{
P3 = 0xfe;
while(1)
{
temp = P3;
switch(temp)
{
case 0xee:num = 1;//0xee
break;
case 0xde:num = 2;//0xde
break;
case 0xbe:num = 3;//0xbe
break;
case 0x7e:num = 4;//0x7e
break;
}
return(num);
}
}
void display(uchar num)
{
P0 = table[num];
dule = 1;
delay(1);
dule = 0;
/*P0 = 0x00;
wale = 1;
delay(1);
wale = 0;*/
//P0 = 0x00;
//P0 = 0xff;
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/53316.html
標籤:單片機/工控
上一篇:.net core 簡單定時程式
