最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

那個單片機(jī)的代碼

2023-03-26 22:08 作者:奇思妙語胡言亂語  | 我要投稿

//一下是單片機(jī)的代碼(如果網(wǎng)盤不好訪問的話):

//注:單片機(jī)的編程與硬件的關(guān)系較近,高概率沒那么通用,但是可以看看大致是什么樣的

#include <reg52.h>


typedef unsigned char u8;

typedef unsigned int u16;

#define KEY_MATRIX_PORT P1

#define SMG_A_DP_PORT P0

sbit KEY1=P3^1;

sbit KEY2=P3^0;

sbit KEY3=P3^2;

sbit KEY4=P3^3;


sbit LSA=P2^2;

sbit LSB=P2^3;

sbit LSC=P2^4;

sbit BEEP=P2^5;


sbit LED1=P2^0;

sbit LED2=P2^1;

sbit LED3=P2^2;

sbit LED4=P2^3;


#define KEY1_PRESS 1

#define KEY2_PRESS 2

#define KEY3_PRESS 3

#define KEY4_PRESS 4

#define KEY_UNPRESS 0


//LED點(diǎn)陣有關(guān)

sbit LED_SRCLK=P3^6;

sbit LED_RCLK=P3^5;

sbit LED_SER=P3^4;

#define LEDDZ_COL_PORT P0


u8 code game_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,

0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};

