**圖:其中左邊的的溫度感測器等ad轉換與本例子無關
uchar segcode[4]=; //段碼 (存放解碼值)
uchar data[4]; //顯示資料
uchar keycode; //判斷按鍵位置
uchar n=0; //顯示重新整理標誌
uchar key=0; //鍵值 pinb!=0x0f
uchar digit=0;
/io口初始化函式/
void io_init(void)
/定時器t1初始化/
void t1_init(void)
/定時器t1中斷服務—資料重新整理/
void t1_refresh(void)
tifr1 = 0x02; //清標誌
}/解碼函式/
void decode(uchar *num)
else if(digit2)
else if(digit==3)
else if(digit>3)
else
;// segcode[0] &= ~0x80; // 加小數點
}/輸入移位函式/
void digit_move(uchar *b)
b[3]=key;
/按鍵掃瞄及資料處理/
void key_scan(void)
portb = ~0x20;delay(10);
keycode = (~pinb) & 0x0f;
while(pinb!=~0x20);
//delay(20000);
switch(keycode)
portb = ~0x40;delay(10);
keycode = (~pinb) & 0x0f;
while(pinb!=~0x40);
//delay(20000);
switch(keycode)
portb = ~0x80;delay(10);
keycode = (~pinb) & 0x0f;
while(pinb!=~0x80);
//delay(20000);
switch(keycode)
/主函式/
void main(void)
delay(30000);}
}/void delay(uint ms)
{uint i,j;
for(i=0;i/
基於ATMEGA128的密碼鎖
密碼鎖題目要求 使用微控制器實現簡易密碼鎖,通過輸入密碼,實現門鎖的開啟 控制繼電器 具體要求如下 1 當輸入正確密碼後,繼電器開啟。2 當三次輸入錯誤密碼後,密碼鎖禁止輸入 10 秒鐘,並進行相應的提示。3 在輸入正確的密碼後,可修改密碼和查詢 清除門開啟的次數。4 自製繼電器電路模組。5 實現密...
基於狀態機的新型按鍵消抖掃瞄程式
一般的按鍵輸入軟體介面程式非常簡單,在程式中一旦檢測到按鍵輸入口為低電平 有時可能為高 便採用軟體延時的方法來進行消抖,然後再次檢測按鍵輸入,如果再次確認為低電平則表示有按鍵按下,轉入執行按鍵處理程式。如果延時後檢測的電平為高電平則放棄本次按鍵檢測,重新開始一次按鍵檢測過程。在簡單的系統中這種方法比...
掃瞄按鍵的解決方法
在做專案 工程 的時候,我們經常要用到比較多的按鍵,而且io資源緊張,於是我們就想方設法地在別的模組 中節省io口,好不容易擠出一兩個io口,卻發現仍然不夠用,實在沒辦法了就新增乙個ic來掃鍵。乙個ic雖然 不高,但對於大批量生產而且產品利潤低 的廠家來說,這是一筆不菲的開支 那,我們能不能想到比較...