王牌对王牌第一季综艺,黄视频在线观看网站,世界一级毛片,成人黄色免费看

薈聚奇文、博采眾長、見賢思齊
當前位置:公文素材庫 > 公文素材 > 范文素材 > 51AVR單片機學習小結(jié)

51AVR單片機學習小結(jié)

網(wǎng)站:公文素材庫 | 時間:2019-05-29 07:17:03 | 移動端:51AVR單片機學習小結(jié)

51AVR單片機學習小結(jié)

51/AVR單片機學習小結(jié)

發(fā)布于201*-11-1217:31:21|22次閱讀

這是我自己在這段時間的技術(shù)知識小結(jié),上傳與大家分享,要是有什

么出漏請指出!這個學期我主要在學習51單片機,在學習單片機的過程中,讓我學到了很多電子知識,進一步增廣了我的電子視野。同時也加深了我對電子的興趣。更重要的是大大提高了我的動手能力。剛剛開始的時候,還有點懷疑自己是不是搞電子的料。因為,一開始很多都不懂,處處破壁。雖然,比較常問問題,不管簡單的還是比較難的。但是問的太多了也不是好事。畢竟要是自己花多點時間去思考還是有利的。在比較艱難的入門中,我慢慢需找自己的學習方法,不斷的總結(jié)學習成果。不久,我就掌握了一種比較合適的學習方法。到了這里我已經(jīng)具備了自學的基本能力。知識小結(jié):1)下面簡單介紹一下做電路板的過程:1、設計電路,用Protel畫出電路的PCB電路圖;2、把PCB電路圖附到銅板上;3、腐蝕電路板,一般用三氯化鐵做腐蝕液;4、專孔,焊接;5、調(diào)試,整個過程完成。其中,要用到的知識還是挺多的。最基礎的就是必須要懂得一些簡單的電路知識、常用元件功能作用等。所以,對于搞電子的愛好者,必須熟練掌握《電路分析》、《電工》《模擬電子技術(shù)》、《數(shù)字電子技術(shù)》等理論基礎。這個知識對于看電子雜志、讀電路圖、設計電路非常有用。還有幾個常用軟件也是非常有用的,數(shù)模電常用的仿真軟件Multisim,這個軟件主要以分立元件為主,可以仿真大量的數(shù)字電路和模擬電路?梢暬瘡姸确浅8撸褂谜呖梢噪S心所欲的搞一些設計和仿真。此軟件簡單易用,對于初學電路的學習者非常適合。介紹一本對初學者很有幫助的書《電子設計從零開始》,這本書通俗易懂的講述了常用元件的使用和功能,常見的電路小知識,以及簡單的小制作、小發(fā)明的整個過程,是一本不錯的書。設計PCB電路,一般都是用Protel軟件,Protel也有仿真功能,不過只能仿真哪些有源軟件,比較局限。其用處最大的就是可以讓用戶設計自己的PCB電路圖,不管多大的工程基本上在Protel上都能滿足用戶的需求。例如:可以利用Protel層次原理圖的功能,把一個超大規(guī)模的電路工程,分成幾個模塊,幾個人分工把項目完成。最方便的就是可以自己在此軟件上畫所需要的元件原理圖和封裝。Protel也不難使用,自己找本書看看或者叫人演示一遍畫PCB電路圖給你看,很快就能掌握。2)在使用Protel過程中我總結(jié)出4小點:1、原理圖必須把線連接好或者標上號;2、PCB圖必須把元件封裝的大小、方向放對;3、畫元件原理圖必須把引腳標正確;4、畫元件封裝必須把封裝大小、引腳間距的尺寸畫正確以及特性分析清楚。小結(jié)一下51單片機的學習51單片機有40個引腳,32個IO口,一個Vcc,一個GND,兩個晶振引腳,一個復位引腳。最小系統(tǒng)有3部分組成,分別為復位電路、晶振電路、電源。電源自然是給單片機工作的電壓。晶振單片機中好比人的心臟,起振單片機內(nèi)部振蕩電路。復位電路用來給單片機工作復位。每次單片機工作都是要先復位,然后單片機從00地址單元掃描,一直掃描下來,并執(zhí)行該單元的代碼。51單片機說簡單一點就是,通過控制它IO的高低電平來實現(xiàn)相應功能的。要想快速把51單片機學好,建議初學者自己買一塊51學習板,或者自己做一塊功能比較齊全的開發(fā)板。但是,作為初學者還是最好自己買一個塊。買的學習板,一般它會配有該實驗板的配套學習資料和相應程序。學習者就可以試驗每一個模塊的功能和效果,雖然,這好像只是在抄別人的東西,但是,模仿一種最快的學習速度,通過模仿可以高效率的學到更多有用的東西,而且,你可以學習它的優(yōu)勢,并且可以用自己的方法去改動把它變?yōu)樽约旱臇|西。4)下面簡述一下學習一個模塊的步驟:1、在學習板上試驗該模塊的程序,看效果、看現(xiàn)象,并且自己內(nèi)心要清楚現(xiàn)象是怎樣發(fā)生;2、查看實現(xiàn)該功能模塊的硬件電路,再看學習程序;3、直到看懂程序,就馬上自己動手一步一步試著,按照自己的方法去實現(xiàn)該功能;4、當理解了該模塊的功能之后,可以動手自己做一個小制作,或者仿真等。上面的是學習一個功能模塊的大概方法和指導方向,其實,要學習一個模塊是要花上一定的時間和精力的。特別是比較難的模塊,可能會涉及到了幾個不懂的芯片,但是,只要自己有耐心和毅力,再難只要花上該花的時間,就一定能夠把知識掌握。在這里,建議大家加入幾個學習群或者論壇,這對于初學單片機的同學非常有幫助,因為,在學習的過程中難免會遇到大大小小的問題,那么自己就可以在論壇上發(fā)帖或者在Q群上求助,不過最有效率的提問,就是自己能夠結(jié)識一兩個比較厲害的單片機網(wǎng)友、同學或者老師等。學習51單片機要用到的軟件還是挺多的,最常用的就是keil,可以在keil上面編寫單片機C語言或者單片機匯編語言,也可以做相應的仿真和程序的調(diào)試,以及生成程序的二進制代碼。用STC燒寫軟件燒寫STC單片機芯片,用progsip軟件燒寫Atmel公司的單片機芯片,這里的燒寫是意思是把程序的二進制代碼下載到單片機芯片里,這樣單片機就有了相應功能的程序,里面有了程序單片機就可以實現(xiàn)相應的功能。以及用Proteus軟件進行硬件仿真,Proteus是學習單片機最常用的仿真軟件,此軟件功能非常強大,不過使用起來,感覺比較有點麻煩,不過只要能夠掌握幾個常用的快捷鍵就方便很多了。5)AVR單片機AVR單片機是吸取了51單片機的優(yōu)點,并增加了很多功能。AVR單片機的型號也很多,一般學習者都用ATmega16的,不過M16的引腳跟51單片機不兼容,AVR只有一種芯片,ATmega8518芯片才與51單片機引腳相兼容,簡單的說就是可以用M8518的芯片放到51單片機的開發(fā)板上,把復位電路改成低電平復位就OK了!AVR單片機功能比51強,從而,它在使用上也會麻煩的多。AVR一般常用到一下幾個軟件:1、ICCAVR用來編寫程序,生成二進制代碼;2、AVRStudio用來調(diào)試程序,比keil好用且功能強,最好的就是可視化強度高;并且可以下載程序到單片機中;比較麻煩的就是IO口的初始化定義和熔絲值的設置。學習的方法與51單片機差不多都是,以模仿快速的理解并掌握變成自己的東西。

擴展閱讀:學習單片機心得

學習單片機的心得

一般我們現(xiàn)在用的比較多的的MCS-51的單片機,它的資料比較多,用的人也很多,市場也很大,我們平時說的C51,C52,S51,S52都是51內(nèi)核的,只是內(nèi)存容量有差別,或是燒寫程序的方法不同。只要你學會了51,那什么凌陽,AVR,什么樣原理都是一樣。觸類旁通。

先說說就我個人的體會怎么樣才能更快的學會單片機這門課。單片機這門課是一項非常重視動手實踐的科目,不能總是看書,但是學習它首先必須得看書,因為從書中你需要大概了解一下,單片機的各個功能寄存器,而說明白點,我們使用單片機就是用軟件去控制單片機的各個功能寄存器,再說明白點,就是控制單片機那些管角的電平什么時候輸出高,什么時候輸出低。而由這些高低電平的變化來控制由單片機為核心的系統(tǒng)板。從而實現(xiàn)我們需要的各個功能。對于看書,我們只需大概看看了解一個單片機各個管角都是干什么的?都有什么樣的功能,能實現(xiàn)什么樣的功能?其實第一次,第二次你可能都看不明白,但這不要緊,因為你沒有和實際的物體建立起來這樣一種互通的觀念,所以我總是說,學單片機看書看兩三天的時間就夠了,看小說你一天能看五六本,看單片機你兩三天看兩三邊就夠了,而且可以不用很仔細的看。推薦一本書,就這一本就足夠,書名忘了,是哈爾濱工業(yè)大學出版社出的的,作者是張毅剛。大概三四百頁吧。大概了解一下書上的內(nèi)容后,就開始做實踐,這是非常關(guān)鍵的,如果說學單片機你不做實踐那是不可能學會的,關(guān)于做實踐有兩種方法你可以選擇,一種方法:你自己花錢買一塊單片機的學習板,不要求功能太全的,對于初學者來說你買功能非常多的那種板子,上面有很多東西你這輩子都用不著,我建議有流水燈,數(shù)碼管,獨立鍵盤,矩陣鍵盤,有AD或DA(原理一樣),有個簡單的液晶,有蜂鳴器,這就差不多了,如果上面我提到的這些東西你能讓它都熟練工作了,那可以說對于單片機方面的硬件你已經(jīng)入門了,再剩下的就是自己練習設計其它電路,這需要你練習,不斷的積累經(jīng)驗,只要過了第一關(guān),后面的路就好走多了,萬事開頭難,大家可能都聽過。方法二:你身邊如果有單片機方面的高手,向他求助,讓你幫你搭個簡單的最最小系統(tǒng)板,其實對于高手來說,做個單片機的小系統(tǒng)板只需要一分鐘的時間,而對于初學者可就難多了,因為只有你對硬件了解了才會對它熟悉。而如果你身邊沒有這樣的高手,又找不到可以幫助你的人,那我勸你最好是自己買上一塊,畢竟自己有一塊要方便的多,以后做單片機類的小實驗時都能用得上,還剩事。(買的時候找我)

有了單片機學習板之后你就是不停的練習了,我在后面會講到我的大學生活,如果你感興趣你可以看看,如果不感興趣呢,看完這段你就可以繼續(xù)你的快樂生活了。前面我提到單片機是一項非常注重實踐的學科,你最好是自己有臺電腦,一天少看電影,少打游戲,把學習板和電腦連好,打開調(diào)試軟件坐在電腦前,先學會怎么用調(diào)試軟件,然后從最簡單的流水燈實驗做起,等你能讓那八個流水燈按照你的意愿隨意流動時你已經(jīng)入門了,你會發(fā)現(xiàn)單片機是多么迷人的東西啊,太好玩了,這不是在學習知識,而是在玩,當你編寫的程序按你的意愿實現(xiàn)時你比做什么事都開心,你會上癮的,真的。做電子類的人真的會上癮。然后讓數(shù)碼管亮起來,這兩項會了后,你已經(jīng)不能自拔了,你已經(jīng)開始考慮你這輩子要走哪一行了。就是要這樣練習,在寫程序的時候你肯定會遇到很多問題,而這時你再去翻書找,或是問別人,當?shù)玫浇獯鸷竽銜涀∫惠呑拥,知識必須用于實際才能發(fā)揮出它的作用,否則你自己好好想想,你上了這么多年大學,天天上課,你在課堂上學到了什么?你不是為了每學期的期末考試忙碌嗎?考完試一看得了90分,哈哈哈好高興啊,下學期開學回來忘的一干二凈,是不是?你學到什么了?但是我告訴你單片機你一旦學會,永遠不會忘了。另外我再說說用匯編和C語言編程的問題。很多同學大一二就開設了C語言的課,我也上過,我知道那時天天就是幾乘幾,幾加幾啊,求個階乘啊。學完了有什么用?讓你用C語言編單片機的程序你是不是就悄悄了?所以書上的東西我們必須要實踐。單片機編程你想用C語言和匯編語言都可以,但是我建議你用C語言比較好,如果原來有C語言的基礎那學起來會更好,如果沒有,也可以邊學單片機邊學C語言,C語言也挺簡單,只是一門工具而已,我勸你最好學會,將來肯定用得著,要不你以后也得學,你一點匯編都不會根本無所謂,但你一點C語言都不會那你將來會吃苦頭。匯編寫程序代碼效率高,但相對難度較大,而且很羅嗦,尤其是遇到算法方面的問題時,根本是麻煩的不得了,現(xiàn)在單片機的主頻在不斷的提高,我們完全不需要那么高效率的代碼,因為有高頻率的時鐘,單片機的ROM也在不斷的提高,足夠裝得下你用C語言寫的任何代碼,C語言的資料又多又好找,將來可移植性非常好,只需要變一個IO口寫個溫度傳感器的程序在哪里都能用,所以我勸大家用C語言。

總結(jié)上面,只要你有信心,做事能堅持到底,有不成功不放棄的強烈意志。那學個單片機來說就是件非常容易的事。

步驟:1。找本書大概了解一下單片機結(jié)構(gòu),大概了解就行。不用都看懂,又不讓你出書的。(三天)

2。找學習板練習編寫程序,學單片機就是練編程序,遇到不會的再問人或查書找。(二十天)3。自己網(wǎng)上找些小電路類的資料練習設計外圍電路。焊好后自己調(diào)試,熟悉過程。(十天)

4。自己完全設計具有個人風格的電路,產(chǎn)品,。。。你已經(jīng)是高手了。。。。。

看到了嗎?下功夫一個多月你就能成為高手,我就講這么多了,學不學得會,下不下得了功夫就看你的了

從51初學者到電子工程師1

