盛群單片機講義_第1頁
盛群單片機講義_第2頁
盛群單片機講義_第3頁
盛群單片機講義_第4頁
盛群單片機講義_第5頁
已閱讀5頁,還剩83頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、基于基于C的盛群單片機原理及應用的盛群單片機原理及應用2010/02課程相關介紹課程相關介紹課程性質課程性質 32學時校內任選課課程內容課程內容 課程分為理論和實驗二部分: 理論:12學時,講述盛群HT46R232單片機的內部結構和工作原理、盛群c語言、盛群單片機開發環境和流程 安排在3206教室 實驗:20學時, 上機實際操作、盛群單片機開發入門 (初步)安排在s402實驗室2課程資料課程資料教材:HOLTEK HT46系列單片機C語言實例教程 北京郵電大學出版社參考資料:單片機原理與應用 應明仁、王化成主編 C程序語言及應用范例 HT-IDE3000使用手冊 HT46R232數據手冊 ht

2、tp:/ 重慶大學生“盛群杯”單片機應用設計競賽:由重慶市教委主辦,重慶市高校實驗室工作研究會指導,盛群半導體有限公司和重慶郵電大學聯合承辦開展的單片機應用設計競賽,該競賽采用市面上廣泛應用的盛群HT46系列單片機為競賽工具,由學生自主命題、設計完成整個作品創作。 已經舉辦3屆。 歷屆競賽所用單片機芯片型號: HT46R23/24-HT46F49E,HT46RU232,HT46R54A -HT46F49E,HT46RU232 重慶大學生盛群杯單片機應用設計競賽網站: http:/ 平時: 隨機點名及簽到卡 期末: 交一份報告答疑安排答疑安排 信科s507 QQ群:1126746435學習方法學

3、習方法 理論為輔,實踐為主 由點到面 從簡單功能入手,由淺到深,由易到難,循序漸進 堅持,講究方法,合理高效利用資源6必備知識必備知識 數字電路 數字電路邏輯設計 王毓銀 模擬電路 清華大學華成英老師的模電視頻 c語言 譚浩強老師的C語言或21天學會C語言7常見問題常見問題1、c語言和匯編語言在開發單片機時的優缺點 匯編語言: 優點: 占用資源少,執行效率高,一條指令就對應一 個機器碼,每一步執行什么動作都很清楚,程序大小和堆棧調用情況容易控制,調試方便。 缺點: 移植性差 C語言: 優點: 模塊化編程語言,有豐富的函數庫,可讀性好,移植容易 缺點: 占用資源較多,執行效率沒有匯編高8 2、8

4、位單片機與ARM嵌入式系統 功能結構和單價的差異造成應用層次的不同: ARM 適用于系統復雜度較大的高級產品,如PDA、手機等應用 8 位單片機因架構簡單,硬件資源相對較少,適用于一般的工業控制,消費性家電等等 3、單片機的學習階段 第一階段是先瀏覽教科書里的硬體部分,大至了解單片機的9硬體結構。如ROM、RAM、IO 口等,以及看一些廠家的芯片手冊。第二階段就是了解單片機的編程語言。第三階段熟悉單片機的開發環境及流程。第四階段利用實驗板進行各種單片機實驗。第五階段自己焊接板子編程實踐,多看看相關的電子技術雜志網站,看看別人的開發經驗,硬件設計方案以及他人的軟件設計經驗。有可能的話,還可以參加

5、一些電子設計大賽。104、盛群單片機適合初學者不HOLTEK單片機結構典型和規范,適合于基本知識的學習。具有豐富的產品系列,適合于不同產品的開發。技術支持力度大,書籍和網上資源豐富。有片內flash 存儲器,便于程序多次修改。開發系統相當完善。指令簡潔,易學易懂缺點:需要仿真器,價格對學生來說偏高。115、單片機到底是什么,怎么工作的 中央處理器CPU、隨機存取存儲器RAM、只讀存儲器ROM、I/O接口、定時器/計數器以及通信接口等集成在一塊芯片上,構成了一個單片微型計算機。應用范圍:智能儀器儀表、工業測控、日常生活及家電、計算機網絡與通信技術。 單片機是自動地進行運算和控制,把實現計算和控制

