原理圖如下
123.png (161.87 KB, 下載次數(shù): 53)
下載附件
2021-7-31 14:18 上傳
pcb如下
456.png (218.34 KB, 下載次數(shù): 53)
下載附件
2021-7-31 14:18 上傳
單片機源程序如下:
- #include<reg51.h>
- typedef unsigned int u16;
- typedef unsigned char u8;
- #define GPIO_DIG P0
- #define GPIO_KEY P1
- sbit LSA=P2^5;
- sbit LSB=P2^6;
- sbit LSC=P2^7;
- u8 LedNumber; //存放當前顯示LED序號
- u8 KeyValue; //存放讀取到的鍵值
- u8 RightValue; //存放當前計數(shù)值
- u8 code smg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//存放數(shù)碼管字形碼
- u8 code led[]={0x0f,0x0e,0x0d,0x0c,0x0b,0x0a,0x09,0x08,
- 0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00};//存放led字形碼
- void delay(u16 j)
- {
- while(j--);
- }
- void LedDisplay(u8 n)
- {
- u8 j;
- j=(16+7*n)%16;
- P2=(P2&0xf0)|led[j-1];
- }
- void Timer1Init()
- {
- TMOD|=0x10;
- TH1=0Xfc;
- TL1=0x18;
- EA=1;
- TR1=1;
- }
- void Timer1() interrupt 3
- {
- static u16 i;
- TH1=0Xfc;
- TL1=0x18;
- TR1=1;
- i++;
- if(i==1000)
- {
- i=0;
- LedNumber++;
- if(LedNumber==16)
- {
- LedNumber=0;
- }
- }
- }
- void KEY_SCAN()
- {
- u8 a=0;
- GPIO_KEY=0X0f;
- if(GPIO_KEY!=0X0f)//檢查是否有鍵按下
- {
- delay(1000);//延時10ms消抖
- if(GPIO_KEY!=0X0f)//消抖后再次檢查是否有鍵按下
- {
- //測試列
- switch(GPIO_KEY)
- {
- case(0x07):KeyValue=0;break;
- case(0x0b):KeyValue=1;break;
- case(0x0d):KeyValue=2;break;
- case(0x0e):KeyValue=3;break;
- }
- //測試行
- GPIO_KEY=0xf0
- switch(GPIO_KEY)
- {
- case(0x70):KeyValue=KeyValue;break;
- case(0xb0):KeyValue=KeyValue+4;break;
- case(0xd0):KeyValue=KeyValue+8;break;
- case(0xe0):KeyValue=KeyValue+12;break;
- }
- if((Lednummer-1)==KeyValue)
- {
- RightValue++;
- }
- while((a<50)&&(GPIO_KEY!=0Xf0))
- {
- delay(1000);
- a++;
- }
- }
- }
- }
- void DpyDisplay()
- {
- u8 j;
- u8 code RightValue[];
- RightValue[2]=RightValue/100;
- RightValue[1]=(RightValue%100)/10;
- RightValue[0]=RightValue%10;
- for(j=2;j>=0;j--)
- {
- switch(j)
- {
- case(2):
- LSA=1;LSB=0;LSC=0;break;
- case(1):
- LSA=0;LSB=1;LSC=0;break;
- case(0):
- LSA=0;LSB=0;LSC=1;break;
- }
- P0=smg[RightValue[j]];
- delay(100);
- P0=0x00;
- }
- }
- void Judge()
- {
-
- }
- void (main)
- {
- while()
- {
- GameInit();
- Timer1Init();
- while(1)
- {
- if(LedNumber>=1)
- {
- LedDisplay(LedNumber);
- }
- }
- }
- }
復制代碼
51hei.png (10.66 KB, 下載次數(shù): 51)
下載附件
2021-7-31 15:20 上傳
初學,如有錯誤,請大家多多指導,資料僅供參考:
pcb原理圖程序.7z
(1.63 MB, 下載次數(shù): 43)
2021-7-31 15:23 上傳
點擊文件名下載附件
altuim desighner打開 下載積分: 黑幣 -5
|