很多電子工程師在某個方面精深鉆研,成為某一個特殊領(lǐng)域的專家,從一開始的養(yǎng)家糊口、慢慢小有收益、最后寶馬豪宅,也是有的;這些電子工程師可能沒有全面掌握這些知識,因為這些行業(yè)用不上,例如,液晶顯示器,很多行業(yè)就不需要;但是,對于一個初學者,我認為,這個提綱是切合實際的,對于面向控制而言,已經(jīng)基本夠用了;對于初學者,全面地掌握這些知識是很有必要的,因為你不知道今后需要使用什么哪些知識,而這些知識,80%以上你會在今后的工作中使用上,因為這是都是最基本的。熟練掌握這些知識和應用,根據(jù)不同的地區(qū)、行業(yè)和老板,月薪應該可以在3000元~5000元之間,甚至更高。

其實,可能有些你用不上,但是知道了也沒有壞處;所謂書到用時方很少,又有謂藝不壓身。知識=月薪=年薪=金錢=香車寶馬=..,呵呵。為什么要掌握這些知識?

實際上,電子工程師就是將一堆器件搭在一起,注入思想(程序),完成原來的這些器件分離時無法完成的功能,做成一個成品。所需要的技能越高、功能越復雜、成本越低、市場上對相應的東東的需求越大,就越成功。這就是電子工程師的自身的價值。從成本到產(chǎn)品售出,之間的差價就是企業(yè)的追求。作為企業(yè)的老板,是在市場上去尋找這樣的應用;對電子工程師而言,是將老板提出的需求或者應用按照一定的構(gòu)思原則(成本最低、可靠性最高、電路板最小、功能最強大等)在最短的時間內(nèi)完成。最短的時間,跟電子工程師的熟練程度、工作效率和工作時間直接有關(guān)。這就是電子工程師的價值。

將電子產(chǎn)品抽象成一個硬件的模型,大約有以下組成:1)輸入2)處理核心3)輸出

輸入基本上有以下的可能:1)鍵盤

2)串行接口(RS232/485/canbus/以太網(wǎng)/USB)3)開關(guān)量(TTL,電流環(huán)路,干接點)

4)模擬量(4~20ma、0~10ma、0~5V(平衡和非平衡信號))輸出基本上有以下組成:

1)串行接口(RS232/485/canbus/以太網(wǎng)/USB)2)開關(guān)量(TTL、電流環(huán)路、干接點、功率驅(qū)動)

3)模擬量(4~20ma,0~10ma,0~5V(平衡和非平衡信號))4)LED顯示:發(fā)光管、八字5)液晶顯示器6)蜂鳴器處理核心主要有:

1)8位單片機,主要就是51系列

2)32位arm單片機,主要有atmel和三星系列51系列單片機現(xiàn)在看來,只能做一些簡單的應用,說白了,這個芯片也就是做單一的一件事情,做多了,不如使用arm來做;還可以在arm上加一個操作系統(tǒng),程序既可靠又容易編寫。最近三星的arm受到追捧,價格便宜,以太網(wǎng)和USB的接口也有,周立功的開發(fā)系統(tǒng)也便宜,作為學習ARM的產(chǎn)品來說,應該是最好的;作為工業(yè)級的控制,是不是合適,在網(wǎng)友中有不同的看法和爭議。本公司使用atmelARM91系列開發(fā)的1個室外使用的產(chǎn)品,在北京室外使用,沒有任何的通風和加熱的措施,從去年的5月份到現(xiàn)在,運行情況良好。已經(jīng)有個成功應用的案例。但對于初學者來說,應該從51著手,一方面,51還是入門級的芯片,作為初學者練手還是比較好的,可以將以上的概念走一遍;很多特殊的單片機也是在51的核的基礎上增加了一些I/O和A/D、D/A;也為今后學習更高一級的單片機和ARM打下基礎。再說了,哪個老板會將ARM級別的開發(fā)放在連51也沒有學過的新手手中?

在51上面去做復雜的并行擴展是沒有必要的,比如,擴展I/O口和A/D、D/A等等,可以直接買帶有A/D、D/A的單片機;或者直接使用ARM,它的I/O口線口多?梢允褂肐2C接口的芯片,擴展I/O口和A/D、D/A,以及SPI接口擴展LED顯示,例如:MAX7219等芯片。

市面上一些比較古老的書籍中還有一些并行擴展的例子,如:RAM、EPROM、A/D、D/A等,我覺得已經(jīng)沒有必要去看了,知道歷史上有這些一回事就行了;這些知識,是所有產(chǎn)品都具備的要素。所以要學,再具體應用。說一個小的故事:野人獻曝。

從前,有一個農(nóng)民,冬天干了活后,休息曬太陽。好舒服呀。他想,這么舒服的享受,我要獻給國王,讓他也能得到享受。于是他興沖沖地到了王宮,將他的寶貴經(jīng)驗獻給了國王。

我現(xiàn)在就象這個農(nóng)民,把自己認為很寶貴的經(jīng)驗獻給大家。希望大家多提寶貴意見;拍板磚也可以,罵我也無所謂,呵呵,隨便。第一課:51單片機最小系統(tǒng)

實際上,51單片機核心外圍電路是很簡單的,一個單片機+一個看門狗+一個晶振+2個磁片電容;

1.單片機:atmel的89C51系列、winbond的78E52系列,還有philips的系列,都差不多;現(xiàn)在有一些有ISP(在線下載的),就更好用了;

2.看門狗:種類很多,我常用的有max691/ca1161和DS1832等,具體看個人習慣、芯片工作電壓、封裝等。Max系列和DS系列,還有IMP公司的,種類很多,一般只需要有最基本的功能就可以了;原來我使用max691,但是max691比較貴,因為它有電池切換功能,后來新設計電路板,就都采用ca1161了。

很早以前的電路設計中,現(xiàn)在可能還有人使用,使用一個電阻和一個電容達成的上電復位電路;但是,這樣的復位電路一個是不可靠,為什么不可靠,網(wǎng)絡上能找得到專門論述復位電路的文章;更重要的是,51系列的單片機比較容易受到干擾;沒有看門狗電路是不行的,當程序跑飛時,回不來了,死在那里。

常規(guī)的做法是買一個專門的看門狗電路,完成復位電路和看門狗電路的功能。

這些芯片的資料很容易在網(wǎng)絡上找到,通常使用百度搜索就可以了;看見有PDF的字樣,就點擊下載;使用網(wǎng)際快車flashget下載也是最好的;

這些資料通常是pdf格式的文件,所以,還需要一個pdf的閱讀器。百度網(wǎng)址:

網(wǎng)際快車下載網(wǎng)址:PDF閱讀器下載網(wǎng)址:

實際上,有了百度和其它的搜索引擎,很方便下載到這些芯片的資料,比光盤還方便,不需要去到處找。

單片機和單片機抗干擾能力是不一樣的。如果你的產(chǎn)品是工作在干擾比較大的環(huán)境,可以試試選用不同品牌的單片機;原來我在一個光電所,做YAG激光治療機的控制部分,脈沖激光機的電源放電的時候,能量是很大的,在采取了所有能夠想到的光電隔離等措施之后,還是不行;后來,選用了intel的8031,就可以了。小聲的說:當時的philips的單片機抗干擾性能是最差的,可能跟Philips主要是用在民用領(lǐng)域有關(guān),F(xiàn)在不知道怎么樣了,有人知道的話告訴我。單片機的輸入輸出口線是最容易引進干擾的地方;在嚴重干擾的情況下,需要將所有的口線光電隔離。

3.晶振:一般選用11.0592M,因為可以準確地得到9600波特率和19200波特率;也可以使用36.864M,這個頻率是1.8432M的20倍,看別人的電路板上用過,我也沒有用到。這2種晶振很容易買到,價錢跟12M的一樣。書上說,12M的晶振也能得到9600的波特率,但是,實際用的時候,會每隔一段時間就出錯一次,好像累積誤差一樣,比較奇怪。

即使你的單片機系統(tǒng)不使用RS232接口,也可以做一個Rs232,留著做測試,或者預留等等,沒有壞處。除非你的單片機系統(tǒng)的口線不夠用了。

4.磁片電容:22pf~30pf,可以在有些書上找到什么晶振頻率對應什么容量的磁片電容,但是,我都是隨便拿來使用,反正在11.0592M下,都沒有問題;如果你用到了更高的頻率,最好還是找找資料看看。參見以下電路圖:

如果你的單片機系統(tǒng)沒有工作,檢查步驟如下:

1.查看門狗的復位輸出,可能的話在電路板上加一個LED,下拉,這樣看起來就更方便;要是看門狗復位信號有,往下;2.查單片機,看看管腳有沒有問題;一般編程器能夠?qū)⒊绦驅(qū)懭,說明單片機是好的;最好手頭上準備一個驗證過的單片機,內(nèi)部有一個簡單的程序,比如,在某個口線上輸出1個1秒占空比的方波等,可以使用萬用表測量。

加一句:設計產(chǎn)品時,要在關(guān)鍵的地方:電源、串口、看門狗的輸出和輸入、I/O口等加不同顏色的LED指示,便于調(diào)試;作為批量大的產(chǎn)品,可以去掉部分LED,一方面是降低成本、一方面是流程保密;

3.再查磁片電容,有些瓷片電容質(zhì)量不行,干脆換了;順便說一下,換器件最好使用吸錫帶,將焊盤內(nèi)的錫吸干凈,再將器件拔出,這樣不會損傷焊盤內(nèi)的過孔;再將新的瓷片電容焊接上去的時候,用萬用表量量是好的再焊;

4.最后只有換晶振了;切記要買好的晶振,有些品牌質(zhì)量比較好。

5.以上按照以上步驟檢測時,將無關(guān)的外圍芯片去掉;因為有一些是外圍器件的故障導致單片機最小系統(tǒng)沒有工作。我準備寫的有以下幾課:第二課基本的芯片和分立器件2.1簡述2.274系列2.3CD4000系列2.4光耦與光電管2.5三極管2.6電容電阻2.7固態(tài)繼電器2.8繼電器

2.9變壓器和三端穩(wěn)壓器2.10開關(guān)電源芯片

2.11封裝知識、芯片批號等2.12接插件

2.13器件選購的知識第三課數(shù)字量的輸入輸出第四課單片機的通訊接口

第五課單片機系統(tǒng)設計的硬件構(gòu)思第六課單片機程序的框架(匯編版本)第七課模擬量的輸入輸出

各位多提寶貴意見。

保證實用。如果程序里面有一些例程,也是已經(jīng)經(jīng)過測試可以拿來就用的;實際上是我早年的一些產(chǎn)品的程序的一部分;不好意思,都是匯編的。

寫的時間只有周末會多一些,可以保證做到一周一課;盡量能夠提前,但是這要看看工作忙不忙了。

坊間有一些參考書,準備今天上午到北京中發(fā)市場轉(zhuǎn)了一圈,我記得以下參考書目較好:1.周航慈:《單片機程序設計》

2.徐涵芳:《MCS-51單片機結(jié)構(gòu)與設計》3.何立民:《》

有了這些就基本夠用了;其它的很多都是資料的翻譯;如果英文不好,可以看看;英文好的話,可以不必了,省電錢買開發(fā)系統(tǒng)和編程器、開發(fā)板什么的,需要什么資料直接下載PDF文件好了。要想成為電子工程師,需要寬帶,在家里安裝包月的adsl或者長寬,絕對值得。實際上,網(wǎng)絡上什么都有了,就是一個網(wǎng)絡數(shù)據(jù)庫,要好好利用。網(wǎng)上自有黃金屋,網(wǎng)上自有顏如玉第二課基本的芯片和分立器件2.1簡述

有必要對以下系列的芯片和分立器件進行介紹。

除了單片機作為控制器的核心外,作為一個產(chǎn)品,由很多東西構(gòu)成;所以,在講系統(tǒng)之前,先將這些零零碎碎的東西一并交待。就好像一棟房子,有各種各樣的構(gòu)件組成,下面的這些東東就像磚瓦一樣,沒有不行。2.274系列芯片

74系列的芯片的下載地址:

74系列的芯片是古老的一族,大部分的芯片現(xiàn)在均已不用了,但是,實際上,在目前的系統(tǒng)中,還能看到一些芯片,有些芯片現(xiàn)在還在系統(tǒng)中使用,例如:1、74046個反相門下載地址:

將輸入的TTL邏輯反相,如:0->1,1->02、74076個集電極開路門下載地址:

由于集電極開路門可以外接高電壓,可以最高到DC30V,電流最大到39mA,通常我用它驅(qū)動8字數(shù)碼管和繼電器等大電流的負載;開路門內(nèi)部結(jié)構(gòu)是達林頓管的,輸出的邏輯是正的;與其類似的芯片是7406,只不過是反相開路門。3、74LS573與74LS3738數(shù)據(jù)鎖存器74LS373下載地址:

74LS573下載地址:

引入幾個概念:1.真值表

參見74LS373的PDF的第2頁:DnLEOEOnHHLHLHLLXLLQoXXHZ

這個就是真值表,表示這個芯片在輸入和其它的情況下的輸出情況。每個芯片的數(shù)據(jù)手冊(datasheet)中都有真值表。布爾邏輯比較簡單,在此不贅述;2.高阻態(tài)

就是輸出既不是高電平,也不是低電平,而是高阻抗的狀態(tài);在這種狀態(tài)下,可以多個芯片并聯(lián)輸出;但是,這些芯片中只能有一個處于非高阻態(tài)狀態(tài),否則會將芯片燒毀;高阻態(tài)的概念在RS232和RS422通訊中還可以用到。3.數(shù)據(jù)鎖存

當輸入的數(shù)據(jù)消失時,在芯片的輸出端,數(shù)據(jù)仍然保持;這個概念在并行數(shù)據(jù)擴展中經(jīng)常使用到。4.數(shù)據(jù)緩沖

加強驅(qū)動能力。74LS244/74LS245/74LS373/74LS573都具備數(shù)據(jù)緩沖的能力。OE:output_enable,輸出使能;

LE:latch_enable,數(shù)據(jù)鎖存使能,latch是鎖存的意思;Dn:第n路輸入數(shù)據(jù);On:第n路輸出數(shù)據(jù);再看這個真值表,意思如下:

第四行:當OE=1是,無論Dn、LE為何,輸出端為高阻態(tài);第三行:當OE=0、LE=0時,輸出端保持不變;

