❶ 單片機實現門鈴 這個程序中ding dong怎樣實現的。具體ding dong頻率怎麼計算
定時器0中斷時,給定時器0的寄存器TH0和TL0賦的初始值,確定了定時中斷時間為250us,進定時中斷的頻率就是1/0.000250=4000。因為進兩次才算一個周期(beep置0一次,置1一次),所以ding 的頻率應該是2000Hz,過0.5秒後,進入dong,它是進定時中斷2次才翻轉一次置位,所以dong的頻率應該是1000Hz
❷ 用單片機實現一個門鈴控制,編寫一控製程序,門鈴功能(匯編控製程序或者C控製程序)。
單片機(Microcontrollers)誕生於1971年,經歷了SCM、MCU、SoC三大階段,早期的SCM單片機都是8位或4位的。其中最成功的是INTEL的8051,此後在8051上發展出了MCS51系列MCU系統。基於這一系統的單片機系統直到現在還在廣泛使用。隨著工業控制領域要求的提高,開始出現了16位單片機,但因為性價比不理想並未得到很廣泛的應用。90年代後隨著消費電子產品大發展,單片機技術得到了巨大提高。隨著INTEL i960系列特別是後來的ARM系列的廣泛應用,32位單片機迅速取代16位單片機的高端地位,並且進入主流市場。
而傳統的8位單片機的性能也得到了飛速提高,處理能力比起80年代提高了數百倍。高端的32位Soc單片機主頻已經超過300MHz,性能直追90年代中期的專用處理器,而普通的型號出廠價格跌落至1美元,最高端的型號也只有10美元。
當代單片機系統已經不再只在裸機環境下開發和使用,大量專用的嵌入式操作系統被廣泛應用在全系列的單片機上。而在作為掌上電腦和手機核心處理的高端單片機甚至可以直接使用專用的Windows和Linux操作系統。
❸ 基於51單片機的音樂門鈴設計
51資源還不夠啊?汗!用51都能實現GSM遠程防盜報警器 這么個門鈴就不行了啊
再說了 這個電路提供了功放和錄放音電路 單片機需要做的很少 但是我不知道樓主用的是什麼樣的錄放電路 所以我沒辦法提供程序 不過我可以詳細化工作流程
按一次 門鈴之後 單片機會延時10秒 十秒之後無人應答 說明家裡無人 那麼這時候單片機會通過指示燈告知來人可以留言 然後根據錄放電路的存儲容量進行時間的管理。在錄音時間快完畢的時候點亮指示燈 提示錄音時間快完畢 避免漏掉信息 然後在錄音時間到後自動關閉錄音電路 並提示 來人可以離開了 主人來的是後可以按按鍵進行錄音的播放,並且會顯示錄音的時間 根據錄音電路的容量可以設置 3段錄音 5段錄音等 當然隨著段數的增加,單片機的編程會變得復雜,但是其工作原理同一段式錄音控製程序是一樣的
❹ 單片機實現門鈴 這個程序中ding dong怎樣實現的。具體ding dong頻率怎麼計算
用單片機實現叮咚門鈴聲,用定時器定時,用一個引腳輸出一定頻率的方波信號,然後將方波信號放大再驅動揚聲器發聲即可。因用單片機模擬的聲音,不會像專門的叮咚音樂門鈴那樣好聽,做到接近叮咚聲就行了。叮的聲音頻率大約為1230Hz,咚的頻率為680Hz。叮聲要短,咚聲稍長些,可邊聽邊調試。
❺ 求高手:基於單片機的音樂門鈴 設計要有完整的C語言程序。
#include<reg52.h> //包含52單片機寄存器定義的頭文件
sbit sound=P3^7; //將sound位定義為P3.7
unsigned int C; //儲存定時器的定時常數
//以下是C調中音的音頻宏定義
#define 523 //將""宏定義為中音"1"的頻率523Hz
#define re 587 //將"re"宏定義為中音"2"的頻率587Hz
#define mi 659 //將"mi"宏定義為中音"3"的頻率659Hz
#define fa 698 //將"fa"宏定義為中音"4"的頻率698Hz
#define sao 784 //將"sao"宏定義為中音"5"的頻率784Hz
#define la 880 //將"la"宏定義為中音"6"的頻率880Hz
#define xi 987 //將"xi"宏定義為中音"7"的頻率523Hz
/*******************************************
函數功能:1個延時單位,延時200ms
******************************************/
void delay()
{
unsigned char i,j;
for(i=0;i<250;i++)
for(j=0;j<250;j++)
}
/*******************************************
函數功能:主函數
******************************************/
void main(void)
{
unsigned char i,j;
//以下是《兩只老虎》歌曲
unsigned int code f[]={,re,mi,, //每行對應一小節音符
,re,mi,,
mi,fa,sao,
mi,fa,sao,
sao,la,sao,fa,mi,,
sao,la,sao,fa,mi,,
,sao,,
,sao,,
0xff}; //以0xff作為音符的結束標志
//以下是簡譜中每個音符的節拍
//"4"對應4個延時單位,"2"對應2個延時單位,"1"對應1個延時單位
unsigned char code JP[ ]={2,2,2,2,
2,2,2,2,
2,2,3,
2,2,3,
1,2,2,1,2,2,
1,2,2,1,2,2,
2,2,2,
2,2,2,
};
EA=1; //開總中斷
ET0=1; //定時器T0中斷允許
TMOD=0x00; // 使用定時器T0的模式1(13位計數器)
while(1) //無限循環
{
i=0; //從第1個音符f[0]開始播放
while(f[i]!=0xff) //只要沒有讀到結束標志就繼續播放
{
C=460830/f[i];
TH0=(8192-C)/32; //可證明這是13位計數器TH0高8位的賦初值方法
TL0=(8192-C)%32; //可證明這是13位計數器TL0低5位的賦初值方法
TR0=1; //啟動定時器T0
for(j=0;j<JP[i];j++) //控制節拍數
delay(); //延時1個節拍單位
TR0=0; //關閉定時器T0
i++; //播放下一個音符
}
}
}
/***********************************************************
函數功能:定時器T0的中斷服務子程序,使P3.7引腳輸出音頻的方波
************************************************************/
void Time0(void ) interrupt 1 using 1
{
sound=!sound; //將P3.7引腳輸出電平取反,形成方波
TH0=(8192-C)/32; //可證明這是13位計數器TH0高8位的賦初值方法
TL0=(8192-C)%32; //可證明這是13位計數器TL0低5位的賦初值方法
}
❻ 【單片機打鈴系統設計】 c51語言單片機打鈴系統設計
畢業綜合訓練
(畢業論文/設計形式用)
課題名稱 單片機打鈴系統設計
學 院 信息工程學院
專 業 電子信息工程設計
班 級 13專電子1班
姓 名 李躍 學號 2013242638
指導老師 何健
江西科技學院
畢業綜合訓練任務書
學院 信息工程學院 專業 電子信息工程技術 年級 13 班級 電子專1班 姓名 李躍 起止日期 題目 單片機打鈴設計
1.畢業綜合訓練任務及要求(根據題目性質對學生提出具體要求)
設計基於單片機的打鈴裝置,用DS1302對時、分、秒計時和設置打鈴時間,采
用三線串列數據傳輸介面與STC89C52進行同步通信,用矩陣鍵盤來設置時間值,
並通過8255晶元讀入設置值,最後通過89C52單片機晶元綜合控制[1],把當前
時間送到數碼管顯示,到點把信號送入蜂鳴器,實現打鈴,撰寫畢業論文。
2.畢業綜合訓練的原始資料及依據(包括做調研的背景,研究條件、
應用環境等)
3.主要參考資料、文獻
[1] 張鑫. 單片明宏機原理及應用[M].北京:電子工業出版社,2005.8.
[2] 康光華. 電子技術基礎. 模擬部分[M].北京:高等教育出版社,2006.1.
[3] 康光華. 電子技術基礎. 數字部分[M].北京:高等教育出版社,2006.1.
[4] 祁偉, 楊亭. 單片機C51程序設計教程與實驗[M].北京:北京航空航天大學出版社,
2006.
[5] 樓然苗. 李光飛. 單片機課程設計指導[M].北京:北京航空航天大學出版社,2007.4
[6] 單片機學習網
指導教師
年 月 日
摘 要
隨著科學技術的飛速發展,單片機應用的范圍越來越廣,本設計正是基於STC89C52型單片機為核心,加上適當的外圍部件,設計而成的簡易自動打鈴系統。
簡易自動打鈴系統的設計以STC89C52單片機晶元和8255晶元的拓展I/0引腳為核心部件,用定時器中斷系統進行計時、數碼管顯示當前時間、蜂鳴器實現打鈴功能、矩陣鍵盤調整顯示時間、電源電路為整個系統提供5V 工作電壓,由以上模塊構成了本系統。根據設計要求,該簡易自動打鈴系統可以進行計時和激拿冊顯示,設置當前時間,實現定點打鈴等功能。該設計簡單、實用、操作便捷。
關鍵字:單片機;自動定點打鈴;設置時間;中斷;矩陣鍵盤;I/O擴展;
目錄
摘 要............................................................................................................................ I
第一章 方案論證與對比.............................................................................................. 1
1.1方案一 採用時鍾晶元和鍵盤實現功能 .............................................................. 1
1.2方案二:採用中斷定時實現功能 ........................................................................ 1
1.3方案比較 ................................................................................................................ 2
第二章 單元電路設計與論證...................................................................................... 3
2.1單片敏旁機、I/O拓展 . ..................................................................................................... 3
2.2打鈴電路設計 . ............................................................................................................ 4
2.3數碼管電路設計 . ........................................................................................................ 4
第三章 程序設定.......................................................................................................... 5
3.1主程序工作流程..................................................................................................... 5
3.2定時器中斷子程序 ................................................................................................ 5
3.3時間設定子程序 . ........................................................................................................ 6
第四章 系統功能實際測試 ......................................................................................... 7
4.1程序實際編譯測試 . .................................................................................................... 7
4.2系統實際測試 . ............................................................................................................ 7
4.3 軟體調試步驟 ............................................................................................................ 7
4.4子程序調試步驟 . ........................................................................................................ 7
4.5調試結果 . .................................................................................................................... 8
4.6系統誤差及性能分析 . ................................................................................................ 8
第五章 設計總結 ......................................................................................................... 9
第六章 詳細儀器清單 ............................................................................................... 10
參考文獻 ..................................................................................................................... 11
附錄1 詳細程序......................................................................................................... 12
第一章 方案論證與對比
1.1方案一 採用時鍾晶元和鍵盤實現功能
方案一原理框圖如圖1.1所示:
圖 1.1 採用時鍾晶元定時實現功能
該系統用DS1302對時、分、秒計時和設置打鈴時間,採用三線串列數據傳輸介面與STC89C52進行同步通信,用矩陣鍵盤來設置時間值,並通過8255晶元讀入設置值,最後通過89C52單片機晶元綜合控制[1],把當前時間送到數碼管顯示,到點把信號送入蜂鳴器,實現打鈴。
1.2方案二:採用中斷定時實現功能
方案二原理框圖如圖1.2
所示:
圖 1.2 採用中斷定時實現功能
該系統以STC89C52單片機為核心控制部件。用8255做I/O拓展晶元,數碼管接8255的PA 、PB 引腳,用動態掃描的方式顯示當前時間。蜂鳴器與單片機的P3.3口相連,當打鈴時間到時,由STC89C52發出打鈴指令。以外部INT0和INT1中斷按鈕實現調時功能。
1.3方案比較
本設計要求能實現基本計時和打鈴功能。計時和打鈴時間設計,方案一中用到了DS1302時鍾晶元計時和打鈴時間設置;方案二中採用定時器中斷來計時並結合軟體設置打鈴時間。上述兩種方案中:方案一的外圍硬體電路設計復雜,而且時鍾晶元沒有得到充分利用,而方案二的軟體計時具有硬體開銷小,成本低,外圍電路設計簡單等優點。上述兩種方案中:方案一的軟體設計比方案二的難度系數大,使程序易讀性不強。綜合對計時的精密程度要求不高的本系統,本設計採用方案一來實現功能。
第二章 單元電路設計與論證
2.1硬體設計總框圖
本設計主要由STC89C52單片機晶元與8255晶元組成的模塊為控制核心、蜂鳴器電路模塊實現打鈴功能、矩陣鍵盤模塊調整當前時間、數碼管顯示模塊顯示時間,由以上四大模塊構成了本系統,詳細電路圖見附錄一,硬體設計總框圖如圖2.1:
圖2.1硬體設計總框圖
2.1單片機、I/O拓展
圖 2.2 主控電路框圖
STC89C52RC 是一個低功耗,高性能CMOS 8位單片機,片內含8k Bytes ISP的可反復擦寫1000次的Flash 只讀程序存儲器,器件採用ATMEL 公司的高密度、非易失性存儲技術製造,兼容標准MCS-51指令系統及80C51引腳結構,晶元內集成了通用8位中央處理器和ISP Flash存儲單元,功能強大的微型計算機的STC89C52可為許多嵌入式控制應用系統提供高性價比的解決方案。STC89C52具有如下特點:40個引腳,8k Bytes Flash片內程序存儲器,256 bytes的隨機存取數據存儲器(RAM ),32個外部雙向輸入/輸出(I/O)口,5個中斷優先順序2層中斷嵌套中斷,2個16位可編程定時/計數器,2個全雙工串列通信口,看門狗
(WDT )電路,片內時鍾振盪器。其主要特性[1]如有:與MCS-51 兼容;8k 可反復擦寫(>1000次)Flash ROM;全靜態工作:0Hz~24MHz;三級程序存儲器鎖定;256*8位內部RAM ;32可編程I/O線;2個16位可編程定時/計數器;5個中斷源;可編程串列通道;低功耗的空閑和掉電模式。I/O拓展採用8255晶元,單片機用89C52,電路框圖如圖2-2所示。
2.2打鈴電路設計
採用P 型三極體為蜂鳴器提供5V 電源,並把STC89C52的P2.0口與三極體的基極相連接,當P2.0口有低電平輸入出時,三極體導通[2],蜂鳴器響應,從而實現打鈴功能。電路框圖如圖2.4所示:
圖2.3打鈴電路框圖
2.3數碼管電路設計
8255的PA 口控制數碼管的位選,低電平有效;PB 口做為段選輸出,接1K 歐姆的限流電阻[3]。如圖2.4所示:
圖2.4數碼管顯示電路框圖
第三章 程序設定
3.1主程序工作流程
主程序首先設置8255模式,並打開中斷0,設置中斷為邊沿觸發模式;其次在死循環中執行讀秒顯示子程序,當定時器滿一秒時,在顯示緩沖區中時間加一,等待送入數碼管顯示;再次按鍵掃描子程序,如果有中斷0或中斷1按鈕被按下時,則轉入相應功能的子程序中;最後如果當前顯示時間滿足預設打鈴條件,通過打鈴判斷子程序跳入對應的打鈴方式中執行[4]。詳細主程序見附錄二,主程序流程圖如圖3.1。
圖 3.1 主程序流程圖
3.2定時器中斷子程序
此子程序為本設計的核心之一,首先初始化定時器T0,設置T0為工作方式1,其初始值為3CB0H (既每次溢出定時50ms ),並對其循環20次,然後把時間加1s ,並送入顯示緩沖區等待顯示[5]。顯示時,先取出內存地址中的數據,然後查得對應的顯示用段碼從PB 口輸出,PA 口將對應的數碼管選中供電,就能顯示緩沖區中的數據值。為了顯示秒位和上下午標志在數碼管顯示上特加了「—」、「A 」、「P 」這三個特殊字元子。程序流程圖如圖3.2:
圖 3.2定時器中斷顯示子程序流程圖
3.3時間設定子程序
時間設定模塊的設計要點是按鍵的去抖處理與「一鍵多態」
[5]
的處理。即
只涉及2個鍵完成了6位時間參數的設定。「一鍵多態」即多種功能的實現思想史,根據按鍵時刻的系統狀態,決定按鍵採取何種動作,即何種功能。
圖 3.3 鍵盤掃描子程序流程圖
第四章 系統功能實際測試
4.1程序實際編譯測試
在Keil C51編譯環境下編譯過程中所產生的誤差主要是在重裝初值的過程中大約需要8個機器周期,本設計採用在程序開始時對定時器賦初值多加8個機器周期來消除此誤差。
最後在Keil C51編譯環境下編譯通過,0警告,0錯誤。
4.2系統實際測試
通過實驗測試,數碼管顯示,按鍵調時,定時打鈴均符合預期,測試成功。
4.3 軟體調試步驟
1、打開軟體後, 在Project 菜單中選擇New Project命令,打開一個新項目。保存此項目,輸入工程文件名後,並保存工程文件的目錄。
2、為項目文件選擇一個目標器件,即選擇8051的類型。在Data base 列表框中選擇「ATML 89C52」,確定。
3、上述設置好後,創建源程序文件並輸入程序代碼。輸入好代碼後點擊「文件/保存」。
4、把源文件添加到項目中,用滑鼠指在目標工作區的目標1,點擊右鍵在彈出的菜單中選擇添加文件到源代碼組,在彈出的添加文件框中,選擇需要添加到項目中的文件。
5、開始編譯,對項目文件進行編譯。若沒有錯誤後進行硬體調試。
4.4子程序調試步驟
子程序調試應一個模塊一個模塊地進行,首先單獨調試各功能子程序,檢查程序是否能夠實現預期的功能,介面電路的控制是否正常等;最後逐步將各子程序連接起來進行總調試。故調試步驟[6]如下:
A 、蜂鳴器的調試
調試方法:先把打鈴程序下載到單片機,讓蜂鳴器發聲,看是否在正確的時間內實現打鈴。
B 、數碼管程序調試
正確的顯示時間是整個程序的關鍵之一。調試方法:先把程序下載到單片機,讓數碼管顯示,是否正確的顯示時間的變化。
C 、鍵盤調時序
正確的顯示所調的時間是整個程序的關鍵之一。調試方法:先把鍵盤程序和顯示程序下載到單片機,讓數碼管顯示,是否正確的所調時間的變化。
4.5調試結果
實現計時和顯示功能(12小時制),可設置當前時間(包括上下午標志,時、分的數字顯示),能在上午7:45和下午10:00定點打鈴,且每次打鈴均為響鈴3s ,停1s ,再響3s 。
4.6系統誤差及性能分析
經測試該簡易自動打鈴系統在一天內會出現時間誤差,該誤差主要是由於晶振自身的誤差所造成的。另外在中斷的過程中,只會在第一次計時時產生時間的偏移,而它所產生累積誤差很小,可以忽略。
第五章 設計總結
通過這次課程設計,我們得到了很多收獲和體會,懂得了團隊合作的重要性和必要性,以及工程設計的大體過程。第一,鞏固和加深了對單片機基本知識和理解,提高了綜合運用所學知識的能力。第二,增強了根據課程需要選學參考資料,查閱手冊,圖表和文獻資料的自學能力。通過獨立思考,深入研究有關問題,學會自己分析解決問題的方法。第三,通過實際方案的分析比較,設計計算,安裝調試等環節,初步掌握了簡單使用電路的分析方法和工程設計方法。第四,在這次課程設計過程中,光有理論知識是不夠的,還必須懂一些實踐中的知識。所以在課程設計的實踐中,我們應將實驗課與課堂教學結合起來,鍛煉自己的理論聯系實際的能力與實際動手能力。第五,掌握了比較常用的儀器的使用方法,提高了動手能力。第六,培養了嚴謹的工作作風和科學態度。
總之這次課程設計,培養了我們綜合應用單片機原理及應用的理論知識和理論聯系實際的能力;在設計的過程中還培養了我們的團隊精神,同學共同協作,一齊商量討論,解決了許多問題。這一切都令我們受益匪淺,在今後的學習工作中我們會一如既往,不斷努力。
第六章 詳細儀器清單
圖6.1詳細儀器清單
參考文獻
[1] 張鑫. 單片機原理及應用[M].北京:電子工業出版社,2005.8. [2] 康光華. 電子技術基礎. 模擬部分[M].北京:高等教育出版社,2006.1. [3] 康光華. 電子技術基礎. 數字部分[M].北京:高等教育出版社,2006.1.
[4] 祁偉, 楊亭. 單片機C51程序設計教程與實驗[M].北京:北京航空航天大學出版社,2006. [5] 樓然苗. 李光飛. 單片機課程設計指導[M].北京:北京航空航天大學出版社,2007.4 [6] 單片機學習網
附錄1 詳細程序
#include #include
#define uchar unsigned char #define uint unsigned int
sbit RING=P3^3;
#define HOR_UP 0x18 //定義鍵值意義 #define MIN_UP 0x28 #define HOR_DOWN 0X14 #define MIN_DOWN 0x24 #define AM_PM 0X48 #define NO_KEY_DOWN 0XFF
uchar xdata PA _at_ 0xD9FF, PB _at_ 0XDBFF, PC _at_ 0XDDFF, //定義外部變數,強制分配地址 EX_PORT_CON _at_ 0XDFFF;
uchar code LED_CODE[]={0XA0,0XBB,0X62,0X2A,0X39,0X2C,0X24,0XBA, //LED段碼(0~9外加一個全滅, 一個A ,一個P) 0X20,0X28,0XFF,0X30,0X70};
uint code RING_TIME[]={465,1320}; //開啟時間(分)
uchar COUNT=0,KEY=NO_KEY_DOWN,HOR=0,MIN=0,SEC=0; //軟計時-游標-鍵值
void Display(); //顯示 void Time_Go(); //時間進位 void Time_Set(); //時間設置 void Ring_Control(); //繼電器控制 void Delay(uint A); //簡單延時 uchar Key_Scan(); //鍵盤掃描
void main() {
EX_PORT_CON=0X81; //8255初始化(PA,PB ,PC_H輸出,PC_L輸入)
PC=0xF0; //鍵盤初始化 TH0=0X3C; //定時器初始化
TH1=TL1=0; TR1=0;
TMOD=0X21;
EA=ET0=TR0=ET1=1; while(1) { Display(); Time_Go();
KEY=Key_Scan(); Ring_Control(); Time_Set(); } }
void Display() {
PB=0XFF; //消影 PA=0XFe; //發送位碼
if(HOR>=12)PB=LED_CODE[12]; //發送段碼 else PB=LED_CODE[11]; Delay(200); //延時
PB=0XFF; //消影 PA=0XFd; if(HOR>12) //發送位碼 PB=LED_CODE[(HOR-12)/10]; else PB=LED_CODE[HOR/10]; //發送段碼 Delay(200); //延時
PB=0XFF; PA=0xfb;
if(HOR>12)PB=LED_CODE[(HOR-2)%10]; else PB=LED_CODE[HOR%10]; Delay(200);
PB=0XFF; //中間橫桿 PA=0XF7;
if(COUNT>10)//在顯示實時時鍾時閃爍,為01秒/周期 PB=0XFF; else
Delay(200);
PB=0XFF; PA=0Xef;
PB=LED_CODE[MIN/10]; Delay(200);
PB=0XFF; PA=0XdF;
PB=LED_CODE[MIN%10]; Delay(130); }
void Timer() interrupt 1 {
TH0=0X3C; //重裝初值 TL0=0XB2;
COUNT++; //軟計時 }
void Ring() interrupt 3 {
RING=~RING; }
void Time_Go() //時間進位 {
if(COUNT>=20) //計數到達20次,即:定時器50MS*20=1S { COUNT=0; //軟計時清零 SEC+=1; // 秒加1 if(SEC>=60) //秒是否到達60 { SEC=0; //清秒位 MIN+=1; //分鍾加1 if(MIN>=60)//分鍾是否到達60 { MIN=0; //清分位 HOR+=1; //小時加1 if(HOR>=24)//小時是否到達24 HOR=0; //清小時位 } } }
}
void Time_Set() {
if(KEY==HOR_UP){if(HOR>=23)HOR=0;else HOR++;}
else if(KEY==HOR_DOWN){if(HOR==0)HOR=23;else HOR--;} else if(KEY==MIN_UP){if(MIN>=59)MIN=0;else MIN++;} else if(KEY==MIN_DOWN){if(MIN==0)MIN=59;else MIN--;} else if(KEY==AM_PM){if(HOR>=12)HOR-=12;else HOR+=12;} }
void Ring_Control() //繼電器控制 {
uint RTC_MIN;
RTC_MIN=HOR*60+MIN; //將實時時鍾 化成 分鍾 if((RTC_MIN==RING_TIME[0])||(RTC_MIN==RING_TIME[1])) { if(((SEC>=3)&&(SEC=7)){TR1=0;RING=1;} else TR1=1; } }
void Delay(uint A) {
while(A--); }
uchar Key_Scan() {
uchar A=4,ROW=0x08,T=NO_KEY_DOWN; if(PC!=0XF0) //是否有鍵按下 {Delay(200); //消抖 if(PC!=0XF0) while(A--) //查詢,逐列 { ROW
if(T!=0X00) //但前列是否有鍵被按下
{
T=(T+(ROW&0XF0)); //計算鍵值
do {Display();Time_Go();} //防止數碼管在按鍵按下時閃爍
while((PC&0X0F)!=0); //鬆手檢測 peak; //跳出循環
}
} PC=0xf0; //鍵盤初始化
}
return T;
} //返回鍵值
16