<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機典型案例開(kāi)發(fā)(三)

單片機典型案例開(kāi)發(fā)(三)

作者: 時(shí)間:2012-05-28 來(lái)源:網(wǎng)絡(luò ) 收藏


 4 系統軟件設計

本文引用地址:http://dyxdggzs.com/article/171407.htm

  4.1 主程序流程

  從樣機分析中大致設計整個(gè)系統,整個(gè)系統輸入包括2個(gè)溫度傳感器,5個(gè)按鍵;輸出包括2位七段數碼管、10個(gè)發(fā)光二極管、繼電器控制信號等。根據控制功能,將程序設計為幾個(gè)主要的模塊,程序主流程見(jiàn)圖4-1所示:

  程序主流程圖

  

  4.2 子程序介紹

  1、 診斷子程序

  診斷程序主要進(jìn)行溫度采集并判斷傳感器是否良好,主要對2個(gè)溫度傳感器連續檢測20次,若測到的數據不在范圍內(溫度范圍:-10℃~160℃),則表明傳感器短路或斷路錯誤,數碼顯示“E”,并禁止按鍵操作。

  2、 鍵盤(pán)掃描子程序

  程序每循環(huán)一次掃描一次鍵盤(pán),如果掃描到有鍵按下,則暫存鍵值,如果連續5次掃描到的鍵值都一樣,則認為是穩定的鍵值。

  3、 系統共有5個(gè)按鍵,在不同的狀態(tài)下,每個(gè)鍵只要輕按一次就有效。系統的五個(gè)鍵接于PA1 、PA3、PA2 、PA0、PA4,如果按鍵值有效則返回值的相應位為0,否則相應位為1。

  4、 溫度采集子程序

  熱敏電阻靈敏度高,為了防止干擾及其它原因導致測出的溫度值變化太快,引起控制部件頻繁動(dòng)作,溫度采集采用滑動(dòng)平均值濾波方法。即在同一個(gè)通道上連續采集三個(gè)數據,取其中的中間值。

  5、 顯示子程序

  系統共有2位七段數碼管顯示及10個(gè)發(fā)光二極管顯示。數碼管主要有6種狀態(tài)需要顯示:待機狀態(tài)、出錯顯示、燜飯、保溫、煮飯中及定時(shí)時(shí)間顯示。發(fā)光二極管顯示所選擇的功能、開(kāi)始及保溫狀態(tài)。功能顯示需采用輪循方式,在按下開(kāi)始鍵之前,開(kāi)始燈閃爍。進(jìn)入保溫狀態(tài)后,保溫指示燈亮。LED顯示程序由位碼掃描子程序及數碼顯示狀態(tài)選定子程序組成。

  三、STC自動(dòng)下載系統設計

  引言

  STC下載程序不需要編程器燒寫(xiě),可以通過(guò)串口下載。美中不足的是,STC下載時(shí)必須進(jìn)行冷啟動(dòng),即下載信號加到單片機串口以后必須對單片機斷電再上電,這給用戶(hù)帶來(lái)了一些不便。尤其是反復調試程序需要多次下載時(shí),顯得更加繁瑣。

  為了解決這一問(wèn)題,有必要研制一種STC單片機專(zhuān)用的自動(dòng)下載系統,使系統接收到上位機發(fā)往單片機的下載信號后,自動(dòng)冷啟動(dòng)STC單片機,完成下載任務(wù)。

  1 原理分析

  STC單片機下載時(shí),需要使用宏晶公司提供的STCISP軟件。下載開(kāi)始時(shí),上位機軟件首先向單片機發(fā)出下載命令。自動(dòng)下載系統收到上位機對單片機發(fā)出的下載命令后,實(shí)現對單片機的斷電、上電冷啟動(dòng)操作。單片機經(jīng)冷啟動(dòng)后,收到命令數據流后作出回應,開(kāi)始下載程序。需要注意的是,單片機在正常工作中,串口有可能接收數據,由于自動(dòng)下載系統與單片機串口連接,因而系統必須具有自動(dòng)判斷接收的數據流是否為下載命令的能力,保證及時(shí)冷啟動(dòng)目標單片機。

  為了檢測下載程序的命令數據流,可以采用如下方法:從PC的串口引出連接線(xiàn),接至PC的另一個(gè)串口,用串口調試助手打開(kāi);用STC-ISP軟件發(fā)送下載命令,可以檢測到在波特率為9 600 bps的情況下,該軟件持續向單片機發(fā)送十六進(jìn)制的0x80;當自動(dòng)下載系統連續接收到足夠數量的0x80時(shí),即可判定接收到了下載命令數據流,從而進(jìn)入冷啟動(dòng)程序。

  2 系統硬件設計

  2.1 主控芯片STC15F104E簡(jiǎn)介

  自動(dòng)下載系統需要接收上位機發(fā)往目標單片機的下載命令程序流,并對目標單片機進(jìn)行冷啟動(dòng)。STC15F104E是宏晶公司研發(fā)的一款單片機,具有省去一些外部電路而功能較全面的優(yōu)點(diǎn)。

  該單片機的特點(diǎn)有:

  ◆內部集成了可靠復位,省去了外部復位電路。

  ◆內部集成了R/C時(shí)鐘(在常溫下僅有5‰溫漂),省去了外部晶振。

  ◆內部集成了2個(gè)16位可重裝載定時(shí)器,與普通8051單片機兼容。

  ◆為DIP8/SOP8封裝,體積較小,功耗較低。

  ◆增強型8051內核,單時(shí)鐘周期,信號處理速度快,實(shí)時(shí)性較好。

  由于STC15F104E可以省去傳統單片機的復位電路、外部晶振電路,且采用貼片封裝,因此占用電路板面積非常小,適合集成在電路板上,因而作為本系統的主控芯片。

 2.2 主控電路

  如圖1所示,整個(gè)系統以STC15F104E為核心進(jìn)行設計。STC15F104E的P3.0腳與目標單片機STC89C52RC的串口接收端相連,即將發(fā)往目標單片機的信號連接到自動(dòng)下載系統,實(shí)現信號的獲取和處理。由丁自動(dòng)下載系統不需要發(fā)出任何信息,STC15F104E的P3.1引腳懸空,不與目標單片機相連。

  下載系統主控電路

  對目標單片機進(jìn)行冷啟動(dòng),實(shí)現斷電、再上電,可以用三極管作為電子開(kāi)關(guān)實(shí)現。必須注意到的是,三極管的最大可通過(guò)電流不要小于單片機電路的所需電流。如果三極管僅作為單片機供電的開(kāi)關(guān),由于STC89系列單片機的正常丁作模式功耗為2~7 mA,90系列三極管通常情況下可以滿(mǎn)足需求。但在某些情況下,單片機的串口上電后會(huì )給單片機供電,使單片機各引腳電平處于不確定的狀態(tài),因而必須對目標電路板整體進(jìn)行冷啟動(dòng),三極管必須滿(mǎn)足目標電路板的總電流需求。由于三極管8550的最大可通過(guò)電流為1.5 A,可以滿(mǎn)足絕大多數電路的供電需求。所以選擇三極管8550連接到目標單片機STC89C52RC的VCC腳,作為對其冷啟動(dòng)的開(kāi)關(guān)。

  如圖1所示,D1為指示燈,其亮滅可以通過(guò)STC15F104E的P3.3腳控制。在程序中加入相應的語(yǔ)句即可實(shí)現燈的亮滅與閃爍,以顯示系統的狀態(tài)。

  3 系統軟件設計

  STC單片機自動(dòng)下載系統軟件流程如圖2所示。在初始化后,系統循環(huán)檢測是否接收到下載信號;經(jīng)過(guò)判斷證實(shí)接收到下載信號后,就切斷目標單片機電源;等待適當的時(shí)間后,再給目標單片機上電。單片機正常工作期間,系統接收到發(fā)往目標單片機串口的非下載命令程序,經(jīng)自動(dòng)判斷后不作任何動(dòng)作。

  

  3.1 串口模擬程序

  由于STC15F104E沒(méi)有串口,因而必須利用定時(shí)器模擬串口。其方法是,定義一個(gè)常量,根據所需要的波特率對該常量賦值,并將該常量值賦到定時(shí)所用的寄存器中。在模擬外部晶振為11.059 2 MHz、波特率為9 600 bps的情況下,設置常量BAUD為0xFE80,并將該常量賦值到TL1、TH1兩個(gè)寄存器中,實(shí)現定時(shí)。每到相應時(shí)間觸發(fā)定時(shí)中斷程序,將外部引腳的狀態(tài)讀入并存入預先設定的數組中,完成模擬串口讀入字節的任務(wù)。

  3.2 下載命令檢測程序

  在STC上位機軟件發(fā)出的下載命令中,波特率為9 600 bps時(shí)數據流為連續的0x80。由于在單片機正常工作時(shí)也有可能接收0x80,下載系統只有嚴格檢測到連續多個(gè)0x80時(shí),才能判斷為接收到了下載命令。如果其中有一個(gè)不是0x80,則重新檢測計數。這里設定為當系統連續接收到200個(gè)0x80時(shí),判定為接收到了下載命令。

  3.3 冷啟動(dòng)操作和指示燈程序

  接收到下載命令后,STC15F104E首先關(guān)閉定時(shí)器中斷,停止模擬串口的接收工作。之后將P3.4置1,切斷目標單片機的電源。延遲1~2 s后置0,恢復對目標單片機的供電??紤]到STC上位機下載軟件從發(fā)送下載命令到單片機開(kāi)始下載大約需要1~2 s的時(shí)間,恢復供電后需要繼續延遲5 s,保證目標單片機已經(jīng)開(kāi)始下載后再啟動(dòng)定時(shí)器中斷。

  STC單片機接收到下載命令后,必須作出回應才能進(jìn)行下載。上位機發(fā)出的下載信號同時(shí)發(fā)送到目標單片機和自動(dòng)下載系統,自動(dòng)下載系統中的單片機的P3.1腳懸空,而目標單片機的P3.1與上位機串口相連。這樣,只有目標單片機能夠回應下載命令實(shí)現下載,自動(dòng)下載系統中的單片機不能回應下載命令,避免了對上位機的干擾。

  結語(yǔ)

  STC單片機自動(dòng)下載系統省去了操作人員手動(dòng)開(kāi)關(guān)電源的不便,避免了相應的機械損耗,具有較高的實(shí)用價(jià)值。

 四、Proteus的單片機演奏系統

  當前的很多用單片機實(shí)現音樂(lè )演奏的系統都是利用板結合仿真器實(shí)現的,這種方法不是很復雜,實(shí)現也較方便,但是調試不是很方便,且成本也較高。 本文提出的一種基于Proteus 的單片機演奏音樂(lè )的方法,非常簡(jiǎn)單實(shí)用,且該方法基于軟件來(lái)實(shí)現的,所以成本非常低,調試方便,效果也很不錯,適合于愛(ài)好音樂(lè )的單片機學(xué)習者。 單片機系統的設計分兩大部分:硬件設計部分和軟件設計部分。

  1 硬件設計

  硬件部分比較簡(jiǎn)單,如果在板上做實(shí)驗可仿下面圖1 電路連接。

  在開(kāi)發(fā)板上實(shí)現的單片機控制蜂鳴器發(fā)聲原理圖

  AT89C51 單片機的P2.5 口控制一個(gè)8550 的三極管,三極管控制電磁蜂鳴器的電源通斷。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>