第二行第一行:當OE=0、LE=1時,輸出端數(shù)據(jù)等于輸入端數(shù)據(jù);結(jié)合下面的波形圖,在實際應用的時候是這樣做的:a.OE=0;

b.先將數(shù)據(jù)從單片機的口線上輸出到Dn;c.再將LE從0->1->d.這時,你所需要輸出的數(shù)據(jù)就鎖存在On上了,輸入的數(shù)據(jù)在變化也影響不到輸出的數(shù)據(jù)了;實際上,單片機現(xiàn)在在忙著干別的事情,串行通信、掃描鍵盤單片機的資源有限啊。在單片機按照RAM方式進行并行數(shù)據(jù)的擴展時,使用movx@dptr,A這條指令時,這些時序是由單片機來實現(xiàn)的。

后面的表格中還有需要時間的參數(shù),你不需要去管它,因為這些參數(shù)都是幾十ns級別的,對于單片機在12M下的每個指令周期最小是1us的情況下,完全可以實現(xiàn);如果是你自己來實現(xiàn)這個邏輯,類似的指令如下:

movP0,A將數(shù)據(jù)輸出到并行數(shù)據(jù)端口clrLEsetbLE

clrLE上面三條指令完成LE的波形從0->1->0的變化

74ls573跟74LS373邏輯上完全一樣,只不過是管腳定義不一樣,數(shù)據(jù)輸入和輸出端各在一側(cè),PCB容易走線;所以大家都喜歡使用這個芯片。4、74LS244數(shù)據(jù)緩沖器下載地址:

數(shù)據(jù)輸出能力比較強,輸出電流可以到40mA以上;4個緩沖器分成2組,具有高阻態(tài)控制端口5、74LS245總線緩沖器

雙向數(shù)據(jù)接口,通常在ISA板卡上可以看到;

早期的51系統(tǒng)中,為了擴展RAM、eprom、A/D、D/A、I/O等經(jīng)?梢钥吹竭@個片子;為了增強驅(qū)動能力,有時是為了隔離輸入和輸出,主要是布線方便,象74LS573一樣,輸入、輸出在一側(cè),經(jīng)常用到這個片子6、74LS138三-八譯碼器

在早期的51系統(tǒng)的擴展中,作為地址選通的片子,可以經(jīng)?吹健A硗庖粋類似的芯片是74LS154,是4-16譯碼器,現(xiàn)在更是少見了。有興趣的可以研究一下何立民的經(jīng)典著作中的有關(guān)章節(jié)。知道有這么一個芯片就可以了。2.3CD4000系列

CD4000系列的芯片,除了跟74系列的電氣特性有所區(qū)別外,例如:

1)電壓范圍寬,應該可以工作在3V~15V,輸入阻抗高,驅(qū)動能力差外,跟74系列的功能基本沒有區(qū)別;

2)輸入時,1/2工作電壓以下為0,1/2工作電壓以上為1;3)輸出時,1=工作電壓;0=0V

4)驅(qū)動能力奇差,在設計時最多只能帶1個TTL負載;5)如果加上拉電阻的話,至少要100K電阻;

6)唯一現(xiàn)在使用的可能就是計數(shù)器,CD4060的計數(shù)器可以到14級二進制串行計數(shù)/分頻器,這個74系列的做不到這么高;下載地址:

2.4ULN201*/ULN201*

它的內(nèi)部結(jié)構(gòu)也是達林頓的,專門用來驅(qū)動繼電器的芯片,甚至在芯片內(nèi)部做了一個消線圈反電動勢的二極管。ULN201*的輸出端允許通過IC電流200mA,飽和壓降VCE約1V左右,耐壓BVCEO約為36V。用戶輸出口的外接負載可根據(jù)以上參數(shù)估算。采用集電極開路輸出,輸出電流大,故可以直接驅(qū)動繼電器或固體繼電器(SSR)等外接控制器件,也可直接驅(qū)動低壓燈泡。經(jīng)常在工控的板卡中見到這個芯片。

有個完全一樣的型號:MC1413,不過現(xiàn)在好像不怎么見到這個型號了,但是管腳與201*完全兼容。

ULN201*可以驅(qū)動7個繼電器;ULN201*驅(qū)動8個繼電器。ULN201*下載地址:

ULN201*下載地址:沒有找到。奇怪啊。2.5光耦

光耦是做什么用的?光耦是用來隔離輸入輸出的,主要是隔離輸入的信號。

在各種應用中,往往有一些遠距離的開關(guān)量信號需要傳送到控制器,如果直接將這些信號接到單片機的I/O上,有以下的問題:

1)信號不匹配,輸入的信號可能是交流信號、高壓信號、按鍵等干接點信號;2)比較長的連接線路容易引進干擾、雷擊、感應電等,不經(jīng)過隔離不可靠所以,需要光耦進行隔離,接入單片機系統(tǒng)。常見的光耦有:

1)TLP521-1/TLP521-2/TLP521-4,分別是1個光耦、2個光耦和4個光耦,HP公司和日本的東芝公司生產(chǎn)。下載地址:

-1-2,4.PDF發(fā)光管的工作電流要在10mA時,具有較高的轉(zhuǎn)換速率;

在5V工作時,上拉電阻不小于5K,一般是10K;太小容易損壞光耦;2)4N25/4N35,motorola公司生產(chǎn)下載地址:

-8,35-7,H11A1-5.PDF隔離電壓高達5000V;3)6N136,HP公司生產(chǎn)下載地址:

-6.PDF

要想打開6N136,需要比較大的電流,大概在15~20mA左右,才能發(fā)揮高速傳輸數(shù)據(jù)的作用。如果對速率要求不高,其實TLP521-1也可以用,實際傳輸速率可以到19200波特率。選擇光耦看使用場合,tlp521-1是最常用的,也便宜,大概0.7~1元;要求隔離電壓高的,選用4N25/4N35,大概在3元左右;要求在通訊中高速傳輸數(shù)據(jù)的,選用6N136,大概在4元左右。光耦應用的原理框圖如下所示:1.輸入干接點隔離2.輸入TTL電平隔離3.輸入交流信號隔離4.輸出RS232信號隔離5.輸出RS422信號隔離

光耦除了隔離數(shù)字量外,還可以用來隔離模擬量。將在今后的章節(jié)中描述。2.6三極管2.7光電管2.8電容2.9電阻2.10固態(tài)繼電器2.11繼電器

2.12變壓器與整流橋2.13三端穩(wěn)壓器2.14開關(guān)電源芯片

2.15封裝知識、芯片批號等2.16接插件

2.17器件選購的知識2.6三極管

2.6.1三極管的4種工作狀態(tài)1)飽和導通狀態(tài)飽和導通=02)截止狀態(tài)飽和導通=13)線性放大狀態(tài)

作為低頻放大器時使用,具體的可參見有關(guān)電子線路的書籍;4)非線性工作狀態(tài)

在無線電通信系統(tǒng)中,作為混頻器等使用。具體的可參見有關(guān)電子線路的書籍;

愚記得南京工學院也就是現(xiàn)在的東南大學在80年代初期有一套《電子線路》5本,是電子專業(yè)的書籍,比較難懂;現(xiàn)在,即使是在電子專業(yè)的學生中,也應該降低了對三極管的哪些復雜的參數(shù)的要求了吧;在實際使用時,即使是模擬電路、非線性電路,也都是集成電路了,誰還使用三極管自己做呢?如果萬一需要,現(xiàn)學也來得及。這套書很強的。編寫人在那個年代肯定都是牛人。學三極管這些參數(shù)很繁瑣的,要是現(xiàn)在的非電子類的大學生或者大專生們還學這些玩意,我只能說是學校在誤人子弟了。

好多學校都在擴招,很多學生念了4年下來,學了一堆過時的理論,跟實際的東西一點沒有接軌,不知道7407是干什么用得,不知道三極管的幾個狀態(tài);我只能無話可說。

所以,念了4年下來,跟企業(yè)的需求還有一段距離,還需要從頭來過;聰明的學生趕緊抓住機會去學習,去實習,這樣,還可以趕緊補上實際應用的這一課。言歸正傳。參見下圖:

當單片機的口線輸出電平為1時,三極管的be結(jié)導通,ce結(jié)導通,輸出的電壓值為0V;當單片機的口線輸出電平為0時,三極管的be結(jié)不導通,ce結(jié)截止,輸出的電壓值為5V;在這種數(shù)字電路的應用中,相當于三極管是一個反相開路門。計算是否導通,公式如下:I=B(放大倍數(shù),希臘字母的貝塔)×Ibe當Ice

相差越大,飽和程度越深,Vce越小,三極管的輸出內(nèi)阻越;這個概念要用到光電管中。

設計使用時大概算算,心里有個數(shù);在電路板上試試,行的通,那就是它了?梢詼y量Vce值,至少要小于0.1V就可以了。

常用的PNP三極管是2N5551,驅(qū)動40mA的LED(電壓在24V)、蜂鳴器等均沒有問題。2.6.2三極管的具體應用

實際上,已經(jīng)有象7407、ULN201*可以取代三極管在數(shù)字電路中的作用;但是,有時是受到PCB面積的制約,有時是為了降低成本,有時是因為布局方便,在1~2個輸出點時,還是可以使用三極管來做驅(qū)動的。

例如:驅(qū)動一個蜂鳴器;往往系統(tǒng)中的蜂鳴器跟其它驅(qū)動設備,繼電器等,距離較遠;這時,沒有必要使用一片7407,或者ULN201*來驅(qū)動;驅(qū)動的接口如下:上午趕緊到中發(fā)去轉(zhuǎn)了一圈,看了看單片機方面的書,讓我失望。

這些書的大部分內(nèi)容還都是將51的技術(shù)資料美捶胍幌攏由弦恍┎⑿薪涌詰男

酒?255/8155/8253/AD0809/DAC0832等等,就是一本單片機的書籍了。還挺貴。可憐的學生花了幾十大元買來,學到的是陳舊的知識。看了又看,想了再想,老樹買了2本:

1)MCS-51系列單片機應用系統(tǒng)設計系統(tǒng)配置與接口技術(shù)何立民編著北京航空航天大學出版社35元人民幣

2)單片機外圍電路設計沙占友等編著電子工業(yè)出版社23元人民幣

何立民先生的巨著影響了看來不止是一代人,至少是2代人、三代人以上。主要的好處是體系比較完整,包括了單片機的核心、芯片的時序與擴展、輸入與輸出(在何老師的編著中叫前向、后向、人機、相互通道,只是說法的不同),應用程序設計、抗干擾技術(shù),應該是,是一個大全了。愚斗膽建議何老師將該巨著修改如下:

1)將并行擴展的有關(guān)內(nèi)容以及一些現(xiàn)在不用的內(nèi)容,如GP16打印機等,放在新編著的書的光盤內(nèi)容中,這樣篇幅可以減少,又不至于查詢不到;這些內(nèi)容,在書中一帶而過;2)新增:I2C的數(shù)字和模擬的擴展內(nèi)容和相應的用單片機口線模擬I2C總線的程序;3)新增:電源部分,包括:DC/DC模塊,MAXIM、LINEAR公司的step-up/step-down等芯片的內(nèi)容,還有開關(guān)電源、線性電源等內(nèi)容;這樣,就能煥發(fā)出更新的活力。

沙占友的書中有一些新的內(nèi)容,象時鐘電路SD201*、電源部分,都是愚所激賞的,跟別的書籍相比,內(nèi)容新,基本沒有重復的地方。

如果初學者能買到周航慈的《單片機軟件設計技術(shù)》,再下載一套89C51或者78E52的數(shù)據(jù)手冊,隨便從哪里找一本詳細講51語言的書,也就行了。這樣的書,最好從圖書館借來看看。何老師的書中也有一部分內(nèi)容,講程序設計的,沒有詳講語言。其實最好的就是原來徐涵芳老師編著的那本小冊子,好像是《51/96單片機設計技術(shù)》。好在是原汁原味,篇幅小而精干,也不貴。手邊的參考書有以上三位老師的編著就可以了,其它的,隨便看看,如果有用,記住器件的名字,從網(wǎng)絡上下載下來看看就行了。2.5光電管

我這里所謂的光電管有2種:1)反射型光電管2)對射型光電管

這2種產(chǎn)品在市場上又可分為調(diào)理好的和沒有調(diào)理好的;

這2種光電管在電子產(chǎn)品世界和電子技術(shù)應用雜志上都有大量的廣告。隨便找一本都有。我所說的調(diào)理好的指的是內(nèi)部已經(jīng)加了限流電阻和輸出的放大驅(qū)動電路了。它的特點是只有3根線,電源2根,輸出信號一根,TTL電平的;但是,有時受到某種限制,需要使用沒有調(diào)理好的,怎么辦呢?

參見下圖:光電管原理框圖

這種沒有調(diào)理好的光電管在使用時,需要做一塊小的電路板,在發(fā)光管加限流電阻,在光電三極管的集電極加上拉電阻到5V,如下圖所示:光電管工作框圖1。

但是,在使用中我發(fā)現(xiàn),輸出的信號不穩(wěn)定,尤其是在使用比較長的電纜傳輸?shù)絾纹瑱C的時候;究其原因,我認為是由于反射或者對射的紅外光落在光電三極管的靶面上,光強未能導致光電三極管深度飽和,使得輸出的內(nèi)阻偏大,肪車腦肷偷繢碌母扇判藕湃菀自諳唄飛系擁腦倒剩?br>為了可靠工作,仿照達林頓管的結(jié)構(gòu),在光電三極管的輸出端加一個限流電阻接到NPN的B結(jié),當無光的時候,2N5551飽和導通,輸出電壓為0V;實際測量小于0.1V;當有光,甚至是弱光時,2N5551截至,輸出電壓為5V。將3K電阻換成更大或更小的電阻,可以調(diào)整光電三極管的輸出的靈敏度。

具體工作過程可以自行分析,做個實驗。2.6電容

2.6.1電容的主要種類電容有以下幾大類:1)電解電容2)獨石電容3)磁片電容

4)膽(左金右旦)電解電容5)滌綸電容等

電容的指標是:耐壓值和電容容量。例如:220u/50V,就是說,這個電解電容耐壓值為50V,容量為220u。

電容的容量跟電容的介質(zhì)有關(guān)。顧名思義:

