- 實驗目的要求
根據原理圖完成仿真電路的繪制;能夠根據設計需求完成代碼編寫,實作功能;能夠獨立完成軟體、硬體功能測試
- 實驗内容
(1)閱讀普中開發闆原理圖,在proteus上完成仿真電路圖設計,包括LED燈(使用P3口)、矩陣按鍵。
(2)矩陣按鍵功能配置設定:最左上角按鍵K0---流水燈啟動,最右上角按鍵K3---流水燈停止,
最左下角按鍵K12---流水燈從上往下流水;最右下角按鍵K15---流水燈從下往上流水。
同時在最右面的數位管上顯示對應的按鍵号碼(靜态顯示即可),注意初始狀态時哪個按鍵都沒有按下過,流水燈全滅,數位管全滅。
- 實驗過程
流程圖:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiNx8FesU2cfdGLwczX0xiRGZkRGZ0Xy9GbvNGLwIzXlpXazxSQptkNQVXS2IULZVTQClGVF5UMR9Fd4VGdsATNfd3bkFGazxSUhxGatJGbwhFT1Y0Mk9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLyMjN1kzN3QmN0MGNjNWN4ADOiRTOlJmZ5MTYhJ2MlhzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
仿真電路圖:
實作代碼:
#include<reg51.h>
char code led_mod[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71};
char code key_buf[] = {0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,
0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};
char code led[] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
void delay10ms(void)
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
char getkey(void){
char key_scan[] = {0xef,0xdf,0xbf,0x7f};
char i = 0, j = 0;
for (i = 0; i < 4; i++)
{
P2 = key_scan[i];
if((P2&0x0f) != 0x0f){
for(j = 0; j< 16; j++){
if (key_buf[j] == P2)
return j;
}
}
}
return -1;
}
void main(void){
char k;
char key = 0;
P0 = 0x00;
P3 = 0xff;
while(1){
key = getkey();
if(key != -1){
P0 = led_mod[key];
if (key == 15){
for (k = 0; k < 8; k++){
P3 = led[k];
delay10ms();
delay10ms();
}
}
else if(key == 12){
for (k = 0; k < 8 ; k++){
P3 = led[7 - k];
delay10ms();
delay10ms();
}
}
else if(key = 3){
break;
}
}
}
}
運作截圖:
- 實驗總結
- 進一步掌握了通過鍵碼的方式對矩陣鍵盤的掃描,也學習了LED流水燈的電路結構。
- 掌握了基本的流水燈的設計原理。
- 學習了流程圖的繪制。