6、的步驟一步步地用命令的形式,即一條條指令(Instruction)預先存入到存貯器中,單片機在CPU的控制下,將指令一條條地取出來,并加以翻譯和執行,得到你要的東西。 12第一講第一講盛群公司簡介 盛群半導體為國內臺灣地區一家專業微控制器IC設計廠商,公司成立于1998年,總部坐落于新竹科學工業園區,主要產品包括微控制器IC及其周邊電子元器件。產品除一般應用領域外,還涵蓋語音、通訊、計算機外設、家電、醫療、車用及安全監控等各領域,此外并提供各種電源管理及非易失性內存等微控制器外圍組件,期能以提供客戶更具功能性之完整解決方案為產品發展目標。13HT46HT46系列單片機的特點及應用舉例系列單片機

7、的特點及應用舉例 8位高性能精簡指令集(RSIC)單片機 低功耗、I/O 使用靈活、可編程分頻器、計數器、多通道A/D 轉換、脈寬調制功能、I2C 接口、UART 總線、暫停和喚醒功能,低電壓復位功能 廣泛應用于傳感器的A/D 轉換、馬達控制、工業控制、消費類產品,子系統控制器等。141516HT46R2321、命名規則2、封裝形式(見下頁)3、特性圖 (見下頁)4、結構框圖(見下頁) 17181920第二講程序存儲器程序存儲器 1、HT46R232程序存儲器為EPROM(可擦寫可編程只讀存儲器) 2、大小:409616 位 3、用途:用來存放要執行的指令代碼,一些數據、表格和中斷入口。 4、

8、結構框圖:(見下頁) 2122數據存儲器數據存儲器1、HT46R232的數據存儲器為RAM(隨機存取存儲器)2、大小:2318位 特殊功能寄存器:398位 (大多數可讀寫,部分只讀) 通用數據存儲器:1928位3、用途: 特殊功能寄存器用來控制單片機內部功能(如定時器和中斷等)和外部功能(如I/O 數據和AD 轉換控制)的正確工作。 通用數據存儲器用來存放臨時數據。234、結構框圖(見下頁)5、特殊功能寄存器申明HT46R232.hunsigned char _tmr1h0 x0f; #define _pa0_12_0unsigned char _tmr1l0 x10; #define _pa

9、1_12_1unsigned char _tmr1c0 x11; #define _pa2_12_2unsigned char _pa 0 x12; #define _pa3_12_3unsigned char _pac0 x13; #define _pa4_12_4unsigned char _pb 0 x14; #define _pa5_12_5unsigned char _pbc0 x15; #define _pa6_12_6unsigned char _pc 0 x16; #define _pa7_12_7unsigned char _pcc0 x17;2425堆棧寄存器堆棧寄存器1、

10、特殊的存儲器空間,用來保存PC的值2、HT46R232有8層堆棧3、當發生子程序調用或中斷響應時,程序計數器(PC)的值會被壓入堆棧;在子程序調用結束或中斷響應結束時,堆棧將原先壓入堆棧的內容彈出,重新裝入程序計數器中。在系統復位后,堆棧指針會指向堆棧頂部。26輸入輸入/ /輸出端口輸出端口( (* * * *) )1、HT46R232(28腳封裝)有23個雙向輸入/輸出口,記為PA(PA0-7)、PB(PB0-7)、PC(PC0-4)和PD(PD0-1)。2、輸出時,端口有鎖存功能,不需要外接上拉電阻; 輸入時,端口無鎖存功能,需外接或設置內帶上拉電阻。3、每個輸入/輸出口都有一個控制寄存器