電解電容為電解質(zhì)作為介質(zhì)的,鋁作為電極;獨石電容是使用石頭作為介質(zhì)的;磁片電容是磁片作為介質(zhì)的;

膽(左金右旦)電解電容使用電解質(zhì)作為介質(zhì),但是,電極采用膽(左金右旦)金屬。滌綸電容采用滌綸作為介質(zhì)。有興趣的網(wǎng)友可以拆一個電容看看。2.6.1電容的使用場合1.電源穩(wěn)壓和濾波

電解電容主要是用來穩(wěn)壓和低頻交流濾波的;高頻濾波是使用磁片電容和獨石電容。

當電解電容作為穩(wěn)壓時,接在整流橋和三端穩(wěn)壓器的輸出端,起到穩(wěn)定電壓的作用。其工作機理相當于一個水庫,從上游來的帶有波浪的水到了水庫,就變的平滑了。

但是,鋁電解電容的電解質(zhì)隨著時間的推移會干涸,所以在設計時需要留有余量,保證系統(tǒng)正常工作到它的壽命。

有些遠端供電的直流電源,接到電路板的輸入端時,需要在電路板的電源輸入端加一個大的電解電容,通?梢允220u/25V,這樣,這塊電路板需要供電時,不是直接從電源處取,而是從電容中取電,可以得到穩(wěn)定的電流供給;但是,電解電容只能濾除低頻的波動;對于直流電源中的高頻波動,可以加一個0.1u或0.01u的獨石電容或者磁片電容。

很多教科書都指出,在每一個芯片的電源和地兩端接一個0.1u或0.01u的獨石電容或者瓷片電容,解決芯片的供電過程中,由于電路板的走線電感產(chǎn)生的電源開關(guān)噪聲尖峰。這種作用下的電容叫去耦電容。這是電路板的常規(guī)的設計;2.定時參數(shù)

對于象555這樣需要外接電容產(chǎn)生穩(wěn)定的脈沖的器件,滌綸電容是首選?梢韵胂,滌綸一層又一層纏繞,受到溫度變化引起的滌綸的面積的變化的相對值要遠遠小于獨石電容的介質(zhì)石頭受到溫度變化而引起的變化值。3.產(chǎn)生其它電壓

有些需要從單一電壓產(chǎn)生其它的電壓的芯片,如:max232,需要外接電容才能實現(xiàn)。參見max232技術(shù)資料。外接01.u的膽電容。2.6.2電容的封裝

電容有直插和表面貼的不同封裝。

電解電容表面貼封裝的通常耐壓值不超出25V,電容值不超出100u。再大,就只好使用直插的了。其它的電容,磁片和獨石都有表面貼封裝的。2.7電阻和縹黃?br>2.7.1電阻的種類2.7.1.1普通電阻

電阻種類按照工藝可以分為碳膜電阻和金屬膜電阻;

按照功率可以分為小功率電阻和大功率電阻,大功率電阻通常是金屬電阻,實際上應該是在金屬外面加一個金屬(鋁材料)散熱器,所以可以有10W以上的功率;在電子配套市場上專門賣電阻的市場上可以很容易地看到。

金屬電阻通常是作為負載,或者作為小設備的室外加熱器,如,在CCTV的一些解碼器箱和全天候防護罩中可以看到。

電阻在電路中起到限流、分壓等作為。通常1/8W電阻已經(jīng)完全可以滿足使用。但是,在作為7段LED中,要考慮到LED的壓降和供電電壓之差,再考慮LED的最大電流,通常是20mA(超高亮度的LED),如果是2×6(2排6個串聯(lián)),則電流是40mA。不同廠家選用不同材料的,壓降有所不同。所以,需要加上電試一下,但是,不要讓Led的電流超出20mA(單只LED),這時加大電流亮度也不會增加,但是LED的壽命會下降,限流電阻的大小就是壓降除以電流。電阻的功率隨之可以算出。這個使用初中的知識就夠用了。2.7.1.2電位器

電位器就是可調(diào)電阻。在初中學物理時,中學老師拿一個很大的圓筒狀的東東,上面有一個滑桿,跟這個東西很類似。它的阻值在1~n之間變化。N=102、502、103

102=10*10的2次方,也就是1000歐姆,1K同理,502=5K。

這種表示的方法跟電容是一樣的。

電容104=10*10的4次方pf,電容的基本單位是pf,1u=1000000pf,所以,104=100000pf=0.1u;電位器又分單圈和多圈電位器。

單圈的電位器通常為灰白色,面上有一個十字可調(diào)的旋紐,出廠前放在一個固定的位置上,不在2頭;

多圈電位器通常為藍色,調(diào)節(jié)的旋紐為一字,一字小改錐可調(diào);多圈電位器又分成頂調(diào)和側(cè)調(diào)2種,主要是電路板調(diào)試起來方便。

有些是儀器儀表設備,通常是模擬電路,有一些不確定的因素,需要調(diào)節(jié)才能達到最理想的效果;有些是設備本身就需要輸出一個可變的東東,如電壓和電流,也需要一個電位器。2.7.1.3排電阻

是sipn的封裝,比較常用的就是阻值502和103的9腳的電阻排;象sip9就是8個電阻封裝在一起,8個電阻有一端連在一起,就是公共端,在排電阻上用一個小白點表示。排電阻通常為黑色,也有黃色;51系統(tǒng)的P0需要一個排電阻上拉,否則,作為輸入的時候,不能正常讀入數(shù)據(jù);作為輸出的時候,接7407是可以的,不需要上拉電阻;但是,接其它的芯片,還是不行。有興趣可以看看51的P0的結(jié)構(gòu);沒有興趣,依葫蘆畫瓢,照做沒錯。2.7.1.4光敏電阻

當照在光敏電阻上的光強變化時,電阻值也在變化。顯然這是半導體材料的特性。使用光敏電阻可以檢測光強的變化。思考題1:有一個LED顯示設備,要求,當光強變化的時候,LED的亮度隨著光強變化;光線越強,LED越亮;反之亦然。怎么使用單片機實現(xiàn)此項功能?可以是多級調(diào)光,如8級調(diào)光;也可以做成無級調(diào)光。

2.7.2電阻的封裝

電阻的封裝有表面貼和軸向的封裝。

軸向封裝有:axial0.4、axial0.6、axial0.8等等;axial在英語中就是軸的意思;

表面貼電阻的封裝最常用的就是0805;當然還有更大的;但是更大的電阻我想就不是很常用了。電位器的封裝在protel的書種可以很方便地找到。但是如果直接使用,可能會有一些偏差。老樹早期就犯過這種錯誤,導致電位器旁邊的器件安裝費勁。搞硬件和軟件是有所不同的,搞硬件的人,一定要精確。

在硬件上的一個小的錯誤,都會造成這塊板的推倒重來;因為產(chǎn)品是不能有飛線的;而這個小小的錯誤相當于軟件上的一條語句,在軟件調(diào)試階段悄悄改掉,可以神不知鬼不覺;在PCB上,特別惡心。而且誰都知道-老板最知道。什么是精確呢?

1.對你所要實現(xiàn)的工作的目標理解準確;

2.對你的電路圖要清楚每一個器件在其中所起的作用;如果不明白,可以找一個專家問問,得到確認;如果不清楚,可以先試試;

3.對每一個器件的封裝要嚴格把握,該是什么形狀、外形一定要完全一致;還有考慮到空間是不是對其它的板卡器件有影響;對邊緣連接器件與電路板的邊緣之間的距離、ISA和PCI的邊緣連接件與擋板之間的關(guān)系要完全把握才能去做電路板;否則只是浪費金錢和時間;

對邊緣器件與邊緣之間的距離要是不能有把握的話,可以找3個人,每個人都計算一遍,取個平均值,基本上就差不多了。

4.對單片機的資源能不能作成這件事情一定要有把握,CPU運算速度和字長、內(nèi)存夠不夠大、程序存儲器夠不夠大,需要仔細的規(guī)劃;

5.原理圖經(jīng)過專家認可無誤后,畫出來的PCB需要做網(wǎng)絡檢查,做到與原理圖完全一致;精確,實際上是敬業(yè)的精神。

2.8繼電鰲⒐燙痰縉?br>2.8.1繼電器繼電器,就是利用繼電器的線包在加電后產(chǎn)生的磁力,將2個電極吸合在一起;初中還是高中的物理有它的原理。有興趣可以打開一支看看,很好玩的。繼電器有:1)公共端:COM

2)常開:normalopen,NO3)常閉:normalclose,NC繼電器主要指標:工作電壓:

工作電壓有直流和交流的2種;

在PCB上,通常是直流的;交流的繼電器通常是AC24V的居多,當然,還有AC220V的。交流的繼電器國產(chǎn)的比進口的,比如,idec,OMRON,fujitsu便宜很多,當然,質(zhì)量也差一些。可以在百度上專門搜索一下繼電器,上面有一些廠家產(chǎn)品的介紹。

常用的小功率的繼電器是national的居多,OMRON也有,便宜一些,一盒50只。常用的電壓有:

DC5V/DC9V/DC12V/DC24V等;根據(jù)觸點數(shù)量,可以分為:單刀單擲/SPST單刀雙擲/SPDT雙刀雙擲/DPDT四刀雙擲等/?

還要根據(jù)觸點容量來分。

一般的都是DC30V/1A或者DC30V/2A,AC110V/0.2A,再大,就不能使用繼電器了,因為在觸點切換,電流通過的瞬間,會產(chǎn)生拉弧,燒毀觸點,使得切換不可靠;這是,可以使用固態(tài)繼電器。實際上,在PCB上的繼電器的任務就是給出一個干接點信號,作為控制信號使用,傳遞的是一個信號,而不是能量。或者控制一個大功率的開關(guān)等,讓大功率的開關(guān)去控制功率的傳遞;但是,后者也不如固態(tài)繼電器來得方便。

繼電器的封裝通常是DIP16或者以上;也有更小的繼電器,但是,價錢跟DIP16的差不多。注意:DIP16的繼電器只有8個管腳;所以設計封裝時,不要圖省事直接使用DIP16,這樣容易在焊接的時候焊反了,導致出錯。要專門設計繼電器的封裝,該有幾個腳就使用幾個腳。2.8.2固態(tài)繼電器

固態(tài)繼電器,說白了,就是使用發(fā)光管觸發(fā)的過零觸發(fā)的可控硅。可以說,跟光耦很相似,也是4個管腳,只是區(qū)別在:

4)直接使用直流電壓控制;可以認為內(nèi)部已經(jīng)有了一個限流電阻;5)接收光信號的一端是過零觸發(fā)的可控硅;可以說是一個電子開關(guān),無觸點的繼電器。

因為無觸點,所以可以通過大電流而不產(chǎn)生拉弧,工作壽命與開關(guān)次數(shù)無關(guān)。

觸點作為信號使用的繼電器的時間的工作壽命是100萬次到300萬次,可以查看技術(shù)手冊;固態(tài)繼電器可以認為是無限次的,所以在大電流和頻繁開關(guān)的場合,使用固態(tài)繼電器。固態(tài)繼電器觸點通過的信號通常是交流電壓,但是也有直流電壓的。固態(tài)繼電器可以通過AC220V或者AC380V以下的交流電;它的2個指標:1)工作電壓,通常為DC5V和DC12V,也有DC24V的;2)工作電流:AC220V/1A/2A/4A不等。

國產(chǎn)的固態(tài)繼電器質(zhì)量不錯,跟進口的沒有區(qū)別,就是封裝的質(zhì)量太差,一批買回來,個個都不一樣,焊在電路板上東倒西歪,不美觀;至于小功率的國產(chǎn)的繼電器市場上比較少見,有也不敢使。

進口的固態(tài)繼電器有美國的和日本的,4A以上的比較貴,日本的OMRON的固態(tài)繼電器2A的才賣8元,侃侃價估計還能便宜,體積小,封裝絕對的準確,可以很整齊地在電路板上排列,不占地方;

什么時候國貨也能象日本的那樣好?

什么時候所有的中國人都能象日本人那樣的敬業(yè)?

這個論壇不是罵日本人的地方,所以不往下說了;老樹愿意將自己的一點微薄的經(jīng)驗獻給大家。在電子產(chǎn)品應用的中端低端市場將外國產(chǎn)品趕出中國市場我想中國人還是可以做到吧。2.9線性電源:變壓器、整流橋與三端穩(wěn)壓器

什么是線性電源?為什么叫線性?老樹查了網(wǎng)絡上的資料,也沒有答案,只好等待高明教我。PCB上需要供電,就需要電源。電源分2種,一種是線性電源,象7805,就是線性電源;一種是開關(guān)電源,是將AC220V直接整流濾波成高壓,推動功率管工作在100Khz以上,再整流濾波成低壓。

開關(guān)電源的工作原理可以通過百度查到。

線型電源需要工頻變壓器,將AC220V變換成低壓,經(jīng)過全橋的整流,和大電容的濾波,成為脈動的直流,再經(jīng)過三端穩(wěn)壓器,輸出直流電壓。

輸出端還需要大的電解電容濾波。注意這時要選用足夠大的電容容量和耐壓值的電解電容。耐壓值不夠,你就等著聽響吧。電容容量不夠,整流輸出的電壓和輸出的電壓的壓差不夠,輸出電壓會有紋波,單片機系統(tǒng)工作不正常。

通常電路板上需要的是DC5V,一般來說,現(xiàn)在的電路板,一片7805,再加散熱片也基本夠用了。功率越大,散熱片也越大。變壓器有多種規(guī)格:

1、普通E型矽鋼片繞制的變壓器,現(xiàn)在最大量的是廣西普寧雄英出的變壓器,通過了長城認證,質(zhì)量是不錯的,最大的好處是便宜,現(xiàn)貨量大;通常的規(guī)格是單9V、12V,雙9V、12V等;可能這個地方出矽鋼片,有這樣的礦藏。2、環(huán)型變壓器,象個橢圓型;

3、最近好像圓形的變壓器也多起來了,后2種變壓器應該是漏磁小、發(fā)熱少、效率高,大功率的整流時使用,當然單位瓦數(shù)也貴啊,按照1元/W計算預算應該差不多了。這2種變壓器都需要定制,可以定制各種規(guī)格的。

