微控制器原理及應用

2022-11-12 00:48:02 字數 3804 閱讀 6472

網路教育學院

題目: 課題一: 微控制器電子時鐘設計

學習中心: 甘肅農墾河西分校

層次: 專公升本

專業: 電氣工程及其自動化

年級: 2023年春季

學號: 201303576510

學生姓名: 王書飛

一, 引言

2023年,ventura發明了世界上第乙個電子錶,從而奠定了電子時鐘的基礎,電子時鐘開始迅速發展起來。現代的電子時鐘是基於微控制器的一種計時工具,採用延時程式產生一定的時間中斷,用於一秒的定義,通過計數方式進行滿六十秒分鐘進一,滿六十分小時進一,滿二十四小時小時清零。從而達到計時的功能,是人民日常生活補課缺少的工具。

現在高精度的計時工具大多數都使用了石英晶體振盪器,由於電子鐘、石英鐘、石英表都採用了石英技術,因此走時精度高,穩定性好,使用方便,不需要經常除錯,數字式電子鐘用積體電路計時時,解碼代替機械式傳動,用led顯示器代替指標顯示進而顯示時間,減小了計時誤差,這種表具有時、分、秒顯示時間的功能,還可以進行時和分的校對,片選的靈活性好。

二,時鐘的基本原理分析

利用微控制器定時器完成計時功能,定時器0計時中斷程式每隔0.01s中斷一次並當作乙個計數,設定定時1秒的中斷計數初值為100,每中斷一次中斷計數初值減1,當減到0時,則表示1s到了,秒變數加1,同理再判斷是否1min鐘到了,再判斷是否1h到了。

為了將時間在led數碼管上顯示,可採用靜態顯示法和動態顯示法,由於靜態顯示法需要解碼器,資料鎖存器等較多硬體,可採用動態顯示法實現led顯示,通過對每位數碼管的依次掃瞄,使對應數碼管亮,同時向該數碼管送對應的字碼,使其顯示數字。由於數碼管掃瞄週期很短,由於人眼的視覺暫留效應,使數碼管看起來總是亮的,從而實現了各種顯示。

三,時鐘設計分析

針對要實現的功能,採用at89s51微控制器進行設計,at89s51 微控制器是一款低功耗,高效能cmos8位微控制器,片內含4kb**可程式設計(isp)的可反覆擦寫1000次的flash唯讀程式儲存器,器件採用高密度、非易失性儲存技術製造,相容標準mcs- 51指令系統及80c51引腳結構。這樣,既能做到經濟合理又能實現預期的功能。

在程式方面,採用分塊設計的方法,這樣既減小了程式設計難度、使程式易於理解,又能便於新增各項功能。程式可分為鬧鐘的聲音程式、時間顯示程式、日期顯示程式,秒錶顯示程式,時間調整程式、鬧鐘調整程式、定時調整程式,延時程式等。運用這種方法,關鍵在於各模組的相容和配合,若各模組不匹配會出現意想不到的錯誤。

首先,在程式設計之前必須了解硬體結構尤其是各引腳的用法,以及內部暫存器、儲存單元的用法,否則,程式設計無從下手,電路也無法設計。這是前期準備工作。第二部分是硬體部分:

依據想要的功能分塊設計設計,比如輸入需要開關電路,輸出需要顯示驅動電路和數碼管電路等。第三部分是軟體部分:先學習理解組合語言的程式設計方法再根據設計的硬體電路進行分塊的程式設計除錯,最終完成程式設計。

第四部分是軟體畫圖部分:設計好電路後進行畫圖,包括電路圖和**圖的繪製。第五部分是軟體**部分:

軟硬體設計好後將軟體載入晶元中進行**,**無法完成時檢查軟體程式和硬體電路並進行修改直到**成功。第六部分是硬體實現部分:連線電路並匯入程式檢查電路,若與設計的完全一樣一般能實現想要的功能。

最後進行功能擴充套件,在已經正確的設計基礎上,新增額外的功能!

四,時鐘的實現

a.電路設計

1. 整體設計

此次設計主要是應用微控制器來設計電子時鐘,硬體部分主要分以下電路模組:顯示電路用8個共陰數碼管分別顯示,星期(年份),小時、分鐘(月份)和秒(日),通過動態掃瞄進行顯示,從而避免了解碼器的使用,同時節約了i/0埠,使電路更加簡單。微控制器採用at89s51系列,這種微控制器應用簡單,適合電子鐘設計。

電路的總體設計框架如下:

2. 分塊設計

模組電路主要分為:輸入部分、輸出部分、復位和晶振電路。

2.1 輸入部分

輸入訊號主要是各種模式選擇和調整訊號,由按鍵開關提供。

以下為輸入部分樣例:

在本實驗中主要用用p3口輸入按鍵訊號,還用到了特殊的p0口。對於p0口,由於其存在高阻狀態,為了實現開關功能,給其新增上拉電阻,具體如下圖所示:

2.2 輸出部分

本電路的輸出訊號為7段數碼管的位選和段選訊號,鬧鈴脈衝訊號,提示燈訊號。

本實驗的數碼管是共陰的,為了防止段選訊號不能驅動數碼管,故在p1口連線上拉電阻後,再送段選訊號,以提高驅動,位選訊號直接從p2口接入,如下圖:

鬧鈴由p2.6端輸出,模組如下:

