當前位置:首頁 > 單片機
  • 單片機開發產品流程詳解

    單片機開發產品流程詳解

    1、明確任務 分析和了解項目的總體要求,并綜合考慮系統使用環境、可靠性要求、可維護性及產品的成本等因素,制定出可行的性能指標。 2、劃分軟、硬件功能 單片機系統由軟件和硬件兩部分組成。在應用系統中,有些功能既可由硬件來實現,也可以用軟件來完成。硬件的使用可以提高系統的實時性和可靠性;使用軟件實現,可以降低系統成本,簡化硬件結構。因此在總體考慮時,必須綜合分析以上因素,合理地制定硬件和軟件任務的比例。 3、確定希望使用的單片機及其他關鍵部件 根據硬件設計任務,選擇能夠滿足系統需求并且性價比高的單片機及其他關鍵器件,如A/D、D/A轉換器、傳感器、放大器等,這些器件需要滿足系統精度、速度以及可靠性等方面的要求。 4、硬件設計 根據總體設計要求,以及選定的單片機及關鍵器件,利用Protel等軟件設計出應用系統的電路原理圖。 5、軟件設計 在系統整體設計和硬件設計的基礎上,確定軟件系統的程序結構并劃分功能模塊,然后進行各模塊程序設計。 單片機程序設計語言可分為三類: 機器語言 :又稱為二進制目標代碼,是CPU硬件唯一能夠直接識別的語言(在設計CPU時就已經確定其代碼的含義)。人們要計算機所執行的所有操作,最終都必須轉換成為相應的機器語言由CPU識別、控制執行。CPU系列不同,其機器語言代碼的含義也不盡相同。 匯編語言 :由于機器語言必須轉換為二進制代碼描述,不便于記憶、使用和直接編寫程序,為此產生了與機器語言相對應的匯編語言。用匯編語言編寫的程序執行速度快,占用存儲單元少,效率高。 高級語言 :高級語言具有很好的可讀性,使程序的編寫和操作都十分方便,目前廣泛使用的高級語言是C51。 匯編語言和高級語言都必須被翻譯成機器語言之后才能被CPU識別。 6、仿真調試 軟件和硬件設計結束后,需要進行進行進入兩者的整合調試階段。為避免浪費資源,在生成實際電路板之前,可以利用Keil C51和Proteus軟件進行系統仿真,出現問題可以及時修改。 7、系統調試 完成系統仿真后,利用Protel等繪圖軟件,根據電路原理圖繪制PCB(Printed Circuit Board)印刷電路板圖,然后將PCB圖交給相關廠商生產電路板。拿到電路板后,為便于更換器件和修改電路,可首先在電路板上焊接所需芯片插座,并利用編程器將程序寫入單片機。 接下來將單片機及其他芯片插到相應的芯片插座中,接通電源及其他輸入、輸出設備,進行系統聯調,直至調試成功。 8、測試修改、用戶試用 經測試檢驗符合要求后,將系統交給用戶試用,對于出現的實際問題進行修改完善,系統開發完成。 開發流程圖  

    時間:2019-05-17 關鍵詞: 產品開發 單片機 基礎教程

  • 單片機和ARM有什么區別?

    單片機和ARM有什么區別?

    1、軟件方面 這是最大的區別了。引入了操作系統。為什么引入操作系統?有什么好處嘛? 1)方便、主要體現在后期的開發,即在操作系統上直接開發應用程序。不像單片機一樣一切都要重新寫。前期的操作系統移植工作,還是要專業人士來做。 2)安全、這是LINUX的一個特點。LINUX的內核與用戶空間的內存管理分開,不會因為用戶的單個程序錯誤而引起系統死掉。這在單片機的軟件開發中沒見到過。 3)高效、引入進程的管理調度系統,使系統運行更加高效。在傳統的單片機開發中大多是基于中斷的前后臺技術,對多任務的管理有局限性。     2、硬件方面 現在的8位單片機技術硬件發展的也非常得快,也出現了許多功能非常強大的單片機。但是與32位ARM相比還是有些差距。   ARM芯片大多把SDRAM,LCD等控制器集成到片子當中。在8位機,大多要進行外擴。   總的來說,單片機是個微控制器,ARM顯然已經是個微處理器了。   arm是單片機的一種,51也是,但arm的ROM和RAM遠大于51,而且IO口功能和處理速度也是兩個級別的,arm能上很多操作系統,51只能勉強上極其簡單的實時操作系統,所以arm常用來開發手機等多媒體產品,51只能完成有限的實時控制功能,形象一點說,51和arm的等級差別就像手機和個人電腦的等級差別。   arm現在分為A R M三個系列,A面向高端,M主要面向低端,或者說白了就是單片機,現在比較流行的cortex-m3,區別的話,應該在于高端低端,和性能上面 ;stm32(cortex-m3內核)的低端的價格可以低到10塊錢以下,價格非常的低廉,性能很強,而且有庫函數的支持,開發的流程簡化很多,理論上應該會替代,但是其他的單片機也有自己的優勢,比如:51也有自己的優勢,簡單,使用的人多,價格更低,開發工具更多,MSP430的低功耗,各有各的優勢,取不取代還要看市場,公司的推廣。  

    時間:2019-05-17 關鍵詞: ARM 單片機 基礎教程

  • 單片機的底層驅動和應用程序有何不同?

    單片機的底層驅動和應用程序有何不同?

    一、底層驅動 1、單片機底層開發一般指利用單片機的固有資源完成的控制功能的軟硬件開發,比如時鐘、通訊協議(232、485、UART、SPI、IIC、CAN、IR等)、定時器、AD轉換、GPIO、外設驅動(各種現場控制、各種環境狀況測控、電機控制、電磁閥、繼電器控制、鍵盤掃描、LED和LCD顯示)等。 2、根據時鐘樹圖,觀察初始化時鐘時需要用到哪些寄存器及各種外設需要的時鐘源。 3、配置定時器的時鐘源,分頻,比較值和PWM輸出。 (1)當單片機內部有幾種不同的時鐘源時,必須配置相應的寄存器配置需要的時鐘源,如果不進行配置,將會使用單片機上電默認的時鐘源。 (2)時鐘源決定著系統的工作頻率、定時器定時時間和通信時的波特率。 (3)定時器分頻是為了獲得更長的定時時間,如果采用標志位累加的方式來延長定時時間,將會消耗單片機的RAM資源,在低端單片機中,由于RAM資源非常珍貴,因此只能采用定時器分頻來延長定時時間。 (4)比較值對于簡單的定時功能就是計算多少個數產生一次中斷,對于PWM輸出來說就是設置周期和占空比。 4、單片機的頭文件只是最基礎的定義,包括寄存器名稱和分頻值等,這些都是硬件確定好的內容,不能更改否則會出現錯誤。 5、通信協議配置的硬件方式是配置寄存器,軟件方式是用IO模擬通信。 6、底層驅動與硬件相關,編寫底層驅動程序要非常了解硬件,同時給應用層提供API函數調用接口,應用層可以通過調用這些接口去訪問硬件,而不需要了解具體的硬件工作情況。 二、應用程序 應用程序是根據實際應用需求去編寫的程序,指的是代碼的邏輯部分,直接去調用底層驅動預留的接口,而不需要關心硬件底層的實現方式及實現過程。 三、形象說明 例如,你有一個應用是控制每天早上六點鐘開燈,應用程序只負責在適當的時間做適當的事(到六點了,我要開燈了,按下按鍵)。具體它不知道為什么按下鍵就能開燈,因為按下鍵后開燈的過程就是底層驅動來完成了。

    時間:2019-05-26 關鍵詞: 嵌入式 單片機 基礎教程 底層驅動

  • 單片機C語言如何產生隨機數

    單片機C語言如何產生隨機數

    隨機數在單片機的應用中也是很多的,當然產生隨機數的方法有很多,當中有一個就是利用單片機定時器,取出未知的定時器THX和TLX的值,再加以運算得到一個規定范圍內的隨機數值。這做法也是可行的。或者預先寫好一個隨機數表,然后進行取數據。也是可以的。 KEIL里面產生隨機數的函數確實是rand(),但頭文件是stdlib.h,不是time.h。C語言提供了一些庫函數來實現隨機數的產生。C語言中有三個通用的隨機數發生器,分別為 rand函數, random函數, randomize 函數;但是rand函數產生的并不是真意正義上的隨機數,是一個偽隨機數,是根據一個數,稱之為種子,為基準以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正態公布,從而相當于產生了隨機數,但這不是真正的隨機數,當計算機正常開機后,這個種子的值是定了的,除非破壞了系統,為了改變這個種子的值,C提供了srand()函數,它的原形是void srand( int a);在調用rand函數產生隨機數前,必須先利用srand()設好隨機數種子,如果未設隨機數種子,rand()在調用時會自動設隨機數種子為1。一般用for語句來設置種子的個數。 單片機產生隨機數的兩種方法 方法一:定時器直接隨機取值 每按一次按鍵生成一個隨機數,這個隨機數實際是把定時器的值給取出來了,并不能算絕對的隨機、方法二才是真正意義上的隨機。 方法二:用定時器加rand()隨機函數來實現   單片機上電之后通過按鍵去啟動取隨機數,若是單片機上電就立即取隨機數的話,那每次上電隨機的結果都是一樣的。然后是0 到9不重復的隨機數,程序中用了循環來判斷是否和前面取的隨機數相同,相同則進入,下次取隨機數,不同則存入數組。

    時間:2019-05-26 關鍵詞: 單片機 C語言 基礎教程 隨機數

  • 為何Cortex-M處理器無法運行linux

    為何Cortex-M處理器無法運行linux

    單片機與應用處理器的核心區別到底是什么呢?是核心主頻的差異?還是Linux系統的支持?又或者是處理器的架構?本文將以NXP的Cortex-M系列為例做簡要介紹。 一、Cortex-M的定位 處理器的體系結構定義了指令集(ISA)和基于這一體系結構下處理器的程序員模型,通俗來講就是相同的ARM體系結構下的應用軟件是兼容的。從ARMv1到ARMv8,每一次體系結構的修改都會添加實用技術。 在ARMv7版本中,內核架構首次從單一款式變成3種款式。Cortex-M系列屬于ARMv7結構下的一個款式:款式M。款式M包含的處理器有Cortex-M0、Cortex-M1、Cortex-M3、Cortex-M4以及Cortex-M7,以上處理器常被用于低成本、低功耗、高可靠的嵌入式實時系統中。它們既可以用于“裸片”開發又能運行實時操作系統,比如us/os-ll、VxWorks以及Aworks(致遠電子開發)等。     圖1 ARMv7下的Cortex系列 ● 款式A:高性能的處理器級平臺,性能比肩計算機。 ● 款式R:定位應用于高端嵌入式系統,高可靠及高時效性。 ● 款式M:用于深度嵌入、定制的嵌入式系統。 值得注意的是,Cortex-M下的處理器沒有內存管理單元MMU。 二、內存管理單元MMU 內存管理單元簡稱MMU,它負責虛擬地址到物理地址的映射,并提供硬件機制的內存訪問權限檢查。在多用戶、多進程的操作系統中,MMU使得各個用戶進程都有獨立的地址空間。     圖2 MMU的地位 任何微控制器都存在一個程序能夠產生的地址集和,被稱為虛擬地址范圍。以32為機為例,虛擬地址范圍為0~0xFFFFFFFF (4G)。當該控制器尋址一個256M的內存時,它的可用地址范圍被限定為0x00000000~0x0FFFFFFF(256M)。在沒有MMU的控制器中,虛擬地址被直接發送到內存總線上,以讀寫該地址下的物理存儲器。在擁有MMU的控制器中,虛擬地址首先被發送到MMU中,被映射為物理地址后再發送到內存總線上。     圖3 內存管理機制 注:上圖僅簡單反映內存管理的映射機制,權限映射、TLB快表、頁表等概念不做深入討論。 虛擬內存管理最主要的作用是讓每個進程有獨立的地址空間。不同進程中的同一個虛擬地址被MMU映射到不同的物理地址,并且在某一個進程中訪問任何地址都不可能訪問到另外一個進程的數據,這樣使得任何一個進程由于執行錯誤指令或惡意代碼導致的非法內存訪問都不會意外改寫其它進程的數據,不會影響其它進程的運行,從而保證整個系統的穩定性。另一方面,每個進程都認為自己獨占整個虛擬地址空間,這樣鏈接器和加載器的實現會比較容易,不必考慮各進程的地址范圍是否沖突。 三、linux系統 一般將操作系統分為實時操作系統和非實時操作系統。實時操作系統大多為單進程、多線程(多任務),因此不涉及到線程間的地址空間分配,不需要使用MMU,例如VxWorks。Linux系統屬于非實時性操作體統,多進程是其主要特點。 以Ubuntu為例,打開一個shell并且查看bash進程的地址范圍如圖4,它的地址范圍為0x0000000000400000~0xffffffffff600000。     圖4 shell 1中的bash地址 我們打開另一個shell,查看該shell中bash進程的地址范圍,如圖5。不難發現,兩個不同bash進程的地址范圍完全相同。其實操作系統或者用戶在fork()進程時完全不需要考慮物理內存的地址分配,該工作由微控制器的內存管理單元MMU來做。     圖5 shell 2中的bash地址 既然是多進程依賴了內存管理單元,那么在使用嵌入式linux時只開一個進程可以嗎?肯定是不可行的!開機后即使用戶什么都不做,可見的系統運行必須的進程已經運行了幾十至上百個,如圖6。     圖6 進程樹 四、總結 綜合以上內容,linux系統對內存管理單元有極強的依賴,若在沒有MMU的處理器中運行linux,恐怕整個系統只能停留在Uboot階段了。由于Cortex-m處理器沒有內存管理單元,因此跑不了linux系統。任何事情都不是絕對的,如果你重寫了linux內核且搭配足夠大的內存芯片,從理論上來說是可以省掉MMU的。但是,這樣的工作量,真的值得嗎?實際上,MMU就是為了解決操作系統越來越復雜的內存管理而產生的。

    時間:2019-06-02 關鍵詞: ARM Linux 單片機 基礎教程

  • AVR單片機特性簡介

    AVR單片機特性簡介

     一、 AVR單片機簡介 1.1、AVR的誕生 AVR單片機是ATMEL公司在1997年研發的增強型內置Flash的RISC精簡指令集高速單片機。可以廣泛應用于計算機外部設備、工業實時控制、儀器儀表、通訊設備、家用電器等各個領域。 1.2、AVR的特點 采用RISC精簡指令系統 RISC(精簡指令系統計算機)是相對于CISC(復雜指令系統計算機)而言的。RISC 并非只是簡單地去減少指令,而是通過將計算機的結構變得更加簡單合理來提高計算機的運算速度,目前市面上常見的微控制器大部分都使用的是RISC指令集,包括AVR以及ARM等。RISC優先選取使用頻率最高的簡單指令,避免復雜指令,并固定指令寬度,減少指令格式和尋址方式的種類,從而縮短指令周期,提高運行速度。由于AVR 采用RISC的這種結構,使AVR系列單片機都具備了1MIPS/MHz(百萬條指令每秒/兆赫茲)的高速處理能力。可以適用于對計算能力要求更高的場景下。 采用內嵌高質量的Flash程序存儲器 高質量的Flash擦寫方便,支持ISP和IAP,便于產品的調試、開發、生產、更新。內嵌長壽命的EEPROM可以長期保存關鍵數據,避免斷電丟失。片內大容量的RAM不僅能滿足一般場合的使用,同時更有效的支持使用高級語言開發系統程序,并可像MCS-51單片機那樣擴展外部RAM。 I/O管腳全部帶可設置的上拉電阻 這樣的話可以單獨設定為輸入/輸出、可設定(初始)高阻輸入、驅動能力強(可省去功率驅動器件)等特性,使的得I/O口資源靈活、功能強大、可充分利用。 片內具備多種獨立的時鐘分頻器 可分別供URAT、I2C、SPI使用。其中與8/16位定時器配合的具有多達10位的預分頻器,可通過軟件設定分頻系數提供多種檔次的定時時間。 增強性的高速USART 具有硬件產生校驗碼、硬件檢測和校驗、兩級接收緩沖、波特率自動調整定位、屏蔽數據幀等功能,提高了通信的可靠性,方便程序編寫,更便于組成分布式網絡和實現多機通信系統的復雜應用,串口功能大大超過MCS-51單片機的串口,并且由于AVR單片機速度快,中斷服務時間短,故可實現高波特率通訊。 穩定的系統可靠性 AVR單片機有自動上電復位電路、獨立的看門狗電路、低電壓檢測電路BOD,多個復位源(自動上下電復位、外部復位、看門狗復位、BOD復位),可設置的啟動后延時運行程序,增強了嵌入式系統的可靠性。 二、 AVR單片機系列簡介 AVR單片機系列齊全,可適用于各種不同場合的要求,共有3個檔次,分別為: 低檔Tiny系列:主要有Tiny11/12/13/15/26/28等; 中檔AT90S系列:主要有AT90S1200/2313/8515/8535等;(正在淘汰或轉型到Mega中) 高檔ATmega:主要有ATmega8/16/32/64/128(存儲容量為8/16/32/64/128KB)以及ATmega8515/8535等。 AVR器件引腳從8腳到64腳不等,還有各種不同封裝可供用戶根據實際情況進行選擇選擇。 三、 AVR單片機的優勢 哈佛結構,具備1MIPS / MHz的高速運行處理能力; 超功能精簡指令集(RISC),具有32個通用工作寄存器,克服了如8051 MCU采用單一ACC進行處理造成的瓶頸現象; 快速的存取寄存器組、單周期指令系統,大大優化了目標代碼的大小、執行效率,部分型號FLASH非常大,特別適用于使用高級語言進行開發; 作輸出時與PIC的HI/LOW相同,可輸出40mA,作輸入時可設置為三態高阻抗輸入或帶上拉電阻輸入,具備10mA-20mA灌電流的能力; 片內集成多種頻率的RC振蕩器、上電自動復位、看門狗、啟動延時等功能,外圍電路更加簡單,系統更加穩定可靠; 大部分AVR片上資源豐富:帶E2PROM,PWM,RTC,SPI,UART,TWI,ISP,AD,Analog Comparator,WDT等; 大部分AVR除了有ISP功能外,還有IAP功能,方便升級或銷毀應用程序。 四、 AVR單片機的應用 基于AVR單片機的優秀的性能與以上的特點,可以看出,AVR單片機目前可以適用于大部分嵌入式應用場景中,同時由于AVR單片機的封裝形式多樣,可以用于教學當中,例如使用雙列直插型單片機可以讓學生自己動手設計焊接一個單片機的最小系統,學習軟硬件技術。

    時間:2019-06-08 關鍵詞: 嵌入式 單片機 AVR 基礎教程

  • 單片機系統軟件如何抗干擾的方法

    單片機系統軟件如何抗干擾的方法

    在提高硬件系統抗干擾能力的同時,軟件抗干擾以其設計靈活、節省硬件資源、可靠性好越來越受到重視。下面以MCS-51單片機系統為例,對微機系統軟件抗干擾方法進行研究。1軟件抗干擾方法的研究在工程實踐中,軟件抗干擾研究的內容主要是:一、消除模擬輸入信號的嗓聲(如數字濾波技術);二、程序運行混亂時使程序重入正軌的方法。本文針對后者提出了幾種有效的軟件抗干擾方法。1.1指令冗余CPU取指令過程是先取操作碼,再取操作數。當PC受干擾出現錯誤,程序便脫離正常軌道“亂飛”,當亂飛到某雙字節指令,若取指令時刻落在操作數上,誤將操作數當作操作碼,程序將出錯。若“飛”到了三字節指令,出錯機率更大。在關鍵地方人為插入一些單字節指令,或將有效單字節指令重寫稱為指令冗余。通常是在雙字節指令和三字節指令后插入兩個字節以上的NOP.這樣即使亂飛程序飛到操作數上,由于空操作指令NOP的存在,避免了后面的指令被當作操作數執行,程序自動納入正軌。此外,對系統流向起重要作用的指令如RET、RETI、LCALL、LJMP、JC等指令之前插入兩條NOP,也可將亂飛程序納入正軌,確保這些重要指令的執行。1.2攔截技術所謂攔截,是指將亂飛的程序引向指定位置,再進行出錯處理。通常用軟件陷阱來攔截亂飛的程序。因此先要合理設計陷阱,其次要將陷阱安排在適當的位置。1.2.1軟件陷阱的設計當亂飛程序進入非程序區,冗余指令便無法起作用。通過軟件陷阱,攔截亂飛程序,將其引向指定位置,再進行出錯處理。軟件陷阱是指用來將捕獲的亂飛程序引向復位入口地址0000H的指令。通常在EPROM中非程序區填入以下指令作為軟件陷阱:NOPNOPLJMP 0000H其機器碼為0000020000.1.2.2陷阱的安排通常在程序中未使用的EPROM空間填0000020000.最后一條應填入020000,當亂飛程序落到此區,即可自動入軌。在用戶程序區各模塊之間的空余單元也可填入陷阱指令。當使用的中斷因干擾而開放時,在對應的中斷服務程序中設置軟件陷阱,能及時捕獲錯誤的中斷。如某應用系統雖未用到外部中斷1,外部中斷1的中斷服務程序可為如下形式:NOPNOPRETI返回指令可用“RETI”,也可用“LJMP 0000H”。如果故障診斷程序與系統自恢復程序的設計可靠、完善,用“LJMP 0000H”作返回指令可直接進入故障診斷程序,盡早地處理故障并恢復程序的運行。考慮到程序存貯器的容量,軟件陷阱一般1K空間有2-3個就可以進行有效攔截。1.3軟件“看門狗”技術若失控的程序進入“死循環”,通常采用“看門狗”技術使程序脫離“死循環”。通過不斷檢測程序循環運行時間,若發現程序循環時間超過最大循環運行時間,則認為系統陷入“死循環”,需進行出錯處理。“看門狗”技術可由硬件實現,也可由軟件實現。在工業應用中,嚴重的干擾有時會破壞中斷方式控制字,關閉中斷。則系統無法定時“喂狗”,硬件看門狗電路失效。而軟件看門狗可有效地解決這類問題。筆者在實際應用中,采用環形中斷監視系統。用定時器T0監視定時器T1,用定時器T1監視主程序,主程序監視定時器T0.采用這種環形結構的軟件“看門狗”具有良好的抗干擾性能,大大提高了系統可靠性。對于需經常使用T1定時器進行串口通訊的測控系統,則定時器T1不能進行中斷,可改由串口中斷進行監控(如果用的是MCS-52系列單片機,也可用T2代替T1進行監視)。這種軟件“看門狗”監視原理是:在主程序、T0中斷服務程序、T1中斷服務程序中各設一運行觀測變量,假設為MWatch、T0Watch、T1Watch,主程序每循環一次,MWatch加1,同樣T0、T1中斷服務程序執行一次,T0Watch、T1Watch加1.在T0中斷服務程序中通過檢測T1Watch的變化情況判定T1運行是否正常,在T1中斷服務程序中檢測MWatch的變化情況判定主程序是否正常運行,在主程序中通過檢測T0Watch的變化情況判別T0是否正常工作。若檢測到某觀測變量變化不正常,比如應當加1而未加1,則轉到出錯處理程序作排除故障處理。當然,對主程序最大循環周期、定時器T0和T1定時周期應予以全盤合理考慮。限于篇幅不贅述。2系統故障處理、自恢復程序的設計單片機系統因干擾復位或掉電后復位均屬非正常復位,應進行故障診斷并能自動恢復非正常復位前的狀態。2.1非正常復位的識別程序的執行總是從0000H開始,導致程序從0000H開始執行有四種可能:一、系統開機上電復位;二、軟件故障復位;三、看門狗超時未喂狗硬件復位;四、任務正在執行中掉電后來電復位。四種情況中除第一種情況外均屬非正常復位,需加以識別。2.1.1硬件復位與軟件復位的識別此處硬件復位指開機復位與看門狗復位,硬件復位對寄存器有影響,如復位后PC=0000H,SP=07H,PSW=00H等。而軟件復位則對SP、SPW無影響。故對于微機測控系統,當程序正常運行時,將SP設置地址大于07H,或者將PSW的第5位用戶標志位在系統正常運行時設為1.那么系統復位時只需檢測PSW.5標志位或SP值便可判此是否硬件復位。圖1是采用PSW.5作上電標志位判別硬、軟件復位的程序流程圖。圖1硬、軟件復位識別流程圖此外,由于硬件復位時片內RAM狀態是隨機的,而軟件復位片內RAM則可保持復位前狀態,因此可選取片內某一個或兩個單元作為上電標志。設40H用來做上電標志,上電標志字為78H,若系統復位后40H單元內容不等于78H,則認為是硬件復位,否則認為是軟件復位,轉向出錯處理。若用兩個單元作上電標志,則這種判別方法的可靠性更高。2.1.2開機復位與看門狗故障復位的識別開機復位與看門狗故障復位因同屬硬件復位,所以要想予以正確識別,一般要借助非易失性RAM或者EEROM.當系統正常運行時,設置一可掉電保護的觀測單元。當系統正常運行時,在定時喂狗的中斷服務程序中使該觀測單元保持正常值(設為AAH),而在主程中將該單元清零,因觀測單元掉電可保護,則開機時通過檢測該單元是否為正常值可判斷是否看門狗復位。2.1.3正常開機復位與非正常開機復位的識別識別測控系統中因意外情況如系統掉電等情況引起的開機復位與正常開機復位,對于過程控制系統尤為重要。如某以時間為控制標準的測控系統,完成一次測控任務需1小時。在已執行測控50分鐘的情況下,系統電壓異常引起復位,此時若系統復位后又從頭開始進行測控則會造成不必要的時間消耗。因此可通過一監測單元對當前系統的運行狀態、系統時間予以監控,將控制過程分解為若干步或若干時間段,每執行完一步或每運行一個時間段則對監測單元置為關機允許值,不同的任務或任務的不同階段有不同的值,若系統正在進行測控任務或正在執某時間段,則將監測單元置為非正常關機值。那么系統復位后可據此單元判系統原來的運行狀態,并跳到出錯處理程序中恢復系統原運行狀態。2.2非正常復位后系統自恢復運行的程序設計對順序要求嚴格的一些過程控制系統,系統非正常復位否,一般都要求從失控的那一個模塊或任務恢復運行。所以測控系統要作好重要數據單元、參數的備份,如系統運行狀態、系統的進程值、當前輸入、輸出的值,當前時鐘值、觀測單元值等,這些數據既要定時備份,同時若有修改也應立即予以備份。當在已判別出系統非正常復位的情況下,先要恢復一些必要的系統數據,如顯示模塊的初始化、片外擴展芯片的初始化等。其次再對測控系統的系統狀態、運行參數等予以恢復,包括顯示界面等的恢復。之后再把復位前的任務、參數、運行時間等恢復,再進入系統運行狀態。應當說明的是,真實地恢復系統的運行狀態需要極為細致地對系統的重要數據予以備份,并加以數據可靠性檢查,以保證恢復的數據的可靠性。其次,對多任務、多進程測控系統,數據的恢復需考慮恢復的次序問題,筆者實際應用的數據恢復過程流程圖如圖2所示。圖2系統自恢復程序流程圖圖中恢復系統基本數據是指取出備份的數據覆蓋當前的系統數據。系統基本初始化是指對芯片、顯示、輸入輸出方式等進行初始化,要注意輸入輸出的初始化不應造成誤動作。而復位前任務的初始化是指任務的執行狀態、運行時間等。3結束語對于軟件抗干擾的一些其它常用方法如數字濾波、RAM數據保護與糾錯等,限于篇幅,本文未作討論。在工程實踐中通常都是幾種抗干擾方法并用,互相補充完善,才能取得較好的抗干擾效果。從根本上來說,硬件抗干擾是主動的,而軟件是抗干擾是被動的。細致周到地分析干擾源,硬件與軟件抗干擾相結合,完善系統監控程序,設計一穩定可靠的單片機系統是完全可行的。

    時間:2018-06-11 關鍵詞: CPU 單片機 軟件抗干擾 技術教程 軟件陷阱

  • 單總線數據傳輸詳解

    單總線數據傳輸詳解

    純單片機干不了大事,必須得配上各種外設,那么了解單片機與傳感器之間的數據通信就顯得必不可少了。常見的單片機數據通信方式有SPI,IIC,RS232,單總線等等。每種通信方式都有相應的時序圖,分析時序圖并完成代碼的編寫是單片機學習者的必修課。本文以DS18B20為例分析一下單總線數據傳輸。 DS18B20是單總線數據傳輸,因此對于時序的要求就非常的高,學會分析其時序圖是非常有必要的。     1.初始化時序圖分析:     首先是由總線控制器拉低總線,維持480us。在480us后釋放總線,由上拉電阻講總線拉高。等待5-60us后,DS18B20開始響應,會將數據總線拉低60-240us.之后便釋放總線,由上拉電阻拉高總線。轉換為代碼如下: u8dsbInit()//初始化,返回0表示DS18B20無反應,反之有響應 { dsbDQStat(0);//控制器拉低總線 delay500us();//拉低總線一段時間 dsbDQStat(1);//釋放總線 delay60us();//等待DS18B20響應 if(dsb_DQ)//如果沒有相應直接返回0 { return0; } delay240us();//有響應則等待響應結束 return1;//返回初始化狀態 } 2.讀時序圖分析:     首先由控制器將總線拉低>1us的時間,此時控制器釋放總線,如果此時控制器采樣為低電平,那么讀到的值便是0,如果為高電平,則讀到的值為1。注意圖中標有一個15us,其意思便是控制器采樣在15us內完成。15us后是由上拉電阻將總線拉高維持45us。整個讀周期為15+45=60us。這個周期的時間也是得控制的。轉換為代碼如下: u8dsbReadByte()//讀出一個字節的數據,從低位開始讀取 { u8i,tmp=0; for(i=0;i<8;i++) { dsbDQStat(0);//控制器拉低總線 tmp>>=1;//低位開始讀 dsbDQStat(1);//釋放總線 if(dsb_DQ)tmp|=0x80; delay15us(); delay45us();//控制周期時間 } returntmp; } 3.寫時序圖分析:     首先由控制器拉低總線15us,之后,如果要寫入0,則繼續拉低總線并為此45us.如果要寫入1則釋放總線由上拉電阻拉高總線,也為此45us。寫時序相對比較簡單,轉換為代碼如下: voiddsbWriteByte(u8dat)//寫一個字節的數據,從低位開始 { u8i; for(i=0;i<8;i++) { dsbDQStat(0);//控制器拉低總線 delay15us();//維持15us if(dat&0x01)dsbDQStat(1); elsedsbDQStat(0); dat>>=1; delay45us(); dsbDQStat(1);//45us后釋放總線 } } DS18B20的三個時序圖就分析完了,DS18B20只是單總線數據通信中的一個例子,大家了解了DS18B20時序圖的分析,那么就可以試試分析DHT11的時序圖完成其初始化函數,以及讀數據函數。

    時間:2019-06-19 關鍵詞: 單片機 時序圖 總線傳輸 技術教程

  • 基于AT89C51的電動自行車快速充電器設計

    基于AT89C51的電動自行車快速充電器設計

    一、引言電動自行車由于具有無污染無噪音、輕便美觀等特點,受到眾多使用者的青睞。但在使用中也暴露出它的局限性,如有半路電池耗盡,且隨著使用時間的遞增,電池使用壽命會逐漸縮短。本文旨在研究開發一個根據電池飽和的程度智能改變充電模式,并可在較短時間(四小時)內將電池充好的電動自行車快速充電器(電池規格36V、12A)。二、脈沖快速充電法脈沖充電方式即脈沖電流間歇對電池充電,充電脈沖使蓄電池充滿電量,而間歇期使蓄電池經化學反應產生的氧氣和氫氣有時間重新化合而被吸收掉,消除極化從而減輕了蓄電池的內壓,使下一脈沖的恒流充電能夠順利地進行,使蓄電池可以吸收更多的電量。間歇脈沖使蓄電池有較充分的反應時間,減少了析氣量,提高了蓄電池的充電電流接受率。三、系統組成充電器主電路采用半橋變換式高頻開關穩壓電源,而控制電路由單片機實現。電網交流電在通過EMI濾波器除去共模信號后,進行橋式整流,再通過兩電容分壓后與兩開關管V1、V2相聯接,將正弦交流電壓變換成約高于充電電壓的脈沖電壓。在經過半橋濾波和LC濾波電路使電壓達到一較穩定值。控制電路由單片機AT89C51組成,電源由電網交流電經過變壓器變壓、全橋整流、穩壓管穩壓后提供。單片機通過檢測溫度傳感器的電壓信號,以軟件的方式控制輸出脈沖,從而控制開關管的通斷。另外,通過檢測充電電壓和電流值,控制單片機輸出脈沖寬度,以進入不同的充電階段。(一)半橋變換式高頻開關穩壓電源半橋變換電路如圖1(a)所示,各點輸出電壓波形如圖1(b)所示。半橋式變換電路的主要優點是其抗不平衡性,且使用的功率開關管的耐壓較低,不會超過輸入電壓的峰值;晶體管的飽和電壓也降至最低;輸入濾波電容的耐壓也可以減小。圖1半橋變換電路1(a)各點輸出電壓波形1(b)(二)單片機控制單片機電路設計,選用AT89C51單片機的P1口作為輸入輸出口,溫度傳感器所檢測的溫度信號通過單片機的P3.2口輸入,電壓信號由P3.1口輸入。輸出信號由單片機的P1.1~P1.5提供。具體分布情況見下表。(三)整體電路設計電動自行車快速充電器電路主要分為三部分:主電路、控制電路和檢測電路。主電路由橋式整流電路和半橋逆變電路組成。控制電路由單片機AT89C51來實現,單片機通過檢測來的電壓信號值作出相應的動作:輸出不同寬度的脈沖電壓和作出不同指示。檢測電路有溫度檢測電路和電壓檢測電路。溫度用溫度傳感器實現,電壓檢測由分壓電阻實現。主電路圖如圖2所示。圖2主電路圖四、結論本文介紹了一種基于AT89C51單片機控制的電動自行車快速充電器的電路工作原理和實現方法。該充電器具有自動化程度高、運行費用低、工作可靠等優點。經檢測,樣機充電效率高、充電速度快,而且損耗少、成本低。

    時間:2018-09-27 關鍵詞: 電動自行車 快速充電器 單片機 at89c51 設計教程 lc濾波電路

  • 沐浴加熱節水器設計方案,包含源代碼

    沐浴加熱節水器設計方案,包含源代碼

    背景:在現代的生活中,洗浴已經是人們必不可少的是組成部分,由于快速的生活節奏我們洗浴的方式大多數是選擇淋浴的方式,在這種方式下,我們經常會遇到這樣的情況:剛打開淋浴的時候,前端的水并不是我們洗浴的舒適溫度,夏天還好一些,而到了冬天,我們碰到這種情況,最直接的選擇就是將它白白放掉。目的:在這種背景下,我們團隊就覺得很有必要設計一種,利用我們洗澡時放掉的那一段水資源,而利用的最直接的方式就是將它加熱變為我們洗浴的舒適溫度范圍,可是一直加熱又會浪費電能源,所以我們又想到了溫度控制,通過使用溫度采集的方法,來時的加熱的溫度控制在一定的洗浴舒適的范圍之內,也通過控制加熱的溫度來控制加熱器的開與斷,而使得電能得到合理的使用,從而達到即節約了水資源,又合理利用能源的目的。系統原理和技術代碼:dispbuf[i]=temp;if(getdata<77){lowflag=1;highflag=0;}else if(getdata>153){lowflag=0;highflag=1;}else{lowflag=0;highflag=0;}ST=1;ST=0;}P1=dispcode[dispbuf[dispcount]];P2=dispbitcode[dispcount];dispcount++;if(dispcount==8){dispcount=0;}if((lowflag==1) && (highflag==0)){cnta++;if(cnta==800){cnta=0;alarmflag=~alarmflag;}if(alarmflag==1){SPK=~SPK;}}else if((lowflag==0) && (highflag==1)){cntb++;if(cntb==400){cntb=0;alarmflag=~alarmflag;}if(alarmflag==1){SPK=~SPK;}}else{alarmflag=0;cnta=0;cntb=0;}}首先要經過測算,算出大多數的水管的平均橫截面積,在測出單位時間內誰的流速是多少,然后依據,(其中Qv是水的流量,V代表體積、v代表流速、S代表橫截面積)算出水的流量是多少,再依據水的比熱容算出我們需要給誰提供的最小焦耳熱量。我們用單片機來控制電加熱器,通過使用溫度傳感器,來進行溫度的采樣,通過溫度采樣來的數據來進行內部的控制,首先我們知道加熱需要一定的加熱裝置,通過焦耳熱的計算公式:可知我們如果需要快速加熱就需要控制加熱器的電流和他的電阻,然后再依據此來挑選加熱裝置即可。簡單的溫度控制電路方案:系統框圖:流程圖:

    時間:2018-09-28 關鍵詞: 溫度傳感器 單片機 電加熱器 設計教程 加熱節水器

  • 基于STC12C5A60S2的多功能測量系統設計

    基于STC12C5A60S2的多功能測量系統設計

    0 引言隨著電子技術的發展,居民普遍使用電子溫度計或萬年歷自帶的溫度計來測量室內溫度,但是,隨著環境污染的日趨嚴重及人們對生活質量要求的提高,人們對室內濕度、二氧化碳濃度及光照強度的檢測也逐漸關注。然而,目前為止適用于家居型檢測濕度、光照強度及CO2濃度還沒有一種合適且適用的儀器。小型倉庫中傳統的方法是采用濕度表、雙金屬式測量計和濕度試紙等測試器材,通過人工進行檢測,對不符合溫度和濕度要求的庫房進行通風、去濕和降溫等工作。這種人工測試方法費時費力、效率低,且測試的溫度及濕度誤差大、隨機性大。因此我們需要一種性價比較高的溫濕度測量儀。本文設計研制一種新穎、方便、實用、結構簡單的多功能測量儀,適用于家庭、倉庫以及溫室等需要環境檢測的地方。設計通過LCD顯示所監測的結果,用戶可以根據監測結果有效調節相關設備,從而達到理想的環境狀態。1 系統設計1.1設計任務本文實現基于STC單片機的多功能測量系統,可以實現濕度檢測、溫度檢測、CO2濃度檢測、室內光照強度檢測、時間日期顯示的功能。其中濕度的測量范圍為20~90%RH;溫度的檢測范圍為-55~+125℃;CO2濃度測量范圍為350~10000ppmCO2;室內光照強度的測量范圍為0~2500lux;系統顯示當前時間和日期,并可以通過按鍵進行修改當前時間日期。1.2設計方案及工作原理多功能檢測系統包括:電源模塊、控制器、溫度檢測模塊、濕度檢測模塊、照度檢測模塊,CO2濃度檢測模塊、時鐘模塊、鍵盤輸入模塊、LCD顯示模塊。如圖1所示。本控制系統以STC12C5A60S2單片機為控制核心,該單片機具有高速、低功耗、超強抗干擾的特點,并且自帶8路10位精度AD轉換;溫濕度檢測由數字式的溫度檢測傳感器DS18B20和濕度檢測傳感器DTH11實現,由于數字式傳感器輸出為數字量,因此在數據處理方面比較簡單,且這兩款傳感器的性價比較高;時鐘模塊則是應用了比較常用的DS1302時鐘芯片,通過控制器與時鐘芯片的通訊實現得到比較準確的時間值,另外,通過按鍵操作實現對時鐘的校準;而對于照度和CO2濃度的檢測則比較復雜,由于硅光電池和CO2檢測傳感器輸出信號是微弱的模擬信號,因此需要對得到的小信號進行調理,調理后的信號信息送入單片機的AD口,從而得到單片機可以處理的數字量;所有檢測結果及日期時間的顯示都是由LCD實現;由于信號調理電路中放大器采用雙電源供電,因此電源模塊選用了交流220V轉±5V的電源模塊。2 硬件電路設計2.1控制電路系統的控制電路是以STC12C5A60S2單片機為控制核心構成的最小系統。另外,為方便程序下載,設計了基于CH340的程序下載接口電路,電路圖如圖2所示。2.2檢測電路根據傳感器輸出信號的不同,可分為數字式傳感器和模擬式傳感器兩種。信號類型的不同導致了檢測電路的不同。2.2.1溫濕度檢測電路由于溫度傳感器DS18B20和濕度傳感器DTH11均為數字量輸出,因此檢測電路十分簡單,為了防止不確定信號的出現,需在信號的輸出端接4.7k的上拉電阻,如圖3所示。2.2.2照度及CO2濃度檢測電路由于光照檢測采用硅光電池,信號為小信號的模擬量輸出,因此需要對信號進行調理。CO2傳感器MG811的輸出同樣為模擬量電壓小信號。其參數如表1所示。硅光電池測光強的原理是光生伏特效應,即它是一種直接把光能轉化成電能的半導體器件,由硅光電池的特性曲線可知,光伏電池輸出電流比輸出電壓的線性性要好,因此在此檢測其電流特性。由實驗測試可得室內的光照強度一般為0~2500lux,此時硅光電池的輸出電流在0~0.15mA左右,在硅光電池兩端并聯一個100Ω電阻,可得此時的輸出電壓在0~15mV左右。為了將小信號調理為可以適合單片機處理的信號,對小信號進行放大濾波處理。首先對小信號進行放大處理,這里采用高輸入阻抗的差分放大器。其次,放大器輸出的信號經過二階有源低通濾波器。最后信號進入單片機的AD口。信號調理電路如圖4所示。(1)差放大電路因為電路中R3=R4,R6=R8=R7=R9,故可導出兩級差模總增益為:通常,第一級增益要盡量高,第二級增益一般為1~2倍,這里第一級選擇100倍,第二級為1倍。則取R6=R7=R8=R9=10KΩ,要求匹配性好,一般用金屬膜精密電阻,阻值可在10KΩ幾百KΩ間選擇。則先定R5,通常在1~10kΩ內,這里取R5=1kΩ,則可由上式求得R3=99R1=49.5 kΩ。取標稱值51kΩ。通常R1和R2不要超過R5/2,這里選R1=R2=510Ω,用于保護運放輸入級。A1和A2應選用低溫飄、高KCMRR的運放,性能一致性要好。(2)有源低通濾波電路由于濾波電路的輸入輸出信號為直流信號,因此在計算時選取的截止頻率為3Hz.濾波電容C1=C2=1μF.由式(3)(4)可得R=53078Ω,A0=2,所以在此取R10=R11=51k.信號經過信號調理電路后實際放大倍數A=200.而對于CO2傳感器,根據輸入信號的不同,選擇合適R3、R4,其信號調理電路的增益為80. 2.2.3時鐘模塊本設計選用美國Dallas公司推出的一種高性能、低功耗的實時時鐘芯片DS1302,芯片采用SPI三線接口與CPU進行同步通信,并可采用突發方式一次傳送多個字節的時鐘信號和RAM數據。實時時鐘可提供秒、分、時、日、星期、月和年,一個月小與31天時可以自動調整,且具有閏年補償功能。工作電壓寬達2.5~5.5V.采用雙電源供電(主電源和備用電源),可設置備用電源充電方式,提供了對后備電源進行涓細電流充電的能力。電路連接如圖5所示。3 軟件設計3.1軟件系統設計該系統軟件主要包括兩部分:數據采集和數據顯示。當系統上電之后,系統首先進行初始化;然后判斷標志位確定當前是否進行時鐘設置,如果是,則通過按鍵調節時鐘,如果否,則采集所有數據并進行相應處理;最后將采集來的數據通過LCD顯示出來。系統程序框圖如圖6所示。|3.2部分檢測軟件設計對于光照強度檢測和CO2濃度檢測,存在模擬量向數字量的轉化,因此需要考慮AD轉換器的精度,為了得到較準確的檢測值,在此使用STC12C5A60S2自帶的10位AD轉換接口,即其精度為1/(210-1)。對于光照強度檢測,經信號調理電路后的輸出電壓為0~3V,相應的光照強度為0~2500lux,假設AD轉換后的值為A,則此時對應的光照強度為E,如式(5)。化簡得:E=(12500×A)/3069.因此,通過程序編寫可以實現對光照強度的檢測。4 結論設計了基于STC12C5A60S2的多功能測量系統,通過理論分析與實際電路焊接以及相關程序的編寫,設計出了實物。通過測試實現了溫濕度檢測、CO2濃度檢測、室內照度檢測、時鐘顯示的功能。實驗結果良好,測量精度在實際計算誤差范圍內。

    時間:2018-09-28 關鍵詞: 單片機 stc12c5a60s2 設計教程 多功能測量系統

  • 基于DSP和模糊控制的尋線行走機器人設計與實現

    基于DSP和模糊控制的尋線行走機器人設計與實現

    在最近的機器人比賽和電子設計競賽中,較多參賽題目要求機器人沿場地內白色或黑色指引線行進。一些研究人員提出了基于尋線的機器人設計策略,主要是關注指引線的檢測,但對于機器人的整體設計未做說明。本文在總結此類賽事的基礎上,提出了一種將DSP(Digital Signal Processor)和CPLD(Complex Programmable Logic Device)作為核心處理器,采用模糊控制策略處理來自檢測指引線傳感器信號的機器人行走機構的通用性設計方法。 1 車體機械設計 由于機器人比賽對參賽機器人有嚴格的尺寸限制,需要在有限的空間內合理安排各個機構。本文給出車體最小尺寸時驅動輪、光電傳感器以及控制芯片之間的相對位置,如圖1所示。 機器人采用雙直流步進電機驅動方式,其額定電壓為24V。車體的前后端分別安裝光電傳感器檢測板實現指引線的檢測。相鄰光電傳感器距離略小于指引線寬度,保證同時有兩個傳感器可以檢測到指引線。 2 硬件電路設計 這部分主要介紹核心控制器DSP與功能擴展芯片CPLD的連接,簡要介紹其它功能模塊的硬件實現。系統整體結構如圖2所示。 2.1 核心控制器設計 目前,機器人核心控制器多選用單片機。筆者考慮到單片機指令周期長、可用資源少,難以滿足機器人實時控制的要求,在綜合性價比、開發周期等因素后,核心控制器選用TI公司的電機數字控制專用DSP——TMS320F240(以下簡稱′F240)。它具有運動控制非常有效的事件管理器,其中包括12路比較/PWM通道,可以非常方便地控制直流電機轉速;利用其片內的3個可以工作于6種模式的16位通用定時器,可以完成機器人絕大部分動作的控制;16個10位A/D轉換器可以方便地讀取模擬信號。由于機器人指引線檢測模塊返回信號可看作反饋信號,因此機器人驅動電機選用步進電機。通過設置′F240定時器,利用I/O端口輸出設定脈沖信號,該信號經步進電機驅動電路使步進電機行進設定距離。具體實現在軟件設計部分介紹。′F240的其他片內I/O、PWM端口、A/D都引出輸入輸出線,方便擴展功能的實現。 從′F240的特點可以看出,′F240可用于實現復雜控制算法和進行復雜的機器人動作控制。然而根據車體設計方案,需要在車體上安裝20個光電檢測傳感器,占用控制器的20個I/O端口。這樣,′F240可用于擴展功能的I/O端口大大減少。機器人在比賽中會有比較劇烈的撞擊,如設計各種功能數字電路會嚴重降低控制板的可靠性。此處選用Altera公司的EPM7128作為核心處理器的擴展、模糊控制的輸入。為滿足DSP與CPLD之間的協同處理,′F240與EPM7128可采用如圖2所示的電路連接。′F240的16根數據線和A12~A15共4根地址線連到EPM7128,通過選擇信號、寫信號和讀信號完成對EPM7128的讀寫操作。EPM7128的I/O端口主要在MAX+PlusⅡ編程環境下通過軟件和硬件管腳設置實現。這種DSP+CPLD的結構可以在充分擴展系統功能的同時,使DSP更能發揮其運算功能強大的特點[4]。 穩壓電路主要由LM7805芯片組成;信號輸入電路由微動開關經反相器71HC14后再送往DSP,微動開關輸入電路有去耦電路,輸出信號加上拉電阻;顯示模塊采用MAX7219芯片驅動,八位LED數碼管,每個LED對應三個I/O端口。 2.2 光電檢測模塊 光電檢測模塊的功能是將指引線準確地檢測出來。此處主要借助反射式光藕TCRT5000。這是一種自帶發光二極管和光敏三極管的器件,其集電極電流Ic與反射距離d之間有圖3所示關系。 TCRT5000的應用電路見如4所示。當檢測到綠色地面時,由于反射率不高,Ic1太小,三極管T2截止而輸出高電平。當檢測到白色地面時,由于反射率較高,Ic1較大,三極管T2飽和而輸出低電平,從而實現了白線的檢測。555構成了施密特觸發器,用于去除反射性光耦產生的噪聲和波形的整形。 2.3 動作電機控制電路 在機器人尋線行走過程中,需要完成規定的動作。這些動作的完成不需要控制相應動作電機的轉速,本文直接利用I/O輸出控制信號驅動固態繼電器進而使直流電機動作。固態繼電器選用松下電器公司雙刀雙擲(DPDT)型,型號為DS2Y-S-DC5V。盡管此繼電器控制電壓為5V,可與TTL的邏輯電平相兼容,但一般TTL芯片的輸出電流還達不到其輸入電流40mA。集電極開路的門電路(Open Collector Gate,簡稱OC門)可增大輸出電流,并且繼電器兩控制端的輸入電阻剛好可以作為OC門電路輸出需要的上拉電阻。具體選用具有OC門結構的芯片ULN2003,它是由7個NPN達林頓管組成的高電壓、高電流達林頓驅動器。 因為每個DS2Y-S-DC5V提供兩組常開端口,因此如果在兩組端口的N.O.端口上分別連上電機電源的正極和地,則可以用兩個繼電器實現電機的正反轉。由于繼電器在切換電壓時,繼電器線圈會產生大的反電動勢,需要在繼電器切換電壓的兩端加續流二極管,以消除切換時的電火花,避免出現大的浪涌電流,減少繼電器產生的電磁干擾。 3 模糊控制策略 機器人的設計思想是利用光電檢測傳感器檢測車體偏離指引線的大小來調整左右驅動步進電機的行進速度,使機器人沿指引線行進。這恰好符合模糊控制的思想[5]。 把前后光電檢測板上的光電檢測傳感器編號,將檢測到指引線的編號最大的光電檢測傳感器的編號作為車體偏離的距離,編號方法如表1。這樣,模糊控制器有兩個輸入:前后光電檢測板的輸入編號;模糊控制器有兩個輸出:左右步進電機驅動脈沖數。 模糊控制器的輸入量的語言值模糊子集選取為:{LB,LS,ZO,RS,RB}。其中:LB=左大;LS=左小;ZO=中心;RS=右小;RB=右大。輸出量的語言值模糊子集選取為:{NB,NM,NS,ZO,PS,PM,PB}。其中:NB=負大;NM=負中;NS=負小;ZO=零;PS=正小;PM=正中;PB=正大。 根據隸屬函數的定義和選取規則,輸入變量前部位置iF 和后部位置iB的隸屬度選擇相同,如圖5所示。輸出變量左輪轉速OUL和右輪轉速OUR的隸屬度選擇相同,如圖6所示。 根據多次的實驗和修正,得到如表2的左輪轉速控制規則表(右輪的轉速控制規則表內容與左輪的轉速控制規則表對應,例如iF為RB、iB為LB時對應的OUL為NB,類似可得到右輪轉速控制規則表)。模糊推理采用Mamdani法。反模糊化采用重心法,最終得到如表3所示的左輪轉速控制信號輸出表(右輪轉速控制信號輸出表可用類似于右輪轉速控制規則表推導的方法得到)。在′F240存儲空間中以表格的形式存儲表3,根據輸入可得到相應輸出。 上述模糊信號的獲取通過EPM7128用VHDL語言編程實現,此部分的編程相對簡單,不再贅述。由于光電傳感器信號的改變可以實時反映在CPLD的輸出上,′F240只需定時讀取此信號并做相應從處理即可。假設前光電檢測板和后光電檢測板的信號分別保存在RE_CPLD字節的高半字節、低半字節中,若這兩個信號大于10則保持原數據不變,否則根據信號的大小計算此值在轉速控制信號輸出表中的偏移量: 其中#04h為保存轉速表的頁面,#MATRIXL為轉速表起始地址在頁面中的偏移量,ADDER_PS為查表值相對轉速表起始地址的偏移量。若將查表得到的值變化后保存為控制步進電機轉速的定時器的周期,則可以實時改變步進電機的轉速: 4 步進電機調速的實現 步進電機是純粹的數字控制電動機。它將電脈沖信號轉換成角位移,即給一個脈沖信號,電機轉一定角度。步進電機控制器的輸入端口有:VDD——電機電源正極;GND——電源地線;OPTO——控制信號的公共陽極;DIR——電機方向控制端;FREE——脫機輸入端;CP——脈沖輸入端(CP停止施加脈沖時,要保證CP為高電平,使內部光耦截止)。此處給DIR端加高電平,使機器人只向前行進,在程序中只需對CP端進行處理。 脈沖的產生通過控制I/O端口的電平變化實現。在設定了定時中斷的各種參數后,在定時器中斷處理程序中使一個標志字不停地加1: 在主程序中可以設定行走距離,定時中斷的時間間隔決定脈沖的頻率,也即決定步進電機的運動速度: 其中,數值2 000代表機器人行走的距離單位。利用模糊控制策略,改變控制兩個步進電機的定時器定時周期的長短以及行進的距離,可以實現機器人的尋線行進。 在總結近期參加的機器人比賽和電子設計競賽的基礎上,針對機器人尋線行走的普遍要求,提出了一種基于DSP+CPLD和模糊控制策略的機器人實現方法。利用該方法設計的機器人參加了多種不同的機器人比賽(如全國大學生機器人電視大賽、足球機器人比賽子項和電子設計競賽等),運行狀況良好,取得了較理想的成績,進而證實了此設計的有效性。 參考文獻 1 許 歡,唐競新.調制光尋線及其在自動行走機器人中的應用.清華大學學報(自然科學版),2002;42(1):115~117 2 萬永倫,丁杰雄.一種機器人尋線控制系統.電子科技大學學報,2003;32(1):47~50 3 TMS320C240X DSP Controllers CPU,System,and Instruction Set.Texas Instruments,1997 4 曹衛華,吳 敏,陳 鑫.基于DSP控制的足球機器人小車的設計與實現.機器人技術應用,2002;3:19~21 5 叢 爽.神經網絡、模糊系統及其在運動控制中的應用.合肥:中國科技大學出版社,2001

    時間:2018-08-27 關鍵詞: DSP 傳感器 機器人 單片機 模糊控制 設計教程

  • 單片機編程經驗(三)

    經驗之三、話說ram冗余技術  所謂的ram冗余,就是:  1、將重要的數據信息備份2份(或以上)并存放在ram中不同的區域(指地址不相連)。  2、當平時對這些數據進行修改時,同時也更新備份。  3、當干擾發生并被攔截到“程序錯誤處理段”中時, 將數據與備份做比較,采用表決方式(少數服從多數)選出正確(或可能正確?)的那個。  4、備份越多,效果越好。(當然,你得有足夠的存儲空間)。  5、只備份最最原始的數據。中間變量(指那些可以從原始數據重新推導出來的數據)不必備份,  注:  1、這種思路的理論依據,據說是源于一種“概率論”,即一個人被老婆打腫臉的概率是很大的,但如果他捂著臉去上班卻發現全公司每個已婚男人的臉都青了,這種概率是很小的。同理,一個ram寄存器數據被沖毀的概率是很大的,但地址不相連的多個ram同時被沖毀的概率是很小的。  2、前兩年,小匠學徒時,用過一次這種方法,但效果不太理想。當時感覺可能是概率論在我這失效了?現在回想起來,可能是備份的時機選的不好。結果將已經沖毀的數據又備份進去了。這樣以來,恢復出來的數據自然也就不對了。

    時間:2019-03-13 關鍵詞: 經驗 單片機 設計教程

  • 單片機編程經驗(四)

    經驗之四、話說指令冗余技術  前面有個朋友問到指令冗余,按匠人的理解,指令冗余,就是動作冗余。舉個例子,你要在某個輸出口上輸出一個高電平去驅動一個外部器件,你如果只送一次“1”,那么,當干擾來臨時,這個“1”就有可能變成“0”了。正確的處理方式是,你定期刷新這個“1”。那么,即使偶然受了干擾,它也能恢復回來。除了i/o口動作的冗余,匠人強烈建議大家在下面各方面也采用這種方法:  1、lcd的顯示。有時,也許你會用一些lcd的專用驅動芯片(如ht1621),這種芯片有個好處,即你只要將顯示數據傳送給它,它就會不斷的自動掃描lcd。但是,你千萬不要以為這樣就沒你啥事了。正確的處理方式是,要記得定期刷新送顯數據(即使顯示內容沒有改變)。對于cpu中自帶lcd driver 的,也要定期刷新lcd ram。  2、中斷使能標志的設置。不要以為你在程序初始化段將中斷設置好就ok了。應該在主程序中適當的地方定期刷新一下,以免你的中斷被掛起來。  3、其它一些標志字和參數寄存器(包括你自己定義的),也要記得常常刷新。  4、其它一些你認為有必要反復刷新的地方。

    時間:2019-03-12 關鍵詞: 經驗 單片機 設計教程

  • 英飛凌安全單片機提升谷歌Chromebook安全性

    21ic訊 英飛凌科技股份公司近日宣布,公司面向采用谷歌Chrome操作系統的設備,推出可信平臺模塊(TPM)芯片。TPM是谷歌Chromebook的安全架構不可或缺的組成部分。英飛凌成為適合與面向網絡應用的全新操作系統結合使用的TPM芯片的首家供應商。 Chromebook經過精心設計,可為主要利用計算設備登錄互連網以及使用網絡應用的用戶,帶來快速、輕松和安全的體驗。這種設計的一個重要部分被稱為“縱深防御”,可提供多重惡意軟件保護。這種安全架構具備硬件支持特性,包括每臺Chromebook內置的TPM芯片支持的各種功能。 英飛凌科技股份公司芯片卡與安全IC業務部總經理Helmut Gassel博士指出:“谷歌認識到安全性對于天天泡在網上的用戶而言至關重要,因此成功設計出自己的Chrome操作系統應用平臺。由于有越來越多的用戶開始采用基于云的解決方案調用數據和應用,因此,基于硬件的安全對于可上網移動終端的增長至關重要。立足于強大的安全系統專業技術,英飛凌能夠不斷進行創新,從而以最優的性價比,滿足各種設備和業務領域的安全需求。” 英飛凌根據可信計算聯盟(TCG)公布的規范,推出用于可信計算的硬件和軟件產品。英飛凌的TPM是一種完全符合標準的TPM,成功通過了TCG的認證流程,獲得了通用標準EAL 4+認證。除TPM芯片外,英飛凌還推出了TPM安全軟件專業套件,從而簡化初始化、管理與應用支持。  

    時間:2011-08-03 關鍵詞: 英飛凌 安全性 單片機 chromebook

  • pic單片機解惑篇,6個pic單片機問題解疑(上)

    pic單片機解惑篇,6個pic單片機問題解疑(上)

    pic單片機具備很多應用,對于pic單片機,想必大家并不陌生。往期文章中,小編對pic單片機做過諸多介紹。本文中,小編將為大家帶來6個pic單片機問題,并予以解答。而在之后的pic單片機文章中,小編將帶來另外6個問題。如果你對本次即將要講解的內容存在一定興趣,不妨繼續往下閱讀哦。 1、PIC單片機振蕩電路中如何選擇晶體? 對于一個高可靠性的系統設計,晶體的選擇非常重要,尤其設計帶有睡眠喚醒(往往用低電壓以求低功耗)的系統。這是因為低供電電壓使提供給晶體的激勵功率減少,造成晶體起振很慢或根本就不能起振。這一現象在上電復位時并不特別明顯,原因時上電時電路有足夠的擾動,很容易建立振蕩。在睡眠喚醒時,電路的擾動要比上電時小得多,起振變得很不容易。在振蕩回路中,晶體既不能過激勵(容易振到高次諧波上)也不能欠激勵(不容易起振)。晶體的選擇至少必須考慮:諧振頻點、負載電容、激勵功率、溫度特性、長期穩定性。 2、如何判斷電路中晶振是否被過分驅動? 電阻RS常用來防止晶振被過分驅動。過分驅動晶振會漸漸損耗減少晶振的接觸電鍍,這將引起頻率的上升。可用一臺示波器檢測OSC輸出腳,如果檢測一非常清晰的正弦波,且正弦波的上限值和下限值都符合時鐘輸入需要,則晶振未被過分驅動;相反,如果正弦波形的波峰,波谷兩端被削平,而使波形成為方形,則晶振被過分驅動。這時就需要用電阻RS來防止晶振被過分驅動。判斷電阻RS值大小的最簡單的方法就是串聯一個5k或10k的微調電阻,從0開始慢慢調高,一直到正弦波不再被削平為止。通過此辦法就可以找到最接近的電阻RS值 3、晶振電路中如何選擇電容C1,C2? (1)因為每一種晶振都有各自的特性,所以最好按制造廠商所提供的數值選擇外部元器件。 (2)在許可范圍內,C1、C2值越低越好。C值偏大雖有利于振蕩器的穩定,但將會增加起振時間。 (3)應使C2值大于C1值,這樣可使上電時,加快晶振起振。 PIC系列單片機的任意一條I/O管腳都有很強的帶負載能力(至少可提供或灌入25mA的電流)。因此,在某些場合,這些管腳可作為可控的電源。舉個例子,在一些低功耗的設計中,希望一些周圍的器件在系統待命時不耗電或盡量少耗電。此時可考慮這些器件的電源供電由一條I/O腳負責提供,在工作時MCU在該條管腳上輸出高電平(接近VDD)帶幾個mA的負載絕對不成問題。若要進入低功耗模式MCU就在該管腳輸出低電平(接近0),被控器件沒有了電源也就不會耗電。比如LCD顯示電路、信號調制電路等都非常適合此類控制。 5、為何系統在外界磁場和電場的干擾時不能正常工作? 如果在主控電路中沒有濾波電路,您用的芯片在/MCLR端應接一個能保證濾去該端口上的窄脈沖電路。因/MCLR上加的低電平寬度應大于2US,系統才能復位,而小于2US的低電平將會干擾系統的正常工作。 6、使用帶A/D的PIC芯片時,怎樣才能提高A/D轉換的精度? (1)保證您的系統的時鐘應是適合的。如果您關閉/打開A/D模塊,應等待一段時間,該段時間是采樣時間;如果您改變輸入通道,同樣也需等待這段時間,和最后的TAD(TAD為完成每位A/D轉換所需的時間)。TAD可以在ADCON0中(ADCS1、ADCS0)中選擇,它應在2US-6US之間。如果TAD太小,在轉換過程結束時,沒有完全被轉換;如果TAD太長,在全部轉換結束之前,采樣電容上的電壓已經下降。對該時間的選擇的具體細節請參照有關的數據手冊或應用公式。 (2)通常模擬信號的輸入端的電阻太高(大于10Kohms)會使采樣電流下降從而影響轉換精度。若輸入信號不能很快的改變,建議在輸入通道口用0.1UF的電容, 它將改變模擬通道的采樣電壓,由于電流的補給,內在的保持電容為51.2PF。 (3)若沒有把所有的A/D通道用完,最好少用AN0端。因它的下一個腳與OSC1緊靠在一起會對A/D轉換造成影響。 (4)最后,在系統中,若芯片的頻率較低,A/D轉換的時鐘首選的是芯片的振蕩。這將在很大范圍內降低數字轉換噪音的影響。同時,在系統中,在A/D轉換開始后,進入SLEEP狀態,必須選擇片內的RC振蕩作為A/D轉換的時鐘信號。該方法將提高轉換的精度。 以上便是此次小編帶來的“pic單片機”相關內容,通過本文,希望大家對文中提及的6個單片機問題已不再迷惑。如果你喜歡本文,不妨持續關注我們網站哦,小編將于后期帶來更多精彩內容。最后,十分感謝大家的閱讀,have a nice day!

    時間:2020-03-11 關鍵詞: pic 單片機 pic單片機 指數

  • pic單片機解惑篇,6個pic單片機問題解疑(下)

    pic單片機解惑篇,6個pic單片機問題解疑(下)

    pic單片機的應用,使得諸多控制系統變為現實。因此,pic單片機具備很強的現實意義。上篇pic單片機文章中,小編為大家解讀了6個pic單片機問題。本文中,小編將繼續為大家講解另外6個pic單片機問題,一起來看一下吧。 1、PIC16C7XX的A/D片內RC振蕩器能否用于計數器? 16C71A/D轉換器片內RC振蕩器的作用是讓MCU處于睡眠時(此時主振停振)能有一個時鐘源來進行A/D轉換。此RC振蕩器因其內部設計的限制不能被其他電路使用。A/D轉換器內部RC振蕩器鐘頻典型值為250K,但會隨著環境溫度,工作電壓,產品批號等不同而有相當的變動。定時器的時鐘源可以選擇內部的振蕩頻率,也可以是外部的脈沖輸入信號。若你能選擇后者,那就能方便地做到MCU的主頻很高而時鐘的溢出率較低。不然,除了用軟件來計數分頻,好象也沒有其它招數。另一種選擇是用其它型號的MCU,其內部至少還另有一個TIMER1,因為TIMER1可以有獨立的一顆晶體作為時鐘振蕩的基準,你可以方便地選用頻率低的晶體來完成你的設計。 2、為何使用PICSTAR-PLUS燒寫16CE625-04/P有時無法把保密位燒成"保密"? 使用PICSTAR-PLUS對芯片編程時,程序代碼是放在計算機的RAM中,每次寫程序時通過串口把數據下載到燒寫器中去編程,所以可能會出錯。我不懷疑你操作有問題,但是請注意的PICSTAR-PLUS是用于開發用途的編程器,不推薦用于規模生產。你能計算出出錯概率為1%,看來你是用它來作大規模生產了。為保證燒寫可靠,推薦你使用高奇公司生產的PICKIT編程器。 3、為什么PIC單片機應用中,有時出現上電工作正常,而進入睡眠后喚醒不了?(PIC單片機應用中晶體選擇的注意事項?) 對于一個高可靠性的系統設計,晶體的選擇非常重要。在振蕩回路中,晶體既不能過激勵(容易振到高次諧波上),也不能欠激勵(不容易起振)。尤其在設計帶有睡眠喚醒(往往用低電壓以求低功耗)的系統中,若還是隨手拿一顆晶體就用,你的系統可能會出問題。這是因為低供電電壓使提供給晶體的激勵功率減少,造成晶體起振很慢或根本就不能起振。這一現象在上電復位時并不特別明顯,原因是上電時電路有足夠的擾動,很容易建立振蕩。在睡眠喚醒時,電路的擾動要比上電時小得多得多,起振變得很不容易。 有人評價PIC單片機對晶體的要求怎么這么高?用51好象從來就沒有這么麻煩,手里抓到什么就用什么,也不見有問題呀?且慢,這樣比較前提并不一樣,同樣在睡眠時,有誰見過51系列不用復位而僅靠內部或外部事件喚醒嗎?若你并不需要這么高級的設計技術,PIC也大可以讓你逮到什么晶體就用什么。 評價振蕩電路是否工作在最佳點的簡單方法時用示波器看OSC2腳上的波形(必須考慮示波器接入電容!)最好的情形是看到非常干凈漂亮的正弦波,沒有任何波形畸變,而且要滿幅(接近VCC和GND)晶體的選擇至少必須考慮:諧振頻點、負載電容、激勵功率、溫度特性、長期穩定性。 4、PIC單片機型號的溫度級如何識別? 以16C54-04X / P為例: X =沒有,商業級,溫度范圍是0-70℃; X= I,工業級,-40-85℃; X = E,汽車級,-40-125℃; 例如:PIC16C54C-04/P 商業級 PIC16C54C-04I/P 工業級 PIC16C54C-04E/P 汽車級。 5、PIC單片機的各種中斷有沒有優先級之分? 中檔PIC單片機的中斷入口只有一個,硬件不分優先級,但可用軟件查詢的方式決定其優先級高低:先查先做,優先級為高。高檔的17和18系列,包括即將推出的16位dsPIC,中斷有硬件優先級。 6、PIC單片機型號中,后綴A/B/C分別代表什么? PIC單片機型號中,后綴A/B/C表示的是芯片生產的工藝不同。從A到C是工藝不斷更新,硅片圓盤(Wafer)的直徑變大,線寬變窄,線距變密,在同一個圓盤上可以制作出更多的芯片,從而降低了生產成本。從功能角度來看,三者是一樣的。當然,新版本的芯片中會把現有版本中存在的一些問題作些修正,功能會得到擴充。從性能指標上來講,三者有些差距,一個明顯的表現是在電源電壓的承受范圍,制作線寬越細,所能承受的電壓越低。例如,PIC16C57的最高電源電壓指標為6V,而57C的指標為5.5V。絕大多數情況下新版的片子可直接替換舊版。從目前發現的問題來看,主要出在晶體振蕩電路部分。原因是新版芯片振蕩電路內部的反向放大器的增益要比舊的高出許多。若晶體選擇的不合理,可能會振蕩到高次諧波上去。。有些客戶也提出新版的片子抗干擾的性能不比舊版的片子。 其實,我們公布的技術指標在這方面并沒有任何犧牲,只是工藝上的原因,我們留的余量減少了。請大家注意不要認為PIC的片子抗干擾能力強,在電路設計時就一點不考慮應有的抗干擾措施。 以上便是此次小編帶來的“pic單片機”相關內容,通過本文,希望大家對上面的6個pic單片機問題已具備一定的認知。如果你喜歡本文,不妨持續關注我們網站哦,小編將于后期帶來更多精彩內容。最后,十分感謝大家的閱讀,have a nice day!

    時間:2020-03-11 關鍵詞: 單片機 問題 pic單片機 指數

  • 疫情期間,為什么額溫槍那么受歡迎呢?

    疫情期間,為什么額溫槍那么受歡迎呢?

    前段時間,為了助力疫情防控戰,使額溫槍活了起來,額溫槍主要通過紅外線測量溫度,操作簡單,測量速度快,不用接觸皮膚就可以測量;對準額頭,幾秒鐘就可以出體溫測量結果,方便、簡單、快捷,使用衛生、免清潔,適合老人、兒童、醫院和家庭使用。根據國務院《企事業單位復工復產疫情防控措施指南》的文件精神,各企事業單位做好工作場所防疫工作,員工每次進入單位或廠區時,應在入口處檢測體溫,體溫正常方可進入。于是,額溫槍成了復工必需品,貨源短缺、價格暴漲。 疫情期間,額溫槍就是重要的“抗疫武器”,采用額外槍快速地篩查、識別有發熱表征的疑似感染人員是做好疫情防控的關鍵一環。從交通樞紐到社區、醫院、學校,再到寫字樓,每天都有專門人員手持額外槍,進行人群體溫檢測,識別其中體溫超過37.2℃的發熱人員,再交由醫療和疾控部門作進一步處理,從而達到將大部分患者從人群中篩查出來的目的,進而采取隔離觀察治療措施,就可以達到“控制傳染源”的目的。 作為電子元器件連接的載體——PCB,也是額溫槍及許多醫療設備的核心元件之一,在這場疫情防控戰役中不可或缺,因此PCB工廠的復工時間和產能狀況,一定程度上也關系著防疫物質的供給情況。疫情發生后,捷多邦就收到了來自額溫槍生產企業的PCB訂單需求。作為相關部門指定的抗疫一線生產企業,捷多邦提前復工,并開通綠色通道,在人手不足的情況下晝夜趕制、生產,以實際行動踐行企業擔當,為全社會抗擊疫情貢獻一份力量。

    時間:2020-03-14 關鍵詞: 單片機 額溫槍

  • 電子設計的一些注意事項

    電子設計的一些注意事項

    現在的社會的運作離不開各種電子產品,那么你知道電子設計有哪些注意事項嗎?做電子工程設計需要謹小慎微,考慮周全盡可能避免一些錯誤。但是,對于剛入門的小白來說,很多時候難以做到萬無一失,總會遇到考慮不到的時候。比如以下這些誤區,是很多電子小白踩過的坑,多了解一下,避免重蹈覆轍。 只靠硬件降低功耗? 在硬件電路或者芯片設計的過程中,非常注重一個概念,那就是降低功耗!功耗控制確實是硬件設計中關鍵的一環,尤其是在消費電子產品上。很多消費電子產品都是裝電池的,比如藍牙耳機、智能印象等等,在這類電子產品中電池一直是一個痛點,所以在產品競爭力上,功耗是一項重要的指標。然而,省功耗是不是單單有硬件設計人員去考慮呢?答案是:不是!其實軟件控制在節省功耗上面也有很多講究,在電路系統中,最耗電的是存儲器訪問、總線請求、CPU 運行等操作,而這些操作都是由軟件去控制的。一個優秀的軟件的程序應該嚴格的控制避免頻繁觸發這些耗電的動作,這會對整機產品的功耗降低有很大的貢獻! 過沖信號一定要用匹配電阻消除? 首先解釋一下什么是過沖現象,如果有用過單片機的應該都試過讓單片機的 IO 輸出一些信號,比如說用于驅動蜂鳴器的時候直接用 IO 推一個固定頻率的方波。這時候如果你用示波器抓取 IO 輸出的信號,可以發現信號并不是像書上畫的方波那樣干凈,它會在信號翻轉的邊沿出現一些毛刺狀的東西,上升沿會看到向上的毛刺,下降沿會有向下的毛刺。這個毛刺就是過沖現象,這時 IO 本身的電氣特性導致的。過沖現象可以通過外部電路加匹配電阻把它過濾掉,但并不是多有過沖都需要這么做。原因是,如果要把過沖現象完全消除掉的話可能需要比較大的電阻,同時又要保證信號的電壓幅度能夠接受,這時候的電流會大很多。所以,有時候只要過沖現象在接受范圍內,其實不需要非要把過沖完全消除。 存儲器片選接地? 存儲器基本上都有一個片選信號,一般是當總線需要訪問存儲數據時會把片選信號 CS 拉低為有效狀態。可能有人會問,為了減少控制信號線,而且知道系統本身會頻繁訪問存儲器,能不能直接把片選接地,讓它一直選中呢?實際上功能是沒有問題的,可以一直選中。但是大部分存儲器在片選有效時的功耗會大很多,能夠達到 100 倍以上。所以最好還是使用 CS 信號控制存儲器,只有在需要訪問的時候才選中它。 FPGA 的邏輯門閑著也是浪費? 現在 FPGA 的邏輯資源越來越多,對于工程開發人員來說無疑是件好事。因為能夠支配的資源多了,那么能夠發揮的空間也就大了,關鍵是寫起代碼來也不用時刻想著省資源。但是,對于功耗要求比較高的應用來說還是要盡量節省邏輯門資源。因為在 FPGA 里面,運行起來的功耗和內部被使用的邏輯門數量以及觸發器的翻轉次數成正比,所以盡可能減少數字電路中使用的資源以及翻轉頻率,在不需要翻轉的時候禁止翻轉,將會有效的降低功耗。 不用的芯片 IO 讓它懸空就行? IO 懸空的一個明顯壞處就是容易讓芯片內部信號受到影響,因為懸空的 IO 很容易受到外部影響干擾形成震蕩信號傳遞到芯片內部。有人說,那加個上拉電阻把它的狀態固定就行了吧?加上拉的方法是可以解決干擾的問題,但是又會引入功耗的問題,不會很多,大概會有一個微安級別的電流消耗。最好的處理方法是把 IO 設置成輸出狀態,這樣既可以固定狀態,又能夠避免功耗流失。 PCB 使用自動布線? 應該稍微有點電子設計經驗的工程師都不會使用自動布線,但是對于初學者出于方便可能會直接使用自動布線功能。這里介紹一下自動布線有什么不好的地方,一方面是自動布線會消耗比較大的面積,同時,軟件會自動產生很多過孔,太多的布線和過孔都會影響到 PCB 最終量產的成本和性能。所以,真正的產品開發時沒人會使用自動布線功能,基本都是手動拉線,盡可能地根據信號特點走線,以及設置線寬和覆銅等參數。 以上介紹的這些要點是很多新手工程師在設計時考慮不到的地方,電子設計需要在實踐中慢慢積累經驗,同時借鑒別人的經驗也非常重要,這樣可以減少你在試錯的過程中付出的代價!以上就是電子設計的一些注意事項,相信會對你有一些幫助。

    時間:2020-03-18 關鍵詞: CPU 電阻 單片機

  • ARM-Linux開發與單片機開發的異同

    ARM-Linux開發與單片機開發的異同

    ARM Linux程序的開發主要分為三類:應用程序開發、驅動程序開發、內核開發以及具有不同特征的不同類型的軟件開發。 ARM-Linux應用開發和單片機開發的不同 ARM的應用開發主要有兩種方式:一種是直接在ARM芯片上進行應用開發,不采用操作系統,也稱為裸機編程,這種開發方式主要應用于一些低端的ARM芯片上,其開發過程非常類似單片機。另外一種是在ARM芯片上運行操作系統,對于硬件的操作需要編寫相應的驅動程序,應用開發則是基于操作系統的,這種方式的嵌入式應用開發與單片機開發差異較大。ARM-Linux應用開發和單片機的開發主要有以下幾點不同: (1)應用開發環境的硬件設備不同 單片機:開發板,仿真器(調試器),USB線; ARM-Linux:開發板,網線,串口線,SD卡; 對于ARM-Linux開發,通常是沒有硬件的調試器的,尤其是在應用開發的過程中,很少使用硬件的調試器,程序的調試主要是通過串口進行調試的;但是需要說明的是,對于ARM芯片也是有硬件仿真器的,但通常用于裸機開發。 (2)程序下載方式不同 單片機:仿真器(調試器)下載,或者是串口下載; ARM-Linux:串口下載、tftp網絡下載、或者直接讀寫SD、MMC卡等存儲設備,實現程序下載; 這個與開發環境的硬件設備是有直接關系的,由于沒有硬件仿真器,故ARM-Linux開發時通常不采用仿真器下載;這樣看似不方便,其實給ARM-Linux的應用開發提供了更多的下載方式。 (3)芯片的硬件資源不同 單片機:通常是一個完整的計算機系統,包含片內RAM,片內FLASH,以及UART、I2C、AD、DA等各種外設; ARM:通常只有CPU,需要外部電路提供RAM以供ARM正常運行,外部電路提供FLASH、SD卡等存儲系統映像,并通過外部電路實現各種外設功能。由于ARM芯片的處理能力很強,通過外部電路可以實現各種復雜的功能,其功能遠遠強于單片機。 (4)固件的存儲位置不同 單片機:通常具備片內flash存儲器,固件程序通常存儲在該區域,若固件較大則需要通過外部電路設計外部flash用于存儲固件。 ARM-Linux: 由于其沒有片內的flash, 并且需要運行操作系統,整個系統映像通常較大,故ARM-Linux開發的操作系統映像和應用通常存儲在外部的MMC、SD卡上,或者采用SATA設備等。 (5)啟動方式不同 單片機:其結構簡單,內部集成flash, 通常是芯片廠商在程序上電時加入固定的跳轉指令,直接跳轉到程序入口(通常在flash上);開發的應用程序通過編譯器編譯,采用專用下載工具直接下載到相應的地址空間;所以系統上電后直接運行到相應的程序入口,實現系統的啟動。 ARM-Linux:由于采用ARM芯片,執行效率高,功能強大,外設相對豐富,是功能強大的計算機系統,并且需要運行操作系統,所以其啟動方式和單片機有較大的差別,但是和家用計算機的啟動方式基本相同。其啟動一般包括BIOS,bootloader,內核啟動,應用啟動等階段。

    時間:2020-03-25 關鍵詞: Flash 單片機 arm-linux

首頁  上一頁  1 2 3 4 5 6 7 8 9 10 下一頁 尾頁
發布文章

技術子站

更多

項目外包

更多

推薦博客

新时时彩
排列三太湖钓翁三字诀字谜 长春按摩师招聘信息 欧美av快播成人电影 做股票分析师怎么样 重庆百变王牌 网上玩广东11选5 十一选五辽宁开奖结 成人电影网日本av 友田彩也香必看的一部 麻将外挂网站大全 探球比分网球比分 扑克麻将绝技 灰熊vs雷霆视频直播 石家庄沐足软件 公共管理硕士就业前景 东方6加1历史一等奖