4、焊在電路板上的變壓器,比較有名的是兵字品牌。在《電子技術(shù)應用》和《電子產(chǎn)品世界》上常年做廣告。秦皇島也有一家,好像叫耀華。怎么計算變壓器需要多大的功率?

首先,計算功耗。比如:Dc5V/0.25A,也就是1.25W的功耗。7805效率50%,變壓器效率50%,就是說,需要6W的變壓器。

Dc5V/0.25A的輸入壓差大概在3V,6V的變壓器整流出來的電壓是大約6×1.4=8.4V,也差不多了。所有選用AC6V/6W的變壓器。再到市場上找一個差不多的變壓器用上就行了。

注意:電流越大,壓差越大;在電路工作的時候,可以拿示波器看看電源的波形是不是平穩(wěn)。78系列的芯片做的比較多而好的是美國國家半導體公司(nationalsemiconductor)的LM780X和摩托羅拉公司MC780X等2大系列。78系列是高壓差的穩(wěn)壓芯片,現(xiàn)在有低壓差的穩(wěn)壓芯片,其機理參見沙占友老師的書籍。有LM2930、LM2937、LM2940C、LM2990等4個系列。

如果需要更大的電源供給,或者使用開關(guān)電源,或者去買成品的線性電源,象遼寧朝陽4NIC的電源,質(zhì)量不錯,價格也不錯。附:在網(wǎng)絡上找到的一篇文章:開關(guān)電源和線性電源的區(qū)別

線性電源的調(diào)整管工作在放大狀態(tài),因而發(fā)熱量大,效率低(35%左右),需要加體積龐大的散熱片,而且還需要同樣也是大體積的工頻變壓器,當要制作多組電壓輸出時變壓器會更喲蟆?氐繚吹牡髡芄ぷ髟詒ズ禿徒刂磷刺蚨⑷攘啃。矢擼?5%以上)而且省掉了大體積的變壓器。但開關(guān)電源輸出的直流上面會疊加較大的紋波(50mVat5Voutputtypical),在輸出端并接穩(wěn)壓二極管可以改善,另外由于開關(guān)管工作是會產(chǎn)生很大的尖峰脈沖干擾,也需要在電路中串連磁珠加以改善。相對而言線性電源就沒有以上缺陷,它的紋波可以做的很。5mV以下)。對于電源效率和安裝體積有要求的地方用開關(guān)電源為佳,對于電磁干擾和電源純凈性有要求的地方(例如電容漏電檢測)多選用線性電源。另外當電路中需要作隔離的時候現(xiàn)在多數(shù)用DC-DC來做對隔離部分供電(DC-DC從其工作原理上來說就是開關(guān)電源)。還有,開關(guān)電源中用到的高頻變壓器可能繞制起來比較麻2.10開關(guān)電源芯片

相對于線性穩(wěn)壓器來說,開關(guān)電源在計算機主板上、工控機主板和各種各樣的電路板上起著電壓變換的作用。例如:將低電壓,比如:電池轉(zhuǎn)換成穩(wěn)定的3.3V或者5V,或者將高電壓轉(zhuǎn)化成DC5V、DC3.3V,或者將DC5V轉(zhuǎn)換成3.3V和1.8V,例如,ARM的電路板就需要這樣的芯片,3.3V給ARM供電,1.8V給arm的core供電。以上

由于采用了開關(guān)電路,電源芯片的工作頻率高,發(fā)熱小,效率高。

同樣的,還是芯片的巨頭,MAXIM、LINEAR和TI等公司在電源轉(zhuǎn)換芯片上是最為卓越,無論從產(chǎn)品的種類,還是質(zhì)量都是上佳的;

經(jīng)?措娮赢a(chǎn)品世界和電子技術(shù)應用的網(wǎng)友一定對maxim的電源芯片印象巨深。五花八門的電源芯片,讓你無法選擇到底選用那種是自己的所需要的。在maxim的產(chǎn)品樹中,對電源是這樣分類的:PowerSuppliesandBatteryManagementtchmodeDC-DCPowerSupplies408IsolatedPowerSupplies22Low-DropoutLinearRegulators75WhiteLEDDrivers13Low-SideMOSFETDrivers14High-SideMOSFETDrivers6ORingMOSFETControllersBatteryChargers36

BatteryProtectors,SelectorsandMonitors17Regulator+ResetCircuits4CurrentSenseAmplifiers22

LCD/ECB/CCFLDisplayBiasSupply87ALSOSEE:Hot-SwapandPowertchingALSOSEE:VoltageReferences

我們經(jīng)常使用到的tchmodeDC-DCPowerSupplies,這里有分成n種。老樹比較熟悉的是step-down電源芯片,也就是所謂的從高電壓下降到低的電壓的芯片;從低到高,當然是step-up電源芯片。

象philips的電動剃須刀,里面肯定有電源管理芯片,當電池電壓下降,但是,電池又有電的時候,能夠輸出恒定的電壓,榨干電池內(nèi)的最后一點電能,能夠舒適地使用一段很長的時間。比如,你的電路板上只有DC24V電壓,但是,還需要Dc5V/2A的電源,這么高的壓降,使用線性穩(wěn)壓器顯然不合適,如果使用DC/DC模塊,成本太高,體積也比較大,所以,得選用一款芯片完成這個功能。

按照maxim給出的復雜的選擇,根據(jù)你的要求,多選擇幾項,maxim會給出一個清單,在清單中去選擇你最適合你的需求的芯片。

老樹原來使用過的完成此項功能的芯片是:MAX724、LT1076;這2款芯片需要1個50uH的電感才能輸出Dc5V電源;但是,這種開關(guān)電源芯片有個好處,就是輸入只要在它的允許的范圍內(nèi)波動,或者負載在變化,輸出DC5V電源十分穩(wěn)定。

電源的范圍從Dc10V~DC40V,max724均能輸出5A的DC5V電源。Maxim724下載連接地址:

LT1076下載鏈接地址:

在ARM上使用的電源芯片是TI公司的TPS767D318。下載鏈接:

在沙老師的書中,也介紹了幾款電源轉(zhuǎn)換芯片,可供參考。如果是作為隔離電壓產(chǎn)生,例如:5V轉(zhuǎn)換成隔離的5V,用在光耦、通訊等電路中,去自己做隔離電路就有點劃不來,不如去買現(xiàn)成的DC/DC模塊。這點國產(chǎn)的模塊做的不錯,象老樹常用的Dc12V/DC5V500mA的模塊,大約30元,質(zhì)量還是不錯的。比較有名的電源轉(zhuǎn)換模塊,如:

如果是作為隔離電壓產(chǎn)生,例如:5V轉(zhuǎn)換成隔離的5V,用在光耦、通訊等電路中,去自己做隔離電路就有點劃不來,不如去買現(xiàn)成的DC/DC模塊。這點國產(chǎn)的模塊做的不錯,象老樹常用的Dc12V/DC5V500mA的模塊,大約30元,質(zhì)量還是不錯的。老樹常用的電源轉(zhuǎn)換模塊,如:

北京星原豐泰電子技術(shù)有限公司的SAPS系列DC/DC模塊,這種模塊很多廠家都是兼容的;電源轉(zhuǎn)換模塊還有AC/DC、DC/AC等不同;具體不同可以參看廠家網(wǎng)站。廠家鏈接:

-bj.com/index.htm

另外一家生產(chǎn)微電源模塊的廠家是:深圳市順源科技有限公司。廠家鏈接:

這種電源模塊國產(chǎn)的質(zhì)量不錯了,完全可以取代進口產(chǎn)品。

DC/DC模塊完全可以將輸入輸出的電源地連接在一起,作為普通的非隔離的電源轉(zhuǎn)換器使用。2.11器件選購、芯片批號、封裝知識等

在市場上買芯片,千萬注意不要買到舊片、拆機片;舊片、拆機片有些湊合能用,有些干脆不行;即使現(xiàn)在能用,壽命肯定有限;

舊的就是舊的,肯定瞞不過有心人;主要是從芯片的管腳的嶄新程度、芯片印刷的質(zhì)量等仔細觀察。

舊的芯片往往管腳參差不齊、搪錫發(fā)烏、包裝的管子不夠新;而且往往是芯片的表面發(fā)白,那是因為被打磨過了,然后重新絲網(wǎng)印刷上廠家名稱、批號等;

所以最好是買激光打標的器件,激光打標的產(chǎn)品肯定是新貨,或者沒有使用過的貨;而且買的時候需要注意,器件的批號最好是最近當年的或者是最近幾個星期的產(chǎn)品;總而言之,別花冤枉錢,還影響產(chǎn)品的質(zhì)量。同樣的產(chǎn)品,不同廠家的質(zhì)量也不一樣。我比較喜歡的是美國TI、摩托羅拉MC、MAXIM、LINEAR的產(chǎn)品;假的也少;

例如,max7219芯片上有一下標志:MAXIMMAX7219CNG0323PY

MAXIM就是芯片的廠家;

MAX7219CNG是廠家的型號,CNG跟封裝和7219這個系列產(chǎn)品的細微的差別有關(guān);03是指201*年;23是指該年的第23周;一年是52周,所以這個數(shù)字不會超出52;激光打標是在芯片上形成一個暗色的與芯片表面有一個明顯對比的標志;中關(guān)村的大恒公司就有激光打標機的業(yè)務;但是未必是在芯片上打標;

有時,激光打標會產(chǎn)生類似暗黃色的標志,這跟激光器功率和芯片封裝材料有關(guān)。關(guān)于CA1161看門狗的原理和應用參見以下鏈接:

關(guān)于電源監(jiān)控和看門狗的原理,參見以下鏈接:

#μP監(jiān)控

#μP監(jiān)控電路#常見問題解答第三課合格電子工程師是怎樣煉成的?

不好意思,第二課沒有寫完,又開一課老樹當過老師,有毀人不倦的習慣,再者,這個問題想了很久了,也基本想通了。

在網(wǎng)絡上很多初學者在問:怎樣成為一個合格的電子工程師?這個問題有很多答案。老樹談談自己的看法。第一步入門-51核心和基本電路

中國人有10億啊,每年有多少大學生畢業(yè)呢?我不知道。但是我看到有一張照片,招聘會上熙熙攘攘,人來人往,十分震撼。從來沒有一個時刻讓我感覺到中國的人力資源是如此的豐富。但是,從現(xiàn)在的大學畢業(yè)出來的學生學到了什么東西呢?一些理論,跟實際脫鉤的理論。有沒有用呢?有點用。但是,在企業(yè)中,需要的是實際干點事情出來,實際解決問題。所以說,很多企業(yè)不想要大學本科出來的大學生,說動手,沒有動手能力,不知道電阻電容長得什么樣子,能夠做什么?但是又自視甚高,對工資的期望值比較高。等到能夠干點事情了,又拍拍跑了。所以企業(yè)現(xiàn)在喜歡使用大專中專甚至是職業(yè)學校培訓出來的小孩,至少這些孩子們知道自己的份量,能夠?qū)崒嵲谠诘刈鍪。要知道,他們很多人的天賦并不差,有些人甚至可以說聰明,只是因為很多人是家庭條件不好,打小就是苦孩子,沒有條件接受良好的教育。一旦給機會,他們都比較珍惜,F(xiàn)在的大學,誤人子弟甚多。擴招是沒有錯,但是,實驗室擴了嗎?教室擴了嗎?教師擴了嗎?至少實驗室是沒有擴。老樹認得的一個研究生說,只有到了一個階段,才能到實驗室作實驗。很多導師就是把學生當奴隸一樣干活,要是在干活中能夠?qū)W到東西那就算是運氣好的;運氣不好的,直接就是導師的廉價的勞力了,學不到東西,活倒干了不少。但是,既然學生要拿文憑,要應付考試,沒有辦法,那怎么自救?如果勵志要做一名出色的電子工程師,老樹可以談談自己的看法。做一個電子工程師,先從51學起,這是得到公認的。不需老樹饒舌。

首先,去買一個開發(fā)板,越便宜的越好,在上面可以練練keilC。最好再買一個仿真器,這樣調(diào)試的效率高。當然這個不便宜,但是我覺得可以志同道合的哥幾個合買。反正1天24小時,每人8個小時輪流上,有個幾個月,C51語言也就差不多了。

其次,看看老樹的文章,看看需要學點什么基本的東西。北京的大學生有福啊,沒事到中發(fā)去轉(zhuǎn)轉(zhuǎn),認認老樹的文章上說得哪些電阻、電容、三極管、芯片、接插件什么的,看看自己的電腦上的主板、網(wǎng)卡、聲卡、顯卡是怎么畫的,找找感覺,這些板卡都是高手的杰作啊。

構(gòu)思一個小的產(chǎn)品,按照老樹文章上的思考題,找本protel99se的書,從每個菜單練起,循序漸進,從單片機最小系統(tǒng)->輸入->LED->RS232/RS422/RS485->固態(tài)繼電器、繼電器等原理圖畫起,邊畫邊學,一點一點做,做好了,最好找個高手看看,找出毛病在哪里,再反復改進。在這樣的模擬實戰(zhàn)中找到感覺。

推薦老虎工作室的protel99系列4本,寫的還是循序漸進的,當然不便宜;咬咬牙,可以合買一套,輪著看。

順便說一句我對市場上的開發(fā)板的看法,這些開發(fā)板當然都不錯,但是,只能學到語言,不能教你畫原理圖和PCB,實際做的時候,還是需要高手帶一帶是最快的。我就是一個朋友教我的,也就半天的功夫,就會了。當時還是DOS下的protel3.16版本。

以戰(zhàn)養(yǎng)戰(zhàn)。找個公司、企業(yè),幫他們做個小產(chǎn)品,既能得到公司的高手的指點,又能賺到一筆費用,豈不甚佳?這時,你的開發(fā)板、仿真器的費用就出來了。從原理圖->PCB->C51,單片機也入門了。

第二步:登堂入室-掌握系統(tǒng)的電路知識

這時,需要對電子技術(shù)的所有東東進行全面的了解,主要是看看雜志、BBS、網(wǎng)站上的技術(shù)文章、何立民先生主持編著的《單片機應用技術(shù)大全》系列,將單片機和它的配套的電路,輸入輸出、通訊等等做一個全面的了解。目標是為什么?系統(tǒng)的技術(shù)儲備。知道什么問題可以使用什么方法解決,可能在什么地方找到解決的方法,這對你以后走上工作崗位,解決實際問題是非常有好處的。如果你真能這么做,那么,你今后肯定比單位中的老同志還要棒。老樹在國營研究所的時候,曾經(jīng)有一段時間無所事事,就是在那一兩年的時間內(nèi)將研究所的技術(shù)雜志看了一遍,尤其是《電子技術(shù)應用》。打下了一個良好的基礎。

