第一次再這個論壇分享,如有錯誤,還請批評指正。配合單片機開發板使用的程序,當按下按鍵1時,LED每隔1S閃爍一次;當按下按鍵2時,流水燈從左往右流水,當按下按鍵3時,流水燈從左往右流水流水,當按下按鍵4時,LEDD燈全滅;
單片機源程序如下:
- #include<reg51.h>
- #include"stdio.h"
- sbit K1 = P3^0;
- sbit K2 = P3^1;
- sbit K3 = P3^2;
- sbit K4 = P3^3;
- unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99};
- unsigned char code table1[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
- unsigned char code table2[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
- void delay1() //@12.000MHz
- {
- unsigned char i, j;
- i = 12;
- j = 169;
- do
- {
- while (--j);
- } while (--i);
- }
- void delay(unsigned int n)
- {
- unsigned char i;
- for(i=0;i<n;i++)
- {
- delay1();
- }
- }
- void Cls_Peripheral(void) //關閉外設;
- {
- P0 = 0XFF;
- P2 = P2 & 0X1F | 0X80;
- P2 &= 0X1F;
- P0 = 0;
- P2 = P2 & 0X1F | 0XA0;
- P2 &= 0X1F;
- }
- void Set_74HC138(unsigned char outnum) //打開某一位的開關;
- {
- P2 &= ~(0x7<<5);
- P2 |= ((outnum&0x07)<<5);
- }
- void led_init(unsigned char n) //選擇某個數字;
- {
- Set_74HC138(6); //打開位選段
- P0 = 0X01;
- P2 = 0X1F;
- Set_74HC138(7); //打開段選端;
- P0 = table[n];
- P2 = 0X1F;
- }
- void main(void)
- { char KEY1=0, KEY2=0,KEY3=0,KEY4=0,j=0;
- static char z=0,l=0;
- Cls_Peripheral(); //關外設?
- while(1)
- {
- if(K1 == 0)
- {
- KEY1 = 1;
- KEY2 = 0;
- KEY3 = 0;
- KEY4 = 0;
- }
- if(K1 == 1 && KEY1 == 1)
- {
- led_init(1);
- P2 =0X1F;
- Set_74HC138(4);
- {
- P0 = 0xFF;
- delay(100);
- P0 = 0X00;
- delay(100);
- }
- }
- if(K2 == 0)
- {
- KEY2 = 1;
- KEY1 = 0;
- KEY3 = 0;
- KEY4 = 0;
- }
- if(K2 == 1 && KEY2 == 1)
- {
- led_init(2);
- P2 =0X1F;
- Set_74HC138(4);
- {
- P0 = table1[z];
- z++;
- delay(110);
- if(z==8) z=0;
- }
- }
- if(K3 == 0)
- {
- KEY3 = 1;
- KEY1 = 0;
- KEY2 = 0;
- KEY4 = 0;
- }
-
- if(K3 == 1 && KEY3 == 1)
- {
- led_init(3);
- P2 =0X1F;
- Set_74HC138(4);
- {
- P0 = table2[l];l++;
- delay(110);
- if(l==7) l =0;
- }
- }
-
- if(K4 == 0)
- {
- KEY4 = 1;
- KEY1 = 0;
- KEY3 = 0;
- KEY2 = 0;
- }
- if(K4 == 1 && KEY4 == 1)
- {
- P0 = 0XFF;
- P2 = P2 & 0X1F | 0X80;
- P2 &= 0X1F;
-
- P0 = 0X01;
- P2 = P2 & 0X1F | 0XC0;
- P2 &= 0X1F;
- P0 = 0X99;
- P2 = P2 & 0X1F | 0XE0;
- P2 &= 0X1F;
-
-
- }
- }
- }
復制代碼 全部程序51hei下載地址:
按鍵控制.rar
(26.4 KB, 下載次數: 13)
2020-12-26 22:11 上傳
點擊文件名下載附件
|