u8 code ghc595_buf[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

//延時函數(shù)

void delay_10us(u16 ten_us)

{

while(ten_us--);

}

//延時函數(shù)2

void delay_ms(u16 ms)

{

u16 i,j;

for(i=ms;i>0;i--)

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

}

//595發(fā)送數(shù)據(jù)的函數(shù)

void hc595_write_data(u8 dat)

{

u8 i=0;

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

{

LED_SER=dat>>7;

//左移之后再賦值dat=dat<<1;

dat<<=1;

LED_SRCLK=0;

delay_10us(1);

LED_SRCLK=1;

delay_10us(1);

}

LED_RCLK=0;

delay_10us(1);

LED_RCLK=1;

}

//獨(dú)立按鍵函數(shù)

u8 key_scan(u8 mode)

{

static u8 key=1;

if(mode)

{

key=1;

}

if(key==1&&(KEY1==0||KEY2==0||KEY3==0||KEY4==0))

{

delay_10us(1000);//消抖處理

key=0;

if(KEY1==0)

{return KEY1_PRESS;}

else if(KEY2==0)

{return KEY2_PRESS;}

else if(KEY3==0)

{return KEY3_PRESS;}

else if(KEY4==0)

{return KEY4_PRESS;}

}

else if(KEY1==1&&KEY2==1&&KEY3==1&&KEY4==1)

{

key=1;

}

return KEY_UNPRESS;

}

//矩陣按鍵行列式掃描

u8 key_matrix_ranks_scan(void)

{

u8 key_value=0;

KEY_MATRIX_PORT=0xf7;//第一列為低電平

if(KEY_MATRIX_PORT!=0xf7)

{

delay_10us(1000);//消抖處理

switch(KEY_MATRIX_PORT)

{

case 0x77:key_value=1;break;

case 0xb7:key_value=5;break;

case 0xd7:key_value=9;break;

case 0xe7:key_value=13;break;

}

}

while(KEY_MATRIX_PORT!=0xf7);

KEY_MATRIX_PORT=0xfb;//第二列為低電平

if(KEY_MATRIX_PORT!=0xfb)

{

delay_10us(1000);//消抖處理

switch(KEY_MATRIX_PORT)

{

case 0x7b:key_value=2;break;

case 0xbb:key_value=6;break;

case 0xdb:key_value=10;break;

case 0xeb:key_value=14;break;

}

}

while(KEY_MATRIX_PORT!=0xfb);

KEY_MATRIX_PORT=0xfd;//第三列為低電平

if(KEY_MATRIX_PORT!=0xfd)

{

delay_10us(1000);//消抖處理

switch(KEY_MATRIX_PORT)

{

case 0x7d:key_value=3;break;

case 0xbd:key_value=7;break;

case 0xdd:key_value=11;break;

case 0xed:key_value=15;break;

}

}

while(KEY_MATRIX_PORT!=0xfd);

KEY_MATRIX_PORT=0xfe;//第四列為低電平

if(KEY_MATRIX_PORT!=0xfe)

{

delay_10us(1000);//消抖處理

switch(KEY_MATRIX_PORT)

{

case 0x7e:key_value=4;break;

case 0xbe:key_value=8;break;

case 0xde:key_value=12;break;

case 0xee:key_value=16;break;

}

}

while(KEY_MATRIX_PORT!=0xfe);

return key_value;

}

//獨(dú)立按鍵控制LED燈

void key_control_led()

{

u8 keyTemp=0;

keyTemp=key_scan(0);

//if(keyTemp==KEY1_PRESS)

//{LED1=!LED1;}

switch(keyTemp)

{

case KEY1_PRESS:LED1=!LED1;break;

case KEY2_PRESS:LED2=!LED2;break;

case KEY3_PRESS:LED3=!LED3;break;

case KEY4_PRESS:LED4=!LED4;break;

}

}

//獨(dú)立按鍵控制顯示位置

void key_control_place()

{

static u8 place=8;

u8 keyTemp=0;

keyTemp=key_scan(0);

switch(keyTemp)

{

case KEY1_PRESS:place--;if(place==0){place=8;}break;

case KEY2_PRESS:place++;if(place>8){place=1;}break;

case KEY3_PRESS:break;

case KEY4_PRESS:break;

}

switch(place)

{

case 1:LSC=1;LSB=1;LSA=1;break;

case 2:LSC=1;LSB=1;LSA=0;break;

case 3:LSC=1;LSB=0;LSA=1;break;

case 4:LSC=1;LSB=0;LSA=0;break;

case 5:LSC=0;LSB=1;LSA=1;break;

case 6:LSC=0;LSB=1;LSA=0;break;

case 7:LSC=0;LSB=0;LSA=1;break;

case 8:LSC=0;LSB=0;LSA=0;break;

}

}

//矩陣按鍵線翻轉(zhuǎn)法

u8 key_matrix_flip_scan(void)

{

u8 key_value=0;

KEY_MATRIX_PORT=0x0f;

if(KEY_MATRIX_PORT!=0x0f)

{

delay_10us(1000);//消抖處理

if(KEY_MATRIX_PORT!=0x0f)

{

//測試列

KEY_MATRIX_PORT=0x0f;

switch(KEY_MATRIX_PORT)

{

case 0x07:key_value=1;break;//第一列有按鍵按下

case 0x0b:key_value=2;break;

case 0x0d:key_value=3;break;

case 0x0e:key_value=4;break;

}

//測試行

KEY_MATRIX_PORT=0xf0;

switch(KEY_MATRIX_PORT)

{

case 0x70:key_value=key_value;break;

case 0xb0:key_value=key_value+4;break;

case 0xd0:key_value=key_value+8;break;

case 0xe0:key_value=key_value+12;break;

}

while(KEY_MATRIX_PORT!=0xf0);

}

}

return key_value;

}

//矩陣按鍵控制字符,獨(dú)立按鍵控制位置

void zifu_place_control()

{

//矩陣按鍵的選擇

u8 key=0;

//獨(dú)立按鍵的選擇

u8 keyTemp=0;

//記錄位置的變量

u8 place=8;

//數(shù)碼管初始化

SMG_A_DP_PORT=game_code[0];

while(1)

{

//選擇字符

//矩陣按鍵是行列式掃描

//key=key_matrix_ranks_scan();

//這個就是線翻轉(zhuǎn)掃描了

key=key_matrix_flip_scan();

if(key!=0)

{SMG_A_DP_PORT=game_code[key-1];}

//獲取獨(dú)立按鍵

keyTemp=key_scan(0);

//獨(dú)立按鍵翻譯

switch(keyTemp)

{

case KEY1_PRESS:place--;if(place==0){place=8;}break;

case KEY2_PRESS:place++;if(place>8){place=1;}break;

case KEY3_PRESS:SMG_A_DP_PORT=game_code[0];place=8;break;

case KEY4_PRESS:SMG_A_DP_PORT=game_code[16];return;break;

}

switch(place)

{

case 1:LSC=1;LSB=1;LSA=1;break;

case 2:LSC=1;LSB=1;LSA=0;break;

case 3:LSC=1;LSB=0;LSA=1;break;

case 4:LSC=1;LSB=0;LSA=0;break;

case 5:LSC=0;LSB=1;LSA=1;break;

case 6:LSC=0;LSB=1;LSA=0;break;

case 7:LSC=0;LSB=0;LSA=1;break;

case 8:LSC=0;LSB=0;LSA=0;break;

}

}

}

//LED陣列流水燈

void LEDZL_liushui()

{

u8 i=0,j=0;

//獨(dú)立按鍵的選擇

u8 keyTemp=0;

LEDDZ_COL_PORT=0x00;

while(1)

{

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

{

hc595_write_data(0x00);//消影

hc595_write_data(ghc595_buf[i]);

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

{

//獲取獨(dú)立按鍵

keyTemp=key_scan(0);

if(keyTemp!=KEY_UNPRESS)

{

switch(keyTemp)

{

case KEY1_PRESS:if(i==0){i=7;}else{i--;}i--;break;

case KEY2_PRESS:if(i==7){i=0;}else{i++;}break;

case KEY3_PRESS:i=-1;break;

case KEY4_PRESS:return;break;

}

}

else

{

delay_10us(5000);

}

}

}

}

}

//主函數(shù)

void main()

{

while(1)

{

LEDZL_liushui();

zifu_place_control();

}

}


那個單片機(jī)的代碼的評論 (共 條)

分享到微博請遵守國家法律
方正县| 天台县| 满城县| 林甸县| 图们市| 枝江市| 蓬安县| 清新县| 红安县| 宿迁市| 卓资县| 屏山县| 方城县| 图们市| 澄迈县| 蓝山县| 宿松县| 孟村| 北辰区| 兴安县| 连平县| 信丰县| 积石山| 木里| 五寨县| 景泰县| 德昌县| 德阳市| 扎鲁特旗| 金昌市| 伊吾县| 江油市| 巴林左旗| 甘肃省| 芮城县| 灵宝市| 都江堰市| 榆树市| 大兴区| 安吉县| 来宾市|