#include
typedef unsigned char uchar;
typedef unsigned int uint;
void delay(unsigned int i); //函式聲名
char delaycnt;//定義變數
sbit p10=p1^0;
uint count=0;
uchar n=0;
uchar key_value;//獲取鍵盤碼
uint i=0;
uint flag=0;
//此表為 led 的字模, 共陰數碼管 0-f
unsigned char code disp_tab = ; //段碼控制
//此表為8個數碼管位選控制, 共陰數碼管 1-8個 -
unsigned char code dispbit[8]=; //位選控制 查表的方法控制 從左邊開始
//顯示緩衝區
uchar led_buf[8]=; //存放八個數
//計算每一位
void adcal()
//開時間中斷
void inittime()
//開外部中斷
void initout()
//時間中斷0
void timer0() interrupt 1}}
//外部中斷0
void out0() interrupt 0
}/**********鍵盤**************************/
//返回0-15
uchar keyscan(void)
;//讓矩陣鍵盤的每行分別為低電平
for(j=0; j<4; j++)
temp <<= 1;}}
}uint key()}}
flag = 0;
return 0;
}/****************************************/
//將陣列中的數右移
void mov()
}/************主函式**********************/
main()
ledout[0]=disp_tab[lednumval%10000/1000];
ledout[1]=disp_tab[lednumval%1000/100]|0x80;
ledout[2]=disp_tab[lednumval%100/10];
ledout[3]=disp_tab[lednumval%10];
ledout[4]=disp_tab[lednumval%10000/1000]; //千位
ledout[5]=disp_tab[lednumval%1000/100]|0x80; //百位帶小數點
ledout[6]=disp_tab[lednumval%100/10]; //十位
ledout[7]=disp_tab[lednumval%10]; //個位
for( i=0; i<8; i++)
*///adcal();
/*if(i==2)//百位
if(i==1) //十位
if(i==0)//個位
p2=dispbit[i];//將p2連線位選
i++;
i=i%3;
*/if(key())
//p0=disp_tab[key_value];
p0=disp_tab[led_buf[i]]; //數碼管段選
p2=dispbit[i];//將p2連線位選
i++;
i=i%8;
if(i==64)
delay(150);
}
}/*******************延時函式**********************************************/
void delay(unsigned int i)
按鍵控制數碼管
按key1加一,按key2減一,按key3清零 include reg52.h 此檔案中定義了微控制器的一些特殊功能暫存器 typedef unsigned int u16 對資料型別進行宣告定義 typedef unsigned char u8 sbit lsa p2 2 sbit lsb p2 ...
按鍵數碼管顯示實驗
要求 能夠實現本微控制器按下鍵盤,能夠在數碼管上顯示鍵盤值。連線 將片選cs0鏈結到key led cs。define ledlen 6 xdata unsigned char outbit at 0x8002 位控制口 xdata unsigned char outseg at 0x8004 段控...
數碼管EEPROM按鍵儲存值
key.c include key.h 把led.件包含進來 include eepr.h 把led.件包含進來 include system.h 把timer0.件包含進來 uchar code smgduan 10 uchar displaydata 4 uinty 0 ucharx 0 uch...