導航:首頁 > 操作系統 > 關於單片機的課程設計

關於單片機的課程設計

發布時間:2024-01-26 06:08:51

單片機課程設計功能

單片機的外部結構:1.DIP40雙列直插;52.P0,P1,P2,P3四個8位準雙向I/O引腳;(作為I/O輸入時,要先輸出高電平)3.電源VCC(PIN40)和地線GND(PIN20);4.高電平復位RESET(PIN9);(10uF電容接VCC與RESET,即可實現上電復位)5.內置振盪電路,外部只要接晶體至X1(PIN18)和X0(PIN19);(頻率為主頻的12倍)6.程序配置EA(PIN31)接高電平VCC;(運行單片機內部ROM中的程序)7.P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1單片機內部I/O部件:(所為學習單片機,實際上就是編程控制以下I/O部件,完成指定任務)1.四個8位通用I/O埠,對應引腳P0、P1、P2和P3;2.兩個16位定時計數器;(TMOD,TCON,TL0,TH0,TL1,TH1)3.一個串列通信介面;(SCON,SBUF)4.一個中斷控制器;(IE,IP)針對AT89C52單片機,頭文件AT89x52.h給出了SFR特殊功能寄存器所有埠的定義。C語言編程基礎:1.十六進製表示位元組0x5a:二進制為01011010B;0x6E為01101110。2.如果將一個16位二進數賦給一個8位的位元組變數,則自動截斷為低8位,而丟掉高8位。3.++var表示對變數var先增一;var—表示對變數後減一。4.x|=0x0f;表示為x=x|0x0f;5.TMOD=(TMOD&0xf0)|0x05;表示給變數TMOD的低四位賦值0x5,而不改變TMOD的高四位。6.While(1);表示無限執行該語句,即死循環。語句後的分號表示空循環體,也就是{;}在某引腳輸出高電平的編程方法:(比如P1.3(PIN4)引腳)代碼1.#include//該頭文檔中有單片機內部資源的符號化定義,其中包含P1.32.voidmain(void)//void表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口3.{4.P1_3=1;//給P1_3賦值1,引腳P1.3就能輸出高電平VCC5.While(1);//死循環,相當LOOP:gotoLOOP;6.}注意:P0的每個引腳要輸出高電平時,必須外接上拉電阻(如4K7)至VCC電源。在某引腳輸出低電平的編程方法:(比如P2.7引腳)代碼1.#include//該頭文檔中有單片機內部資源的符號化定義,其中包含P2.72.voidmain(void)//void表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口3.{4.P2_7=0;//給P2_7賦值0,引腳P2.7就能輸出低電平GND5.While(1);//死循環,相當LOOP:gotoLOOP;6.}在某引腳輸出方波編程方法:(比如P3.1引腳)代碼1.#include//該頭文檔中有單片機內部資源的符號化定義,其中包含P3.12.voidmain(void)//void表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口3.{4.While(1)//非零表示真,如果為真則執行下面循環體的語句5.{6.P3_1=1;//給P3_1賦值1,引腳P3.1就能輸出高電平VCC7.P3_1=0;//給P3_1賦值0,引腳P3.1就能輸出低電平GND8.}//由於一直為真,所以不斷輸出高、低、高、低……,從而形成方波9.}將某引腳的輸入電平取反後,從另一個引腳輸出:(比如P0.4=NOT(P1.1))代碼1.#include//該頭文檔中有單片機內部資源的符號化定義,其中包含P0.4和P1.12.voidmain(void)//void表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口3.{4.P1_1=1;//初始化。P1.1作為輸入,必須輸出高電平5.While(1)//非零表示真,如果為真則執行下面循環體的語句6.{7.if(P1_1==1)//讀取P1.1,就是認為P1.1為輸入,如果P1.1輸入高電平VCC8.{P0_4=0;}//給P0_4賦值0,引腳P0.4就能輸出低電平GND2008-11-2110:57回復chen33chen10位粉絲2樓9.else//否則P1.1輸入為低電平GND10.//{P0_4=0;}//給P0_4賦值0,引腳P0.4就能輸出低電平GND11.{P0_4=1;}//給P0_4賦值1,引腳P0.4就能輸出高電平VCC12.}//由於一直為真,所以不斷根據P1.1的輸入情況,改變P0.4的輸出電平13.}將某埠8個引腳輸入電平,低四位取反後,從另一個埠8個引腳輸出:(比如P2=NOT(P3))代碼1.#include//該頭文檔中有單片機內部資源的符號化定義,其中包含P2和P32.voidmain(void)//void表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口3.{4.P3=0xff;//初始化。P3作為輸入,必須輸出高電平,同時給P3口的8個引腳輸出高電平5.While(1)//非零表示真,如果為真則執行下面循環體的語句6.{//取反的方法是異或1,而不取反的方法則是異或07.P2=P3^0x0f//讀取P3,就是認為P3為輸入,低四位異或者1,即取反,然後輸出8.}//由於一直為真,所以不斷將P3取反輸出到P29.}注意:一個位元組的8位D7、D6至D0,分別輸出到P3.7、P3.6至P3.0,比如P3=0x0f,則P3.7、P3.6、P3.5、P3.4四個引腳都輸出低電平,而P3.3、P3.2、P3.1、P3.0四個引腳都輸出高電平。同樣,輸入一個埠P2,即是將P2.7、P2.6至P2.0,讀入到一個位元組的8位D7、D6至D0。第一節:單數碼管按鍵顯示單片機最小系統的硬體原理接線圖:1.接電源:VCC(PIN40)、GND(PIN20)。加接退耦電容0.1uF2.接晶體:X1(PIN18)、X2(PIN19)。注意標出晶體頻率(選用12MHz),還有輔助電容30pF3.接復位:RES(PIN9)。接上電復位電路,以及手動復位電路,分析復位工作原理4.接配置:EA(PIN31)。說明原因。發光二極的控制:單片機I/O輸出將一發光二極體LED的正極(陽極)接P1.1,LED的負極(陰極)接地GND。只要P1.1輸出高電平VCC,LED就正向導通(導通時LED上的壓降大於1V),有電流流過LED,至發LED發亮。實際上由於P1.1高電平輸出電阻為10K,起到輸出限流的作用,所以流過LED的電流小於(5V-1V)/10K=0.4mA。只要P1.1輸出低電平GND,實際小於0.3V,LED就不能導通,結果LED不亮。開關雙鍵的輸入:輸入先輸出高一個按鍵KEY_ON接在P1.6與GND之間,另一個按鍵KEY_OFF接P1.7與GND之間,按KEY_ON後LED亮,按KEY_OFF後LED滅。同時按下LED半亮,LED保持後松開鍵的狀態,即ON亮OFF滅。代碼1.#include2.#defineLEDP1^1//用符號LED代替P1_13.#defineKEY_ONP1^6//用符號KEY_ON代替P1_64.#defineKEY_OFFP1^7//用符號KEY_OFF代替P1_75.voidmain(void)//單片機復位後的執行入口,void表示空,無輸入參數,無返回值6.{7.KEY_ON=1;//作為輸入,首先輸出高,接下KEY_ON,P1.6則接地為0,否則輸入為18.KEY_OFF=1;//作為輸入,首先輸出高,接下KEY_OFF,P1.7則接地為0,否則輸入為19.While(1)//永遠為真,所以永遠循環執行如下括弧內所有語句10.{11.if(KEY_ON==0)LED=1;//是KEY_ON接下,所示P1.1輸出高,LED亮12.if(KEY_OFF==0)LED=0;//是KEY_OFF接下,所示P1.1輸出低,LED滅13.}//松開鍵後,都不給LED賦值,所以LED保持最後按鍵狀態。14.//同時按下時,LED不斷亮滅,各佔一半時間,交替頻率很快,由於人眼慣性,看上去為半亮態15.}數碼管的接法和驅動原理一支七段數碼管實際由8個發光二極體構成,其中7個組形構成數字8的七段筆畫,所以稱為七段數碼管,而餘下的1個發光二極體作為小數點。作為習慣,分別給8個發光二極體標上記號:a,b,c,d,e,f,g,h。對應8的頂上一畫,按順時針方向排,中間一畫為g,小數點為h。我們通常又將各二極與一個位元組的8位對應,a(D0),b(D1),c(D2),d(D3),e(D4),f(D5),g(D6),h(D7),相應8個發光二極體正好與單片機一個埠Pn的8個引腳連接,這樣單片機就可以通過引腳輸出高低電平控制8個發光二極的亮與滅,從而顯示各種數字和符號;對應位元組,引腳接法為:a(Pn.0),b(Pn.1),c(Pn.2),d(Pn.3),e(Pn.4),f(Pn.5),g(Pn.6),h(Pn.7)。如果將8個發光二極體的負極(陰極)內接在一起,作為數碼管的一個引腳,這種數碼管則被稱為共陰數碼管,共同的引腳則稱為共陰極,8個正極則為段極。否則,如果是將正極(陽極)內接在一起引出的,則稱為共陽數碼管,共同的引腳則稱為共陽極,8個負極則為段極。以單支共陰數碼管為例,可將段極接到某埠Pn,共陰極接GND,則可編寫出對應十六進制碼的七段碼表位元組數據