這時,爭取機會,學習高手們的硬件設計。一個比較快的辦法就是到工控機的廠家那里,看看工控機的板卡和調(diào)理板是怎樣設計的,都使用了哪些東西。記得老樹第一次看到國外的一個器件,到處去問,也不知道是什么東東。后來在四通工控那里看到了,原來是固態(tài)繼電器。這時,腦子里關(guān)于固態(tài)繼電器的知識都冒出來了。再一看,配套市場大把的。

什么東西就是這樣,你要是不知道它是干什么的,你天天看見,也熟視無睹。

有心人就是這樣,在什么樣的情況下,都能慢慢積蓄知識和力量。畢竟一個產(chǎn)品,不是只會單片機就可以了,還是需要很多的外圍電路,按照何老師的分類,前向、后向、人機、互相通道等,才能做成一件產(chǎn)品的。

這個時候,抓住任何機會,去參與一個大型產(chǎn)品開發(fā),在其中做一件事情,你可以學到溝通、協(xié)作、界面等產(chǎn)品開發(fā)的一些要素。第三步:勤奮至卓越

中國人多啊,每個人都是智商100,誰比誰傻啊。憑什么你比別人強?你能有好的工作、好的收入,你能香車寶馬,醇酒美人?老樹認為,沒有別的辦法,就是靠勤奮。勤奮學習-這個道理大家知道,知識就是金錢。

勤奮工作-想比別人多賺錢,在智商相同的情況下,就是靠多付出時間干活,再提高工作效率。別人5×8小時工作,你是7×16小時,再提高工作效率一倍,你不久賺了比別人多5倍的錢嗎?老樹公司有2個員工,原來在老家種蘋果,沒有賺到錢,到老樹的公司中干活,計件,活忙的時候,早晨8:00起來,晚上12:00收工,年底也賺了一筆錢回家,高高興興,老樹也開心,原來一屋子人干的活,現(xiàn)在2個人干了,公司管理省事了,員工也賺到了錢。

開發(fā)也是一樣。當然,這個需要你的公司有這個機制,多勞多得的機制。但是,要是現(xiàn)在沒有,你要不要這樣干呢?

我認為,需要。一方面,干別人的活,練自己的技術(shù),長自己的本事。另一方面,多干活,才能快速增長本事,技術(shù)才能躍變、突破,登堂入室,再得心應手、出神入化。至少,熟練工種是沒有問題的吧。

就象一壺水,老是小火,燒了半天,也是溫吞水;可是大火一上,一會就開了,就是這個意思。你看《射雕英雄轉(zhuǎn)》中的郭靖,沒有別的本事,就是傻練,有一天開竅了,如有神助。技術(shù)這個東西就是這樣,突破了門檻,就是坦途。需要勤奮勤奮再勤奮。有一天這個日子來了,你就苦盡甘來了。

勤奮還有另外一個含意,就是天道酬勤。其實是每個人看見勤奮的人,都會給他機會的,覺得幫助這樣的人,高興;把事情放在他的手里,也放心。還有一個含意是觸類旁通。知識需要很多的參照物,去比較、聯(lián)想、萃取、升華。換句話,你可能付出的是其他人的n倍的努力,可是你得到的是n倍以上的回報,你的知識已經(jīng)不是簡單的累加了,已經(jīng)質(zhì)變了。

如果你在這個單位,勤奮了,也出成果了,就是沒有得到公平的待遇,也沒有關(guān)系。換一個環(huán)境就是了,總有人會欣賞你的。再說了,付出總有回報。

有些人習慣怨天尤人,沒有好的老爸老媽,沒有好的老師,沒有好的同伴,沒有好的環(huán)境,沒有好的老板。這些人需要去看看周立功的文章,看看周老師怎樣一步步成長的。第四步:溝通、協(xié)作

原來還有,現(xiàn)在越來越少,做一個小的產(chǎn)品,就可以生活無憂。

現(xiàn)在這種情況越來越少了。在任何一個單位,將一個產(chǎn)品做好,都需要與同伴主動溝通,與不同部門的人互相協(xié)作。經(jīng)常是跟不同單位的人溝通完成意見事情。第五課單片機系統(tǒng)設計初探5.1概述

所謂系統(tǒng),就是說,除了單片機之外,還需要有:1)輸入2)輸出

輸入和輸出按照第一課的定義,包含了范圍:輸入基本上有以下的可能:1)鍵盤

2)串行接口(RS232/485/canbus/以太網(wǎng)/USB)3)開關(guān)量(TTL,電流環(huán)路,干接點)

4)模擬量(4~20ma、0~10ma、0~5V(平衡和非平衡信號))輸出基本上有以下組成:

1)串行接口(RS232/485/canbus/以太網(wǎng)/USB)2)開關(guān)量(TTL、電流環(huán)路、干接點、功率驅(qū)動)

3)模擬量(4~20ma,0~10ma,0~5V(平衡和非平衡信號))4)LED顯示:發(fā)光管、八字5)液晶顯示器6)蜂鳴器處理核心主要有:

1)8位單片機,主要就是51系列

2)32位arm單片機,主要有atmel和三星系列

3)還有一些專用的單片機,例如:MPS430,水表、電表、洗衣機、空調(diào)的單片機等等所謂系統(tǒng),也就是說,作為一個電子工程師,需要掌握以上所有方面的知識,才能做到兵來將擋,水來土掩,無論設計任務有什么樣的需求,都能應付自如,有多種方法可以實現(xiàn)同樣的目標,從中找到一個成本最低、質(zhì)量最高、可靠性最好的解決方案。

實際上,無論從事任何一種工作,對于本行業(yè)所需要掌握的知識應該是全面而系統(tǒng)的;一開始,由于工作經(jīng)歷的欠缺,沒有實際的經(jīng)驗,但是,可以通過廣泛的閱讀構(gòu)成系統(tǒng)的知識框架;形成這個框架后,在工作中親身實踐,和閱讀其他工程師的作品,再往里填充各種各樣的細節(jié),使之不斷豐滿、充實、正確。5.2任務分析

5.2.1初步判斷采用何種單片機完成此項任務

1)干接點

就是類似于機械接點,最簡單的就是按鍵,一般來說是輸入、輸出的繼電器的接點信號;無源;2)平衡信號:

類似RS422、RS485信號,是信號之間相互比較,來判斷是數(shù)字信號的1還是0;不容易收到干擾,傳輸距離遠;但是,最好使用雙絞線來傳輸;3)非平衡信號:

單端接地的信號,如:TTL電平、RS232等都是,特點是有一個公共的參考電壓,容易受到干擾,傳輸距離近;

可以通過網(wǎng)絡來查詢準確的解釋。4)線性電路類似于音頻放大電路就是,特點是:要求輸入和輸出形成了一個線性對應的關(guān)系;5)非線性電路

比如:無線電電路中的混頻器,將2個頻率合在一起,生成第三個頻率,就是非線性電路。好像還沒有聽說線性信號和非線性信號。只有模擬量和數(shù)字量信號;6)模擬量和數(shù)字量

模擬量是連續(xù)變化的信號,如:0~5V,4~20mA等;數(shù)字量是只有0、1兩種情況。5.251單片機系統(tǒng)的構(gòu)思?p>1.選用何種單片機

在我們的這個課程中,當然是選用51系列的CPU了;實際上,可以選用的CPU的種類很多,從處理能力來說:1)4位單片機2)8位單片機3)16位單片機4)32位ARM

就8位單片機,有專用的、通用的;也有高速的,還有的單片機具有A/D、D/A等各種資源;需要根據(jù)你的任務,選用合適的單片機完成任務。

對初學者而言,我們考慮的僅僅是如何使用51系列的單片機,如:89C51/52/54/58、78E52/54/58、77E58(雙串口)來完成設計任務。2.初步設計-寫出任務書

1)按照表格,對任務進行分析,判斷單片機的資源是否夠,如:運算速度,是否需要擴展、是否需要串口、是否需要實時時鐘等;選用什么調(diào)理電路,等等;2)在確認單片機能夠勝任工作后,對單片機的資源進行規(guī)劃:1.內(nèi)存分配2.I/O口分配3.定時器分配工作4.外部中斷分配

3)單片機外圍電路確認-開關(guān)量輸入和輸出調(diào)理電路(模擬量電路暫時不考慮)4)在以上分析的基礎上,設計單片機硬件框圖5)形成任務書初稿6)討論-修改-通過3.詳細設計1)原理圖

2)有3.3V和5V的混合邏輯設計嗎?3)PCB尺寸、定位孔和安裝方式

1.是正方形、長方形、圓形、三角還是其它的特殊形狀?2.是ISA總線嗎?3.是PCI總線嗎?4.是歐標的板卡嗎?

4)電源(AC220V/DC5V/DC12V,是否需要隔離)5)接插件封裝:1.采用直插、彎針?

2.3.81間距、5.08還是2.54間距(對應于:150mil/200mil/100mil)3.采用DB9/DB25/DB37/DB62?直的還是彎的?孔的還是針的4.有邊緣器件嗎?6)基本布局

是否合理?考慮到散熱了嗎?考慮到機箱內(nèi)是否有打架的地方?7)器件選型盡量選用著名品牌中的價格便宜的兼容器件;8)器件的冗余度

需要考慮到功耗、耐壓值和接口器件的可靠性;例如:

1.功耗,需要計算電阻、變壓器的功耗,適當留有50%以上的余量;

2.電解電容的耐壓值等:留有100%以上的余量,如:在DC5V電壓下,選用耐壓值25V的電容;

3.接口器件:對于接口器件,盡量使用DIP封裝的,便于更換;

9)成本分析(包括制版費、器件費和焊接、調(diào)試費用),作出預算,盡量降低成本,選用功能滿足價格便宜的器件,不同廠家之間的同樣的芯片價格相差比較遠10)電路板與機箱之間的安裝關(guān)系11)形成詳細設計初稿12)討論-修改-通過

4.在大腦中模擬電路板的外形、幾何尺寸和功能

就好像是三維動畫一樣,電子工程師需要在大腦中,在設計的整個過程中,對電路板的外形、接口、幾何尺寸、功能等反復在從各個角度去觀察、構(gòu)思,就好像有一個實際的電路板在腦子里一樣,謀定而后動;當然,這不是一蹴而就的。附:電子工程師培訓大綱(201*03110041)

愚以為,掌握了一下的硬件和軟件知識,基本上就可以成為一個合格的電子工程師:第一部分:硬件知識一、數(shù)字信號

1、TTL和帶緩沖的TTL信號2、RS232和定義

3、RS485/422(平衡信號)4、干接點信號二、模擬信號視頻1、非平衡信號2、平衡信號三、芯片1、封裝2、743、74044、74005、74LS5736、ULN201*7、74LS2448、74LS2409、74LS24510、74LS138/23811、CPLD(EPM7128)12、116113、max69114、max485/7517615、mc148916、mc148817、ICL232/max23218、89C51四、分立器件1、封裝

2、電阻:功耗和容值3、電容1)獨石電容2)瓷片電容3)電解電容4、電感

5、電源轉(zhuǎn)換模塊6、接線端子7、LED發(fā)光管

8、8字(共陽和共陰)9、三極管2N555110、蜂鳴器

五、單片機最小系統(tǒng)1、單片機

2、看門狗和上電復位電路3、晶振和瓷片電容六、串行接口芯片1、eeprom

2、串行I/O接口芯片3、串行AD、DA

4、串行LED驅(qū)動、max7129七、電源設計

1、開關(guān)電源:器件的選擇2、線性電源:1)變壓器2)橋3)電解電容3、電源的保護1)橋的保護2)單二極管保護八、維修1、電源2、看門狗3、信號九、設計思路1、電源:電壓和電流

2、接口:串口、開關(guān)量輸入、開關(guān)量輸出3、開關(guān)量信號輸出調(diào)理1)TTL—>繼電器

2)TTL—>繼電器(反向邏輯)3)TTL—>固態(tài)繼電器4)TTL—>LED(8字)5)繼電器—>繼電器6)繼電器—>固態(tài)繼電器4、開關(guān)量信號輸入調(diào)理1)干接點—>光耦2)TTL—>光耦

5、CPU處理能力的考慮6、成為產(chǎn)品的考慮:

1)電路板外形:大小尺寸、異形、連接器、空間體積2)電路板模塊化設計3)成本分析4)器件的冗余度1.電阻的功耗2.電容的耐壓值等5)機箱6)電源的選擇7)模塊化設計8)成本核算

1.如何計算電路板的成本?

2.如何降低成本?選用功能滿足價格便宜的器件十、思考題

1、如何檢測和指示RS422信號2、如何檢測和指示RS232信號3、設計一個4位8字的顯示板1)電源:DC122)接口:RS232

3)4位3”8字(連在一起)4)亮度檢測5)二級調(diào)光4、設計一個33位1”8字的顯示板1)電源:DC5V2)接口:RS232

3)3排11位8字,分4個、3個、4個3組,帶行與行之間帶間隔4)單片機最小系統(tǒng)5)譯碼邏輯

6)顯示驅(qū)動和驅(qū)動器件

5、設計一個PCL725和MOXAC168P的接口板1)電源:DC5V

2)接口:PCL725/MOXA8個RS2321.PCL725,直立DB37,孔2.MOXAC168P,DB62彎

3)開關(guān)量輸出信號調(diào)理:6個固態(tài)繼電器和8個繼電器,可以被任何一路信號控制和驅(qū)動,接口:固態(tài)繼電器5.08直立,繼電器3.81直立

4)開關(guān)量輸入調(diào)理:干接點閉合為1或0可選,接口:3.81直立5)RS232調(diào)理:1.LED指示

2.前4路RS232全信號,后4路只需要TX、RX、03.無需光電隔離

4.接口形式:DB9(針)直立第二部分:軟件知識一、匯編語言二、C51

該部分可以從市場上買到的N種開發(fā)板上學到,至于第一部分,需要人來帶吧

單片機的外部結(jié)構(gòu):1、DIP40雙列直插;

