色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

五花八門的關于單片機的開發經驗

GReq_mcu168 ? 來源:未知 ? 作者:胡薇 ? 2018-11-06 15:58 ? 次閱讀

單片機開發初探

做AT89C5X(51,52,55等等)的時間最長,知道的可能多些,主要談些實際應用中的經驗與教訓。書可以參看北航出的一本專門講AT89系列的,還不錯,建議大家購買。

AT89C51我認為是一個非常標準的51單片機了,4個P口,1個串口,RAM只有標準的128Byte,Flash也只有4K,功能還算齊全,我就以它為基礎,所以開發過程中遇到的問題吧。

復位源的問題

大家最常用的復位方式就是電阻電容吧,AT89C51是高電平復位,這種方式不穩定,在產品調試時可以使用,因為在調試時我們一般使用了仿真器,而許多仿真器都會自己輸出復位信號,而屏蔽掉目標板產生的復位信號,所以調試時復位信號是沒有問題的,我們公司使用的是長沙菊陽的仿真器,用的是比較先進的技術,還算可以,仿真AT89系列的芯片一點問題沒有,還很穩定的說。

這里有一個非常重要的問題要說下,大家有時候會遇到這樣的一個問題:自己的程序在仿真時運行一點問題也沒有,但燒錄后卻不行了。結合我的經驗有兩種原因。一是時序可能變了,這個大家都知道,我不多說,還有一個原因就是復位信號的問題。具體情況如下:

(1)復位電路有問題,不能正常產生復位信號。因為調試時仿真器可能給你提供了復位信號,而脫離仿真器后就沒有了;

(2)看門狗的問題。有些51芯片帶有看門狗復位功能,如At89c55WD,當程序開啟了看門狗后,有時候程序的初始化內容太多了,往往會產生了復位信號,特別是用C語言編程功能時,有時候雖然你明明在程序開始時某個地方關閉了看門狗,但程序依然會復位,這是因為C語言執行效率比匯編低,看似幾行代碼,有時候要很長時間的,所以在使用開門狗時一定要注意這個問題。

而這個問題在使用仿真器時容易被忽視,因為即使你的程序里看門狗復位了,但是仿真器(菊陽仿真器可以開啟/屏蔽這個功能)往往會屏蔽了這個復位信號,所以程序仍然會正常運行的。

當你把程序燒好后再運行時,你卻為發現剛調試好的程序卻無法正常運行了,那是因為你的程序一直在不停復位了,注意用示波器觀察RST腳可能看不到復位信號的,因為看門狗復位并不影響RST腳的電平。

再一種情況就是芯片內部不帶看門狗,但是電路中有CPU監控芯片的,它往往是可以提供復位信號的,而且是多種原因的復位信號,如果你發現上述情況,就可以用示波器查看RST腳看是否有電平變化。

所以建議大家做51產品開發時盡量使用CPU監控芯片,向X5045就是非常好用的,因為它還帶有Eprom功能,這在很多場合使用的到的,也可以用MAX708等專用復位芯片了,既穩定又方便。

筆記歸納

以下是結合自己的實際做的幾點筆記歸納:

1、與發光二極管串聯的電阻(排阻)的計算和選取,一般發光二極管的正常發光的電流是3~10mA,在發光二極管上產生的壓降是1.7V(軌管) R=(5-1.7)/3~10 (k)

2、單片機TTL電平高電平:+5V;低電平:0V。

RS232串口電平高電平:—12V ;低電平:+12V。 可以通過MAX232電平轉換芯片,轉換之間的電平。

3、單片機上電I\O口的寄存器為高電平,其余寄存器為低電平。

4、三極管的開關作用:在B、E間接正向電壓,E、C是導通的。

5、蜂鳴器:

1) 有源蜂鳴器直接接上額定電壓就可以連續發聲。

2)無源蜂鳴器和電磁揚聲器一樣,需要接在音頻輸出電路中才能發聲。

3)有源蜂鳴器帶振蕩源,無源的不帶。

4)有源蜂鳴器的理想信號是直流電。

5)無源蜂鳴器的理想信號為方波信號。

方波發聲函數:void beep()

{ fmq=0;

delay 500us();

fmq=1;

delay 500us();

}

6、計算單片機指令周期:

指令周期(us) = 12 / 晶振頻率(Mhz)