11、(PAC,PBC,PCC,PDC),用來控制端口的輸入/輸出狀態。 例:PA口作為輸出口 _pac=0; PA口作為輸入口 _pac=1;4、輸入/輸出端口硬件示意圖(見下頁) 2728P溝道DMOS管05、當輸入/輸出口被設置為輸出狀態,此時如果對輸出口做讀取的操作,則會讀取到內部數據寄存器中的鎖存值,而不是輸出引腳實際的邏輯狀態。6、輸入/輸出端口直流特性(見下頁)2930測試條件 最小 典型 最大時鐘電路時鐘電路1、 指令執行過程:首先從程序存儲器中讀出指令,送入指令寄存器保存,然后送到指令譯碼器對指令進行譯碼,譯碼結果送定時控制邏輯電路,由定時控制邏輯電路產生各種定時信號和控制信號,再

12、送到單片機的各個部件去進行相應的操作。 2、每個單片機中一定要有系統時鐘,由晶體/陶瓷振蕩器或RC振蕩器提供,作為單片機運行時的時基,也就是說,振蕩器停止振蕩,單片機便停止工作。系統時鐘決定了單片機的運行速度。3、 HT46R232 有兩種振蕩方式,外部RC 振蕩和外部晶體振蕩,可以通過掩膜選項設定,不管選用哪一種振蕩方式,其信號都可以做為系統時鐘。314、選用外部RC 振蕩方式,在OSC1 與VSS 之間需要接一個外部電阻,其阻值為30kW750kW;而OSC2 上會輸出帶上拉的系統頻率的4 分頻信號,可用于同步外部邏輯。5、選用晶體振蕩方式,在OSC1 和OSC2 之間需要連接一個晶體,用

13、來提供晶體振蕩器所需的反饋和相移,除此之外,不再需要其它外部元件。另外,在OSC1 和OSC2 之間也可使用諧振器來取代晶體振蕩器,但是在OSC1 和OSC2 需要多連接兩個電容(如果振蕩頻率小于1MHz)。 3233復位電路(上電復位)復位電路(上電復位)1、復位是對單片機的初始化操作,除正常復位操作外,當由于程序運行出錯或操作失誤造成“死機”,可復位使單片機重新正常運行。2、復位電路3、實用復位電路344、復位對寄存器的影響35第三講最小系統框圖最小系統框圖1、HT46R2322、時鐘振蕩電路 4MHZ晶振3、基本復位電路3637中斷系統中斷系統1、中斷的概念 單片機在執行某一段程序的過程

14、中,由于單片機系統內部或者外部的某種原因,有必要中止原程序的執行,而去執行相應的處理程序,待處理結束后,再返回來繼續執行原程序的過程。382、中斷處理過程中斷請求、中斷響應、中斷處理和中斷返回3、中斷的作用 使單片機對外部或內部隨機發生的事件具有實時處理的能力。4、HT46R232中斷源 一個外部中斷、兩個內部定時/計數器中斷、一個A/D 轉換中斷和一個I2C 總線中斷。(表見下頁)5、HT46R232中斷控制寄存器中斷控制寄存器INTC0和INTC1包含了中斷控制位和中斷請求標志,其中中斷控制位用來設置中斷允許/禁止,中斷請求標志表征外部或內部中斷發生。(表見下頁)3940優先級可以人為改變

15、416、HT46R232中斷注意事項中斷入口地址只要有中斷子程序被服務,其余的中斷全部都被自動禁止(通過清除EMI 位),這種做法的目的在于防止中斷嵌套。程序員可以置位EMI、INTC0 和INTC1 所對應的位,以便進行中斷嵌套。中斷服務程序的寫法重要寄存器內容的保護42定時定時/ /計數器計數器1、概述 定時/計數器是單片機的一個重要組成部分,為設計者提供了與時間有關的功能的實現方法。 定時、計數是同一個部件不同功能的體現:定時,是對單片機內部系統時鐘作用下產生的固定時間間隔的脈沖進行計數來實現定時;計數,是對單片機外部引腳上觸發的脈沖進行計數。2、定時/計數器實現方法的比較硬件電路軟件延