Ⅱ 【單片機打鈴系統設計】 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

Ⅲ 跪求單片機課程設計 要完全呦

題 目:單片機課程設計報告
目 錄
一、設計目的
二、程設計具體要求
三、單片機發展簡史
四、8051單片機系統簡介
五、8051單片機內部定時器/計數器簡介
六、程序電路
七、程序流程
八、程序代碼
九實驗總結-要求寫出完整的論文以及心得體會
十參考資料及小結
原 文 : 一.目的
1. 進一步熟悉和掌握8051單片機的結構及工作原理。
2. 掌握單片機的介面技術及相關外圍晶元的外特性,控制方法。
3. 通過課程設計,掌握以單片機核心的電路設計的基本方法和技術,了解表關電路參數的計算方法。
4. 通過實際程序設計和調試,逐步掌握模塊化程序設計方法和調試技術。
5. 通過完成一個包括電路設計和程序開發的完整過程,使學生了解開發一單片機應用系統的全過程,為今後從事相應打下基礎。
二.課程設計的體要求
a) 原理圖設計。
1. 原理圖設計要符合項目的工作原理,連線要正確,端了要不得有標號。
2. 圖中所使用的元器件要合理選用,電阻,電容等器件的參數要正確標明。
3. 原理圖要完整,CPU,外圍器件,擴器介面,輸入/輸出裝置要一應俱全。
b) 程序調計
1. 根據要求,將總體項能分解成若干個子功能模塊,每個功能模塊完成一個特定的功能。
2. 根據總體要求及分解的功能模塊,確定各功能模塊之間的關系,設直出完整的程序流程圖。
c) 程序調試將設計完的程序輸入,匯編,排除語法錯誤,生成*OBJ文件。
1. 按所設計的原理圖,在實驗平台上連線,檢查無誤。
2. 將匯編後生成的*OBJ文件傳送到實驗裝置的,執行該程序,檢查該程序、是否達到設計要求,若未達到,修改程序,直到達到要求為止,
d) 說明書
1. 原理圖設計說明
簡要說明設計目的,原理圖中所使用的元器件功能及在圖中的作用,各器件的工作過程及順序。
2. 程序設計說明
對程序設計總體功能及結構進行說明,對各子模塊的功能以及各子模塊之間的關系作較詳細的描述。
3. 畫出工作原理圖,程序流程圖並給出程序清單。
目前,單片機已廣泛應用到圖民經濟建設和日常生活的許多領域,成為測控技術現代化必不可少的重要工具。下面介紹一本單片機課程設計的好書,介紹了很多實例有興趣者可以去買哦,價格不貴【圖書目錄】 - 8051單片機課程設計實訓教材
第1章 緒論
1.1 課程設計所需硬體工具
1.2 專題製作所需軟體使用工具
1.3 8051程序開發測試平台
1.4 使用免費匯編編譯器
1.5 89CXX燒錄模擬器操作實例
1.6 自製8051微電腦單板IO51
1.7 IO51操作實例
1.8 以Windows98 工作模式結合DOS模式來執行
第2章 8051單片機課程設計中的基本軟硬體設計
2.1 8051各種基本的硬體設計
2.2 工作指示燈LED
2.3 8051延遲時間計算
2.4 基本按鍵設計
2.5 建立8051通信介面
2.6 簡易8051調試界面
2.7 壓電喇叭測試
2.8 鍵盤掃描
2.9 掃描控制七段顯示器
2.10 LCD介面控制
2.11 8051定時器模式的工作
2.12 定時器模式0測試
2.13 定時器模式1測試
2.14 定時器模式2測試
2.15 以定時器產生各種頻率的聲音
2.16 以定時器演奏—段旋律
第3章 帶單片機的LCD時鍾
第4章 定時鬧鈴
第5章 定時鬧鈴LCD
第6章 音樂倒數定時器
第7章 密碼鎖控制
第8章 可存儲式電子琴
第9章 8051八音盒
第10章 紅外線遙控器研究
10.1 紅外線遙控器動作原理
10.2 如何觀察紅外線遙控器信號
10.3 紅外線遙控器解碼功能說明
第11章 紅外線家電遙控
第12章 8051伺服機控制
12.1 伺服機工作原理及改裝
第1.3章 8051伺服車控制
13.1 功能說明
13.2 伺服車組裝及實驗
第14章 紅外線遙控伺服車
14.1 功能說明
14.2 遙控伺服車組裝及實驗
14.3 控制電路
14.4 控製程序
第15章 無線電家電遙控
15.1 功能說明
15.2 遙控編碼解碼控制
第16章 8051聲控設計
16.1 聲控基本知識介紹
16.2 系統組成
16.3 聲控模塊介紹
16.4 基本控制電路
16.5 基本控製程序
16.6 聲控課題設計

