第一篇:單片機課程設計
目錄
第 1 章
概述.....................................................................................6 第 2 章
單片機.................................................................................7
2.1 單片機簡介及應用..................................................................7
2.2 AT89C51簡介.......................................................................10
2.2.1主要特性..........................................................................11
2.2.2管腳說明..........................................................................11
2.2.3振蕩器特性......................................................................12 第 3 章
電子時鐘設計方案.............................................................13
3.1電子時鐘簡介...........................................................................13
3.2電子時鐘的基本特點...............................................................13
3.3電子時鐘的原理.......................................................................13 第 4 章
電子時鐘硬件設計.............................................................15
4.1 Proteus的簡介..........................................................................15
4.1.1 EDA工具軟件的功能.....................................................15
4.1.2 特點.................................................................................16
4.2 電子時鐘原理圖及分析...........................................................17
4.2.1原理圖...............................................................................17
4.2.2功能說明...........................................................................18 第 5 章
電子時鐘軟件設計..............................................................20
5.1 軟件設計流程圖........................................................................20
5.1.1 程序流程圖.......................................................................20
5.1.2 源程序...............................................................................21
5.2 系統仿真及程序測試................................................................27 第 6 章
實驗心得...............................................................................29 附錄 元器件...........................................................................................30 參考文獻.................................................................................................30
第一章 概述
一、設計目的
計算機控制系統課程設計是自動化專業的一個重要實踐教學環節。在課程設計過程中,學生通過一個較完整的設計過程,可以加深對本門課程所學理論知識的理解與應用,提高學生對所學理論知識的綜合運用能力,使學生對計算機控制系統有一個整體認識,掌握計算機控制系統的設計方法。通過課程設計,還可以培養學生獨立工作能力,為將來畢業設計打好基礎。
二、設計要求
1.用AT89C51單片機及接口電路設計一個電子計時器。
①系統硬件設計:根據任務要求,完成單片機最小系統及其擴展設計,組成功能完整的系統。
②系統軟件設計:根據數字電子計時器功能,完成控制軟件的編寫與調試,并對數碼顯示進行控制。2.實現的功能:
①開機時,電子鐘從12:00:00開始自動計時。②設置按鍵,能對時、分、秒進行調整。
三、設備及工作環境
1.硬件:計算機一臺。
2.軟件:Windows操作系統、單片機編譯軟件,proteus仿真軟件。
四、設計思路
電子計時器主要由AT89C51、顯示模塊、控制模塊和計時運算模塊四大部分組成。其中控制模塊和計時運算模塊主要對時、分、秒的數值顯示和調整進行操作,并且秒計算到60時,自動清零并向分進1;分計算到60時,自動清零并向時進1;時計算到24時,自動清零。這樣,就形成了循環計時,顯示模塊主要用來顯示當前計數值。A89C51是整個設計的核心,主要用來產生定時中斷,傳輸數據和控制各個部件工作。
第二章 單片機
自從1971年微型計算機問世以來,隨著大規模集成電路技術的進一步發展,導致微型計算機向兩個方向發展:一是高速度、高性能、大容量的高檔微型計算機及其系列化,向大、中型計算機的挑戰;另一個是穩定可靠、小而廉、能適應各種控制領域需要的單片機。
2.1 單片機簡介及應用 1.單片機的簡介
單片機是把中央處理單元、隨機存儲器、只讀存儲器、定時/計數器以及I/O接口電路等主要部件集成在一塊半導體芯片上的微型計算機。雖然單片機只是一個芯片,但從組成和功能上看,它已具有了微型計算機系統的含義,從某種意義上說,一塊單片機芯片就是一臺微型計算機。
自從1975年美國德克薩斯公司推出世界第一個4位單片機TMS——1000型以來,單片機技術不斷發展,目前已成為微型計算機技術的一個獨特分支,廣泛應用于工業控制、儀器儀表智能化和家用電子產品等各個控制領域。2.單片機的發展
1975年4位單片機的產生開創了單片機的歷史,由于4位單片機具有較高的性能價格比,主要用于家用電器和電子玩具,如電視機、空調機、洗衣機、微波爐等。
1976年美國Intel公司首次推出了8位單片機MCS-48系列,從而進入了8位單片機時代。1978年Motorola公司推出6801系列的8位機。早期的8位單片機的功能較差,一般都沒有串行I/O口,幾乎不帶A/D、D/A轉換器,中斷控制和管理能力也較弱,并且尋址空間的范圍小(小于8KB)。隨著集成工藝水平的提高,一些高性能8位單片機相繼問世,增加了通用串行通信控制,強化中斷控制功能,增加了定時/計數器的個數,擴展了存儲器的容量,部分系列單片機內還集成了A/D、D/A轉換接口。如Intel公司的MCS-51系列、NEC公司的μPD78XX系列等。為了提高單片機的控制功能,拓展其應用領域,在高檔8位單片機基礎上,又推出新一代8位單片機,如Intel、Phillips、Atmel、華邦公司的80C51 系列,Motorola公司的MC68HC11系列,Microchip公司的PIC16C系列等。8位單片機功能強、品種多、價格低廉,因而廣泛應用于各個領域。
繼8位單片機以后,16位單片機逐漸問世并得到很大的發展,Intel公司于1983年推出的MCS-96系列單片機就是其中的典型產品。16位單片機的集成度更高,內部除有常規I/O口、定時/計數器、全雙工串行口外,還有高速I/O部件、多路A/D轉換器、脈沖寬度調制器及監視定時器等,運算速度更快。近年來還出現了32位單片機,例如英國Inmos公司的IMST414單片機、Intel公司的80960單片機、日本NEC公司的μPD77230單片機,可用于高速控制、圖像處理、語音偶A/DA處理和數字濾波等
從單片機的結構上看,單片機的發展趨勢將向著片內存儲器容量增加、高性能、高速度、多功能、低電壓、低功耗、低價格以及外圍接口電路內裝化等方向發展。
1.大容量和高性能化:新一代8位單片機的CPU及寄存器都采用16位,內部總線也采用16位,有的還采用流水線技術以及RISC精簡指令集計算機技術,指令執行速度可達100ns,堆棧的空間達64KB,并支持C語言的開發。內部RAM在1MB以上,內部ROM可達48KB,存儲器尋址可達16MB。
2.多樣化的I/O口及電路內裝化:隨著集成度的不斷提高,盡可能把眾多的各種外圍功能部件集成在片內。單片機內部一般帶有存儲器、定時/計數器、串行口、并行口,目前較高檔的單片機內部還集成A/D、D/A、DMA控制器、聲音發生器、監視定時器、液晶顯示驅動、PWM端口、FIP控制、彩色電視機和錄像機用的鎖相電路等多樣的I/O接口。
3.低功耗、寬范圍的電源電壓:許多單片機工作電壓范圍大,而且可在低電壓下工作。
單片機的發展前景是非常樂觀的,其應用范圍也將更加廣泛。3.單片機的特點
單片機結構上的設計主要是滿足控制的需要,因此,它在硬件結構、指令系統及I/O能力等方面均有其獨特之處,其顯著的特點之一就是具有非常有效的控制功能,故也可以把單片機成為微控制器。
與普通的微型計算機相比,單片機主要具有以下特點:
4(1)體積小、結構簡單、可靠性高 單片機把各功能部件集成在一塊芯片上,內部采用總線結構,減少了各芯片之間的連線,大大提高了單片機的可靠性與抗干擾能力。另外,其體積小,對于強磁場環境易于采取屏蔽措施,適合于惡劣環境下工作。
(2)控制功能強 單片機雖然結構簡單,但是它“五臟俱全”,已經具備了足夠的控制功能。單片機具有較多的I/O口,CPU可以直接對I/O口進行I/O操作、算術操作、邏輯操作和位操作,指令簡單而豐富。所以單片機也是“面向控制”的計算機。
(3)低電壓、低功耗 單片機已可在2.2V的電壓下運行,有的已能在1.2V或0.9V電壓下工作;工耗降至μA級,一顆紐扣電池就可以長期使用。
(4)優異的性能價格比 由于單片機構成的控制系統硬件結構簡單、開發周期短、控制功能強、可靠性高,因此,在達到同樣功能的條件下,用單片機開發的控制系統比用其他類型的微型計算機開發的控制系統價格更便宜。
4.單片機的應用與89C51單片機的介紹
由于單片機具有上述顯著特點,所以其應用領域無所不及,到處都有它的身影。
A、單片機的典型應用領域
(1)工業控制 單片機廣泛用于工業自動化控制系統中,數據采集、過程控制、過程測控和生產線上的機器人系統,都是用單片機作為控制器。自動化使工業系統處于最佳工作狀態,從而提高經濟效益、、改善產品質量和減輕勞動強度,因此單片機技術廣泛應用與機械、電子、石油、化工、紡織和食品等工業領域中。
(2)智能化儀器儀表 在各類儀器儀表中引入單片機,可以使儀器儀表智能化、數字化、自動化,提高測試精度和準確度,簡化結構,減小體積及重量,提高性能價格比。例如:只智能儀器,醫療器械和數字示波器等。
(3)智能家電 家電產品智能化程度的進一步提高需要有單片機的參與,例如“微電腦控制”的洗衣機、電冰箱、微波爐、空調機、電視機和音響設備等,這里的 “微電腦”實際上就是單片機。
(4)信息與通信技術 圖形終端機、傳真機、復印機、調制解調器、聲像 5 處理器和數字濾波器等。
5.單片機的應用實例
下面以單片機在遙控及數字調諧電視接收機中的應用為例進行介紹。單片機在電視接收機中的應用,大致分為兩個領域:一是用于操作控制系統;二是用于圖像、聲音信息的處理。屬于前一領域的應用有紅外遙控、數字調諧、節目預約、功能顯示和語言遙控等。
現在以數字調諧選臺電路為例加以說明,如圖1所示。當進行預置選臺是,有本機鍵盤或遙控發出預置選臺指令、單片機控制器讀入指令后首先進行解碼(通過執行解碼程序完成,每一種控制功能都對應一段控制程序,分別寫于程序存儲器ROM中的不同區域,用地址碼來選擇)。解碼的結果是識別出輸入的控制功能指令代碼所代表的控制功能,即找到該控制功能所對應控制程序的首地址,然后從該首地址開始執行這段程序。在控制程序的控制下,對時鐘脈沖進行變換處理,由微控制器的搜索計數器進行加減計數,產生數字選臺數據,其中數字頻信息送至頻段譯碼電路,得到三個頻段(VL、VH、U)的控制電壓送至調諧器完成頻段的切換;而數字調諧電壓信息送至微控制器內的D/A轉換器,以便合成頻率和寬度為特定值的脈沖寬度調制(PWM)信號,經低通濾波器變換成直流調諧控制電壓VT,也送至調諧器進行頻段內不同頻道的選擇,兩種信號共同作用完成選臺。控制電路還送出供顯示選臺及接收機調整狀態的標記用的信號。
2.2
AT89C51簡介
AT89C51 AT89C51 單片機簡介 AT89C51 是一種帶 4K 字節閃爍可編程可擦除只讀存儲器(FPEROM— Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能 CMOS8 位微處理器,俗稱單片機。A單片機的可擦除只讀存儲器可以反復擦除 100 次。該 器件采用 ATMEL 高密度非易失存儲器制造技術制造,與工業標準的 MCS-51 指令 集和輸出管腳相兼容。由于將多功能 8 位 CPU 和閃爍存儲器組合在單個芯片中,ATMEL 的 AT89C51 是一種高效微控制器。
2.2.1主要特性
與 MCS-51 兼容;4K 字節可編程閃爍存儲器;壽命:1000 寫/擦循環;數據保留時間:10 年;全靜態工作:0Hz-24Hz;三級程序存儲器鎖定;128*8 位內部 RAM;32 可編程 I/O 線;兩個 16 位定時器/計數器;5 個中斷源;可編程串行通道;低功耗的閑置和掉電模式;片內振蕩器和時鐘電路。
2.2.2管腳說明
VCC:供電電壓。GND:接地。P0 口:P0 口為一個 8 位漏級開路雙向 I/O 口,每腳可吸收 8TTL 門電流。當 P1 口的管腳第一次寫 1 時,被定義為高阻輸入。P0 能夠用于外部程序數據 存儲器,它可以被定義為數據/地址的第八位。在 FIASH 編程時,P0 口作為原 碼輸入口,當 FIASH 進行校驗時,P0 輸出原碼,此時 P0 外部必須被拉高。P1 口:P1 口是一個內部提供上拉電阻的 8 位雙向 I/O 口,P1 口緩沖器能 接收輸出 4TTL 門電流。P1 口管腳寫入 1 后,被內部上拉為高,可用作輸入,P1 口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在 FLASH 編程和校驗時,P1 口作為第八位地址接收。P2 口:P2 口為一個內部上拉電阻的 8 位雙向 I/O 口,P2 口緩沖器可接收,輸出 4 個 TTL 門電流,當 P2 口被寫“1”時,其管腳被內部上拉電阻拉高,且 作為輸入。并因此作為輸入時,P2 口的管腳被外部拉低,將輸出電流。這是由 于內部上拉的緣故。P2 口當用于外部程序存儲器或 16 位地址外部數據存儲器 進行存取時,P2 口輸出地址的高八位。在給出地址“1”時,它利用內部上拉 優勢,當對外部八位地址數據存儲器進行讀寫時,P2 口輸出其特殊功能寄存器 的內容。P2 口在 FLASH 編程和校驗時接收高八位地址信號和控制信號。P3 口:P3 口管腳是 8 個帶內部上拉電阻的雙向 I/O 口,可接收輸出 4 個 TTL 門電流。當 P3 口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3 口將輸出電流(ILL)這是由于上拉的 緣故。P3 口也可作為 AT89C51 的一些特殊功能口,如下表所示: 口管腳 備選功能 P3.0 RXD(串行輸入口)P3.1 P3.2 P3.3 P3.4 P3.5 TXD(串行輸出口)/INT0(外部中斷 0)/INT1(外部中斷 1)T0(記時器 0 外部輸入)T1(記時器 1 外部輸入)P3.6 /WR(外部數據存儲器寫選通)P3.7 /RD(外部數據存儲器 讀選通)P3 口同時為閃爍編程和編程校驗接收一些控制信號。RST:復位輸入。當振蕩器復位器件時,要保持 RST 腳兩個機器周期的高電平時間。ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地 位字節。在 FLASH 編程期間,此引腳用于輸入編程脈沖。在平時,ALE 端以不 變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的 1/6。因此它可用作對 外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數據存儲器 時,將跳過一個 ALE 脈沖。如想禁止 ALE 的輸出可在 SFR8EH 地址上置 0。此時,ALE 只有在執行 MOVX,MOVC 指令是 ALE 才起作用。另外,該引腳被略微拉高。如果微處理器在外部執行狀態 ALE 禁止,置位無效。/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個 機器周期兩次/PSEN 有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN 信 號將不出現。/EA/VPP:當/EA 保持低電平時,則在此期間外部程序存儲器(0000HFFFFH),不管是否有內部程序存儲器。注意加密方式 1 時,/EA 將內部鎖定為 RESET;當/EA 端保持高電平時,此間內部程序存儲器。在 FLASH 編程期間,此 引腳也用于施加 12V 編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。
2.2.3振蕩器特性
XTAL1 和 XTAL2 分別為反向放大器的輸入和輸出。該反向放大器可以配置 為片內振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅動器件,XTAL2 應不接。有余輸入至內部時鐘信號要通過一個二分頻觸發器,因此對外 部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。
圖 AT89C51
第三章 電子時鐘設計方案
3.1電子時鐘簡介
電子鐘亦稱數顯鐘(數字顯示鐘),是一種用數字電路技術實現時、分、秒計時的裝置,與機械時鐘相比,直觀性為其主要顯著特點,且因非機械驅動,具有更長的使用壽命,相較石英鐘的石英機芯驅動,更具準確性。電子鐘已成為人們日常生活中必不可少的必需品,廣泛用于個人家庭以及車站、碼頭、劇院、辦公室等公共場所,給人們的生活、學習、工作、娛樂帶來極大地方便。
相對于其他時鐘類型,它的特點可歸結為“兩強一弱 ”:比機械鐘強在觀時顯著,比石英鐘強在走時準確,但是它的弱點為顯時較為單調。
3.2電子時鐘的基本特點
本設計由單片機 AT89C51 芯片和 LED 數碼管為核心,輔以必要的電路,構成了一個單片機電子時鐘。與傳統機械表相比,它具有走時精確,顯示直觀等特點。它的計時周期為 24 小時,顯滿刻度為“23 時 59 分 59 秒”,另外具有校時功能等特點。該電子鐘可以做到的功能:上電或按鍵復位后能自動顯示系統提示符“P.”進入時鐘準備狀態 2.第一次按電子鐘啟動/ 調整鍵,電子鐘從 0 時 0 分 0 秒開始運行,進入時鐘運行狀態。再次按電子鐘啟動/調整鍵,則電子鐘進入時鐘調整狀態,此時可利用各調整鍵調整時間,調整結束后可按啟動/調整鍵 再次進入時鐘運行狀態。通過設置的 A、B、C、D 四個鍵來調整運行,并且利用了 8 位 LED 顯示時分秒。
3.3電子時鐘的工作原理
電子鐘是一個將“ 時”,“分”,“秒”顯示于人的視覺器官的計時裝置。它的計時周期為24小時,顯示滿刻度為23時59分59秒,具有校時功能和報時功能。因此,一個基本的數字鐘電路主要由譯碼顯示器、“時”,“分”,“秒”計數器、校時電路、報時電路和振蕩器組成。主電路系統由秒信號發生器、“時、分、秒”計數器、譯碼器及顯示器、校時電路、整點報時電路組成。秒信號產生器是整個系統的時基信號,它直接決定計時系統的精 度,一般用石英晶體振蕩器加分頻器來實現。將標準秒信號送入“秒計數器”,“秒計數器”采用60進制計數器,每累計60秒發出一個“分脈沖”信號,該信號將作為“分計數器”的時鐘脈沖。“分計數器”也采用60進制計數器,每累計60分鐘,發出一個“時脈沖”信號,該信號將被送到“時計數器”。“時計數器”采用24進制計時器,可實現對一天24小時的累計。譯碼顯示電路將“時”、“分”、“秒”計數器的輸出狀態用七段顯示譯碼器譯碼,通過七段顯示器顯示出來。整點報時電路時根據計時系統的輸出狀態產生一脈沖信號,然后去觸發一音頻發生器實現報時。校時電路時用來對“時”、“分”、“秒”顯示數字進行校對調整。
第 四 章
電子時鐘硬件設計
4.1 Proteus的簡介
Proteus(海神)的ISIS是一款Labcenter出品的電路分析實物仿真系統,可仿真各種電路和IC,并支持單片機,元件庫齊全,使用方便,是不可多得的專業的單片機軟件仿真系統。
4.1.1 EDA
工具軟件的功能
(1)智能原理圖設計(ISIS)
豐富的器件庫:超過27000種元器件,可方便地創建新元件;
智能的器件搜索:通過模糊搜索可以快速定位所需要的器件;
智能化的連線功能:自動連線功能使連接導線簡單快捷,大大縮短繪圖時間;
支持總線結構:使用總線器件和總線布線使電路設計簡明清晰;
可輸出高質量圖紙:通過個性化設置,可以生成印刷質量的BMP圖紙,可以方便地供WORD、POWERPOINT等多種文檔使用。
(2)完善的電路仿真功能(Prospice)
※ ProSPICE混合仿真:基于工業標準SPICE3F5,實現數字/模擬電路的混合仿真;
※ 超過27000個仿真器件:可以通過內部原型或使用廠家的SPICE文件自行設計仿真器件,Labcenter也在不斷地發布新的仿真器件,還可導入第三方發布的仿真器件;
※ 多樣的激勵源:包括直流、正弦、脈沖、分段線性脈沖、音頻(使用wav文件)、指數信號、單頻FM、數字時鐘和碼流,還支持文件形式的信號輸入;
※ 豐富的虛擬儀器:13種虛擬儀器,面板操作逼真,如示波器、邏輯分析 11 儀、信號發生器、直流電壓/電流表、交流電壓/電流表、數字圖案發生器、頻率計/計數器、邏輯探頭、虛擬終端、SPI調試器、I2C調試器等;
※ 生動的仿真顯示:用色點顯示引腳的數字電平,導線以不同顏色表示其對地電壓大小,結合動態器件(如電機、顯示器件、按鈕)的使用可以使仿真更加直觀、生動;
※ 高級圖形仿真功能(ASF):基于圖標的分析可以精確分析電路的多項指標,包括工作點、瞬態特性、頻率特性、傳輸特性、噪聲、失真、傅立葉頻譜分析等,還可以進行一致性分析;
(3)獨特的單片機協同仿真功能(VSM)
※ 支持主流的CPU類型:如ARM7、8051/
52、AVR、PIC10/
12、PIC16、PIC18、PIC24、dsPIC33、HC11、BasicStamp、8086、MSP430等,CPU類型隨著版本升級還在繼續增加,如即將支持CORTEX、DSP處理器;
※ 支持通用外設模型:如字符LCD模塊、圖形LCD模塊、LED點陣、LED七段顯示模塊、鍵盤/按鍵、直流/步進/伺服電機、RS232虛擬終端、電子溫度計等等,其COMPIM(COM口物理接口模型)還可以使仿真電路通過PC機串口和外部電路實現雙向異步串行通信;
※ 實時仿真:支持UART/USART/EUSARTs仿真、中斷仿真、SPI/I2C仿真、MSSP仿真、PSP仿真、RTC仿真、ADC仿真、CCP/ECCP仿真;
※ 編譯及調試:支持單片機匯編語言的編輯/編譯/源碼級仿真,內帶8051、AVR、PIC的匯編編譯器,也可以與第三方集成編譯環境(如IAR、Keil和Hitech)結合,進行高級語言的源碼級仿真和調試;
4.1.2 特點
① 全部滿足我們提出的單片機軟件仿真系統的標準,并在同類產品中具有明顯的優勢。
②具有模擬電路仿真、數字電路仿真、單片機及其外圍電路組成的系統的仿 12 真、RS-232動態仿真、C調試器、SPI調試器、鍵盤和LCD系統仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發生器等。
③ 目前支持的單片機類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。
④ 支持大量的存儲器和外圍芯片。總之該軟件是一款集單片機和SPICE分析于一身的仿真軟件,功能極其強大,可仿真
51、AVR、PIC。
4.2 電子時鐘原理圖及分析
4.2.1原理圖
1.系統總體原理圖
圖1系統總體原理圖
4.2.2功能說明
1.整體功能說明
在LED數碼管上能實現數字計時器的時、分、秒顯示,并能對時、分、秒進行加1校對和清零.通過控制鍵控制計時器的開始,暫停,繼續和清零.并且開機時時鐘時從00:00:00開始計時的。
2.模塊功能說明
(1)AT89C51簡介,如下圖
圖2 AT89C51引腳圖
①TMOD定時器/計數器方式寄存器
定時器方式控制寄存器TMOD在特殊功能寄存器中,字節地址為89H,無位地址。
②TCON定時器/計數器控制寄存器
TCON在特殊功能寄存器中,字節地址為88H,位地址(由低位到高位)為 14 88H--8FH,由于有位地址,十分便于進行位操作。③定時器/計數器的初始化
由于定時器/計數器的功能是由軟件編程確定的,所以一般在使用定時/計數器前都要對其進行初始化,使其按設定的功能工作.初始貨的步驟一般如下:
1、確定工作方式(即對TMOD賦值),預置定時或計數的初值。
2、根據需要開放定時器/計數器的中斷(直接對IE位賦值)。
3、啟動定時器/計數器。(2)時鐘電路
單片機芯片可使用內部時鐘電路和外部時鐘電路兩種方式產生電路所需的時鐘脈沖,內部時鐘電路實現可用石英晶體和微調電容外接即可達到,外部時鐘電路實現需要一個外部脈沖源引入脈沖信號以保證個單片機之間時鐘信號的同步。從硬件實現難易角度考慮,內部時鐘電路的實現比外部時鐘電路的實現更簡易。既本數字電子鐘設計所需的時鐘源采用內部時鐘電路實現。所用定時方式為工作方式1,石英晶振為12M,即最小定時時間為1us,最大定時時間約為65.5ms,其電路圖如下圖2所示。
圖3 時鐘電路圖(3)LED數碼管
7SEG-MPX6-CC是7段6位共陰級數碼管,DP為小數點,位碼(1-6)應輪流通低電位,段碼控制數碼管的顯示:0-b,1-g,2-a,3-f,4-c,5-e,6-h,7-d.共陰極LED數碼管,它是將發光二極管的陰極(負極)短接后作為公共陰極.當驅動信號為高電平才能發光。
第
五 章
電子時鐘軟件設計
5.1 軟件設計流程圖
5.1.1 程序流程圖.1.時鐘顯示程序流程圖 時鐘顯示程序流程圖如下圖
圖 4 時鐘顯示程序流程圖
5.1.2 源程序
源程序清單
ORG 0000H LJMP MAIN ORG 0003H LJMP MIAO ORG 000BH LJMP SHI ORG 0013H LJMP FEN ORG 001BH LJMP SZ
MAIN:
MOV R7, #20 MOV R4, #00H MOV R5, #00H MOV R6, #00H
MOV TMOD, #16H MOV TH1, #3CH MOV TL1, #0B0H MOV TH0, #0FFH MOV TL0, #0FFH SETB TR0 SETB
TR1 SETB EA SETB ET1 SETB PT1 SETB IT0 SETB IT1 CLR EX0 CLR EX1 CLR ET0
LOOP:
MOV A, R4
MOV B, #10 DIV AB MOV DPTR, #TAB MOVC A, @A+DPTR MOV P0, A MOV P1,#01H LCALL DELAY MOV P0, #0FFH MOV A, B
MOVC A, @A+DPTR MOV P0, A MOV P1,#02H LCALL DELAY MOV P0, #0FFH MOV P2, #0FFH JNB
P2.0,TIAOJIE
MOV P1, #04H MOV P0, #0F6H LCALL DELAY MOV P0,#0FFH MOV A, R5
MOV B, #10 DIV AB MOV DPTR, #TAB MOVC A, @A+DPTR MOV P0, A MOV P1,#08H LCALL DELAY MOV P0, #0FFH MOV A, B
MOVC A, @A+DPTR MOV P0, A MOV P1,#10H LCALL DELAY MOV P0, #0FFH MOV P2, #0FFH
JNB
P2.0,TIAOJIE
MOV P1, #20H MOV P0, #0F6H LCALL DELAY
MOV P0, #0FFH MOV A, R6
MOV B, #10 DIV AB MOV DPTR, #TAB MOVC A, @A+DPTR MOV P0, A MOV P1,#40H LCALL DELAY MOV P0, #0FFH MOV A, B
MOVC A, @A+DPTR MOV P0, A MOV P1,#80H LCALL DELAY MOV P0, #0FFH MOV P2, #0FFH JNB
P2.0,TIAOJIE
LCALL DELAY LJMP
LOOP
TIAOJIE:CPL ET0
CPL ET1
CPL EX0
CPL EX1
LJMP LOOP
DELAY: MOV R3, #100
DEL2:
MOV R2, #10
NOP
DJNZ
R2,$
DJNZ
R3,DEL2
RET LCALL DELAY LJMP LOOP
ORG
0100H SZ: PUSH ACC
MOV TH1, #3CH
MOV TL1, #0B0H DJNZ R7, L2 MOV R7, #20 INC R4 MOV A, R4 CJNE A, #60, L2 MOV R4, #00H INC R5
MOV A, R5 CJNE A, #60, L2 MOV R5, #00H INC R6 MOV A, R6 CJNE A, #12, L2 MOV R6, #00H L2: POP ACC RETI ORG
0200H MIAO:
CLR EA INC R4 SETB EA
RETI FEN: CLR EA INC R5 SETB EA RETI SHI:
CLR EA INC R6 SETB EA RETI
TAB:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
5.2 系統仿真及程序測試
1.調秒
圖5 調秒原理圖
2.調分
圖6調分原理圖
3.調時
圖7調時原理圖
第
六 章
實驗心得
這個星期參加單片機實習,讓我受益匪淺。通過這次的實訓,讓我學會了Proteus和Keil軟件的使用。整個設計通過了軟件和硬件上的調試。我想這對于自己以后的學習和工作都會有很大的幫助。在這次設計中遇到了很多實際性的問題,在實際設計中才發現,書本上理論性的東西與在實際運用中的還是有一定的出入的,所以有些問題不但要深入地理解,而且要不斷地更正以前的錯誤思維。一切問題必須要靠自己一點一滴的解決,而在解決的過程當中你會發現自己在飛速的提升。對于教材管理系統,其程序是比較簡單的,主要是解決程序設計中的問題,而程序設計是一個很靈活的東西,它反映了你解決問題的邏輯思維和創新能力,它才是一個設計的靈魂所在。因此在整個設計過程中大部分時間是用在程序上面的。很多子程序是可以借鑒書本上的,但怎樣銜接各個子程序才是關鍵的問題所在,這需要對系統的結構很熟悉。因此可以說系統的設計是軟件和硬件的結合,二者是密不可分的。通過這次課程設計我也發現了自身存在的不足之處,雖然感覺理論上已經掌握,但在運用到實踐的過程中仍有意想不到的困惑,經過一番努力才得以解決。
在老師的精心指導下,花費的時間與精力終于沒有白費,效果漸漸地出現了。這是我們共同努力的結果,在享受我們成果之時,不得不感慨單片機的重要性與高難度性,所以為期一周的單片機課程設計沒有浪費,我們從中學到了很多知識。也讓我們對單片機有了更深一步的了解。
附錄 元器件 AT89C51
1個 8位數碼管
1個 電阻
電容
晶振
按鍵
電源
GND
13個 3個 1個 4個
3個 4個 26
參考文獻
[1]李朝清.單片機原理與接口技術[M].北京航空航天大學出版社。2005.10.[2]耿永剛.單片機與接口應用技術[M].華東師范大學出版社.2008.4.[3]范立南, 謝子殿.單片機原理及應用教程[M].北京大學出版社.2006.1.[4]梅麗鳳.王艷秋,汪毓鐸.單片機原理及接口技術[M].清華大學出版社.2003.5.[5]何立民.單片機應用系統設計[M].北京航空航天大學出版社.2002.[6]胡漢才.單片機原理及其接口技術[M].清華大學出版社.2004.10.27
第二篇:單片機課程設計
設計題目: 單片機課程設計
學生姓名:
學
院: 電氣與信息工程學院
班
級: 電子111班 指導教師:
日 期: 2014年9月20日
一、課程設計目的:
了解電子元器件的功能與原理,掌握單片機的結構和原理,學會使用單片機應用開發技術的相關軟件如 keill、STC_ISP_V394等,能夠使用c語言的語言編程簡單的功能。
二、設計的思想:
利用所提供的單片機和開發板的原理圖用keill軟件編程程序以實現一些功能。然后用STC_ISP_V394.exe軟件將編譯完全正確的程序生成的hxe文件下載到開發板上,再調試編譯的程序能否實現其所設計的功能。
1、對蜂鳴器的了解:
蜂鳴器是一種一體化結構的電子訊響器,采用直流電壓供電,它由振蕩器、電磁線圈、磁鐵、振動膜片及外殼組成,接通電源后,振蕩器產生的音頻信號由電流通過電磁線圈,使電磁線圈產生磁場,振動膜片在電磁線圈和磁鐵的相互作用下,周期性的振動發聲。
2、設計:
我們所使用的開發板實物圖如圖一,單片機對右上角蜂鳴器的控制是加入三極管接入vcc,單片機的第22引腳和負極上,以此來控制蜂鳴器工作。單片機我們選擇STC89C52RC+1602液晶來實現對蜂鳴器的控制及顯示所需要的信息。
圖一 調試說明:
首先用Keil軟件創建一個工程,將程序源代碼輸入并編譯生成單片可執行的.hex文件。其次,打開單片機實踐板的電源,接好串口線,用STC-ISP燒錄軟件,將.hex文件燒錄入單片機中。程序下載完畢后,單片機會自動執行程序功能。最后,觀察程序功能的執行情況,看是否達到了設計要求。
如果單片機實踐板硬件電路的執行結果與設計結果一致,則說明設計過程及流程沒有問題,完全符合設計要求。否則,先檢查單片機實踐板的硬件電路是否完好,是否有斷點、漏焊、虛焊以及元器件是否完好等情況,排除故障重新連接后重新進行調試。如果仍然無法正
常實現,則說明程序編寫有誤,需要認真檢查程序流程,然后經過反復的修改與調試排除故障,實現設計要求的各項功能。編譯和燒寫該程序到單片機:
(1)用Keil編譯上面的代碼,并設置產生16進制代碼文件*.hex.(2)用專用下載線,連接好實驗板和電腦串口(DB9)(2)運行hex文件燒寫軟件STC_ISP_V394.exe
選單片機的型號,并打開編譯產生好的hex文件
點擊下載,給開發板上電。
3、實現的功能:使用單片機將歌曲《八月桂花》的調子通過蜂鳴器播放出來,用1602液晶將想要表達的信息有步驟地顯示在液晶顯示屏上,并且調子與顯示內容可以任意通過修改的程序燒錄到單片機內,實現設計產品的使用性與靈活性。
三、實驗程序:
/************************************************************************
[主題] C51音樂程序《八月桂花》
[功能]
通過單片機演奏音樂,顯示一些內容
/**********************************************************************/
#include
#include
//本例采用89C52, 晶振為11.0592MHZ
//關于如何編制音樂代碼, 其實十分簡單,各位可以看以下代碼.//頻率常數即音樂術語中的音調,而節拍常數即音樂術語中的多少拍;
//所以拿出譜子, 試探編吧!
unsigned char i=0;sbit Beep = P2^7;
unsigned char p,m;
//m為頻率常數變量
unsigned char n=0;//n為節拍常數變量
unsigned char code music_tab[] ={
0x18, 0x30, 0x1C , 0x10, //格式為: 頻率常數, 節拍常數, 頻率常數, 節拍常數,0x20, 0x40, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x10,0x1C, 0x10, 0x18 , 0x40,0x1C, 0x20, 0x20 , 0x20,0x1C, 0x20, 0x18 , 0x20,0x20, 0x80, 0xFF , 0x20,0x30, 0x1C, 0x10 , 0x18,0x20, 0x15, 0x20 , 0x1C,0x20, 0x20, 0x20 , 0x26,0x40, 0x20, 0x20 , 0x2B,0x20, 0x26, 0x20 , 0x20,0x20, 0x30, 0x80 , 0xFF,0x20, 0x20, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x20, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x30, 0x1C , 0x10,0x18, 0x20, 0x15 , 0x20,0x1C, 0x20, 0x20 , 0x20,0x26, 0x40, 0x20 , 0x20,0x2B, 0x20, 0x26 , 0x20,0x20, 0x20, 0x30 , 0x80,0x20, 0x30, 0x1C , 0x10,0x20, 0x10, 0x1C , 0x10,0x20, 0x20, 0x26 , 0x20,0x2B, 0x20, 0x30 , 0x20,0x2B, 0x40, 0x20 , 0x15,0x1F, 0x05, 0x20 , 0x10,0x1C, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x30, 0x1C , 0x10,0x18, 0x20, 0x15 , 0x20,0x1C, 0x20, 0x20 , 0x20,0x26, 0x40, 0x20 , 0x20,0x2B, 0x20, 0x26 , 0x20,0x20, 0x20, 0x30 , 0x30,0x20, 0x30, 0x1C , 0x10,0x18, 0x40, 0x1C , 0x20,0x20, 0x20, 0x26 , 0x40,0x13, 0x60, 0x18 , 0x20,0x15, 0x40, 0x13 , 0x40,0x18, 0x80, 0x00
};
void int0()interrupt 1
//采用中斷0 控制節拍
{ TH0=0xd8;
TL0=0xef;
n--;
}
void delay(unsigned char m)
//控制頻率延時
{
unsigned i=3*m;
while(--i);
}
void delayms(unsigned char a)//豪秒延時子程序
{
while(--a);
//采用while(--a)不要采用while(a--);各位可編譯一下看看匯編結果就知道了!
}
typedef unsigned char BYTE;typedef bit BOOL;
sbit LCD_RS = P2^0;
sbit LCD_RW = P2^1;sbit LCD_EP = P2^2;
BYTE code dis1[] = {“
WLCOME TO
”};BYTE code dis2[] = {“
DanPianJi ”};BYTE code dis3[] = {“
111iZnaiD
”};BYTE code dis4[] = {“
eiXeiX ”};
delays(int ms){
// 延時子程序 int i;while(ms--){
for(i = 0;i< 250;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
} } }
BOOL lcd_bz(){
// 測試LCD忙碌狀態 BOOL result;LCD_RS = 0;LCD_RW = 1;LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();result =(BOOL)(P0 & 0x80);LCD_EP = 0;return result;}
lcd_wcmd(BYTE cmd){
while(lcd_bz());LCD_RS = 0;LCD_RW = 0;LCD_EP = 0;_nop_();_nop_();P0 = cmd;_nop_();_nop_();_nop_();_nop_();LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();LCD_EP = 0;
}
lcd_pos(BYTE pos){
lcd_wcmd(pos | 0x80);
// 寫入指令數據到LCD //設定顯示位置
}
lcd_wdat(BYTE dat)
{
//寫入字符顯示數據到LCD while(lcd_bz());LCD_RS = 1;LCD_RW = 0;LCD_EP = 0;P0 = dat;_nop_();_nop_();_nop_();_nop_();LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();LCD_EP = 0;}
lcd_init(){
lcd_wcmd(0x38);
delays(1);lcd_wcmd(0x0c);
delays(1);lcd_wcmd(0x06);
delays(1);lcd_wcmd(0x01);
delays(1);}
void main()
{
BYTE j;
lcd_init();
delays(10);
//LCD初始化設定
//16*2顯示,5*7點陣,8位數據//顯示開,關光標 //移動光標 //清除LCD的顯示內容
// 初始化LCD
lcd_wcmd(0x06);
//向右移動光標
lcd_pos(0);
//設置顯示位置為第一行的第1個字符
j = 0;
while(dis1[ j ]!= ' 主站蜘蛛池模板: 亚洲中文字幕无码中文字在线| 怡红院亚洲第一综合久久| 日韩欧美成人免费观看| 少妇的丰满3中文字幕| 人人爽天天碰天天躁夜夜躁| 欧美大屁股喷潮水xxxx| 亚洲欧美日韩国产另类电影| 亚洲欧美洲成人一区二区三区| 牛牛在线视频| 亚洲va中文字幕无码久久| 午夜视频在线瓜伦| 人妻中文字幕在线网站| 国产成人精品一区二三区在线观看| 亚洲 欧美 国产 日韩 精品| 国产偷久久久精品专区| 亚洲精品久久久狠狠爱小说| 无码人妻一区、二区、三区免费视频| 99精品欧美一区二区三区| 成人一在线视频日韩国产| 任你干在线精品视频网2| 无码精品国产一区二区三区免费| 《人妻大乳被揉2》| 永久不封国产av毛片| 九九热爱视频精品视频| 久久99精品久久久久久清纯| 夜夜高潮天天爽欧美| 国内少妇高清露脸精品视频| 亚洲男人的天堂av手机在线观看| 精品免费国产一区二区三区四区| 亚洲国产成人无码av在线| 久久久久久久无码高潮| 久久综合九色综合97欧美| 五月丁香六月综合av| 欧美大片18禁aaa片免费| 成人无码视频在线观看网址| 一本色道久久综合亚洲精品| 国产97色在线 | 亚洲| 无码熟妇人妻av在线影片最多| 国产精品熟妇视频国产偷人| 色偷偷色噜噜狠狠网站30根| 日产精品一卡2卡三卡4乱码|