2.3 晶振與復位電路

本實驗微控制器時鐘用內部時鐘,模組如下:

復位電路為手動復位構成,模組如下:

各模組拼接組合,電路總體設計圖如下:

b.程式設計

b.1 程式總體設計

本實驗用匯程式設計序完成.

程式總的流程圖如下:

3.b.2 程式主要模組

b.2.1 延時模組

數碼管顯示動態掃瞄時,用到延時程式,這裡使用延遲1ms的程式,此程式需反覆調,除數碼管動態掃瞄外,數碼管的閃爍提示,以及**模組也用到了延時,只是延時的長短不同罷了,在此不再贅述。

b.2.2中斷服務程式

本實驗中,計數器t0,t1中斷都有運用,其中t0中斷為時鐘定時所用,t1中斷用於****。t0的定時長度為0.01s,工作於方式1,計數1次,時長1us,故計數器計數10000次,進入中斷,計數初值為65536-10000=55536=#0d8f0,裝滿定時器需要0.

01s的時間,從而100次中斷為一秒,一秒之後,判斷是否到60秒,若不到則秒加一,然後返回,若到,則秒賦值為0,分加一,依次類推。包括日期顯示的功能也是如此。另外,由於要實現倒計時功能,因此在中斷程式中還要加入減一的暫存器,需要時將其進行顯示。

基於以上考慮,以r3為倒計時中的秒,r4為倒計時的分,當秒加1時r3減一,減到0之後,秒賦值為59,分減一,直到分為0。

計數器t1工作於方式1, 當呼叫響鈴程式時,其計數功能開啟,為**音調不同頻率的方波的形成,提供延時。其中斷服務程式就是根據音調改變**方波輸出口電平的高低,用語句 cpl實現。

中斷服務程式中日曆的實現較為複雜,要考慮平年,閏年,特殊的2月,每月的天數的不盡相同。具體的邏輯判斷方法為:首先,要考慮年份是不是閏年,閏年的判斷方法是:

將年份除以100,若能整除,則將年份除以400,若還能整除,則為閏年,若不能,則為平年;若不能被100整除,則判斷是否能被4整除,若能,則為閏年,若不能則為平年。只有2月與平、閏年相關,因此在閏年和平年的子程式中,要判斷是不是2月,若是則在相應的年中進行日期的增加,若不是則轉入平時的月份。其中1、3、5、7、8、10、12月是每月31天,4、6、9、11月為每月30天。

日曆進製判斷流程圖如下:

本實驗用8個數碼管,剛好能顯示年,月,日,掃瞄顯示與時間的掃瞄顯示類似。年比較特殊,由兩個暫存器儲存,個位,十位為0時,表明年數能被100整除,若此時千位,百位

組成兩位數能被4整除,則年數被400整除,為閏年。若十位,個位組成兩位數能被4整除,則年數能被4整除,為閏年。

b.2.3主程式

主程式主要對按鍵進行掃瞄,以及判斷定時和鬧鈴時間是否已到,若到則呼叫相關程式。

b.2.4 顯示子程式

8個數碼管輪流進行顯示,分別顯示1ms,依賴人的視覺暫留效應,給人以數碼管持續高亮的錯覺。

日期的顯示,秒錶的顯示,倒計時的顯示,調鬧鈴,調定時的顯示,閃爍的顯示程式與以上的的掃瞄相似,有的以子程式的方式出現,通過子程式呼叫語句acall呼叫;有點直接巢狀在相應的程式裡面,順序執行,或者用調轉語句ajmp呼叫。

五,總結

本文先從整體論述了設計電子鐘的大致思路,然後再採用劃分模組的方法,將硬體電路劃分為開關電路,顯示驅動電路,以及數碼管電路等,而軟體部分,則依據要實現的功能,劃分為:鬧鐘的聲音程式,時間顯示程式,日期顯示程式,秒錶顯示程式,時間調整程式、鬧鐘調整程式、定時調整程式,延時程式等。最後將各模組集成為乙個整體,合成乙個多功能的電子鐘。

微控制器原理及應用

開始進棧保護 消抖開中斷 a r0 查表數碼管顯示r0 r0自加1 開始進棧保護 消抖開計數器 a r1 查表數碼管顯示r1 r1自加1 恢復現場 恢復現場 中斷返回 中斷返回 外中斷0顯示數a加1 定時器 計數器t0顯示數b加1 開始進棧保護 消抖開中斷 a r0 30h r1 n a 30h y...

微控制器原理及應用答案

嵌入式微處理器的基礎是通用計算機中的cpu,它的位址匯流排數目較多能擴充套件較大的儲存器空間,所以可配置實時多工作業系統 rtos rtos是嵌入式應用軟體的基礎和開發平台。正由於嵌入式微處理器能執行實時多工作業系統,所以能夠處理複雜的系統管理任務和處理工作。因此,廣泛地應用在移動計算平台 手機 工...

微控制器原理及應用課件學生用

微控制器例題程式清單 ch1 1 微控制器i o口輸出ch1 2 微控制器i o口輸入 ch1 3 程式儲存器的使用 ch1 4 工作暫存器組的使用 ch1 5 位位址使用ch1 6 利用堆疊指標保護斷點位址 ch1 7 利用堆疊保護資料ch1 8 片外資料儲存器 ch1 9 特殊功能暫存器使用 c...