附錄H 如何使用KEIL 8051開發系統匯編和編譯程序及調試
附錄I EPM89 890XX燒錄模擬器特性
附錄J 1051 8051 10控制板特性
附錄K VCMM聲控模塊特性
附錄L IO51控制板完整電路圖
附錄M 需要從網站下載的相關資料的使用說明
附錄N 硬體介面板版權聲明及如何訂購
附錄A 簡易穩壓電源製作
附錄B 本書實驗所需軟硬體工具及零件
附錄C 8051內部控制寄存器介紹
附錄D 8051指令集
附錄E 如何自製8051單板
附錄F 課程設計報告參考內容
附錄G IO51控制板窗口版驅動程序使用說明

Ⅳ 單片機課程設計怎麼做

P1.0口,串一個電阻,接一個P溝道的MOSFET,MOSFET驅動電動機,電動機上反向並聯一個二極體,防止自感高壓擊毀其它設備。
程序上就用定時器來不停的翻轉P1.0口就可以了,這個時候P1.0口輸出方波,通過程序改方波的占空比就可以調整電動機的速度了。
這個是指51單片機的,如果別的單片機有的帶PWM輸出的就更方便了。
這種方法比用DAC改變輸出電壓要簡單得多,而且這個的電源利用效率是相當高的。