16、時單片機內部提供的可編程定時/計數器433、HT46R232內部的定時/計數器 HT46R232 有兩個定時/計數器(TMR0,TMR1)。 定時/計數器0 是16 位向上計數的,其時鐘來源可以是外部信號輸入或內部時鐘,內部時鐘為fSYS。 定時/計數器1 是16 位向上計數的,其時鐘來源可以是外部信號輸入或內部時鐘,內部時鐘為fSYS/4。 外部信號輸入可以用來計數外部事件、測量時間間隔、測量脈沖寬度或產生一個精確的時基信號。 (結構框圖見下頁)44454、相關寄存器定時/計數器0TMR0H(0CH)、TMR0L(0DH), TMR0C(0EH)功能表見(下頁)定時/計數器1TMR1H(0F

17、H)、TMR1L(10H), TMR1C(11H)功能表見(下頁)4647TMR0C(00-0 1000)48TMR1C(00-0 1-)5、工作模式定時模式(即普通的定時器) 用來定時固定的時間間隔,當定時器溢出時,產生一個內部中斷信號。 定時器0: 定時時間(T)=(65536-計數初值)預分頻/fsys 定時器1: 定時時間(T)=(65536-計數初值)4/fsys TMR0(1)L=計數初值%256 ,TMR0(1)H=計數初值/25649 寫入TMR0L(TMR1L)只能將數據寫到低字節緩沖器(8 位) ,而寫入TMR0H(TMR1H)會把指定數據和低字節緩沖器的數據分別寫到TMR

18、0H(TMR1H)和TMR0L(TMR1L)預置寄存器中,定時/計數器0/1 預置寄存器的內容只有在寫入TMR0H(TMR1H)時才會被改變。讀取TMR0H(TMR1H)會把TMR0H(TMR1)的內容送至目標單元,而TMR0L(TMR1L)的值被送至低字節緩沖器中;讀TMR0L(TMR1L)將讀取低字節緩沖器的值。 無論是定時模式還是外部事件計數模式,一旦開始計數,定時/計數器會從寄存器當前值向上計到0FFFFH。一旦發生溢出,定時/計數器會從預置寄存器中重新加載初值,并開始計數;同時置位中斷請求標志。T0ON/T1ON只能用指令清除。50 在定時/計數器停止計數時,寫數據到定時/計數器的預

19、置寄存器中,同時會將該數據寫入到定時/計數器。但如果在定時/計數器運行時這么做,數據只能寫入到預置寄存器中,直到發生溢出時才會將數據從預置寄存器加載到定時/計數器寄存器。 讀取定時/計數器時,計數會被停止,以避免發生錯誤;計數停止會導致計數錯誤。 外部事件計數模式 測量外部引腳的邏輯電平改變的次數。 脈沖寬度測量模式 一次測量一個外部引腳的脈沖寬度。 51第四講8 8通道通道1010位的位的A/DA/D轉換器轉換器1、概念 將模擬量轉換為數字量的器件稱為A/D轉換器,常用ADC表示。2、轉換過程 模擬信號采樣保持量化編碼 即首先將輸入的模擬電壓信號按照某一時間節拍進行采樣,并將采樣結果進行保持

20、,在保持的時間內將采樣的電壓量化為數字量,并按一定的編碼形式給出轉換結果。 523、A/D轉換器分類 直接A/D轉換器,把輸入的模擬電壓直接轉換成輸出的數字量 間接A/D轉換器,將輸入的模擬信號先轉換為某種中間量(例如,時間或頻率),再將中間量轉換為數字量。HOLTEK MCU的A/D轉換器采用的是逐次逼近式A/D轉換方式。4、主要參數 分辨率: 輸出數字量變化一個相鄰數碼所需輸入模擬電壓的變化量,定義為滿刻度與2n的比值,通常以輸出數字信號的位數來表示。 表明了A/D轉換器對輸入信號的分辨能力。 53 量化誤差 有限分辨率A/D的階梯狀轉移特性曲線與理想無限分辨率A/D的轉移特性曲線(直線)