2、P0,P1,P2,P3四個8位準雙向I/O引腳;(作為I/O輸入時,要先輸出高電平)3、電源VCC(PIN40)和地線GND(PIN20);

4、高電平復位RESET(PIN9);(10uF電容接VCC與RESET,即可實現(xiàn)上電復位)

5、內(nèi)置振蕩電路,外部只要接晶體至X1(PIN18)和X0(PIN19);(頻率為主頻的12倍)6、程序配置EA(PIN31)接高電平VCC;(運行單片機內(nèi)部ROM中的程序)7、P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1

單片機內(nèi)部I/O部件:(所為學習單片機,實際上就是編程控制以下I/O部件,完成指定任務)1、四個8位通用I/O端口,對應引腳P0、P1、P2和P3;2、兩個16位定時計數(shù)器;(TMOD,TCON,TL0,TH0,TL1,TH1)3、一個串行通信接口;(SCON,SBUF)4、一個中斷控制器;(IE,IP)

針對AT89C52單片機,頭文件AT89x52.h給出了SFR特殊功能寄存器所有端口的定義。教科書的160頁給出了針對MCS51系列單片機的C語言擴展變量類型。C語言編程基礎:

1、十六進制表示字節(jié)0x5a:二進制為01011010B;0x6E為01101110。

2、如果將一個16位二進數(shù)賦給一個8位的字節(jié)變量,則自動截斷為低8位,而丟掉高8位。3、++var表示對變量var先增一;var表示對變量后減一。4、x|=0x0f;表示為x=x|0x0f;

5、TMOD=(TMOD&0xf0)|0x05;表示給變量TMOD的低四位賦值0x5,而不改變TMOD的高四位。

6、While(1);表示無限執(zhí)行該語句,即死循環(huán)。語句后的分號表示空循環(huán)體,也就是{;}在某引腳輸出高電平的編程方法:(比如P1.3(PIN4)引腳)

#include//該頭文檔中有單片機內(nèi)部資源的符號化定義,其中包含P1.3voidmain(void)//void表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機運行的復位入口{

P1_3=1;//給P1_3賦值1,引腳P1.3就能輸出高電平VCCWhile(1);//死循環(huán),相當LOOP:gotoLOOP;}

注意:P0的每個引腳要輸出高電平時,必須外接上拉電阻(如4K7)至VCC電源。在某引腳輸出低電平的編程方法:(比如P2.7引腳)

#include//該頭文檔中有單片機內(nèi)部資源的符號化定義,其中包含P2.7voidmain(void)//void表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機運行的復位入口{

P2_7=0;//給P2_7賦值0,引腳P2.7就能輸出低電平GNDWhile(1);//死循環(huán),相當LOOP:gotoLOOP;}

在某引腳輸出方波編程方法:(比如P3.1引腳)

#include//該頭文檔中有單片機內(nèi)部資源的符號化定義,其中包含P3.1voidmain(void)//void表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機運行的復位入口{

While(1)//非零表示真,如果為真則執(zhí)行下面循環(huán)體的語句{

P3_1=1;//給P3_1賦值1,引腳P3.1就能輸出高電平VCCP3_1=0;//給P3_1賦值0,引腳P3.1就能輸出低電平GND

}//由于一直為真,所以不斷輸出高、低、高、低,從而形成方波}

將某引腳的輸入電平取反后,從另一個引腳輸出:(比如P0.4=NOT(P1.1))

#include//該頭文檔中有單片機內(nèi)部資源的符號化定義,其中包含P0.4和P1.1voidmain(void)//void表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機運行的復位入口{P1_1=1;//初始化。P1.1作為輸入,必須輸出高電平While(1)//非零表示真,如果為真則執(zhí)行下面循環(huán)體的語句{

if(P1_1==1)//讀取P1.1,就是認為P1.1為輸入,如果P1.1輸入高電平VCC{P0_4=0;}//給P0_4賦值0,引腳P0.4就能輸出低電平GNDelse//否則P1.1輸入為低電平GND

//{P0_4=0;}//給P0_4賦值0,引腳P0.4就能輸出低電平GND{P0_4=1;}//給P0_4賦值1,引腳P0.4就能輸出高電平VCC}//由于一直為真,所以不斷根據(jù)P1.1的輸入情況,改變P0.4的輸出電平}

將某端口8個引腳輸入電平,低四位取反后,從另一個端口8個引腳輸出:(比如P2=NOT(P3))#include//該頭文檔中有單片機內(nèi)部資源的符號化定義,其中包含P2和P3voidmain(void)//void表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機運行的復位入口{

P3=0xff;//初始化。P3作為輸入,必須輸出高電平,同時給P3口的8個引腳輸出高電平While(1)//非零表示真,如果為真則執(zhí)行下面循環(huán)體的語句{//取反的方法是異或1,而不取反的方法則是異或0

P2=P3^0x0f//讀取P3,就是認為P3為輸入,低四位異或者1,即取反,然后輸出}//由于一直為真,所以不斷將P3取反輸出到P2}

注意:一個字節(jié)的8位D7、D6至D0,分別輸出到P3.7、P3.6至P3.0,比如P3=0x0f,則P3.7、P3.6、P3.5、P3.4四個引腳都輸出低電平,而P3.3、P3.2、P3.1、P3.0四個引腳都輸出高電平。同樣,輸入一個端口P2,即是將P2.7、P2.6至P2.0,讀入到一個字節(jié)的8位D7、D6至D0。

第一節(jié):單數(shù)碼管按鍵顯示

單片機最小系統(tǒng)的硬件原理接線圖:

1、接電源:VCC(PIN40)、GND(PIN20)。加接退耦電容0.1uF

2、接晶體:X1(PIN18)、X2(PIN19)。注意標出晶體頻率(選用12MHz),還有輔助電容30pF3、接復位:RES(PIN9)。接上電復位電路,以及手動復位電路,分析復位工作原理4、接配置:EA(PIN31)。說明原因。發(fā)光二極的控控制:單片機I/O輸出

將一發(fā)光二極管LED的正極(陽極)接P1.1,LED的負極(陰極)接地GND。只要P1.1輸出高電平VCC,LED就正向?qū)ǎ▽〞rLED上的壓降大于1V),有電流流過LED,至發(fā)LED發(fā)亮。實際上由于P1.1高電平輸出電阻為10K,起到輸出限流的作用,所以流過LED的電流小于(5V-1V)/10K=0.4mA。只要P1.1輸出低電平GND,實際小于0.3V,LED就不能導通,結(jié)果LED不亮。開關(guān)雙鍵的輸入:輸入先輸出高

一個按鍵KEY_ON接在P1.6與GND之間,另一個按鍵KEY_OFF接P1.7與GND之間,按KEY_ON后LED亮,按KEY_OFF后LED滅。同時按下LED半亮,LED保持后松開鍵的狀態(tài),即ON亮OFF滅。

#include#defineLEDP1^1//用符號LED代替P1_1#defineKEY_ONP1^6//用符號KEY_ON代替P1_6#defineKEY_OFFP1^7//用符號KEY_OFF代替P1_7

voidmain(void)//單片機復位后的執(zhí)行入口,void表示空,無輸入?yún)?shù),無返回值{

KEY_ON=1;//作為輸入,首先輸出高,接下KEY_ON,P1.6則接地為0,否則輸入為1KEY_OFF=1;//作為輸入,首先輸出高,接下KEY_OFF,P1.7則接地為0,否則輸入為1While(1)//永遠為真,所以永遠循環(huán)執(zhí)行如下括號內(nèi)所有語句{

if(KEY_ON==0)LED=1;//是KEY_ON接下,所示P1.1輸出高,LED亮if(KEY_OFF==0)LED=0;//是KEY_OFF接下,所示P1.1輸出低,LED滅}//松開鍵后,都不給LED賦值,所以LED保持最后按鍵狀態(tài)。

//同時按下時,LED不斷亮滅,各占一半時間,交替頻率很快,由于人眼慣性,看上去為半亮態(tài)}

數(shù)碼管的接法和驅(qū)動原理

一支七段數(shù)碼管實際由8個發(fā)光二極管構(gòu)成,其中7個組形構(gòu)成數(shù)字8的七段筆畫,所以稱為七段數(shù)碼管,而余下的1個發(fā)光二極管作為小數(shù)點。作為習慣,分別給8個發(fā)光二極管標上記號:a,b,c,d,e,f,g,h。對應8的頂上一畫,按順時針方向排,中間一畫為g,小數(shù)點為h。我們通常又將各二極與一個字節(jié)的8位對應,

a(D0),b(D1),c(D2),d(D3),e(D4),f(D5),g(D6),h(D7),相應8個發(fā)光二極管正好與單片機一個端口Pn的8個引腳連接,這樣單片機就可以通過引腳輸出高低電平控制8個發(fā)光二極的亮與滅,從而顯示各種數(shù)字和符號;對應字節(jié),引腳接法為:a(Pn.0),b(Pn.1),c(Pn.2),d(Pn.3),e(Pn.4),f(Pn.5),g(Pn.6),h(Pn.7)。

如果將8個發(fā)光二極管的負極(陰極)內(nèi)接在一起,作為數(shù)碼管的一個引腳,這種數(shù)碼管則被稱為共陰數(shù)碼管,共同的引腳則稱為共陰極,8個正極則為段極。否則,如果是將正極(陽極)內(nèi)接在一起引出的,則稱為共陽數(shù)碼管,共同的引腳則稱為共陽極,8個負極則為段極。以單支共陰數(shù)碼管為例,可將段極接到某端口Pn,共陰極接GND,則可編寫出對應十六進制碼的七段碼表字節(jié)數(shù)據(jù)如右圖:16鍵碼顯示的程序

我們在P1端口接一支共陰數(shù)碼管SLED,在P2、P3端口接16個按鍵,分別編號為KEY_0、KEY_1到KEY_F,操作時只能按一個鍵,按鍵后SLED顯示對應鍵編號。#include#defineSLEDP1#defineKEY_0P2^0#defineKEY_1P2^1#defineKEY_2P2^2#defineKEY_3P2^3#defineKEY_4P2^4#defineKEY_5P2^5#defineKEY_6P2^6#defineKEY_7P2^7#defineKEY_8P3^0#defineKEY_9P3^#defineKEY_AP3^2#defineKEY_BP3^3#defineKEY_CP3^4#defineKEY_DP3^5#defineKEY_EP3^6#defineKEY_FP3^7

CodeunsignedcharSeg7Code[16]=//用十六進數(shù)作為數(shù)組下標,可直接取得對應的七段編碼字節(jié)//

0123456789AbCdEF