Ⅳ 單片機課程設計

P1口接一個數碼管,一個按鍵可以接在P3.2作外部中斷。

Ⅵ 單片機課程設計哪個題目簡單

單片機控制的智能搶答器設計簡單
單片機課程設計題目匯總

單片機課程設計題目匯總
1. 單片機控制的智能搶答世亂器設計
2、 LED 點陣顯示課程設計
3.基於 AT89C52 單片機門禁系統設計
4.用單片機設計全自動洗衣機的控制系統
基於單片機的樓宇對講系統單片機控制的 LCD 應用
7. 秒錶、電子鍾計時器設計論文
8. 簡易數字電壓表的設計
9.基於單片機的數字溫度計課程設計10.數字電壓行握表設計11.IC 智能水表控制12.水箱單片機控制系統13.紅外遙控電子密碼鎖14.八位搶答器設計
15.籃球比賽計時記分器
16.多位數據採集與顯示系統17.LED 點陣顯示控制18.紅外遙控電風扇的控制19. 超聲波測距儀20.水流量顯示表
21.交通燈控制系統設計22.多功能秒錶設計23.萬年歷設計
24,簡易數字電壓表的設計25.智能溫度檢測儀設計26.水塔水位自動控制設計27.八位循環燈設計28.計程車計價器29.液晶顯示設計30.紅外遙控器設計
31.簡易波形發生器設計32.步進電機的控制33.串口通信設計
34、電熱鍋爐溫度控制35. 智能電子鍾的設計36,自動化純水系統設搜帶檔計37.液位控制器
38. 基於 SMS/GPRS 網路的遠程監控系統的設計39、單片機埠地址對液晶顯示器控制
1/1 16

閱讀全文

與關於單片機的課程設計相關的資料

熱點內容
衛星鍋加密卡那裡收購 瀏覽:56
小米工具文件夾選項在哪裡 瀏覽:53
md5磁碟加密 瀏覽:640
單片機x地址 瀏覽:208
回車鍵失靈運行命令如何使用 瀏覽:984
電腦一鍵解壓縮的軟體 瀏覽:171
怎麼關閉手機通訊錄對外app 瀏覽:370
我的世界如何強行進入一個滿人的伺服器 瀏覽:653
什麼app可以查詢會考成績 瀏覽:389
程序員能創造的價值 瀏覽:259
伺服器上的redis是什麼意思 瀏覽:379
軟體產品經理與程序員 瀏覽:922
高中生程序員 瀏覽:892
ps處理pdf 瀏覽:723
伺服器c1什麼意思 瀏覽:222
哈爾濱手機什麼app拍違章有獎勵 瀏覽:479
盜賊用什麼app最好 瀏覽:904
51單片機如何測量電導率 瀏覽:501
移動花卡怎麼使用app流量 瀏覽:556
個稅演算法2021表格公式解讀 瀏覽:176