21、之間的最大偏差稱為量化誤差。通常是1個或半個最小數字量的模擬變化量,表示為1LSB,1/2LSB。 轉換時間 完成一次從模擬轉換到數字的AD轉換所需要的時間。 量程 A/D能夠轉換的輸入電壓的范圍。5、A/D的選擇 主要看位數、精度要求,轉換時間,輸入模擬信號范圍和極性,以及幾路的,什么輸出等方面綜合考慮。 546、HT46R232的A/D轉換器 有8個通道、10位解析度(9位精度)的A/D轉換器,其參考電壓為VDD。與A/D轉換有關的寄存器ADRL(24H)、ADRH(25H): 是A/D 轉換結果的高字節和低字節寄存器,是只讀寄存器。(表見下頁)ADCR(26H):是A/D 轉換控制寄存器

22、,用來定義A/D 通道數量、模擬輸入通道選擇、A/D 轉換開始控制和完成標志。(表見下頁)ACSR(27H):是A/D 時鐘控制寄存器,用來選擇A/D 的時鐘來源。(表見下頁)5556思考:怎么計算轉換后電壓值57ADCR上電默認值0100 00005859ACSR上電復位默認值1-00直流、交流特性601LSB(最低有效位)所代表電壓值5V/1024=4.88mvA/D轉換時鐘周期最小1us含義?A/D轉換時序圖 61A/D轉換步驟步驟1 通過ACSR 寄存器中的ADCS1 和ADCS0 位,選擇所需的A/D 轉換時鐘。步驟2 通過ADCR 寄存器中的ACS2ACS0 位,選擇連接至內部A/

23、D 轉換器的通道。步驟3 通過ADCR 寄存器中的PCR2PCR0 位,選擇PB 端口的A/D 輸入引腳,并將它們設置為A/D 輸入引腳。此步驟也可在第二步寫ADCR 寄存器時完成。步驟462 如果要使用中斷,則中斷控制寄存器必須正確地設置,以確保A/D 功能的動作。中斷控制寄存器INTC0 里總中斷控制位EMI 必須置位為“1”,INTC1里A/D 轉換器的中斷使能位EADI 也必須置位為“1”。步驟5 通過設定ADCR 寄存器中的START 位從“0”到“1”再回到“0”,可以開始模數轉換的過程。該位需初始化為“0”步驟6 可以輪詢ADCR 寄存器中的EOC 位,檢查模數轉換過程是否完成。

24、當此位成為邏輯低時,表示轉換過程已經完成。轉換完成后,可讀取A/D 數據寄存器ADRL 和ADRH 獲得轉換后的值。另一種方法是,若中斷使能且堆棧未滿,則轉換完成后,程序會進入A/D 中斷服務子程序。63注意事項 為了確保A/D 轉換順利完成,START 位應保持為“0”,直到EOC位變為“0”(A/D 轉換完成信號)。 每次改變模擬通道選擇位后都要注意初始化A/D 轉換器,否則EOC可能處于不確定狀態。在模擬通道選擇位改變的10 個指令周期內將START 置1 后清0 來初始化A/D 轉換器。模擬通道選擇位都清0,可以不初始化A/D。64第五講第五講軟件仿真示例軟件仿真示例 LED發光二極管