{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};voidmain(void){

unsignedchari=0;//作為數(shù)組下標P2=0xff;//P2作為輸入,初始化輸出高P3=0xff;//P3作為輸入,初始化輸出高While(1){

if(KEY_0==0)i=0;if(KEY_1==0)i=1;if(KEY_2==0)i=2;if(KEY_3==0)i=3;if(KEY_4==0)i=4;if(KEY_5==0)i=5;if(KEY_6==0)i=6;if(KEY_7==0)i=7;if(KEY_8==0)i=8;if(KEY_9==0)i=9;if(KEY_A==0)i=0xA;if(KEY_B==0)i=0xB;if(KEY_C==0)i=0xC;if(KEY_D==0)i=0xD;if(KEY_E==0)i=0xE;if(KEY_F==0)i=0xF;SLED=Seg7Code[i];//開始時顯示0,根據(jù)i取應七段編碼}}

第二節(jié):雙數(shù)碼管可調(diào)秒表

解:只要滿足題目要求,方法越簡單越好。由于單片機I/O資源足夠,所以雙數(shù)碼管可接成靜態(tài)顯示方式,兩個共陰數(shù)碼管分別接在P1(秒十位)和P2(秒個位)口,它們的共陰極都接地,安排兩個按鍵接在P3.2(十位數(shù)調(diào)整)和P3.3(個位數(shù)調(diào)整)上,為了方便計時,選用12MHz的晶體。為了達到精確計時,選用定時器方式2,每計數(shù)250重載一次,即250us,定義一整數(shù)變量計數(shù)重載次數(shù),這樣計數(shù)4000次即為一秒。定義兩個字節(jié)變量S10和S1分別計算秒十位和秒個位。編得如下程序:#include

CodeunsignedcharSeg7Code[16]=//用十六進數(shù)作為數(shù)組下標,可直接取得對應的七段編碼字節(jié)//

0123456789AbCdEF{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};voidmain(void){

unsignedintus250=0;unsignedchars10=0;unsignedchars1=0;

unsignedcharkey10=0;//記憶按鍵狀態(tài),為1按下unsignedcharkey1=0;//記憶按鍵狀態(tài),為1按下//初始化定時器Timer0TMOD=(TMOD&0xF0)|0x02;

TH1=-250;//對于8位二進數(shù)來說,-250=6,也就是加250次1時為256,即為0TR1=1;

while(1){//----------循環(huán)1P1=Seg7Code[s10];//顯示秒十位P2=Seg7Code[s1];//顯示秒個位while(1){//----------循環(huán)2//計時處理if(TF0==1){TF0=0;

if(++us250>=4000){us250=0;if(++s1>=10){s1=0;

if(++s10>=6)s10=0;}

break;//結(jié)束“循環(huán)2”,修改顯示}}

//按十位鍵處理

P3.2=1;//P3.2作為輸入,先要輸出高電平if(key10==1){//等松鍵if(P3.2==1)key10=0;}

else{//未按鍵if(P3.2==0){key10=1;

if(++s10>=6)s10=0;

break;//結(jié)束“循環(huán)2”,修改顯示}}

//按個位鍵處理

P3.3=1;//P3.3作為輸入,先要輸出高電平if(key1==1)//等松鍵{if(P3.3==1)key1=0;}else{//未按鍵

if(P3.3==0){key1=1;if(++s1>=10)s1=0;

break;//結(jié)束“循環(huán)2”,修改顯示}}

}//循環(huán)2’end}//循環(huán)1’end}//main’end

第三節(jié):十字路***通燈

如果一個單位時間為1秒,這里設定的十字路***通燈按如下方式四個步驟循環(huán)工作:?60個單位時間,南北紅,東西綠;?10個單位時間,南北紅,東西黃;?60個單位時間,南北綠,東西紅;?10個單位時間,南北黃,東西紅;

解:用P1端口的6個引腳控制交通燈,高電平燈亮,低電平燈滅。#include

//sbit用來定義一個符號位地址,方便編程,提高可讀性,和可移植性sbitSNRed=P1^0;//南北方向紅燈sbitSNYellow=P1^1;//南北方向黃燈sbitSNGreen=P1^2;//南北方向綠燈sbitEWRed=P1^3;//東西方向紅燈sbitEWYellow=P1^4;//東西方向黃燈sbitEWGreen=P1^5;//東西方向綠燈/*用軟件產(chǎn)生延時一個單位時間*/voidDelay1Unit(void){

unsignedinti,j;for(i=0;i}}

第四節(jié):數(shù)碼管驅(qū)動顯示“12345678”

P1端口接8聯(lián)共陰數(shù)碼管SLED8的段極:P1.7接段h,,P1.0接段a

P2端口接8聯(lián)共陰數(shù)碼管SLED8的段極:P2.7接左邊的共陰極,,P2.0接右邊的共陰極方案說明:晶振頻率fosc=12MHz,數(shù)碼管采用動態(tài)刷新方式顯示,在1ms定時斷服務程序中實現(xiàn)

#include

unsignedcharDisBuf[8];//全局顯示緩沖區(qū),DisBuf[0]對應右SLED,DisBuf[7]對應左SLED,

voidDisplayBrush(void)

{codeunsignedcharcathode[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//陰極控制碼

CodeunsignedcharSeg7Code[16]=//用十六進數(shù)作為數(shù)組下標,可直接取得對應的七段編碼字節(jié)

{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};staticunsignedchari=0;//(0≤i≤7)循環(huán)刷新顯示,由于是靜態(tài)變量,此賦值只做一次。

P2=0xff;//顯示消隱,以免下一段碼值顯示在前一支SLED

P1=Seg7Code[DisBuf[i]];//從顯示緩沖區(qū)取出原始數(shù)據(jù),查表變?yōu)槠叨未a后送出顯示P2=cathode[i];//將對應陰極置低,顯示if(++i>=8)i=0;//指向下一個數(shù)碼管和相應數(shù)據(jù)}

voidTimer0IntRoute(void)interrupt1{

TL0=-1000;//由于TL0只有8bits,所以將(-1000)低8位賦給TL0TH0=(-1000)>>8;//。-1000)的高8位賦給TH0,重新定時1msDisplayBrush();}

voidTimer0Init(void)

{TMOD=(TMOD&0xf0)|0x01;//初始化,定時器T0,工作方式1TL0=-1000;//定時1msTH0=(-1000)>>8;

TR0=1;//允許T0開始計數(shù)

ET0=1;//允許T0計數(shù)溢出時產(chǎn)生中斷請求}

voidDisplay(unsignedcharindex,unsignedchardataValue){DisBuf[index]=dataValue;}voidmain(void){

unsignedchari;

for(i=0;iTimer0Init();

EA=1;//允許CPU響應中斷請求While(1);}

第五節(jié):鍵盤驅(qū)動

指提供一些函數(shù)給任務調(diào)用,獲取按鍵信息,或讀取按鍵值。定義一個頭文檔,描述可用函數(shù),如下:

#ifndef_KEY_H_//防止重復引用該文檔,如果沒有定義過符號_KEY_H_,則編譯下面語句#define_KEY_H_//只要引用過一次,即#include,則定義符號_KEY_H_unsignedcharkeyHit(void);//如果按鍵,則返回非0,否則返回0

unsignedcharkeyGet(void);//讀取按鍵值,如果沒有按鍵則等待到按鍵為止voidkeyPut(unsignedcharucKeyVal);//保存按鍵值ucKeyVal到按鍵緩沖隊列末voidkeyBack(unsignedcharucKeyVal);//退回鍵值ucKeyVal到按鍵緩沖隊列首#endif

定義函數(shù)體文檔KEY.C,如下:#include“key.h”

#defineKeyBufSize16//定義按鍵緩沖隊列字節(jié)數(shù)

unsignedcharKeyBuf[KeyBufSize];//定義一個無符號字符數(shù)組作為按鍵緩沖隊列。該隊列為先進

//先出,循環(huán)存取,下標從0到KeyBufSize-1

unsignedcharKeyBufWp=0;//作為數(shù)組下標變量,記錄存入位置unsignedcharKeyBufRp=0;//作為數(shù)組下標變量,記錄讀出位置//如果存入位置與讀出位置相同,則表明隊列中無按鍵數(shù)據(jù)unsignedcharkeyHit(void)

{if(KeyBufWp==KeyBufRp)return(0);elsereturn(1);}unsignedcharkeyGet(void)

{unsignedcharretVal;//暫存讀出鍵值

while(keyHit()==0);//等待按鍵,因為函數(shù)keyHit()的返回值為0表示無按鍵retVal=KeyBuf[KeyBufRp];//從數(shù)組中讀出鍵值

if(++KeyBufRp>=KeyBufSize)KeyBufRp=0;//讀位置加1,超出隊列則循環(huán)回初始位置return(retVal);}

voidkeyPut(unsignedcharucKeyVal)

{KeyBuf[KeyBufWp]=ucKeyVal;//鍵值存入數(shù)組

if(++KeyBufWp>=KeyBufSize)KeyBufWp=0;//存入位置加1,超出隊列則循環(huán)回初始位置}

/*****************************************************************************************

由于某種原因,讀出的按鍵,沒有用,但其它任務要用該按鍵,但傳送又不方便。此時可以退回按鍵隊列。就如取錯了信件,有必要退回一樣

******************************************************************************************/

voidkeyBack(unsignedcharucKeyVal){/*

如果KeyBufRp=0;減1后則為FFH,大于KeyBufSize,即從數(shù)組頭退回到數(shù)組尾。或者由于干擾使得KeyBufRp超出隊列位置,也要調(diào)整回到正常位置,*/

if(--KeyBufRp>=KeyBufSize)KeyBufRp=KeyBufSize-1;KeyBuf[KeyBufRp]=ucKeyVal;//回存鍵值}

下面漸進講解鍵盤物理層的驅(qū)動。

電路共同點:P2端口接一共陰數(shù)碼管,共陰極接GND,P2.0接a段、P2.1接b段、、P2.7接h段。

軟件共同點:codeunsignedcharSeg7Code[10]是七段數(shù)碼管共陰編碼表。CodeunsignedcharSeg7Code[16]=//

0123456789AbCdEF

{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

例一:P1.0接一按鍵到GND,鍵編號為‘6’,顯示按鍵。#include#include“KEY.H”voidmain(void)

{P1_0=1;//作為輸入引腳,必須先輸出高電平while(1)//永遠為真,即死循環(huán)

{if(P1_0==0)//如果按鍵,則為低電平{keyPut(6);//保存按鍵編號值為按鍵隊列

while(P1_0==0);//如果一直按著鍵,則不停地執(zhí)行該循環(huán),實際是等待松鍵}

if(keyHit()!=0)//如果隊列中有按鍵

P2=Seg7Code[keyGet()];//從隊列中取出按鍵值,并顯示在數(shù)碼管上}}

來源:嵌入式在線社區(qū)

在某引腳輸出方波編程方法:(比如P3.1引腳)

#include//該頭文檔中有單片機內(nèi)部資源的符號化定義,其中包含P3.1

voidmain(void)//void表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機運行的復位入口{

While(1)//非零表示真,如果為真則執(zhí)行下面循環(huán)體的語句{P3_1=1;//給P3_1賦值1,引腳P3.1就能輸出高電平VCCP3_1=0;//給P3_1賦值0,引腳P3.1就能輸出低電平GND

}//由于一直為真,所以不斷輸出高、低、高、低……,從而形成方波}

將某引腳的輸入電平取反后,從另一個引腳輸出:(比如P0.4=NOT(P1.1))

#include//該頭文檔中有單片機內(nèi)部資源的符號化定義,其中包含P0.4和P1.1voidmain(void)//void表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機運行的復位入口{

P1_1=1;//初始化。P1.1作為輸入,必須輸出高電平

While(1)//非零表示真,如果為真則執(zhí)行下面循環(huán)體的語句{

if(P1_1==1)//讀取P1.1,就是認為P1.1為輸入,如果P1.1輸入高電平VCC{P0_4=0;}//給P0_4賦值0,引腳P0.4就能輸出低電平GNDelse//否則P1.1輸入為低電平GND

//{P0_4=0;}//給P0_4賦值0,引腳P0.4就能輸出低電平GND{P0_4=1;}//給P0_4賦值1,引腳P0.4就能輸出高電平VCC

}//由于一直為真,所以不斷根據(jù)P1.1的輸入情況,改變P0.4的輸出電平}

將某端口8個引腳輸入電平,低四位取反后,從另一個端口8個引腳輸出:(比如P2=NOT(P3))

#include//該頭文檔中有單片機內(nèi)部資源的符號化定義,其中包含P2和P3

voidmain(void)//void表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機運行的復位入口{

P3=0xff;//初始化。P3作為輸入,必須輸出高電平,同時給P3口的8個引腳輸出高電平While(1)//非零表示真,如果為真則執(zhí)行下面循環(huán)體的語句{//取反的方法是異或1,而不取反的方法則是異或0

P2=P3^0x0f//讀取P3,就是認為P3為輸入,低四位異或者1,即取反,然后輸出}//由于一直為真,所以不斷將P3取反輸出到P2}

注意:一個字節(jié)的8位D7、D6至D0,分別輸出到P3.7、P3.6至P3.0,比如P3=0x0f,則P3.7、P3.6、P3.5、P3.4四個引腳都輸出低電平,而P3.3、P3.2、P3.1、P3.0四個引腳都輸出高電平。同樣,輸入一個端口P2,即是將P2.7、P2.6至P2.0,讀入到一個字節(jié)的8位D7、D6至D0。

1、接電源:VCC(PIN40)、GND(PIN20)。加接退耦電容0.1uF2、接晶體:X1(PIN18)、X2(PIN19)。注意標出晶體頻率(選用12MHz),還有輔助電容30pF

3、接復位:RES(PIN9)。接上電復位電路,以及手動復位電路,分析復位工作原理4、接配置:EA(PIN31)。說明原因。多余的引腳如單片機不用IO口輸入口不要懸空,尤其是輸入阻抗高的,更不能懸空。例如在CMOS電路中,如果輸入口懸空,可能會導致輸入電平處于非0和非1的中間狀態(tài),這將會使輸出級的上下兩個推動管同時導通,從而產(chǎn)生很大電流。一般的做法是通過一個電阻(例如10K或者1K)上拉到高電平或者下拉到低電平。而對于不用的運放,則可以將輸出端直接接回反向輸入端,并把同向輸入端接至參考電平點(一般單電源使用時(或者干脆將雙電源看成一個單電源),用1/2Vcc作為參考電平,因此有些資料上也會寫連接至halfsupply)。輸出口則可以懸空。對于IO口,一般是將其設置為輸入口,并像上面的輸入口那樣處理。如果是IO口內(nèi)帶上拉電阻的,則可使用內(nèi)部上拉電阻使其電位固定。不設置成輸出口,是為了防止誤操作時,損壞IO口

P0口上拉電阻選擇

如果是驅(qū)動led,那么用1K左右的就行了。如果希望亮度大一些,電阻可減小,最小不要小于200歐姆,否則電流太大;如果希望亮度小一些,電阻可增大,增加到多少呢,主要看亮度情況,以亮度合適為準,一般來說超過3K以上時,亮度就很弱了,但是對于超高亮度的LED,有時候電阻為10K時覺得亮度還能夠用。我通常就用1k的。

對于驅(qū)動光耦合器,如果是高電位有效,即耦合器輸入端接端口和地之間,那么和LED的情況是一樣的;如果是低電位有效,即耦合器輸入端接端口和VCC之間,那么除了要串接一個14.7k之間的電阻以外,同時上拉電阻的阻值就可以用的特別大,用100k500K之間的都行,當然用10K的也可以,但是考慮到省電問題,沒有必要用那么小的。

對于驅(qū)動晶體管,又分為PNP和NPN管兩種情況:對于NPN,毫無疑問NPN管是高電平有效的,因此上拉電阻的阻值用2K20K之間的,具體的大小還要看晶體管的集電極接的是什么負載,對于LED類負載,由于發(fā)管電流很小,因此上拉電阻的阻值可以用20k的,但是對于管子的集電極為繼電器負載時,由于集電極電流大,因此上拉電阻的阻值最好不要大于4.7K,有時候甚至用2K的。對于PNP管,毫無疑問PNP管是低電平有效的,因此上拉電阻的阻值用100K以上的就行了,且管子的基極必須串接一個110K的電阻,阻值的大小要看管子集電極的負載是什么,對于LED類負載,由于發(fā)光電流很小,因此基極串接的電阻的阻值可以用20k的,但是對于管子的集電極為繼電器負載時,由于集電極電流大,因此基極電阻的阻值最好不要大于4.7K。

對于驅(qū)動TTL集成電路,上拉電阻的阻值要用110K之間的,有時候電阻太大的話是拉不起來的,因此用的阻值較小。但是對于CMOS集成電路上拉電阻的阻值就可以用的很大,一般不小于20K,我通常用100K的,實際上對于CMOS電路,上拉電阻的阻值用1M的也是可以的,但是要注意上拉電阻的阻值太大的時候,容易產(chǎn)生干擾,尤其是線路板的線條很長的時候,這種干擾更嚴重,這種情況下上拉電阻不宜過大,一般要小于100K,有時候甚至小于10K。轉(zhuǎn)載自:關(guān)于51單片機P0口的結(jié)構(gòu)及上拉問題(轉(zhuǎn))--小米的筆記參考資料:

51單片機I/O口使用經(jīng)驗

友情提示:本文中關(guān)于《51AVR單片機學習小結(jié)》給出的范例僅供您參考拓展思維使用,51AVR單片機學習小結(jié):該篇文章建議您自主創(chuàng)作。

來源:網(wǎng)絡整理 免責聲明:本文僅限學習分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。


51AVR單片機學習小結(jié)》由互聯(lián)網(wǎng)用戶整理提供,轉(zhuǎn)載分享請保留原作者信息,謝謝!
鏈接地址:http://www.taixiivf.com/gongwen/673011.html
相關(guān)文章