選用12M的晶振,一個指令周期為1us

7、89C51的芯片最高支持24M的晶振

拋磚引玉——向前輩學習

上面只是筆者粗陋的小見解,筆者和大家都會感覺到不是很過癮,它山之石可以攻玉,我們還需向更多的前輩學習,筆者經過整理前人的經驗總結,看到了很多值得很大家一起分享的一些開發經驗!

目前介紹單片機應用的文章很多,但介紹單片機開發工具制作的文章卻較少。由于單片機是一門實踐性很強的課程,如果采用傳統的開發模式,則要購買價格昂貴的仿真器、編程器等開發工具來作實驗。

其實由于芯片功能的日益完善,我們可以利用芯片的在系統編程(ISP)功能制作出實用而低價的開發工具。下面就幫助DIY愛好者開發制作出適合自己的開發工具。

1 當前常用開發模式

目前,基本上有兩種開發模式可供選擇:用仿真器、用編程器。

① 用仿真器。優點:方便,可以設置斷點,可以觀察存儲器及寄存器的內容。缺點:價格昂貴,不同類型的單片機要購買不同的仿真器;仿真器終究不是單片機,有時代碼在仿真器上能通過,但在單片機中不能正常工作,反而增加了調試的難度。

② 用編程器。優點:價格相對便宜,通常一款編程器可編程多種器件。缺點:操作相當不便,每次要將芯片在目標板與編程器之間轉移,并且還要在編譯操作界面與編程器操作界面之間切換,大部分時間在做簡單的重復工作。

2 新的開發模式介紹及芯片選擇

本文介紹的開發工具采用一種新的開發模式(類似于編程器開發模式)。由于利用了芯片的在系統編程功能,因此不需要移動芯片。在軟件設計時設計 成:一旦代碼文件被重新編過,即自動下載到芯片,并自動復位運行,是真正的“所編即所得”。

目前很多單片機都支持在系統編程。8051系列單片機支持在系統編程的也很多,但大多數是支持通過PC機的串口對單片機進行編程。

這樣有四個不方便的地方:一是項目本身與PC機串行通信不方便;二是要增加1片MAX232電平轉換芯片;三是有的芯片要按特定的步驟進入下載模式,編程過程需要手工干預;四是有的芯片需要固件(定制的程序)的支持,如果不小心損壞了固件,則芯片的在系統編程功能也沒有了。

經過比較,Atmel公司生產的AT89S8252是一種比較理想的芯片,適合制作開發工具。此芯片有如下特點:

◆ 與8051兼容;

◆ 內含8KB可擦寫1000次的程序存儲器,2KB可擦寫超過100 000次的數據存儲器及256字節8位寬內部RAM;

◆ 可通過SPI接口在系統串行編程,與8051兼容

◆ 串行編程時有自動擦寫周期,在調試大程序時可以分段下載,節約時間;

◆ 低電壓下載,無需12V編程電壓。

3 AT89S8252串行編程

(1)AT89S8252串行編程模式

當芯片的RST引腳置高電平時,所有程序和數據存儲器可以通過SPI總線接口[SCK,MOSI(input),MISO(output)]編程。RST變高以后,在編程或擦除操作之前必須首先發送一條編程允許命令。在串行編程模式下,芯片會在字節編程之前自動插入一個擦除周期。因此,除非芯片的代碼保護位被編程,編程之前不需要執行全片擦除命令。SPI接口之SCK時鐘頻率須低于晶振頻率的1/40。

(2)AT89S8252串行編程步驟

① 在XTAL1與XTAL2之間連接一個3~24MHz的晶振;在VCC與GND之前加上電源電壓,將RST置高,等待10ms。

② 發送串行編程允許命令。

③ 發送寫/讀/擦除等命令及數據,串行數據高位在前,低位在后,數據在時鐘的上升沿鎖定。

④ 如果上一步是寫命令,至少等待2.5ms。

⑤ 需要時重復③、④兩步。

⑥ 將RST置低,芯片開始運行。

(3)AT89S8252串行編程命令,AT89S8252串行編程命令如表1所列。

表1

(4) AT89S8252串行編程時序圖,AT89S8252串行編程時序如圖1所示。

圖1

4 硬件設計

① 通過計算機并口與單片機SPI口連接;