25、閃爍 推薦網站:PWMPWM輸出輸出1、概念 脈寬調制(PWM:(Pulse Width Modulation)是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在從測量、通信到功率控制與變換的許多領域中。 簡而言之,PWM是一種對模擬信號電平進行數字編碼的65的方法。通過高分辨率計數器的使用,方波的占空比被調制用來對一個具體模擬信號的電平進行編碼。PWM信號仍然是數字的,因為在給定的任何時刻,滿幅值的直流供電要么完全有(ON),要么完全無(OFF)。電壓或電流源是以一種通(ON)或斷(OFF)的重復脈沖序列被加到模擬負載上去的。通的時候即是直流供電被加到負載上的時候,

26、斷的時候即是供電被斷開的時候。只要帶寬足夠,任何模擬值都可以使用PWM進行編碼。PWM的一個優點是從處理器到被控系統信號都是數字形式的,無需進行數模轉換。讓信號保持為數字形式可將噪聲影響降到最小。噪聲只有在強到足以將邏輯1改變為邏輯0或將邏輯0改變為邏輯1時,也才能對數字信號產生影響。2、主要參數66 頻率 占空比(分辨率)3、主要應用 調速,調光,模擬DA4、HT46R232的PWM輸出 HT46R232(28腳封裝)有2個通道(6+2)/(7+1)位的PWM輸出(由掩膜選項決定),與PD0/PD1共用引腳。 PWM 計數器的時鐘來源為系統時鐘(fSYS),由數據寄存器PWM0(1AH)、P

27、WM1(1BH) 來控制輸出。一旦PD0/PD1選擇為PWM 輸出,并且PD0/PD1為輸出模式(PDC.0/PDC.1=“0”),則向PD0/PD1 寄存器寫“1”能夠產生PWM 輸出,向PD0/PD1 寄存器寫“0”會使PD0 輸出保持為“0”。 67(6+2)位PWM模式舉例: PWM寄存器組成 每個調制周期占空比 示意圖見下表68PWM7PWM2PWM1PWM0DCAC69PWM 的調制頻率、周期頻率和占空比的關系總結如下:PFDPFD輸出輸出1、概念 PFD,可編程分頻器,可用于發聲。702、HT46R232的PFD功能PFD 輸出引腳與PA3 引腳共用。此功能通過配置選項選擇。PF

28、D 電路使用定時器溢出信號作為它的時鐘源,在配置選項中可設置定時器0或定時器1。定時器計數值滿而產生溢出信號,導致PFD 輸出改變狀態。定時器將自動地重新載入預置寄存器的值,并繼續向上計數。要使PFD 正確運作,必須將PA 控制寄存器PAC 的第3 位設置為輸出。如果把它設置為輸入,則PFD輸出不工作,該引腳仍是作為普通的輸入引腳使用。只有把PA3 位置“1”,PFD 輸出引腳才會有輸出。這個輸出數據位被用作PFD 輸出的開/關控制。注意,如果PA3 輸出數據位被清為“0”PFD 輸出將為低電平。71PFD輸出波形示意圖72舉例發聲:C調 1 523HZ 怎么產生?73盛群盛群C C語言程序實

29、例語言程序實例#include HT46R232.h”#include HT46R232.h”typedef unsigned char uchartypedef unsigned char uchar;typedef unsigned int uinttypedef unsigned int uint;void init() /void init() /初始化操作初始化操作 。 void delayms(uint xms )/void delayms(uint xms )/延時子程序延時子程序 。 74第六講第六講 void main() void main() init(); init()

30、; while(1) while(1) 。 delayms(500); delayms(500); 。 75盛群盛群C C語言的數據類型、存儲類別與修飾詞、常量語言的數據類型、存儲類別與修飾詞、常量1 1、變量的數據類型、變量的數據類型(見下表)2 2、變量的范圍、變量的范圍局部變量: 定義在函數內部的變量都是局部變量,只有當函數被執行時,局部變量才有效,當執行完畢并離開此函數后,局部變量將無效。注:定義在函數中static變量是全局變量。全局變量: 定義在函數之外的變量是全局變量,當函數在執行時,變量都有效,任何函數都可以讀取或修改這個變量。注:全局變量宣告時不可以同時設定初始值。76773

31、 3、存儲類別與修飾詞、存儲類別與修飾詞 變量宣告或定義時必須指定其數據類型,但是存儲類別與修飾詞是可選擇的,可根據應用時的實際需要去選擇。78autoauto: 定義局部變量使用的,沒有指定存儲類別的局部變量都是auto。局部變量是存放在RAM bank0的空間。RegisterRegister:目前并未實做此功能。StaticStatic:static的變量會一直有效到整個函數結束后才失效,但必須要在它所定義的函數中才可以讀寫。ExternExtern:通知c編譯器此變量是定義在其他的函數中的。注:程序的開發中,extern用的較多,其它三種不具特別優勢,建議不要使用。ConstConst:C編譯器會將const的變量存放在程序存儲器中,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論