程序搬運工來了,只希望有少許幫助
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
hei.1.PNG (157.23 KB, 下載次數: 55)
下載附件
仿真界面
2018-6-20 17:03 上傳
黑。2.PNG (7.93 KB, 下載次數: 77)
下載附件
壓縮包內容
2018-6-20 17:04 上傳
- config.h源代碼
- #ifndef _CONFIG_H_
- #define _CONFIG_H_
- #include"reg52.h"
- typedef unsigned char INT8U;
- typedef signed char INT8;
- typedef unsigned short INT16U;
- typedef signed short INT16;
- typedef unsigned long INT32U;
- typedef signed long INT32;
- typedef float FP32;
- typedef double FP64;
- #define LED P2
- #define KEY P1
- #endif
- main.c源代碼
- #include"config.h"
- #include"keyscan.h"
- #include"ParallelStaticCATLED.h"
- void main()
- {
- INT8U KeyValue[1]={0x10};
- while(1)
- {
- KeyValue[0]=keyscan();
- if(KeyValue!=0x10)
- {
- LEDDisplay(KeyValue);
- }
- }
- }
- ParallelStaticCATLED.c源代碼
- #include"config.h"
- INT8U code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
- void LEDDisplay(INT8U *buffer)
- {
- LED=tab[buffer[0]];
- }
- ParallelStaticCATLED.h源代碼
- #ifndef _ParallelStaticCATLED_H_
- #define _ParallelStaticCATLED_H_
- void LEDDisplay(INT8U *buffer);
- #endif
- keyscan.c源代碼
- #include"config.h"
- #include"delay.h"
- INT8U keyscan()
- {
- INT8U key_value=0x10;
- INT8U temp,temp0,temp1,temp2,temp3;
- KEY=0xf0;
- temp=KEY&0xf0;
- if(temp!=0xf0)
- {
- KEY=0xf7;
- LongDelay(1250);
- temp0=KEY&0xf0;
- KEY=0xfb;
- LongDelay(1250);
- temp1=KEY&0xf0;
- KEY=0xfd;
- LongDelay(1250);
- temp2=KEY&0xf0;
- KEY=0xfe;
- LongDelay(1250);
- temp3=KEY&0xf0;
- KEY=0xf0;
- while((KEY&0xf0)!=0xf0);
- LongDelay(1250);
- while((KEY&0xf0)!=0xf0);
- }
- if(temp0!=0xf0)
- {
- switch(temp0)
- {
- case 0xe0:
- key_value=0x00;
- break;
- case 0xd0:
- key_value=0x04;
- break;
- case 0xb0:
- key_value=0x08;
- break;
- case 0x70:
- key_value=0x0c;
- break;
- default:
- break;
- }
- }
- if(temp1!=0xf0)
- {
- switch(temp1)
- {
- case 0xe0:
- key_value=0x01;
- break;
- case 0xd0:
- key_value=0x05;
- break;
- case 0xb0:
- key_value=0x09;
- break;
- case 0x70:
- key_value=0x0d;
- break;
- default:
- break;
- }
- }
- if(temp2!=0xf0)
- {
- switch(temp2)
- {
- case 0xe0:
- key_value=0x02;
- break;
- case 0xd0:
- key_value=0x06;
- break;
- case 0xb0:
- key_value=0x0a;
- break;
- case 0x70:
- key_value=0x0e;
- break;
- default:
- break;
- }
- }
- if(temp3!=0xf0)
- {
- switch(temp3)
- {
- case 0xe0:
- key_value=0x03;
- break;
- case 0xd0:
- key_value=0x07;
- break;
- case 0xb0:
- key_value=0x0b;
- break;
- case 0x70:
- key_value=0x0f;
- break;
- default:
- break;
- }
- }
- return(key_value);
- }
- keyscan.h源代碼
- #ifndef _KEYSCAN_H_
- #define _KEYSCAN_H_
- INT8U keyscan();
- #endif
- delay.c源代碼
- #include"config.h"
- void LongDelay(INT16U i)
- {
- while(--i);
- }
- delay.h源代碼
- #ifndef _DELAY_H_
- #define _DELAY_H_
- void LongDelay(INT16U i);
- #endif
復制代碼
全部資料51hei下載地址:
51hei.rar
(32.31 KB, 下載次數: 6)
2018-6-20 17:05 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|