② 為了保護計算機并口,需要增加1片74HC244作為隔離。

實用的原理圖如圖2所示。(已經過實踐檢驗,可放心使用。)

圖2

5 用VB編程進行并口控制

打印端口的基地址一般為0x278、0x378或0x3BC,可以從控制面板中查到。為了方便讀者,表2列出了常用打印端口引腳及寄存器位元的說明。

表2

在Windows環境下最簡單易學的語言恐怕非VB莫屬,所以我們的開發工具也選用VB作為編程語言。但由于Windows的保護,VB無法直接讀寫打印端口,因此我們需要另外的程序模塊來實現打印端口的直接讀寫。在Internet網上可以找到許多此類模塊,并且相當多的模塊可以免費使用。

經過試用,筆者推薦使用Winio v2.0。

該模塊支持Win9X/NT/2000/XP(http://www.internals.com Yariv Kaplan ),并且帶有詳細的幫助、例子程序及源碼。使用時,將Winio.sys、Winio.dll、Winio.vxd及Winio.bas四個文件拷貝到工作目錄下,在VB中直接添加Winio.bas模塊即可。本例中用到的函數有四個,分別說明如下。

① IniTIalize():允許端口控制函數。在使用端口輸入輸出函數之前調用一次,成功返回“1”,失敗返回“0”。

② Shutdown():關閉端口控制函數。在退出程序時執行一次,成功返回“1”,失敗返回“0”。

③ GetPortVal(ByVal PortAddr As Integer, ByRef Portval As Long, ByVal bSize As Byte) As Boolean:讀取端口函數,PortAddr 為端口地址, Portval為端口值,bSize為要讀取的字節數。讀取成功時返回“1”,失敗時返回“0”。

④ SetPortVal(ByVal PortAddr As Integer, ByVal Portval As Long, ByVal bSize As Byte) As Boolean:寫端口函數。PortAddr 為端口地址, Portval為要寫的值,bSize為要寫入的字節數。寫入成功返回“1”,失敗返回“0”。

四個函數在Winio.bas模塊中的聲明如下:

Declare FuncTIon IniTIalizeWinIo Lib “WinIo.dll” () As Boolean

Declare FuncTIon ShutdownWinIo Lib “WinIo.dll” () As Boolean

Declare Function GetPortVal Lib “WinIo.dll” (ByVal PortAddr As Integer, ByRef Portval As Long, ByVal bSize As Byte) As Boolean

Declare Function SetPortVal Lib “WinIo.dll” (ByVal PortAddr As Integer, ByVal Portval As Long, ByVal bSize As Byte) As Boolean

6 Intel HEX 格式文件

由于一般編譯軟件產生的用于寫入芯片的文件都是Intel HEX格式的文件。Intel HEX文件屬于文本文件,可以用記事本查看。一個Intel HEX文件的一行稱為一個記錄,每個記錄都是由十六進制字符組成的,兩個字符表示一個字節的值。Intel HEX文件通常由若干條記錄組成,每個記錄都具有如下的形式:

:LLAAAATTDD.。.DDCC

“:”——記錄的起始標志;

LL——記錄長度,表示該記錄中的數據字節數;

AAAA——數據裝入的首地址(16位);

TT——記錄類型,00表示數據記錄,01表示文件結束;(注意:有的編譯軟件會產生大于01的記錄類型,本應用中對大于01記錄類型的記錄忽略掉即可。)

DD——數據值(字節);

CC——校驗和。(將其本身與記錄中除起始標志外的所有字節相加應為0,不為0則有錯。)

VB編程詳細說明見本刊網絡補充版(http://www.dpj.com.cn)。(由于各子程序的流程都較簡單,所以直接給出源碼,而未畫出流程圖。程序采用由底至頂的設計方法。)

結語

雖然上述程序能實現各種基本的功能,但并不完善,并未考慮各種異常情況,讀者可根據實際情況進行完善。

由于AT89S8252的價格還是較貴,所以現在市場上較難買,不過Atmel公司推出的替代AT89C51/52的AT89S51/52也有在系統編程功能,且價格便宜。其在系統編程的實現方法與AT89S8252類似,對本例部分程序稍作修改即可支持該器件。筆者制作的“MCS51/AVR/PIC三合一下載器”增加了對AT89S51/52的支持。

因為C語言執行效率比匯編低,看似幾行代碼,有時候要很長時間的,所以在使用開門狗時一定要注意這個問題。而這個問題在使用仿真器時容易被忽視,因為即使你的程序里看門狗復位了,但是仿真器(菊陽仿真器可以開啟/屏蔽這個功能)往往會屏蔽了這個復位信號,所以程序仍然會正常運行的。

當你把程序燒好后再運行時,你卻為發現剛調試好的程序卻無法正常運行了,那是因為你的程序一直在不停復位了,注意用示波器觀察RST腳可能看不到復位信號的,因為看門狗復位并不影響RST腳的電平。

再一種情況就是芯片內部不帶看門狗,但是電路中有CPU監控芯片的,它往往是可以提供復位信號的,而且是多種原因的復位信號,如果你發現上述情況,就可以用示波器查看RST腳看是否有電平變化。

所以建議大家做51產品開發時盡量使用CPU監控芯片,向X5045就是非常好用的,因為它還帶有Eprom功能,這在很多場合使用的到的,也可以用MAX708等專用復位芯片了,既穩定又方便。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 電阻
    +關注

    關注

    86

    文章

    5527

    瀏覽量

    172286
  • 單片機
    +關注

    關注

    6039

    文章

    44579

    瀏覽量

    636448
  • 仿真器
    +關注

    關注

    14

    文章

    1019

    瀏覽量

    83807

原文標題:單片機開發經驗看這里很有頭腦很牛逼

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    單片機Debug工具性能對比 單片機調試常用命令

    單片機(Microcontroller Unit, MCU)調試是嵌入式開發中的一個重要環節,它幫助開發者發現和修復代碼中的錯誤,優化程序性能。不同的單片機
    的頭像 發表于 12-19 09:56 ?340次閱讀

    ads8912B工作異常是什么原因導致的?

    : (1)refbufout輸出有輸出5V的,有輸出1.338V的,有輸出0.469V的,有輸出0.034V的,五花八門,refin管腳都是5V輸入,將refbuf管腳的阻容位置對調也沒效果,用示波器量都是
    發表于 11-15 06:29

    單片機怎么寫入程序

    程序通常涉及以下幾個步驟: 選擇單片機開發環境 : 確定項目需求,選擇合適的單片機型號。 安裝相應的開發環境,如Keil、IAR、MPLAB等。 硬件連接 : 將
    的頭像 發表于 10-21 11:21 ?542次閱讀

    想入行單片機開發的學生們的忠告

    對于想入行單片機開發的學生們,以下是一些建議和忠告:
    的頭像 發表于 10-17 09:45 ?371次閱讀
    想入行<b class='flag-5'>單片機</b><b class='flag-5'>開發</b>的學生們的忠告

    用8位單片機,32位單片機就找英銳恩!

    單片機)中有軟硬研發設計、系統開發編程、工具應用支持、專項集成解決方案等領域有十多年的實力,從市場信息調研、應用開發、產品研發、定制設計等技術服務;再從售前咨詢,售中技術支持,售后增值服務,擁有
    的頭像 發表于 09-23 10:32 ?338次閱讀

    USB4 2.0版本的重大更新

    USB版本一直很多,可以說是五花八門,但是隨著接口的日漸統一,USB的版本可以說減少了很多,到了USB4,只剩下USB-C接口,為何還有一個2.0版本,我們往下詳解。
    的頭像 發表于 09-09 14:37 ?639次閱讀

    keil可以讀出單片機的程序嗎

    Keil是一款廣泛應用于單片機程序開發的軟件,它提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調試器等在內的完整開發方案。然而,關于Keil是否能直接“讀出”
    的頭像 發表于 09-02 10:32 ?1075次閱讀

    單片機燒錄程序的基本步驟是什么

    單片機燒錄程序是單片機開發過程中非常重要的一步,它涉及到將編寫好的程序代碼通過一定的方式傳輸到單片機內部的存儲器中,使單片機能夠按照預定的邏
    的頭像 發表于 09-02 09:47 ?1163次閱讀

    PY32系列單片機開發板 常用型號都有 支持Keil,IAR進行開發

    普冉單片機是近幾年很火的國產32位單片機,主打高性能和高性價比,市場份額也是在持續上升。同等價位下難逢敵手,有著系統簡單、易于開發的特點。PY32系列單片機可應用于可穿戴、消費類、醫療
    的頭像 發表于 05-22 14:48 ?1136次閱讀
    PY32系列<b class='flag-5'>單片機</b><b class='flag-5'>開發</b>板 常用型號都有 支持Keil,IAR進行<b class='flag-5'>開發</b>

    GLaDOS交互機器人入選Hackster.io挑戰賽9個優勝作品之一

    YouTube 機器人技術主播 Dave Niewinski 開發的機器人五花八門,從可駕駛的“La-Z-Boy”椅子到由 AI 引導的扔沙包機器人、馬車比賽機器人等。
    的頭像 發表于 05-10 11:33 ?829次閱讀

    我的板子為什么測不了損耗

    關于損耗的測試需求真的是五花八門,今天我們就來一起簡單普及下為什么實物板可以測試阻抗而不能測損耗。
    的頭像 發表于 05-06 17:30 ?415次閱讀
    我的板子為什么測不了損耗

    Buck電路共模噪聲和差模噪聲的區別?

    關于差共模信號,網上介紹很多,五花八門,這里只說下自己的理解: 1)差模信號,是相對傳輸線回路負極的信號,信號回流都是通過傳輸線回流到信號源的負極; 2)共模信號,是相對Earth GND的信號,信號回流都是通過寄生電容、分布電容等雜散電容以位移電流的形式回流
    發表于 03-18 10:42 ?1093次閱讀
    Buck電路共模噪聲和差模噪聲的區別?

    微軟:打造負責任的人工智能 確保技術創新造福全人類

    在全球各界為OpenAI Sora展現出的非凡創造力嘆為觀止的同時,越來越多的人也不禁開始思考,隨著五花八門的AIGC內容加速涌現,我們該如何保證AI產出的內容可以做到“人畜無害”,又該如何最大限度地避免由AIGC引發的法律問題和版權糾紛呢?
    的頭像 發表于 03-01 15:18 ?1113次閱讀
    微軟:打造負責任的人工智能 確保技術創新造福全人類

    51單片機開發板的主要功能 51單片機開發板能做什么

    51單片機開發板是一種基于8051系列單片機芯片的開發板,具有豐富的功能和廣泛的應用。下面將詳細介紹51單片機
    的頭像 發表于 01-23 15:52 ?3864次閱讀

    為什么PCB線路板要把過孔堵上?

    對于表面貼裝板,尤其是BGA及IC的貼裝對導通孔塞孔要求必須平整,凸凹正負1mil,不得有導通孔邊緣發紅上錫;導通孔藏錫珠,為了達到客戶的要求,導通孔塞孔工藝可謂五花八門,工藝流程特別長,過程控制難,時常有在熱風整平及綠油耐焊錫實驗時掉油;固化后爆油等問題發生。
    發表于 01-16 15:10 ?371次閱讀
    主站蜘蛛池模板: 99热在线免费播放| 日美一级毛片| CHINA中国东北GURMA| 午夜福利小视频400| 快播电影频道| 国产精品人妻在线观看| 91热久久免费精品99| 午夜理伦片免费| 欧美另类老少配hd| 久久黄色免费| 国产午夜视频在线| 成人中文字幕在线| 999久久久国产精品蜜臀AV| 亚洲精品无码AAAAAA片| 日本色高清| 欧美 亚洲 另类 综合网| 久久精品电影院| 国产在线亚洲精品观| 国产 日韩 欧美 高清 亚洲| 99久久人妻无码精品系列性欧美 | 男神插曲女生软件完整版| 国精产品砖一区二区三区糖心| 成人国产亚洲精品A区天堂蜜臀| 538prom国产在线视频一区| 一个人HD在线观看免费高清视频 | 一道精品视频一区二区| 午夜影视免费| 熟女人妻水多爽中文字幕| 欧美亚洲日韩一道免费观看| 蜜芽tv在线www| 久久学生精品国产自在拍| 九九热精品视频在线观看| 花蝴蝶免费观看影视| 国内精品日本久久久久影院 | 24小时日本在线观看片免费| 一个人在线观看免费高清视频在线观看| 亚洲AV美女成人网站P站 | 在线视频久久只有精品第一日韩| 亚洲色婷婷久久精品AV蜜桃久久 | 精品久久免费观看| 吉吉av电影|