51AVR單片機(jī)學(xué)習(xí)小結(jié)
51/AVR單片機(jī)學(xué)習(xí)小結(jié)
發(fā)布于201*-11-1217:31:21|22次閱讀
這是我自己在這段時(shí)間的技術(shù)知識(shí)小結(jié),上傳與大家分享,要是有什
么出漏請(qǐng)指出!這個(gè)學(xué)期我主要在學(xué)習(xí)51單片機(jī),在學(xué)習(xí)單片機(jī)的過程中,讓我學(xué)到了很多電子知識(shí),進(jìn)一步增廣了我的電子視野。同時(shí)也加深了我對(duì)電子的興趣。更重要的是大大提高了我的動(dòng)手能力。剛剛開始的時(shí)候,還有點(diǎn)懷疑自己是不是搞電子的料。因?yàn)椋婚_始很多都不懂,處處破壁。雖然,比較常問問題,不管簡(jiǎn)單的還是比較難的。但是問的太多了也不是好事。畢竟要是自己花多點(diǎn)時(shí)間去思考還是有利的。在比較艱難的入門中,我慢慢需找自己的學(xué)習(xí)方法,不斷的總結(jié)學(xué)習(xí)成果。不久,我就掌握了一種比較合適的學(xué)習(xí)方法。到了這里我已經(jīng)具備了自學(xué)的基本能力。知識(shí)小結(jié):1)下面簡(jiǎn)單介紹一下做電路板的過程:1、設(shè)計(jì)電路,用Protel畫出電路的PCB電路圖;2、把PCB電路圖附到銅板上;3、腐蝕電路板,一般用三氯化鐵做腐蝕液;4、?祝附;5、調(diào)試,整個(gè)過程完成。其中,要用到的知識(shí)還是挺多的。最基礎(chǔ)的就是必須要懂得一些簡(jiǎn)單的電路知識(shí)、常用元件功能作用等。所以,對(duì)于搞電子的愛好者,必須熟練掌握《電路分析》、《電工》《模擬電子技術(shù)》、《數(shù)字電子技術(shù)》等理論基礎(chǔ)。這個(gè)知識(shí)對(duì)于看電子雜志、讀電路圖、設(shè)計(jì)電路非常有用。還有幾個(gè)常用軟件也是非常有用的,數(shù)模電常用的仿真軟件Multisim,這個(gè)軟件主要以分立元件為主,可以仿真大量的數(shù)字電路和模擬電路?梢暬瘡(qiáng)度非常高,使用者可以隨心所欲的搞一些設(shè)計(jì)和仿真。此軟件簡(jiǎn)單易用,對(duì)于初學(xué)電路的學(xué)習(xí)者非常適合。介紹一本對(duì)初學(xué)者很有幫助的書《電子設(shè)計(jì)從零開始》,這本書通俗易懂的講述了常用元件的使用和功能,常見的電路小知識(shí),以及簡(jiǎn)單的小制作、小發(fā)明的整個(gè)過程,是一本不錯(cuò)的書。設(shè)計(jì)PCB電路,一般都是用Protel軟件,Protel也有仿真功能,不過只能仿真哪些有源軟件,比較局限。其用處最大的就是可以讓用戶設(shè)計(jì)自己的PCB電路圖,不管多大的工程基本上在Protel上都能滿足用戶的需求。例如:可以利用Protel層次原理圖的功能,把一個(gè)超大規(guī)模的電路工程,分成幾個(gè)模塊,幾個(gè)人分工把項(xiàng)目完成。最方便的就是可以自己在此軟件上畫所需要的元件原理圖和封裝。Protel也不難使用,自己找本書看看或者叫人演示一遍畫PCB電路圖給你看,很快就能掌握。2)在使用Protel過程中我總結(jié)出4小點(diǎn):1、原理圖必須把線連接好或者標(biāo)上號(hào);2、PCB圖必須把元件封裝的大小、方向放對(duì);3、畫元件原理圖必須把引腳標(biāo)正確;4、畫元件封裝必須把封裝大小、引腳間距的尺寸畫正確以及特性分析清楚。小結(jié)一下51單片機(jī)的學(xué)習(xí)51單片機(jī)有40個(gè)引腳,32個(gè)IO口,一個(gè)Vcc,一個(gè)GND,兩個(gè)晶振引腳,一個(gè)復(fù)位引腳。最小系統(tǒng)有3部分組成,分別為復(fù)位電路、晶振電路、電源。電源自然是給單片機(jī)工作的電壓。晶振單片機(jī)中好比人的心臟,起振單片機(jī)內(nèi)部振蕩電路。復(fù)位電路用來給單片機(jī)工作復(fù)位。每次單片機(jī)工作都是要先復(fù)位,然后單片機(jī)從00地址單元掃描,一直掃描下來,并執(zhí)行該單元的代碼。51單片機(jī)說簡(jiǎn)單一點(diǎn)就是,通過控制它IO的高低電平來實(shí)現(xiàn)相應(yīng)功能的。要想快速把51單片機(jī)學(xué)好,建議初學(xué)者自己買一塊51學(xué)習(xí)板,或者自己做一塊功能比較齊全的開發(fā)板。但是,作為初學(xué)者還是最好自己買一個(gè)塊。買的學(xué)習(xí)板,一般它會(huì)配有該實(shí)驗(yàn)板的配套學(xué)習(xí)資料和相應(yīng)程序。學(xué)習(xí)者就可以試驗(yàn)每一個(gè)模塊的功能和效果,雖然,這好像只是在抄別人的東西,但是,模仿一種最快的學(xué)習(xí)速度,通過模仿可以高效率的學(xué)到更多有用的東西,而且,你可以學(xué)習(xí)它的優(yōu)勢(shì),并且可以用自己的方法去改動(dòng)把它變?yōu)樽约旱臇|西。4)下面簡(jiǎn)述一下學(xué)習(xí)一個(gè)模塊的步驟:1、在學(xué)習(xí)板上試驗(yàn)該模塊的程序,看效果、看現(xiàn)象,并且自己內(nèi)心要清楚現(xiàn)象是怎樣發(fā)生;2、查看實(shí)現(xiàn)該功能模塊的硬件電路,再看學(xué)習(xí)程序;3、直到看懂程序,就馬上自己動(dòng)手一步一步試著,按照自己的方法去實(shí)現(xiàn)該功能;4、當(dāng)理解了該模塊的功能之后,可以動(dòng)手自己做一個(gè)小制作,或者仿真等。上面的是學(xué)習(xí)一個(gè)功能模塊的大概方法和指導(dǎo)方向,其實(shí),要學(xué)習(xí)一個(gè)模塊是要花上一定的時(shí)間和精力的。特別是比較難的模塊,可能會(huì)涉及到了幾個(gè)不懂的芯片,但是,只要自己有耐心和毅力,再難只要花上該花的時(shí)間,就一定能夠把知識(shí)掌握。在這里,建議大家加入幾個(gè)學(xué)習(xí)群或者論壇,這對(duì)于初學(xué)單片機(jī)的同學(xué)非常有幫助,因?yàn),在學(xué)習(xí)的過程中難免會(huì)遇到大大小小的問題,那么自己就可以在論壇上發(fā)帖或者在Q群上求助,不過最有效率的提問,就是自己能夠結(jié)識(shí)一兩個(gè)比較厲害的單片機(jī)網(wǎng)友、同學(xué)或者老師等。學(xué)習(xí)51單片機(jī)要用到的軟件還是挺多的,最常用的就是keil,可以在keil上面編寫單片機(jī)C語言或者單片機(jī)匯編語言,也可以做相應(yīng)的仿真和程序的調(diào)試,以及生成程序的二進(jìn)制代碼。用STC燒寫軟件燒寫STC單片機(jī)芯片,用progsip軟件燒寫Atmel公司的單片機(jī)芯片,這里的燒寫是意思是把程序的二進(jìn)制代碼下載到單片機(jī)芯片里,這樣單片機(jī)就有了相應(yīng)功能的程序,里面有了程序單片機(jī)就可以實(shí)現(xiàn)相應(yīng)的功能。以及用Proteus軟件進(jìn)行硬件仿真,Proteus是學(xué)習(xí)單片機(jī)最常用的仿真軟件,此軟件功能非常強(qiáng)大,不過使用起來,感覺比較有點(diǎn)麻煩,不過只要能夠掌握幾個(gè)常用的快捷鍵就方便很多了。5)AVR單片機(jī)AVR單片機(jī)是吸取了51單片機(jī)的優(yōu)點(diǎn),并增加了很多功能。AVR單片機(jī)的型號(hào)也很多,一般學(xué)習(xí)者都用ATmega16的,不過M16的引腳跟51單片機(jī)不兼容,AVR只有一種芯片,ATmega8518芯片才與51單片機(jī)引腳相兼容,簡(jiǎn)單的說就是可以用M8518的芯片放到51單片機(jī)的開發(fā)板上,把復(fù)位電路改成低電平復(fù)位就OK了!AVR單片機(jī)功能比51強(qiáng),從而,它在使用上也會(huì)麻煩的多。AVR一般常用到一下幾個(gè)軟件:1、ICCAVR用來編寫程序,生成二進(jìn)制代碼;2、AVRStudio用來調(diào)試程序,比keil好用且功能強(qiáng),最好的就是可視化強(qiáng)度高;并且可以下載程序到單片機(jī)中;比較麻煩的就是IO口的初始化定義和熔絲值的設(shè)置。學(xué)習(xí)的方法與51單片機(jī)差不多都是,以模仿快速的理解并掌握變成自己的東西。
擴(kuò)展閱讀:學(xué)習(xí)單片機(jī)心得
學(xué)習(xí)單片機(jī)的心得
一般我們現(xiàn)在用的比較多的的MCS-51的單片機(jī),它的資料比較多,用的人也很多,市場(chǎng)也很大,我們平時(shí)說的C51,C52,S51,S52都是51內(nèi)核的,只是內(nèi)存容量有差別,或是燒寫程序的方法不同。只要你學(xué)會(huì)了51,那什么凌陽,AVR,什么樣原理都是一樣。觸類旁通。
先說說就我個(gè)人的體會(huì)怎么樣才能更快的學(xué)會(huì)單片機(jī)這門課。單片機(jī)這門課是一項(xiàng)非常重視動(dòng)手實(shí)踐的科目,不能總是看書,但是學(xué)習(xí)它首先必須得看書,因?yàn)閺臅心阈枰蟾帕私庖幌,單片機(jī)的各個(gè)功能寄存器,而說明白點(diǎn),我們使用單片機(jī)就是用軟件去控制單片機(jī)的各個(gè)功能寄存器,再說明白點(diǎn),就是控制單片機(jī)那些管角的電平什么時(shí)候輸出高,什么時(shí)候輸出低。而由這些高低電平的變化來控制由單片機(jī)為核心的系統(tǒng)板。從而實(shí)現(xiàn)我們需要的各個(gè)功能。對(duì)于看書,我們只需大概看看了解一個(gè)單片機(jī)各個(gè)管角都是干什么的?都有什么樣的功能,能實(shí)現(xiàn)什么樣的功能?其實(shí)第一次,第二次你可能都看不明白,但這不要緊,因?yàn)槟銢]有和實(shí)際的物體建立起來這樣一種互通的觀念,所以我總是說,學(xué)單片機(jī)看書看兩三天的時(shí)間就夠了,看小說你一天能看五六本,看單片機(jī)你兩三天看兩三邊就夠了,而且可以不用很仔細(xì)的看。推薦一本書,就這一本就足夠,書名忘了,是哈爾濱工業(yè)大學(xué)出版社出的的,作者是張毅剛。大概三四百頁吧。大概了解一下書上的內(nèi)容后,就開始做實(shí)踐,這是非常關(guān)鍵的,如果說學(xué)單片機(jī)你不做實(shí)踐那是不可能學(xué)會(huì)的,關(guān)于做實(shí)踐有兩種方法你可以選擇,一種方法:你自己花錢買一塊單片機(jī)的學(xué)習(xí)板,不要求功能太全的,對(duì)于初學(xué)者來說你買功能非常多的那種板子,上面有很多東西你這輩子都用不著,我建議有流水燈,數(shù)碼管,獨(dú)立鍵盤,矩陣鍵盤,有AD或DA(原理一樣),有個(gè)簡(jiǎn)單的液晶,有蜂鳴器,這就差不多了,如果上面我提到的這些東西你能讓它都熟練工作了,那可以說對(duì)于單片機(jī)方面的硬件你已經(jīng)入門了,再剩下的就是自己練習(xí)設(shè)計(jì)其它電路,這需要你練習(xí),不斷的積累經(jīng)驗(yàn),只要過了第一關(guān),后面的路就好走多了,萬事開頭難,大家可能都聽過。方法二:你身邊如果有單片機(jī)方面的高手,向他求助,讓你幫你搭個(gè)簡(jiǎn)單的最最小系統(tǒng)板,其實(shí)對(duì)于高手來說,做個(gè)單片機(jī)的小系統(tǒng)板只需要一分鐘的時(shí)間,而對(duì)于初學(xué)者可就難多了,因?yàn)橹挥心銓?duì)硬件了解了才會(huì)對(duì)它熟悉。而如果你身邊沒有這樣的高手,又找不到可以幫助你的人,那我勸你最好是自己買上一塊,畢竟自己有一塊要方便的多,以后做單片機(jī)類的小實(shí)驗(yàn)時(shí)都能用得上,還剩事。(買的時(shí)候找我)
有了單片機(jī)學(xué)習(xí)板之后你就是不停的練習(xí)了,我在后面會(huì)講到我的大學(xué)生活,如果你感興趣你可以看看,如果不感興趣呢,看完這段你就可以繼續(xù)你的快樂生活了。前面我提到單片機(jī)是一項(xiàng)非常注重實(shí)踐的學(xué)科,你最好是自己有臺(tái)電腦,一天少看電影,少打游戲,把學(xué)習(xí)板和電腦連好,打開調(diào)試軟件坐在電腦前,先學(xué)會(huì)怎么用調(diào)試軟件,然后從最簡(jiǎn)單的流水燈實(shí)驗(yàn)做起,等你能讓那八個(gè)流水燈按照你的意愿隨意流動(dòng)時(shí)你已經(jīng)入門了,你會(huì)發(fā)現(xiàn)單片機(jī)是多么迷人的東西啊,太好玩了,這不是在學(xué)習(xí)知識(shí),而是在玩,當(dāng)你編寫的程序按你的意愿實(shí)現(xiàn)時(shí)你比做什么事都開心,你會(huì)上癮的,真的。做電子類的人真的會(huì)上癮。然后讓數(shù)碼管亮起來,這兩項(xiàng)會(huì)了后,你已經(jīng)不能自拔了,你已經(jīng)開始考慮你這輩子要走哪一行了。就是要這樣練習(xí),在寫程序的時(shí)候你肯定會(huì)遇到很多問題,而這時(shí)你再去翻書找,或是問別人,當(dāng)?shù)玫浇獯鸷竽銜?huì)記住一輩子的,知識(shí)必須用于實(shí)際才能發(fā)揮出它的作用,否則你自己好好想想,你上了這么多年大學(xué),天天上課,你在課堂上學(xué)到了什么?你不是為了每學(xué)期的期末考試忙碌嗎?考完試一看得了90分,哈哈哈好高興啊,下學(xué)期開學(xué)回來忘的一干二凈,是不是?你學(xué)到什么了?但是我告訴你單片機(jī)你一旦學(xué)會(huì),永遠(yuǎn)不會(huì)忘了。另外我再說說用匯編和C語言編程的問題。很多同學(xué)大一二就開設(shè)了C語言的課,我也上過,我知道那時(shí)天天就是幾乘幾,幾加幾啊,求個(gè)階乘啊。學(xué)完了有什么用?讓你用C語言編單片機(jī)的程序你是不是就悄悄了?所以書上的東西我們必須要實(shí)踐。單片機(jī)編程你想用C語言和匯編語言都可以,但是我建議你用C語言比較好,如果原來有C語言的基礎(chǔ)那學(xué)起來會(huì)更好,如果沒有,也可以邊學(xué)單片機(jī)邊學(xué)C語言,C語言也挺簡(jiǎn)單,只是一門工具而已,我勸你最好學(xué)會(huì),將來肯定用得著,要不你以后也得學(xué),你一點(diǎn)匯編都不會(huì)根本無所謂,但你一點(diǎn)C語言都不會(huì)那你將來會(huì)吃苦頭。匯編寫程序代碼效率高,但相對(duì)難度較大,而且很羅嗦,尤其是遇到算法方面的問題時(shí),根本是麻煩的不得了,現(xiàn)在單片機(jī)的主頻在不斷的提高,我們完全不需要那么高效率的代碼,因?yàn)橛懈哳l率的時(shí)鐘,單片機(jī)的ROM也在不斷的提高,足夠裝得下你用C語言寫的任何代碼,C語言的資料又多又好找,將來可移植性非常好,只需要變一個(gè)IO口寫個(gè)溫度傳感器的程序在哪里都能用,所以我勸大家用C語言。
總結(jié)上面,只要你有信心,做事能堅(jiān)持到底,有不成功不放棄的強(qiáng)烈意志。那學(xué)個(gè)單片機(jī)來說就是件非常容易的事。
步驟:1。找本書大概了解一下單片機(jī)結(jié)構(gòu),大概了解就行。不用都看懂,又不讓你出書的。(三天)
2。找學(xué)習(xí)板練習(xí)編寫程序,學(xué)單片機(jī)就是練編程序,遇到不會(huì)的再問人或查書找。(二十天)3。自己網(wǎng)上找些小電路類的資料練習(xí)設(shè)計(jì)外圍電路。焊好后自己調(diào)試,熟悉過程。(十天)
4。自己完全設(shè)計(jì)具有個(gè)人風(fēng)格的電路,產(chǎn)品,。。。你已經(jīng)是高手了。。。。。
看到了嗎?下功夫一個(gè)多月你就能成為高手,我就講這么多了,學(xué)不學(xué)得會(huì),下不下得了功夫就看你的了
從51初學(xué)者到電子工程師1
很多電子工程師在某個(gè)方面精深鉆研,成為某一個(gè)特殊領(lǐng)域的專家,從一開始的養(yǎng)家糊口、慢慢小有收益、最后寶馬豪宅,也是有的;這些電子工程師可能沒有全面掌握這些知識(shí),因?yàn)檫@些行業(yè)用不上,例如,液晶顯示器,很多行業(yè)就不需要;但是,對(duì)于一個(gè)初學(xué)者,我認(rèn)為,這個(gè)提綱是切合實(shí)際的,對(duì)于面向控制而言,已經(jīng)基本夠用了;對(duì)于初學(xué)者,全面地掌握這些知識(shí)是很有必要的,因?yàn)槟悴恢澜窈笮枰褂檬裁茨男┲R(shí),而這些知識(shí),80%以上你會(huì)在今后的工作中使用上,因?yàn)檫@是都是最基本的。熟練掌握這些知識(shí)和應(yīng)用,根據(jù)不同的地區(qū)、行業(yè)和老板,月薪應(yīng)該可以在3000元~5000元之間,甚至更高。
其實(shí),可能有些你用不上,但是知道了也沒有壞處;所謂書到用時(shí)方很少,又有謂藝不壓身。知識(shí)=月薪=年薪=金錢=香車寶馬=..,呵呵。為什么要掌握這些知識(shí)?
實(shí)際上,電子工程師就是將一堆器件搭在一起,注入思想(程序),完成原來的這些器件分離時(shí)無法完成的功能,做成一個(gè)成品。所需要的技能越高、功能越復(fù)雜、成本越低、市場(chǎng)上對(duì)相應(yīng)的東東的需求越大,就越成功。這就是電子工程師的自身的價(jià)值。從成本到產(chǎn)品售出,之間的差價(jià)就是企業(yè)的追求。作為企業(yè)的老板,是在市場(chǎng)上去尋找這樣的應(yīng)用;對(duì)電子工程師而言,是將老板提出的需求或者應(yīng)用按照一定的構(gòu)思原則(成本最低、可靠性最高、電路板最小、功能最強(qiáng)大等)在最短的時(shí)間內(nèi)完成。最短的時(shí)間,跟電子工程師的熟練程度、工作效率和工作時(shí)間直接有關(guān)。這就是電子工程師的價(jià)值。
將電子產(chǎn)品抽象成一個(gè)硬件的模型,大約有以下組成:1)輸入2)處理核心3)輸出
輸入基本上有以下的可能:1)鍵盤
2)串行接口(RS232/485/canbus/以太網(wǎng)/USB)3)開關(guān)量(TTL,電流環(huán)路,干接點(diǎn))
4)模擬量(4~20ma、0~10ma、0~5V(平衡和非平衡信號(hào)))輸出基本上有以下組成:
1)串行接口(RS232/485/canbus/以太網(wǎng)/USB)2)開關(guān)量(TTL、電流環(huán)路、干接點(diǎn)、功率驅(qū)動(dòng))
3)模擬量(4~20ma,0~10ma,0~5V(平衡和非平衡信號(hào)))4)LED顯示:發(fā)光管、八字5)液晶顯示器6)蜂鳴器處理核心主要有:
1)8位單片機(jī),主要就是51系列
2)32位arm單片機(jī),主要有atmel和三星系列51系列單片機(jī)現(xiàn)在看來,只能做一些簡(jiǎn)單的應(yīng)用,說白了,這個(gè)芯片也就是做單一的一件事情,做多了,不如使用arm來做;還可以在arm上加一個(gè)操作系統(tǒng),程序既可靠又容易編寫。最近三星的arm受到追捧,價(jià)格便宜,以太網(wǎng)和USB的接口也有,周立功的開發(fā)系統(tǒng)也便宜,作為學(xué)習(xí)ARM的產(chǎn)品來說,應(yīng)該是最好的;作為工業(yè)級(jí)的控制,是不是合適,在網(wǎng)友中有不同的看法和爭(zhēng)議。本公司使用atmelARM91系列開發(fā)的1個(gè)室外使用的產(chǎn)品,在北京室外使用,沒有任何的通風(fēng)和加熱的措施,從去年的5月份到現(xiàn)在,運(yùn)行情況良好。已經(jīng)有個(gè)成功應(yīng)用的案例。但對(duì)于初學(xué)者來說,應(yīng)該從51著手,一方面,51還是入門級(jí)的芯片,作為初學(xué)者練手還是比較好的,可以將以上的概念走一遍;很多特殊的單片機(jī)也是在51的核的基礎(chǔ)上增加了一些I/O和A/D、D/A;也為今后學(xué)習(xí)更高一級(jí)的單片機(jī)和ARM打下基礎(chǔ)。再說了,哪個(gè)老板會(huì)將ARM級(jí)別的開發(fā)放在連51也沒有學(xué)過的新手手中?
在51上面去做復(fù)雜的并行擴(kuò)展是沒有必要的,比如,擴(kuò)展I/O口和A/D、D/A等等,可以直接買帶有A/D、D/A的單片機(jī);或者直接使用ARM,它的I/O口線口多。可以使用I2C接口的芯片,擴(kuò)展I/O口和A/D、D/A,以及SPI接口擴(kuò)展LED顯示,例如:MAX7219等芯片。
市面上一些比較古老的書籍中還有一些并行擴(kuò)展的例子,如:RAM、EPROM、A/D、D/A等,我覺得已經(jīng)沒有必要去看了,知道歷史上有這些一回事就行了;這些知識(shí),是所有產(chǎn)品都具備的要素。所以要學(xué),再具體應(yīng)用。說一個(gè)小的故事:野人獻(xiàn)曝。
從前,有一個(gè)農(nóng)民,冬天干了活后,休息曬太陽。好舒服呀。他想,這么舒服的享受,我要獻(xiàn)給國(guó)王,讓他也能得到享受。于是他興沖沖地到了王宮,將他的寶貴經(jīng)驗(yàn)獻(xiàn)給了國(guó)王。
我現(xiàn)在就象這個(gè)農(nóng)民,把自己認(rèn)為很寶貴的經(jīng)驗(yàn)獻(xiàn)給大家。希望大家多提寶貴意見;拍板磚也可以,罵我也無所謂,呵呵,隨便。第一課:51單片機(jī)最小系統(tǒng)
實(shí)際上,51單片機(jī)核心外圍電路是很簡(jiǎn)單的,一個(gè)單片機(jī)+一個(gè)看門狗+一個(gè)晶振+2個(gè)磁片電容;
1.單片機(jī):atmel的89C51系列、winbond的78E52系列,還有philips的系列,都差不多;現(xiàn)在有一些有ISP(在線下載的),就更好用了;
2.看門狗:種類很多,我常用的有max691/ca1161和DS1832等,具體看個(gè)人習(xí)慣、芯片工作電壓、封裝等。Max系列和DS系列,還有IMP公司的,種類很多,一般只需要有最基本的功能就可以了;原來我使用max691,但是max691比較貴,因?yàn)樗须姵厍袚Q功能,后來新設(shè)計(jì)電路板,就都采用ca1161了。
很早以前的電路設(shè)計(jì)中,現(xiàn)在可能還有人使用,使用一個(gè)電阻和一個(gè)電容達(dá)成的上電復(fù)位電路;但是,這樣的復(fù)位電路一個(gè)是不可靠,為什么不可靠,網(wǎng)絡(luò)上能找得到專門論述復(fù)位電路的文章;更重要的是,51系列的單片機(jī)比較容易受到干擾;沒有看門狗電路是不行的,當(dāng)程序跑飛時(shí),回不來了,死在那里。
常規(guī)的做法是買一個(gè)專門的看門狗電路,完成復(fù)位電路和看門狗電路的功能。
這些芯片的資料很容易在網(wǎng)絡(luò)上找到,通常使用百度搜索就可以了;看見有PDF的字樣,就點(diǎn)擊下載;使用網(wǎng)際快車flashget下載也是最好的;
這些資料通常是pdf格式的文件,所以,還需要一個(gè)pdf的閱讀器。百度網(wǎng)址:
網(wǎng)際快車下載網(wǎng)址:PDF閱讀器下載網(wǎng)址:
實(shí)際上,有了百度和其它的搜索引擎,很方便下載到這些芯片的資料,比光盤還方便,不需要去到處找。
單片機(jī)和單片機(jī)抗干擾能力是不一樣的。如果你的產(chǎn)品是工作在干擾比較大的環(huán)境,可以試試選用不同品牌的單片機(jī);原來我在一個(gè)光電所,做YAG激光治療機(jī)的控制部分,脈沖激光機(jī)的電源放電的時(shí)候,能量是很大的,在采取了所有能夠想到的光電隔離等措施之后,還是不行;后來,選用了intel的8031,就可以了。小聲的說:當(dāng)時(shí)的philips的單片機(jī)抗干擾性能是最差的,可能跟Philips主要是用在民用領(lǐng)域有關(guān),F(xiàn)在不知道怎么樣了,有人知道的話告訴我。單片機(jī)的輸入輸出口線是最容易引進(jìn)干擾的地方;在嚴(yán)重干擾的情況下,需要將所有的口線光電隔離。
3.晶振:一般選用11.0592M,因?yàn)榭梢詼?zhǔn)確地得到9600波特率和19200波特率;也可以使用36.864M,這個(gè)頻率是1.8432M的20倍,看別人的電路板上用過,我也沒有用到。這2種晶振很容易買到,價(jià)錢跟12M的一樣。書上說,12M的晶振也能得到9600的波特率,但是,實(shí)際用的時(shí)候,會(huì)每隔一段時(shí)間就出錯(cuò)一次,好像累積誤差一樣,比較奇怪。
即使你的單片機(jī)系統(tǒng)不使用RS232接口,也可以做一個(gè)Rs232,留著做測(cè)試,或者預(yù)留等等,沒有壞處。除非你的單片機(jī)系統(tǒng)的口線不夠用了。
4.磁片電容:22pf~30pf,可以在有些書上找到什么晶振頻率對(duì)應(yīng)什么容量的磁片電容,但是,我都是隨便拿來使用,反正在11.0592M下,都沒有問題;如果你用到了更高的頻率,最好還是找找資料看看。參見以下電路圖:
如果你的單片機(jī)系統(tǒng)沒有工作,檢查步驟如下:
1.查看門狗的復(fù)位輸出,可能的話在電路板上加一個(gè)LED,下拉,這樣看起來就更方便;要是看門狗復(fù)位信號(hào)有,往下;2.查單片機(jī),看看管腳有沒有問題;一般編程器能夠?qū)⒊绦驅(qū)懭耄f明單片機(jī)是好的;最好手頭上準(zhǔn)備一個(gè)驗(yàn)證過的單片機(jī),內(nèi)部有一個(gè)簡(jiǎn)單的程序,比如,在某個(gè)口線上輸出1個(gè)1秒占空比的方波等,可以使用萬用表測(cè)量。
加一句:設(shè)計(jì)產(chǎn)品時(shí),要在關(guān)鍵的地方:電源、串口、看門狗的輸出和輸入、I/O口等加不同顏色的LED指示,便于調(diào)試;作為批量大的產(chǎn)品,可以去掉部分LED,一方面是降低成本、一方面是流程保密;
3.再查磁片電容,有些瓷片電容質(zhì)量不行,干脆換了;順便說一下,換器件最好使用吸錫帶,將焊盤內(nèi)的錫吸干凈,再將器件拔出,這樣不會(huì)損傷焊盤內(nèi)的過孔;再將新的瓷片電容焊接上去的時(shí)候,用萬用表量量是好的再焊;
4.最后只有換晶振了;切記要買好的晶振,有些品牌質(zhì)量比較好。
5.以上按照以上步驟檢測(cè)時(shí),將無關(guān)的外圍芯片去掉;因?yàn)橛幸恍┦峭鈬骷墓收蠈?dǎo)致單片機(jī)最小系統(tǒng)沒有工作。我準(zhǔn)備寫的有以下幾課:第二課基本的芯片和分立器件2.1簡(jiǎn)述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封裝知識(shí)、芯片批號(hào)等2.12接插件
2.13器件選購(gòu)的知識(shí)第三課數(shù)字量的輸入輸出第四課單片機(jī)的通訊接口
第五課單片機(jī)系統(tǒng)設(shè)計(jì)的硬件構(gòu)思第六課單片機(jī)程序的框架(匯編版本)第七課模擬量的輸入輸出
各位多提寶貴意見。
保證實(shí)用。如果程序里面有一些例程,也是已經(jīng)經(jīng)過測(cè)試可以拿來就用的;實(shí)際上是我早年的一些產(chǎn)品的程序的一部分;不好意思,都是匯編的。
寫的時(shí)間只有周末會(huì)多一些,可以保證做到一周一課;盡量能夠提前,但是這要看看工作忙不忙了。
坊間有一些參考書,準(zhǔn)備今天上午到北京中發(fā)市場(chǎng)轉(zhuǎn)了一圈,我記得以下參考書目較好:1.周航慈:《單片機(jī)程序設(shè)計(jì)》
2.徐涵芳:《MCS-51單片機(jī)結(jié)構(gòu)與設(shè)計(jì)》3.何立民:《》
有了這些就基本夠用了;其它的很多都是資料的翻譯;如果英文不好,可以看看;英文好的話,可以不必了,省電錢買開發(fā)系統(tǒng)和編程器、開發(fā)板什么的,需要什么資料直接下載PDF文件好了。要想成為電子工程師,需要寬帶,在家里安裝包月的adsl或者長(zhǎng)寬,絕對(duì)值得。實(shí)際上,網(wǎng)絡(luò)上什么都有了,就是一個(gè)網(wǎng)絡(luò)數(shù)據(jù)庫(kù),要好好利用。網(wǎng)上自有黃金屋,網(wǎng)上自有顏如玉第二課基本的芯片和分立器件2.1簡(jiǎn)述
有必要對(duì)以下系列的芯片和分立器件進(jìn)行介紹。
除了單片機(jī)作為控制器的核心外,作為一個(gè)產(chǎn)品,由很多東西構(gòu)成;所以,在講系統(tǒng)之前,先將這些零零碎碎的東西一并交待。就好像一棟房子,有各種各樣的構(gòu)件組成,下面的這些東東就像磚瓦一樣,沒有不行。2.274系列芯片
74系列的芯片的下載地址:
74系列的芯片是古老的一族,大部分的芯片現(xiàn)在均已不用了,但是,實(shí)際上,在目前的系統(tǒng)中,還能看到一些芯片,有些芯片現(xiàn)在還在系統(tǒng)中使用,例如:1、74046個(gè)反相門下載地址:
將輸入的TTL邏輯反相,如:0->1,1->02、74076個(gè)集電極開路門下載地址:
由于集電極開路門可以外接高電壓,可以最高到DC30V,電流最大到39mA,通常我用它驅(qū)動(dòng)8字?jǐn)?shù)碼管和繼電器等大電流的負(fù)載;開路門內(nèi)部結(jié)構(gòu)是達(dá)林頓管的,輸出的邏輯是正的;與其類似的芯片是7406,只不過是反相開路門。3、74LS573與74LS3738數(shù)據(jù)鎖存器74LS373下載地址:
74LS573下載地址:
引入幾個(gè)概念:1.真值表
參見74LS373的PDF的第2頁:DnLEOEOnHHLHLHLLXLLQoXXHZ
這個(gè)就是真值表,表示這個(gè)芯片在輸入和其它的情況下的輸出情況。每個(gè)芯片的數(shù)據(jù)手冊(cè)(datasheet)中都有真值表。布爾邏輯比較簡(jiǎn)單,在此不贅述;2.高阻態(tài)
就是輸出既不是高電平,也不是低電平,而是高阻抗的狀態(tài);在這種狀態(tài)下,可以多個(gè)芯片并聯(lián)輸出;但是,這些芯片中只能有一個(gè)處于非高阻態(tài)狀態(tài),否則會(huì)將芯片燒毀;高阻態(tài)的概念在RS232和RS422通訊中還可以用到。3.數(shù)據(jù)鎖存
當(dāng)輸入的數(shù)據(jù)消失時(shí),在芯片的輸出端,數(shù)據(jù)仍然保持;這個(gè)概念在并行數(shù)據(jù)擴(kuò)展中經(jīng)常使用到。4.數(shù)據(jù)緩沖
加強(qiáng)驅(qū)動(dòng)能力。74LS244/74LS245/74LS373/74LS573都具備數(shù)據(jù)緩沖的能力。OE:output_enable,輸出使能;
LE:latch_enable,數(shù)據(jù)鎖存使能,latch是鎖存的意思;Dn:第n路輸入數(shù)據(jù);On:第n路輸出數(shù)據(jù);再看這個(gè)真值表,意思如下:
第四行:當(dāng)OE=1是,無論Dn、LE為何,輸出端為高阻態(tài);第三行:當(dāng)OE=0、LE=0時(shí),輸出端保持不變;
第二行第一行:當(dāng)OE=0、LE=1時(shí),輸出端數(shù)據(jù)等于輸入端數(shù)據(jù);結(jié)合下面的波形圖,在實(shí)際應(yīng)用的時(shí)候是這樣做的:a.OE=0;
b.先將數(shù)據(jù)從單片機(jī)的口線上輸出到Dn;c.再將LE從0->1->d.這時(shí),你所需要輸出的數(shù)據(jù)就鎖存在On上了,輸入的數(shù)據(jù)在變化也影響不到輸出的數(shù)據(jù)了;實(shí)際上,單片機(jī)現(xiàn)在在忙著干別的事情,串行通信、掃描鍵盤單片機(jī)的資源有限啊。在單片機(jī)按照RAM方式進(jìn)行并行數(shù)據(jù)的擴(kuò)展時(shí),使用movx@dptr,A這條指令時(shí),這些時(shí)序是由單片機(jī)來實(shí)現(xiàn)的。
后面的表格中還有需要時(shí)間的參數(shù),你不需要去管它,因?yàn)檫@些參數(shù)都是幾十ns級(jí)別的,對(duì)于單片機(jī)在12M下的每個(gè)指令周期最小是1us的情況下,完全可以實(shí)現(xiàn);如果是你自己來實(shí)現(xiàn)這個(gè)邏輯,類似的指令如下:
movP0,A將數(shù)據(jù)輸出到并行數(shù)據(jù)端口clrLEsetbLE
clrLE上面三條指令完成LE的波形從0->1->0的變化
74ls573跟74LS373邏輯上完全一樣,只不過是管腳定義不一樣,數(shù)據(jù)輸入和輸出端各在一側(cè),PCB容易走線;所以大家都喜歡使用這個(gè)芯片。4、74LS244數(shù)據(jù)緩沖器下載地址:
數(shù)據(jù)輸出能力比較強(qiáng),輸出電流可以到40mA以上;4個(gè)緩沖器分成2組,具有高阻態(tài)控制端口5、74LS245總線緩沖器
雙向數(shù)據(jù)接口,通常在ISA板卡上可以看到;
早期的51系統(tǒng)中,為了擴(kuò)展RAM、eprom、A/D、D/A、I/O等經(jīng)?梢钥吹竭@個(gè)片子;為了增強(qiáng)驅(qū)動(dòng)能力,有時(shí)是為了隔離輸入和輸出,主要是布線方便,象74LS573一樣,輸入、輸出在一側(cè),經(jīng)常用到這個(gè)片子6、74LS138三-八譯碼器
在早期的51系統(tǒng)的擴(kuò)展中,作為地址選通的片子,可以經(jīng)?吹。另外一個(gè)類似的芯片是74LS154,是4-16譯碼器,現(xiàn)在更是少見了。有興趣的可以研究一下何立民的經(jīng)典著作中的有關(guān)章節(jié)。知道有這么一個(gè)芯片就可以了。2.3CD4000系列
CD4000系列的芯片,除了跟74系列的電氣特性有所區(qū)別外,例如:
1)電壓范圍寬,應(yīng)該可以工作在3V~15V,輸入阻抗高,驅(qū)動(dòng)能力差外,跟74系列的功能基本沒有區(qū)別;
2)輸入時(shí),1/2工作電壓以下為0,1/2工作電壓以上為1;3)輸出時(shí),1=工作電壓;0=0V
4)驅(qū)動(dòng)能力奇差,在設(shè)計(jì)時(shí)最多只能帶1個(gè)TTL負(fù)載;5)如果加上拉電阻的話,至少要100K電阻;
6)唯一現(xiàn)在使用的可能就是計(jì)數(shù)器,CD4060的計(jì)數(shù)器可以到14級(jí)二進(jìn)制串行計(jì)數(shù)/分頻器,這個(gè)74系列的做不到這么高;下載地址:
2.4ULN201*/ULN201*
它的內(nèi)部結(jié)構(gòu)也是達(dá)林頓的,專門用來驅(qū)動(dòng)繼電器的芯片,甚至在芯片內(nèi)部做了一個(gè)消線圈反電動(dòng)勢(shì)的二極管。ULN201*的輸出端允許通過IC電流200mA,飽和壓降VCE約1V左右,耐壓BVCEO約為36V。用戶輸出口的外接負(fù)載可根據(jù)以上參數(shù)估算。采用集電極開路輸出,輸出電流大,故可以直接驅(qū)動(dòng)繼電器或固體繼電器(SSR)等外接控制器件,也可直接驅(qū)動(dòng)低壓燈泡。經(jīng)常在工控的板卡中見到這個(gè)芯片。
有個(gè)完全一樣的型號(hào):MC1413,不過現(xiàn)在好像不怎么見到這個(gè)型號(hào)了,但是管腳與201*完全兼容。
ULN201*可以驅(qū)動(dòng)7個(gè)繼電器;ULN201*驅(qū)動(dòng)8個(gè)繼電器。ULN201*下載地址:
ULN201*下載地址:沒有找到。奇怪啊。2.5光耦
光耦是做什么用的?光耦是用來隔離輸入輸出的,主要是隔離輸入的信號(hào)。
在各種應(yīng)用中,往往有一些遠(yuǎn)距離的開關(guān)量信號(hào)需要傳送到控制器,如果直接將這些信號(hào)接到單片機(jī)的I/O上,有以下的問題:
1)信號(hào)不匹配,輸入的信號(hào)可能是交流信號(hào)、高壓信號(hào)、按鍵等干接點(diǎn)信號(hào);2)比較長(zhǎng)的連接線路容易引進(jìn)干擾、雷擊、感應(yīng)電等,不經(jīng)過隔離不可靠所以,需要光耦進(jìn)行隔離,接入單片機(jī)系統(tǒng)。常見的光耦有:
1)TLP521-1/TLP521-2/TLP521-4,分別是1個(gè)光耦、2個(gè)光耦和4個(gè)光耦,HP公司和日本的東芝公司生產(chǎn)。下載地址:
-1-2,4.PDF發(fā)光管的工作電流要在10mA時(shí),具有較高的轉(zhuǎn)換速率;
在5V工作時(shí),上拉電阻不小于5K,一般是10K;太小容易損壞光耦;2)4N25/4N35,motorola公司生產(chǎn)下載地址:
-8,35-7,H11A1-5.PDF隔離電壓高達(dá)5000V;3)6N136,HP公司生產(chǎn)下載地址:
-6.PDF
要想打開6N136,需要比較大的電流,大概在15~20mA左右,才能發(fā)揮高速傳輸數(shù)據(jù)的作用。如果對(duì)速率要求不高,其實(shí)TLP521-1也可以用,實(shí)際傳輸速率可以到19200波特率。選擇光耦看使用場(chǎng)合,tlp521-1是最常用的,也便宜,大概0.7~1元;要求隔離電壓高的,選用4N25/4N35,大概在3元左右;要求在通訊中高速傳輸數(shù)據(jù)的,選用6N136,大概在4元左右。光耦應(yīng)用的原理框圖如下所示:1.輸入干接點(diǎn)隔離2.輸入TTL電平隔離3.輸入交流信號(hào)隔離4.輸出RS232信號(hào)隔離5.輸出RS422信號(hào)隔離
光耦除了隔離數(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封裝知識(shí)、芯片批號(hào)等2.16接插件
2.17器件選購(gòu)的知識(shí)2.6三極管
2.6.1三極管的4種工作狀態(tài)1)飽和導(dǎo)通狀態(tài)飽和導(dǎo)通=02)截止?fàn)顟B(tài)飽和導(dǎo)通=13)線性放大狀態(tài)
作為低頻放大器時(shí)使用,具體的可參見有關(guān)電子線路的書籍;4)非線性工作狀態(tài)
在無線電通信系統(tǒng)中,作為混頻器等使用。具體的可參見有關(guān)電子線路的書籍;
愚記得南京工學(xué)院也就是現(xiàn)在的東南大學(xué)在80年代初期有一套《電子線路》5本,是電子專業(yè)的書籍,比較難懂;現(xiàn)在,即使是在電子專業(yè)的學(xué)生中,也應(yīng)該降低了對(duì)三極管的哪些復(fù)雜的參數(shù)的要求了吧;在實(shí)際使用時(shí),即使是模擬電路、非線性電路,也都是集成電路了,誰還使用三極管自己做呢?如果萬一需要,現(xiàn)學(xué)也來得及。這套書很強(qiáng)的。編寫人在那個(gè)年代肯定都是牛人。學(xué)三極管這些參數(shù)很繁瑣的,要是現(xiàn)在的非電子類的大學(xué)生或者大專生們還學(xué)這些玩意,我只能說是學(xué)校在誤人子弟了。
好多學(xué)校都在擴(kuò)招,很多學(xué)生念了4年下來,學(xué)了一堆過時(shí)的理論,跟實(shí)際的東西一點(diǎn)沒有接軌,不知道7407是干什么用得,不知道三極管的幾個(gè)狀態(tài);我只能無話可說。
所以,念了4年下來,跟企業(yè)的需求還有一段距離,還需要從頭來過;聰明的學(xué)生趕緊抓住機(jī)會(huì)去學(xué)習(xí),去實(shí)習(xí),這樣,還可以趕緊補(bǔ)上實(shí)際應(yīng)用的這一課。言歸正傳。參見下圖:
當(dāng)單片機(jī)的口線輸出電平為1時(shí),三極管的be結(jié)導(dǎo)通,ce結(jié)導(dǎo)通,輸出的電壓值為0V;當(dāng)單片機(jī)的口線輸出電平為0時(shí),三極管的be結(jié)不導(dǎo)通,ce結(jié)截止,輸出的電壓值為5V;在這種數(shù)字電路的應(yīng)用中,相當(dāng)于三極管是一個(gè)反相開路門。計(jì)算是否導(dǎo)通,公式如下:I=B(放大倍數(shù),希臘字母的貝塔)×Ibe當(dāng)Ice
相差越大,飽和程度越深,Vce越小,三極管的輸出內(nèi)阻越;這個(gè)概念要用到光電管中。
設(shè)計(jì)使用時(shí)大概算算,心里有個(gè)數(shù);在電路板上試試,行的通,那就是它了。可以測(cè)量Vce值,至少要小于0.1V就可以了。
常用的PNP三極管是2N5551,驅(qū)動(dòng)40mA的LED(電壓在24V)、蜂鳴器等均沒有問題。2.6.2三極管的具體應(yīng)用
實(shí)際上,已經(jīng)有象7407、ULN201*可以取代三極管在數(shù)字電路中的作用;但是,有時(shí)是受到PCB面積的制約,有時(shí)是為了降低成本,有時(shí)是因?yàn)椴季址奖,?~2個(gè)輸出點(diǎn)時(shí),還是可以使用三極管來做驅(qū)動(dòng)的。
例如:驅(qū)動(dòng)一個(gè)蜂鳴器;往往系統(tǒng)中的蜂鳴器跟其它驅(qū)動(dòng)設(shè)備,繼電器等,距離較遠(yuǎn);這時(shí),沒有必要使用一片7407,或者ULN201*來驅(qū)動(dòng);驅(qū)動(dòng)的接口如下:上午趕緊到中發(fā)去轉(zhuǎn)了一圈,看了看單片機(jī)方面的書,讓我失望。
這些書的大部分內(nèi)容還都是將51的技術(shù)資料美捶胍幌攏由弦恍┎⑿薪涌詰男
酒?255/8155/8253/AD0809/DAC0832等等,就是一本單片機(jī)的書籍了。還挺貴?蓱z的學(xué)生花了幾十大元買來,學(xué)到的是陳舊的知識(shí)?戳擞挚,想了再想,老樹買了2本:
1)MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)系統(tǒng)配置與接口技術(shù)何立民編著北京航空航天大學(xué)出版社35元人民幣
2)單片機(jī)外圍電路設(shè)計(jì)沙占友等編著電子工業(yè)出版社23元人民幣
何立民先生的巨著影響了看來不止是一代人,至少是2代人、三代人以上。主要的好處是體系比較完整,包括了單片機(jī)的核心、芯片的時(shí)序與擴(kuò)展、輸入與輸出(在何老師的編著中叫前向、后向、人機(jī)、相互通道,只是說法的不同),應(yīng)用程序設(shè)計(jì)、抗干擾技術(shù),應(yīng)該是,是一個(gè)大全了。愚斗膽建議何老師將該巨著修改如下:
1)將并行擴(kuò)展的有關(guān)內(nèi)容以及一些現(xiàn)在不用的內(nèi)容,如GP16打印機(jī)等,放在新編著的書的光盤內(nèi)容中,這樣篇幅可以減少,又不至于查詢不到;這些內(nèi)容,在書中一帶而過;2)新增:I2C的數(shù)字和模擬的擴(kuò)展內(nèi)容和相應(yīng)的用單片機(jī)口線模擬I2C總線的程序;3)新增:電源部分,包括:DC/DC模塊,MAXIM、LINEAR公司的step-up/step-down等芯片的內(nèi)容,還有開關(guān)電源、線性電源等內(nèi)容;這樣,就能煥發(fā)出更新的活力。
沙占友的書中有一些新的內(nèi)容,象時(shí)鐘電路SD201*、電源部分,都是愚所激賞的,跟別的書籍相比,內(nèi)容新,基本沒有重復(fù)的地方。
如果初學(xué)者能買到周航慈的《單片機(jī)軟件設(shè)計(jì)技術(shù)》,再下載一套89C51或者78E52的數(shù)據(jù)手冊(cè),隨便從哪里找一本詳細(xì)講51語言的書,也就行了。這樣的書,最好從圖書館借來看看。何老師的書中也有一部分內(nèi)容,講程序設(shè)計(jì)的,沒有詳講語言。其實(shí)最好的就是原來徐涵芳老師編著的那本小冊(cè)子,好像是《51/96單片機(jī)設(shè)計(jì)技術(shù)》。好在是原汁原味,篇幅小而精干,也不貴。手邊的參考書有以上三位老師的編著就可以了,其它的,隨便看看,如果有用,記住器件的名字,從網(wǎng)絡(luò)上下載下來看看就行了。2.5光電管
我這里所謂的光電管有2種:1)反射型光電管2)對(duì)射型光電管
這2種產(chǎn)品在市場(chǎng)上又可分為調(diào)理好的和沒有調(diào)理好的;
這2種光電管在電子產(chǎn)品世界和電子技術(shù)應(yīng)用雜志上都有大量的廣告。隨便找一本都有。我所說的調(diào)理好的指的是內(nèi)部已經(jīng)加了限流電阻和輸出的放大驅(qū)動(dòng)電路了。它的特點(diǎn)是只有3根線,電源2根,輸出信號(hào)一根,TTL電平的;但是,有時(shí)受到某種限制,需要使用沒有調(diào)理好的,怎么辦呢?
參見下圖:光電管原理框圖
這種沒有調(diào)理好的光電管在使用時(shí),需要做一塊小的電路板,在發(fā)光管加限流電阻,在光電三極管的集電極加上拉電阻到5V,如下圖所示:光電管工作框圖1。
但是,在使用中我發(fā)現(xiàn),輸出的信號(hào)不穩(wěn)定,尤其是在使用比較長(zhǎng)的電纜傳輸?shù)絾纹瑱C(jī)的時(shí)候;究其原因,我認(rèn)為是由于反射或者對(duì)射的紅外光落在光電三極管的靶面上,光強(qiáng)未能導(dǎo)致光電三極管深度飽和,使得輸出的內(nèi)阻偏大,肪車腦肷偷繢碌母扇判藕湃菀自諳唄飛系擁腦倒剩?br>為了可靠工作,仿照達(dá)林頓管的結(jié)構(gòu),在光電三極管的輸出端加一個(gè)限流電阻接到NPN的B結(jié),當(dāng)無光的時(shí)候,2N5551飽和導(dǎo)通,輸出電壓為0V;實(shí)際測(cè)量小于0.1V;當(dāng)有光,甚至是弱光時(shí),2N5551截至,輸出電壓為5V。將3K電阻換成更大或更小的電阻,可以調(diào)整光電三極管的輸出的靈敏度。
具體工作過程可以自行分析,做個(gè)實(shí)驗(yàn)。2.6電容
2.6.1電容的主要種類電容有以下幾大類:1)電解電容2)獨(dú)石電容3)磁片電容
4)膽(左金右旦)電解電容5)滌綸電容等
電容的指標(biāo)是:耐壓值和電容容量。例如:220u/50V,就是說,這個(gè)電解電容耐壓值為50V,容量為220u。
電容的容量跟電容的介質(zhì)有關(guān)。顧名思義:
電解電容為電解質(zhì)作為介質(zhì)的,鋁作為電極;獨(dú)石電容是使用石頭作為介質(zhì)的;磁片電容是磁片作為介質(zhì)的;
膽(左金右旦)電解電容使用電解質(zhì)作為介質(zhì),但是,電極采用膽(左金右旦)金屬。滌綸電容采用滌綸作為介質(zhì)。有興趣的網(wǎng)友可以拆一個(gè)電容看看。2.6.1電容的使用場(chǎng)合1.電源穩(wěn)壓和濾波
電解電容主要是用來穩(wěn)壓和低頻交流濾波的;高頻濾波是使用磁片電容和獨(dú)石電容。
當(dāng)電解電容作為穩(wěn)壓時(shí),接在整流橋和三端穩(wěn)壓器的輸出端,起到穩(wěn)定電壓的作用。其工作機(jī)理相當(dāng)于一個(gè)水庫(kù),從上游來的帶有波浪的水到了水庫(kù),就變的平滑了。
但是,鋁電解電容的電解質(zhì)隨著時(shí)間的推移會(huì)干涸,所以在設(shè)計(jì)時(shí)需要留有余量,保證系統(tǒng)正常工作到它的壽命。
有些遠(yuǎn)端供電的直流電源,接到電路板的輸入端時(shí),需要在電路板的電源輸入端加一個(gè)大的電解電容,通?梢允220u/25V,這樣,這塊電路板需要供電時(shí),不是直接從電源處取,而是從電容中取電,可以得到穩(wěn)定的電流供給;但是,電解電容只能濾除低頻的波動(dòng);對(duì)于直流電源中的高頻波動(dòng),可以加一個(gè)0.1u或0.01u的獨(dú)石電容或者磁片電容。
很多教科書都指出,在每一個(gè)芯片的電源和地兩端接一個(gè)0.1u或0.01u的獨(dú)石電容或者瓷片電容,解決芯片的供電過程中,由于電路板的走線電感產(chǎn)生的電源開關(guān)噪聲尖峰。這種作用下的電容叫去耦電容。這是電路板的常規(guī)的設(shè)計(jì);2.定時(shí)參數(shù)
對(duì)于象555這樣需要外接電容產(chǎn)生穩(wěn)定的脈沖的器件,滌綸電容是首選?梢韵胂螅瑴炀]一層又一層纏繞,受到溫度變化引起的滌綸的面積的變化的相對(duì)值要遠(yuǎn)遠(yuǎn)小于獨(dú)石電容的介質(zhì)石頭受到溫度變化而引起的變化值。3.產(chǎn)生其它電壓
有些需要從單一電壓產(chǎn)生其它的電壓的芯片,如:max232,需要外接電容才能實(shí)現(xiàn)。參見max232技術(shù)資料。外接01.u的膽電容。2.6.2電容的封裝
電容有直插和表面貼的不同封裝。
電解電容表面貼封裝的通常耐壓值不超出25V,電容值不超出100u。再大,就只好使用直插的了。其它的電容,磁片和獨(dú)石都有表面貼封裝的。2.7電阻和縹黃?br>2.7.1電阻的種類2.7.1.1普通電阻
電阻種類按照工藝可以分為碳膜電阻和金屬膜電阻;
按照功率可以分為小功率電阻和大功率電阻,大功率電阻通常是金屬電阻,實(shí)際上應(yīng)該是在金屬外面加一個(gè)金屬(鋁材料)散熱器,所以可以有10W以上的功率;在電子配套市場(chǎng)上專門賣電阻的市場(chǎng)上可以很容易地看到。
金屬電阻通常是作為負(fù)載,或者作為小設(shè)備的室外加熱器,如,在CCTV的一些解碼器箱和全天候防護(hù)罩中可以看到。
電阻在電路中起到限流、分壓等作為。通常1/8W電阻已經(jīng)完全可以滿足使用。但是,在作為7段LED中,要考慮到LED的壓降和供電電壓之差,再考慮LED的最大電流,通常是20mA(超高亮度的LED),如果是2×6(2排6個(gè)串聯(lián)),則電流是40mA。不同廠家選用不同材料的,壓降有所不同。所以,需要加上電試一下,但是,不要讓Led的電流超出20mA(單只LED),這時(shí)加大電流亮度也不會(huì)增加,但是LED的壽命會(huì)下降,限流電阻的大小就是壓降除以電流。電阻的功率隨之可以算出。這個(gè)使用初中的知識(shí)就夠用了。2.7.1.2電位器
電位器就是可調(diào)電阻。在初中學(xué)物理時(shí),中學(xué)老師拿一個(gè)很大的圓筒狀的東東,上面有一個(gè)滑桿,跟這個(gè)東西很類似。它的阻值在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;電位器又分單圈和多圈電位器。
單圈的電位器通常為灰白色,面上有一個(gè)十字可調(diào)的旋紐,出廠前放在一個(gè)固定的位置上,不在2頭;
多圈電位器通常為藍(lán)色,調(diào)節(jié)的旋紐為一字,一字小改錐可調(diào);多圈電位器又分成頂調(diào)和側(cè)調(diào)2種,主要是電路板調(diào)試起來方便。
有些是儀器儀表設(shè)備,通常是模擬電路,有一些不確定的因素,需要調(diào)節(jié)才能達(dá)到最理想的效果;有些是設(shè)備本身就需要輸出一個(gè)可變的東東,如電壓和電流,也需要一個(gè)電位器。2.7.1.3排電阻
是sipn的封裝,比較常用的就是阻值502和103的9腳的電阻排;象sip9就是8個(gè)電阻封裝在一起,8個(gè)電阻有一端連在一起,就是公共端,在排電阻上用一個(gè)小白點(diǎn)表示。排電阻通常為黑色,也有黃色;51系統(tǒng)的P0需要一個(gè)排電阻上拉,否則,作為輸入的時(shí)候,不能正常讀入數(shù)據(jù);作為輸出的時(shí)候,接7407是可以的,不需要上拉電阻;但是,接其它的芯片,還是不行。有興趣可以看看51的P0的結(jié)構(gòu);沒有興趣,依葫蘆畫瓢,照做沒錯(cuò)。2.7.1.4光敏電阻
當(dāng)照在光敏電阻上的光強(qiáng)變化時(shí),電阻值也在變化。顯然這是半導(dǎo)體材料的特性。使用光敏電阻可以檢測(cè)光強(qiáng)的變化。思考題1:有一個(gè)LED顯示設(shè)備,要求,當(dāng)光強(qiáng)變化的時(shí)候,LED的亮度隨著光強(qiáng)變化;光線越強(qiáng),LED越亮;反之亦然。怎么使用單片機(jī)實(shí)現(xiàn)此項(xiàng)功能?可以是多級(jí)調(diào)光,如8級(jí)調(diào)光;也可以做成無級(jí)調(diào)光。
2.7.2電阻的封裝
電阻的封裝有表面貼和軸向的封裝。
軸向封裝有:axial0.4、axial0.6、axial0.8等等;axial在英語中就是軸的意思;
表面貼電阻的封裝最常用的就是0805;當(dāng)然還有更大的;但是更大的電阻我想就不是很常用了。電位器的封裝在protel的書種可以很方便地找到。但是如果直接使用,可能會(huì)有一些偏差。老樹早期就犯過這種錯(cuò)誤,導(dǎo)致電位器旁邊的器件安裝費(fèi)勁。搞硬件和軟件是有所不同的,搞硬件的人,一定要精確。
在硬件上的一個(gè)小的錯(cuò)誤,都會(huì)造成這塊板的推倒重來;因?yàn)楫a(chǎn)品是不能有飛線的;而這個(gè)小小的錯(cuò)誤相當(dāng)于軟件上的一條語句,在軟件調(diào)試階段悄悄改掉,可以神不知鬼不覺;在PCB上,特別惡心。而且誰都知道-老板最知道。什么是精確呢?
1.對(duì)你所要實(shí)現(xiàn)的工作的目標(biāo)理解準(zhǔn)確;
2.對(duì)你的電路圖要清楚每一個(gè)器件在其中所起的作用;如果不明白,可以找一個(gè)專家問問,得到確認(rèn);如果不清楚,可以先試試;
3.對(duì)每一個(gè)器件的封裝要嚴(yán)格把握,該是什么形狀、外形一定要完全一致;還有考慮到空間是不是對(duì)其它的板卡器件有影響;對(duì)邊緣連接器件與電路板的邊緣之間的距離、ISA和PCI的邊緣連接件與擋板之間的關(guān)系要完全把握才能去做電路板;否則只是浪費(fèi)金錢和時(shí)間;
對(duì)邊緣器件與邊緣之間的距離要是不能有把握的話,可以找3個(gè)人,每個(gè)人都計(jì)算一遍,取個(gè)平均值,基本上就差不多了。
4.對(duì)單片機(jī)的資源能不能作成這件事情一定要有把握,CPU運(yùn)算速度和字長(zhǎng)、內(nèi)存夠不夠大、程序存儲(chǔ)器夠不夠大,需要仔細(xì)的規(guī)劃;
5.原理圖經(jīng)過專家認(rèn)可無誤后,畫出來的PCB需要做網(wǎng)絡(luò)檢查,做到與原理圖完全一致;精確,實(shí)際上是敬業(yè)的精神。
2.8繼電鰲⒐?fàn)C痰縉?br>2.8.1繼電器繼電器,就是利用繼電器的線包在加電后產(chǎn)生的磁力,將2個(gè)電極吸合在一起;初中還是高中的物理有它的原理。有興趣可以打開一支看看,很好玩的。繼電器有:1)公共端:COM
2)常開:normalopen,NO3)常閉:normalclose,NC繼電器主要指標(biāo):工作電壓:
工作電壓有直流和交流的2種;
在PCB上,通常是直流的;交流的繼電器通常是AC24V的居多,當(dāng)然,還有AC220V的。交流的繼電器國(guó)產(chǎn)的比進(jìn)口的,比如,idec,OMRON,fujitsu便宜很多,當(dāng)然,質(zhì)量也差一些?梢栽诎俣壬蠈iT搜索一下繼電器,上面有一些廠家產(chǎn)品的介紹。
常用的小功率的繼電器是national的居多,OMRON也有,便宜一些,一盒50只。常用的電壓有:
DC5V/DC9V/DC12V/DC24V等;根據(jù)觸點(diǎn)數(shù)量,可以分為:?jiǎn)蔚秵螖S/SPST單刀雙擲/SPDT雙刀雙擲/DPDT四刀雙擲等/?
還要根據(jù)觸點(diǎn)容量來分。
一般的都是DC30V/1A或者DC30V/2A,AC110V/0.2A,再大,就不能使用繼電器了,因?yàn)樵谟|點(diǎn)切換,電流通過的瞬間,會(huì)產(chǎn)生拉弧,燒毀觸點(diǎn),使得切換不可靠;這是,可以使用固態(tài)繼電器。實(shí)際上,在PCB上的繼電器的任務(wù)就是給出一個(gè)干接點(diǎn)信號(hào),作為控制信號(hào)使用,傳遞的是一個(gè)信號(hào),而不是能量;蛘呖刂埔粋(gè)大功率的開關(guān)等,讓大功率的開關(guān)去控制功率的傳遞;但是,后者也不如固態(tài)繼電器來得方便。
繼電器的封裝通常是DIP16或者以上;也有更小的繼電器,但是,價(jià)錢跟DIP16的差不多。注意:DIP16的繼電器只有8個(gè)管腳;所以設(shè)計(jì)封裝時(shí),不要圖省事直接使用DIP16,這樣容易在焊接的時(shí)候焊反了,導(dǎo)致出錯(cuò)。要專門設(shè)計(jì)繼電器的封裝,該有幾個(gè)腳就使用幾個(gè)腳。2.8.2固態(tài)繼電器
固態(tài)繼電器,說白了,就是使用發(fā)光管觸發(fā)的過零觸發(fā)的可控硅?梢哉f,跟光耦很相似,也是4個(gè)管腳,只是區(qū)別在:
4)直接使用直流電壓控制;可以認(rèn)為內(nèi)部已經(jīng)有了一個(gè)限流電阻;5)接收光信號(hào)的一端是過零觸發(fā)的可控硅;可以說是一個(gè)電子開關(guān),無觸點(diǎn)的繼電器。
因?yàn)闊o觸點(diǎn),所以可以通過大電流而不產(chǎn)生拉弧,工作壽命與開關(guān)次數(shù)無關(guān)。
觸點(diǎn)作為信號(hào)使用的繼電器的時(shí)間的工作壽命是100萬次到300萬次,可以查看技術(shù)手冊(cè);固態(tài)繼電器可以認(rèn)為是無限次的,所以在大電流和頻繁開關(guān)的場(chǎng)合,使用固態(tài)繼電器。固態(tài)繼電器觸點(diǎn)通過的信號(hào)通常是交流電壓,但是也有直流電壓的。固態(tài)繼電器可以通過AC220V或者AC380V以下的交流電;它的2個(gè)指標(biāo):1)工作電壓,通常為DC5V和DC12V,也有DC24V的;2)工作電流:AC220V/1A/2A/4A不等。
國(guó)產(chǎn)的固態(tài)繼電器質(zhì)量不錯(cuò),跟進(jìn)口的沒有區(qū)別,就是封裝的質(zhì)量太差,一批買回來,個(gè)個(gè)都不一樣,焊在電路板上東倒西歪,不美觀;至于小功率的國(guó)產(chǎn)的繼電器市場(chǎng)上比較少見,有也不敢使。
進(jìn)口的固態(tài)繼電器有美國(guó)的和日本的,4A以上的比較貴,日本的OMRON的固態(tài)繼電器2A的才賣8元,侃侃價(jià)估計(jì)還能便宜,體積小,封裝絕對(duì)的準(zhǔn)確,可以很整齊地在電路板上排列,不占地方;
什么時(shí)候國(guó)貨也能象日本的那樣好?
什么時(shí)候所有的中國(guó)人都能象日本人那樣的敬業(yè)?
這個(gè)論壇不是罵日本人的地方,所以不往下說了;老樹愿意將自己的一點(diǎn)微薄的經(jīng)驗(yàn)獻(xiàn)給大家。在電子產(chǎn)品應(yīng)用的中端低端市場(chǎng)將外國(guó)產(chǎn)品趕出中國(guó)市場(chǎng)我想中國(guó)人還是可以做到吧。2.9線性電源:變壓器、整流橋與三端穩(wěn)壓器
什么是線性電源?為什么叫線性?老樹查了網(wǎng)絡(luò)上的資料,也沒有答案,只好等待高明教我。PCB上需要供電,就需要電源。電源分2種,一種是線性電源,象7805,就是線性電源;一種是開關(guān)電源,是將AC220V直接整流濾波成高壓,推動(dòng)功率管工作在100Khz以上,再整流濾波成低壓。
開關(guān)電源的工作原理可以通過百度查到。
線型電源需要工頻變壓器,將AC220V變換成低壓,經(jīng)過全橋的整流,和大電容的濾波,成為脈動(dòng)的直流,再經(jīng)過三端穩(wěn)壓器,輸出直流電壓。
輸出端還需要大的電解電容濾波。注意這時(shí)要選用足夠大的電容容量和耐壓值的電解電容。耐壓值不夠,你就等著聽響吧。電容容量不夠,整流輸出的電壓和輸出的電壓的壓差不夠,輸出電壓會(huì)有紋波,單片機(jī)系統(tǒng)工作不正常。
通常電路板上需要的是DC5V,一般來說,現(xiàn)在的電路板,一片7805,再加散熱片也基本夠用了。功率越大,散熱片也越大。變壓器有多種規(guī)格:
1、普通E型矽鋼片繞制的變壓器,現(xiàn)在最大量的是廣西普寧雄英出的變壓器,通過了長(zhǎng)城認(rèn)證,質(zhì)量是不錯(cuò)的,最大的好處是便宜,現(xiàn)貨量大;通常的規(guī)格是單9V、12V,雙9V、12V等;可能這個(gè)地方出矽鋼片,有這樣的礦藏。2、環(huán)型變壓器,象個(gè)橢圓型;
3、最近好像圓形的變壓器也多起來了,后2種變壓器應(yīng)該是漏磁小、發(fā)熱少、效率高,大功率的整流時(shí)使用,當(dāng)然單位瓦數(shù)也貴啊,按照1元/W計(jì)算預(yù)算應(yīng)該差不多了。這2種變壓器都需要定制,可以定制各種規(guī)格的。
4、焊在電路板上的變壓器,比較有名的是兵字品牌。在《電子技術(shù)應(yīng)用》和《電子產(chǎn)品世界》上常年做廣告。秦皇島也有一家,好像叫耀華。怎么計(jì)算變壓器需要多大的功率?
首先,計(jì)算功耗。比如:Dc5V/0.25A,也就是1.25W的功耗。7805效率50%,變壓器效率50%,就是說,需要6W的變壓器。
Dc5V/0.25A的輸入壓差大概在3V,6V的變壓器整流出來的電壓是大約6×1.4=8.4V,也差不多了。所有選用AC6V/6W的變壓器。再到市場(chǎng)上找一個(gè)差不多的變壓器用上就行了。
注意:電流越大,壓差越大;在電路工作的時(shí)候,可以拿示波器看看電源的波形是不是平穩(wěn)。78系列的芯片做的比較多而好的是美國(guó)國(guó)家半導(dǎo)體公司(nationalsemiconductor)的LM780X和摩托羅拉公司MC780X等2大系列。78系列是高壓差的穩(wěn)壓芯片,現(xiàn)在有低壓差的穩(wěn)壓芯片,其機(jī)理參見沙占友老師的書籍。有LM2930、LM2937、LM2940C、LM2990等4個(gè)系列。
如果需要更大的電源供給,或者使用開關(guān)電源,或者去買成品的線性電源,象遼寧朝陽4NIC的電源,質(zhì)量不錯(cuò),價(jià)格也不錯(cuò)。附:在網(wǎng)絡(luò)上找到的一篇文章:開關(guān)電源和線性電源的區(qū)別
線性電源的調(diào)整管工作在放大狀態(tài),因而發(fā)熱量大,效率低(35%左右),需要加體積龐大的散熱片,而且還需要同樣也是大體積的工頻變壓器,當(dāng)要制作多組電壓輸出時(shí)變壓器會(huì)更喲。控悼澊的调哲工作栽rズ禿徒刂磷刺蚨⑷攘啃。矢擼?5%以上)而且省掉了大體積的變壓器。但開關(guān)電源輸出的直流上面會(huì)疊加較大的紋波(50mVat5Voutputtypical),在輸出端并接穩(wěn)壓二極管可以改善,另外由于開關(guān)管工作是會(huì)產(chǎn)生很大的尖峰脈沖干擾,也需要在電路中串連磁珠加以改善。相對(duì)而言線性電源就沒有以上缺陷,它的紋波可以做的很。5mV以下)。對(duì)于電源效率和安裝體積有要求的地方用開關(guān)電源為佳,對(duì)于電磁干擾和電源純凈性有要求的地方(例如電容漏電檢測(cè))多選用線性電源。另外當(dāng)電路中需要作隔離的時(shí)候現(xiàn)在多數(shù)用DC-DC來做對(duì)隔離部分供電(DC-DC從其工作原理上來說就是開關(guān)電源)。還有,開關(guān)電源中用到的高頻變壓器可能繞制起來比較麻2.10開關(guān)電源芯片
相對(duì)于線性穩(wěn)壓器來說,開關(guān)電源在計(jì)算機(jī)主板上、工控機(jī)主板和各種各樣的電路板上起著電壓變換的作用。例如:將低電壓,比如:電池轉(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)常看電子產(chǎn)品世界和電子技術(shù)應(yīng)用的網(wǎng)友一定對(duì)maxim的電源芯片印象巨深。五花八門的電源芯片,讓你無法選擇到底選用那種是自己的所需要的。在maxim的產(chǎn)品樹中,對(duì)電源是這樣分類的:PowerSuppliesandBatteryManagementtchmodeDC-DCPowerSupplies408IsolatedPowerSupplies22Low-DropoutLinearRegulators75WhiteLEDDrivers13Low-SideMOSFETDrivers14High-SideMOSFETDrivers6ORingMOSFETControllersBatteryChargers36
BatteryProtectors,SelectorsandMonitors17Regulator+ResetCircuits4CurrentSenseAmplifiers22
LCD/ECB/CCFLDisplayBiasSupply87ALSOSEE:Hot-SwapandPowertchingALSOSEE:VoltageReferences
我們經(jīng)常使用到的tchmodeDC-DCPowerSupplies,這里有分成n種。老樹比較熟悉的是step-down電源芯片,也就是所謂的從高電壓下降到低的電壓的芯片;從低到高,當(dāng)然是step-up電源芯片。
象philips的電動(dòng)剃須刀,里面肯定有電源管理芯片,當(dāng)電池電壓下降,但是,電池又有電的時(shí)候,能夠輸出恒定的電壓,榨干電池內(nèi)的最后一點(diǎn)電能,能夠舒適地使用一段很長(zhǎng)的時(shí)間。比如,你的電路板上只有DC24V電壓,但是,還需要Dc5V/2A的電源,這么高的壓降,使用線性穩(wěn)壓器顯然不合適,如果使用DC/DC模塊,成本太高,體積也比較大,所以,得選用一款芯片完成這個(gè)功能。
按照maxim給出的復(fù)雜的選擇,根據(jù)你的要求,多選擇幾項(xiàng),maxim會(huì)給出一個(gè)清單,在清單中去選擇你最適合你的需求的芯片。
老樹原來使用過的完成此項(xiàng)功能的芯片是:MAX724、LT1076;這2款芯片需要1個(gè)50uH的電感才能輸出Dc5V電源;但是,這種開關(guān)電源芯片有個(gè)好處,就是輸入只要在它的允許的范圍內(nèi)波動(dòng),或者負(fù)載在變化,輸出DC5V電源十分穩(wěn)定。
電源的范圍從Dc10V~DC40V,max724均能輸出5A的DC5V電源。Maxim724下載連接地址:
LT1076下載鏈接地址:
在ARM上使用的電源芯片是TI公司的TPS767D318。下載鏈接:
在沙老師的書中,也介紹了幾款電源轉(zhuǎn)換芯片,可供參考。如果是作為隔離電壓產(chǎn)生,例如:5V轉(zhuǎn)換成隔離的5V,用在光耦、通訊等電路中,去自己做隔離電路就有點(diǎn)劃不來,不如去買現(xiàn)成的DC/DC模塊。這點(diǎn)國(guó)產(chǎn)的模塊做的不錯(cuò),象老樹常用的Dc12V/DC5V500mA的模塊,大約30元,質(zhì)量還是不錯(cuò)的。比較有名的電源轉(zhuǎn)換模塊,如:
如果是作為隔離電壓產(chǎn)生,例如:5V轉(zhuǎn)換成隔離的5V,用在光耦、通訊等電路中,去自己做隔離電路就有點(diǎn)劃不來,不如去買現(xiàn)成的DC/DC模塊。這點(diǎn)國(guó)產(chǎn)的模塊做的不錯(cuò),象老樹常用的Dc12V/DC5V500mA的模塊,大約30元,質(zhì)量還是不錯(cuò)的。老樹常用的電源轉(zhuǎn)換模塊,如:
北京星原豐泰電子技術(shù)有限公司的SAPS系列DC/DC模塊,這種模塊很多廠家都是兼容的;電源轉(zhuǎn)換模塊還有AC/DC、DC/AC等不同;具體不同可以參看廠家網(wǎng)站。廠家鏈接:
-bj.com/index.htm
另外一家生產(chǎn)微電源模塊的廠家是:深圳市順源科技有限公司。廠家鏈接:
這種電源模塊國(guó)產(chǎn)的質(zhì)量不錯(cuò)了,完全可以取代進(jìn)口產(chǎn)品。
DC/DC模塊完全可以將輸入輸出的電源地連接在一起,作為普通的非隔離的電源轉(zhuǎn)換器使用。2.11器件選購(gòu)、芯片批號(hào)、封裝知識(shí)等
在市場(chǎng)上買芯片,千萬注意不要買到舊片、拆機(jī)片;舊片、拆機(jī)片有些湊合能用,有些干脆不行;即使現(xiàn)在能用,壽命肯定有限;
舊的就是舊的,肯定瞞不過有心人;主要是從芯片的管腳的嶄新程度、芯片印刷的質(zhì)量等仔細(xì)觀察。
舊的芯片往往管腳參差不齊、搪錫發(fā)烏、包裝的管子不夠新;而且往往是芯片的表面發(fā)白,那是因?yàn)楸淮蚰ミ^了,然后重新絲網(wǎng)印刷上廠家名稱、批號(hào)等;
所以最好是買激光打標(biāo)的器件,激光打標(biāo)的產(chǎn)品肯定是新貨,或者沒有使用過的貨;而且買的時(shí)候需要注意,器件的批號(hào)最好是最近當(dāng)年的或者是最近幾個(gè)星期的產(chǎn)品;總而言之,別花冤枉錢,還影響產(chǎn)品的質(zhì)量。同樣的產(chǎn)品,不同廠家的質(zhì)量也不一樣。我比較喜歡的是美國(guó)TI、摩托羅拉MC、MAXIM、LINEAR的產(chǎn)品;假的也少;
例如,max7219芯片上有一下標(biāo)志:MAXIMMAX7219CNG0323PY
MAXIM就是芯片的廠家;
MAX7219CNG是廠家的型號(hào),CNG跟封裝和7219這個(gè)系列產(chǎn)品的細(xì)微的差別有關(guān);03是指201*年;23是指該年的第23周;一年是52周,所以這個(gè)數(shù)字不會(huì)超出52;激光打標(biāo)是在芯片上形成一個(gè)暗色的與芯片表面有一個(gè)明顯對(duì)比的標(biāo)志;中關(guān)村的大恒公司就有激光打標(biāo)機(jī)的業(yè)務(wù);但是未必是在芯片上打標(biāo);
有時(shí),激光打標(biāo)會(huì)產(chǎn)生類似暗黃色的標(biāo)志,這跟激光器功率和芯片封裝材料有關(guān)。關(guān)于CA1161看門狗的原理和應(yīng)用參見以下鏈接:
關(guān)于電源監(jiān)控和看門狗的原理,參見以下鏈接:
#μP監(jiān)控
#μP監(jiān)控電路#常見問題解答第三課合格電子工程師是怎樣煉成的?
不好意思,第二課沒有寫完,又開一課老樹當(dāng)過老師,有毀人不倦的習(xí)慣,再者,這個(gè)問題想了很久了,也基本想通了。
在網(wǎng)絡(luò)上很多初學(xué)者在問:怎樣成為一個(gè)合格的電子工程師?這個(gè)問題有很多答案。老樹談?wù)勛约旱目捶ā5谝徊饺腴T-51核心和基本電路
中國(guó)人有10億啊,每年有多少大學(xué)生畢業(yè)呢?我不知道。但是我看到有一張照片,招聘會(huì)上熙熙攘攘,人來人往,十分震撼。從來沒有一個(gè)時(shí)刻讓我感覺到中國(guó)的人力資源是如此的豐富。但是,從現(xiàn)在的大學(xué)畢業(yè)出來的學(xué)生學(xué)到了什么東西呢?一些理論,跟實(shí)際脫鉤的理論。有沒有用呢?有點(diǎn)用。但是,在企業(yè)中,需要的是實(shí)際干點(diǎn)事情出來,實(shí)際解決問題。所以說,很多企業(yè)不想要大學(xué)本科出來的大學(xué)生,說動(dòng)手,沒有動(dòng)手能力,不知道電阻電容長(zhǎng)得什么樣子,能夠做什么?但是又自視甚高,對(duì)工資的期望值比較高。等到能夠干點(diǎn)事情了,又拍拍跑了。所以企業(yè)現(xiàn)在喜歡使用大專中專甚至是職業(yè)學(xué)校培訓(xùn)出來的小孩,至少這些孩子們知道自己的份量,能夠?qū)崒?shí)在在地做事。要知道,他們很多人的天賦并不差,有些人甚至可以說聰明,只是因?yàn)楹芏嗳耸羌彝l件不好,打小就是苦孩子,沒有條件接受良好的教育。一旦給機(jī)會(huì),他們都比較珍惜。現(xiàn)在的大學(xué),誤人子弟甚多。擴(kuò)招是沒有錯(cuò),但是,實(shí)驗(yàn)室擴(kuò)了嗎?教室擴(kuò)了嗎?教師擴(kuò)了嗎?至少實(shí)驗(yàn)室是沒有擴(kuò)。老樹認(rèn)得的一個(gè)研究生說,只有到了一個(gè)階段,才能到實(shí)驗(yàn)室作實(shí)驗(yàn)。很多導(dǎo)師就是把學(xué)生當(dāng)奴隸一樣干活,要是在干活中能夠?qū)W到東西那就算是運(yùn)氣好的;運(yùn)氣不好的,直接就是導(dǎo)師的廉價(jià)的勞力了,學(xué)不到東西,活倒干了不少。但是,既然學(xué)生要拿文憑,要應(yīng)付考試,沒有辦法,那怎么自救?如果勵(lì)志要做一名出色的電子工程師,老樹可以談?wù)勛约旱目捶。做一個(gè)電子工程師,先從51學(xué)起,這是得到公認(rèn)的。不需老樹饒舌。
首先,去買一個(gè)開發(fā)板,越便宜的越好,在上面可以練練keilC。最好再買一個(gè)仿真器,這樣調(diào)試的效率高。當(dāng)然這個(gè)不便宜,但是我覺得可以志同道合的哥幾個(gè)合買。反正1天24小時(shí),每人8個(gè)小時(shí)輪流上,有個(gè)幾個(gè)月,C51語言也就差不多了。
其次,看看老樹的文章,看看需要學(xué)點(diǎn)什么基本的東西。北京的大學(xué)生有福啊,沒事到中發(fā)去轉(zhuǎn)轉(zhuǎn),認(rèn)認(rèn)老樹的文章上說得哪些電阻、電容、三極管、芯片、接插件什么的,看看自己的電腦上的主板、網(wǎng)卡、聲卡、顯卡是怎么畫的,找找感覺,這些板卡都是高手的杰作啊。
構(gòu)思一個(gè)小的產(chǎn)品,按照老樹文章上的思考題,找本protel99se的書,從每個(gè)菜單練起,循序漸進(jìn),從單片機(jī)最小系統(tǒng)->輸入->LED->RS232/RS422/RS485->固態(tài)繼電器、繼電器等原理圖畫起,邊畫邊學(xué),一點(diǎn)一點(diǎn)做,做好了,最好找個(gè)高手看看,找出毛病在哪里,再反復(fù)改進(jìn)。在這樣的模擬實(shí)戰(zhàn)中找到感覺。
推薦老虎工作室的protel99系列4本,寫的還是循序漸進(jìn)的,當(dāng)然不便宜;咬咬牙,可以合買一套,輪著看。
順便說一句我對(duì)市場(chǎng)上的開發(fā)板的看法,這些開發(fā)板當(dāng)然都不錯(cuò),但是,只能學(xué)到語言,不能教你畫原理圖和PCB,實(shí)際做的時(shí)候,還是需要高手帶一帶是最快的。我就是一個(gè)朋友教我的,也就半天的功夫,就會(huì)了。當(dāng)時(shí)還是DOS下的protel3.16版本。
以戰(zhàn)養(yǎng)戰(zhàn)。找個(gè)公司、企業(yè),幫他們做個(gè)小產(chǎn)品,既能得到公司的高手的指點(diǎn),又能賺到一筆費(fèi)用,豈不甚佳?這時(shí),你的開發(fā)板、仿真器的費(fèi)用就出來了。從原理圖->PCB->C51,單片機(jī)也入門了。
第二步:登堂入室-掌握系統(tǒng)的電路知識(shí)
這時(shí),需要對(duì)電子技術(shù)的所有東東進(jìn)行全面的了解,主要是看看雜志、BBS、網(wǎng)站上的技術(shù)文章、何立民先生主持編著的《單片機(jī)應(yīng)用技術(shù)大全》系列,將單片機(jī)和它的配套的電路,輸入輸出、通訊等等做一個(gè)全面的了解。目標(biāo)是為什么?系統(tǒng)的技術(shù)儲(chǔ)備。知道什么問題可以使用什么方法解決,可能在什么地方找到解決的方法,這對(duì)你以后走上工作崗位,解決實(shí)際問題是非常有好處的。如果你真能這么做,那么,你今后肯定比單位中的老同志還要棒。老樹在國(guó)營(yíng)研究所的時(shí)候,曾經(jīng)有一段時(shí)間無所事事,就是在那一兩年的時(shí)間內(nèi)將研究所的技術(shù)雜志看了一遍,尤其是《電子技術(shù)應(yīng)用》。打下了一個(gè)良好的基礎(chǔ)。
這時(shí),爭(zhēng)取機(jī)會(huì),學(xué)習(xí)高手們的硬件設(shè)計(jì)。一個(gè)比較快的辦法就是到工控機(jī)的廠家那里,看看工控機(jī)的板卡和調(diào)理板是怎樣設(shè)計(jì)的,都使用了哪些東西。記得老樹第一次看到國(guó)外的一個(gè)器件,到處去問,也不知道是什么東東。后來在四通工控那里看到了,原來是固態(tài)繼電器。這時(shí),腦子里關(guān)于固態(tài)繼電器的知識(shí)都冒出來了。再一看,配套市場(chǎng)大把的。
什么東西就是這樣,你要是不知道它是干什么的,你天天看見,也熟視無睹。
有心人就是這樣,在什么樣的情況下,都能慢慢積蓄知識(shí)和力量。畢竟一個(gè)產(chǎn)品,不是只會(huì)單片機(jī)就可以了,還是需要很多的外圍電路,按照何老師的分類,前向、后向、人機(jī)、互相通道等,才能做成一件產(chǎn)品的。
這個(gè)時(shí)候,抓住任何機(jī)會(huì),去參與一個(gè)大型產(chǎn)品開發(fā),在其中做一件事情,你可以學(xué)到溝通、協(xié)作、界面等產(chǎn)品開發(fā)的一些要素。第三步:勤奮至卓越
中國(guó)人多啊,每個(gè)人都是智商100,誰比誰傻啊。憑什么你比別人強(qiáng)?你能有好的工作、好的收入,你能香車寶馬,醇酒美人?老樹認(rèn)為,沒有別的辦法,就是靠勤奮。勤奮學(xué)習(xí)-這個(gè)道理大家知道,知識(shí)就是金錢啊;
勤奮工作-想比別人多賺錢,在智商相同的情況下,就是靠多付出時(shí)間干活,再提高工作效率。別人5×8小時(shí)工作,你是7×16小時(shí),再提高工作效率一倍,你不久賺了比別人多5倍的錢嗎?老樹公司有2個(gè)員工,原來在老家種蘋果,沒有賺到錢,到老樹的公司中干活,計(jì)件,活忙的時(shí)候,早晨8:00起來,晚上12:00收工,年底也賺了一筆錢回家,高高興興,老樹也開心,原來一屋子人干的活,現(xiàn)在2個(gè)人干了,公司管理省事了,員工也賺到了錢。
開發(fā)也是一樣。當(dāng)然,這個(gè)需要你的公司有這個(gè)機(jī)制,多勞多得的機(jī)制。但是,要是現(xiàn)在沒有,你要不要這樣干呢?
我認(rèn)為,需要。一方面,干別人的活,練自己的技術(shù),長(zhǎng)自己的本事。另一方面,多干活,才能快速增長(zhǎng)本事,技術(shù)才能躍變、突破,登堂入室,再得心應(yīng)手、出神入化。至少,熟練工種是沒有問題的吧。
就象一壺水,老是小火,燒了半天,也是溫吞水;可是大火一上,一會(huì)就開了,就是這個(gè)意思。你看《射雕英雄轉(zhuǎn)》中的郭靖,沒有別的本事,就是傻練,有一天開竅了,如有神助。技術(shù)這個(gè)東西就是這樣,突破了門檻,就是坦途。需要勤奮勤奮再勤奮。有一天這個(gè)日子來了,你就苦盡甘來了。
勤奮還有另外一個(gè)含意,就是天道酬勤。其實(shí)是每個(gè)人看見勤奮的人,都會(huì)給他機(jī)會(huì)的,覺得幫助這樣的人,高興;把事情放在他的手里,也放心。還有一個(gè)含意是觸類旁通。知識(shí)需要很多的參照物,去比較、聯(lián)想、萃取、升華。換句話,你可能付出的是其他人的n倍的努力,可是你得到的是n倍以上的回報(bào),你的知識(shí)已經(jīng)不是簡(jiǎn)單的累加了,已經(jīng)質(zhì)變了。
如果你在這個(gè)單位,勤奮了,也出成果了,就是沒有得到公平的待遇,也沒有關(guān)系。換一個(gè)環(huán)境就是了,總有人會(huì)欣賞你的。再說了,付出總有回報(bào)。
有些人習(xí)慣怨天尤人,沒有好的老爸老媽,沒有好的老師,沒有好的同伴,沒有好的環(huán)境,沒有好的老板。這些人需要去看看周立功的文章,看看周老師怎樣一步步成長(zhǎng)的。第四步:溝通、協(xié)作
原來還有,現(xiàn)在越來越少,做一個(gè)小的產(chǎn)品,就可以生活無憂。
現(xiàn)在這種情況越來越少了。在任何一個(gè)單位,將一個(gè)產(chǎn)品做好,都需要與同伴主動(dòng)溝通,與不同部門的人互相協(xié)作。經(jīng)常是跟不同單位的人溝通完成意見事情。第五課單片機(jī)系統(tǒng)設(shè)計(jì)初探5.1概述
所謂系統(tǒng),就是說,除了單片機(jī)之外,還需要有:1)輸入2)輸出
輸入和輸出按照第一課的定義,包含了范圍:輸入基本上有以下的可能:1)鍵盤
2)串行接口(RS232/485/canbus/以太網(wǎng)/USB)3)開關(guān)量(TTL,電流環(huán)路,干接點(diǎn))
4)模擬量(4~20ma、0~10ma、0~5V(平衡和非平衡信號(hào)))輸出基本上有以下組成:
1)串行接口(RS232/485/canbus/以太網(wǎng)/USB)2)開關(guān)量(TTL、電流環(huán)路、干接點(diǎn)、功率驅(qū)動(dòng))
3)模擬量(4~20ma,0~10ma,0~5V(平衡和非平衡信號(hào)))4)LED顯示:發(fā)光管、八字5)液晶顯示器6)蜂鳴器處理核心主要有:
1)8位單片機(jī),主要就是51系列
2)32位arm單片機(jī),主要有atmel和三星系列
3)還有一些專用的單片機(jī),例如:MPS430,水表、電表、洗衣機(jī)、空調(diào)的單片機(jī)等等所謂系統(tǒng),也就是說,作為一個(gè)電子工程師,需要掌握以上所有方面的知識(shí),才能做到兵來將擋,水來土掩,無論設(shè)計(jì)任務(wù)有什么樣的需求,都能應(yīng)付自如,有多種方法可以實(shí)現(xiàn)同樣的目標(biāo),從中找到一個(gè)成本最低、質(zhì)量最高、可靠性最好的解決方案。
實(shí)際上,無論從事任何一種工作,對(duì)于本行業(yè)所需要掌握的知識(shí)應(yīng)該是全面而系統(tǒng)的;一開始,由于工作經(jīng)歷的欠缺,沒有實(shí)際的經(jīng)驗(yàn),但是,可以通過廣泛的閱讀構(gòu)成系統(tǒng)的知識(shí)框架;形成這個(gè)框架后,在工作中親身實(shí)踐,和閱讀其他工程師的作品,再往里填充各種各樣的細(xì)節(jié),使之不斷豐滿、充實(shí)、正確。5.2任務(wù)分析
5.2.1初步判斷采用何種單片機(jī)完成此項(xiàng)任務(wù)
1)干接點(diǎn)
就是類似于機(jī)械接點(diǎn),最簡(jiǎn)單的就是按鍵,一般來說是輸入、輸出的繼電器的接點(diǎn)信號(hào);無源;2)平衡信號(hào):
類似RS422、RS485信號(hào),是信號(hào)之間相互比較,來判斷是數(shù)字信號(hào)的1還是0;不容易收到干擾,傳輸距離遠(yuǎn);但是,最好使用雙絞線來傳輸;3)非平衡信號(hào):
單端接地的信號(hào),如:TTL電平、RS232等都是,特點(diǎn)是有一個(gè)公共的參考電壓,容易受到干擾,傳輸距離近;
可以通過網(wǎng)絡(luò)來查詢準(zhǔn)確的解釋。4)線性電路類似于音頻放大電路就是,特點(diǎn)是:要求輸入和輸出形成了一個(gè)線性對(duì)應(yīng)的關(guān)系;5)非線性電路
比如:無線電電路中的混頻器,將2個(gè)頻率合在一起,生成第三個(gè)頻率,就是非線性電路。好像還沒有聽說線性信號(hào)和非線性信號(hào)。只有模擬量和數(shù)字量信號(hào);6)模擬量和數(shù)字量
模擬量是連續(xù)變化的信號(hào),如:0~5V,4~20mA等;數(shù)字量是只有0、1兩種情況。5.251單片機(jī)系統(tǒng)的構(gòu)思?p>1.選用何種單片機(jī)
在我們的這個(gè)課程中,當(dāng)然是選用51系列的CPU了;實(shí)際上,可以選用的CPU的種類很多,從處理能力來說:1)4位單片機(jī)2)8位單片機(jī)3)16位單片機(jī)4)32位ARM
就8位單片機(jī),有專用的、通用的;也有高速的,還有的單片機(jī)具有A/D、D/A等各種資源;需要根據(jù)你的任務(wù),選用合適的單片機(jī)完成任務(wù)。
對(duì)初學(xué)者而言,我們考慮的僅僅是如何使用51系列的單片機(jī),如:89C51/52/54/58、78E52/54/58、77E58(雙串口)來完成設(shè)計(jì)任務(wù)。2.初步設(shè)計(jì)-寫出任務(wù)書
1)按照表格,對(duì)任務(wù)進(jìn)行分析,判斷單片機(jī)的資源是否夠,如:運(yùn)算速度,是否需要擴(kuò)展、是否需要串口、是否需要實(shí)時(shí)時(shí)鐘等;選用什么調(diào)理電路,等等;2)在確認(rèn)單片機(jī)能夠勝任工作后,對(duì)單片機(jī)的資源進(jìn)行規(guī)劃:1.內(nèi)存分配2.I/O口分配3.定時(shí)器分配工作4.外部中斷分配
3)單片機(jī)外圍電路確認(rèn)-開關(guān)量輸入和輸出調(diào)理電路(模擬量電路暫時(shí)不考慮)4)在以上分析的基礎(chǔ)上,設(shè)計(jì)單片機(jī)硬件框圖5)形成任務(wù)書初稿6)討論-修改-通過3.詳細(xì)設(shè)計(jì)1)原理圖
2)有3.3V和5V的混合邏輯設(shè)計(jì)嗎?3)PCB尺寸、定位孔和安裝方式
1.是正方形、長(zhǎng)方形、圓形、三角還是其它的特殊形狀?2.是ISA總線嗎?3.是PCI總線嗎?4.是歐標(biāo)的板卡嗎?
4)電源(AC220V/DC5V/DC12V,是否需要隔離)5)接插件封裝:1.采用直插、彎針?
2.3.81間距、5.08還是2.54間距(對(duì)應(yīng)于:150mil/200mil/100mil)3.采用DB9/DB25/DB37/DB62?直的還是彎的?孔的還是針的4.有邊緣器件嗎?6)基本布局
是否合理?考慮到散熱了嗎?考慮到機(jī)箱內(nèi)是否有打架的地方?7)器件選型盡量選用著名品牌中的價(jià)格便宜的兼容器件;8)器件的冗余度
需要考慮到功耗、耐壓值和接口器件的可靠性;例如:
1.功耗,需要計(jì)算電阻、變壓器的功耗,適當(dāng)留有50%以上的余量;
2.電解電容的耐壓值等:留有100%以上的余量,如:在DC5V電壓下,選用耐壓值25V的電容;
3.接口器件:對(duì)于接口器件,盡量使用DIP封裝的,便于更換;
9)成本分析(包括制版費(fèi)、器件費(fèi)和焊接、調(diào)試費(fèi)用),作出預(yù)算,盡量降低成本,選用功能滿足價(jià)格便宜的器件,不同廠家之間的同樣的芯片價(jià)格相差比較遠(yuǎn)10)電路板與機(jī)箱之間的安裝關(guān)系11)形成詳細(xì)設(shè)計(jì)初稿12)討論-修改-通過
4.在大腦中模擬電路板的外形、幾何尺寸和功能
就好像是三維動(dòng)畫一樣,電子工程師需要在大腦中,在設(shè)計(jì)的整個(gè)過程中,對(duì)電路板的外形、接口、幾何尺寸、功能等反復(fù)在從各個(gè)角度去觀察、構(gòu)思,就好像有一個(gè)實(shí)際的電路板在腦子里一樣,謀定而后動(dòng);當(dāng)然,這不是一蹴而就的。附:電子工程師培訓(xùn)大綱(201*03110041)
愚以為,掌握了一下的硬件和軟件知識(shí),基本上就可以成為一個(gè)合格的電子工程師:第一部分:硬件知識(shí)一、數(shù)字信號(hào)
1、TTL和帶緩沖的TTL信號(hào)2、RS232和定義
3、RS485/422(平衡信號(hào))4、干接點(diǎn)信號(hào)二、模擬信號(hào)視頻1、非平衡信號(hào)2、平衡信號(hào)三、芯片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)獨(dú)石電容2)瓷片電容3)電解電容4、電感
5、電源轉(zhuǎn)換模塊6、接線端子7、LED發(fā)光管
8、8字(共陽和共陰)9、三極管2N555110、蜂鳴器
五、單片機(jī)最小系統(tǒng)1、單片機(jī)
2、看門狗和上電復(fù)位電路3、晶振和瓷片電容六、串行接口芯片1、eeprom
2、串行I/O接口芯片3、串行AD、DA
4、串行LED驅(qū)動(dòng)、max7129七、電源設(shè)計(jì)
1、開關(guān)電源:器件的選擇2、線性電源:1)變壓器2)橋3)電解電容3、電源的保護(hù)1)橋的保護(hù)2)單二極管保護(hù)八、維修1、電源2、看門狗3、信號(hào)九、設(shè)計(jì)思路1、電源:電壓和電流
2、接口:串口、開關(guān)量輸入、開關(guān)量輸出3、開關(guān)量信號(hào)輸出調(diào)理1)TTL—>繼電器
2)TTL—>繼電器(反向邏輯)3)TTL—>固態(tài)繼電器4)TTL—>LED(8字)5)繼電器—>繼電器6)繼電器—>固態(tài)繼電器4、開關(guān)量信號(hào)輸入調(diào)理1)干接點(diǎn)—>光耦2)TTL—>光耦
5、CPU處理能力的考慮6、成為產(chǎn)品的考慮:
1)電路板外形:大小尺寸、異形、連接器、空間體積2)電路板模塊化設(shè)計(jì)3)成本分析4)器件的冗余度1.電阻的功耗2.電容的耐壓值等5)機(jī)箱6)電源的選擇7)模塊化設(shè)計(jì)8)成本核算
1.如何計(jì)算電路板的成本?
2.如何降低成本?選用功能滿足價(jià)格便宜的器件十、思考題
1、如何檢測(cè)和指示RS422信號(hào)2、如何檢測(cè)和指示RS232信號(hào)3、設(shè)計(jì)一個(gè)4位8字的顯示板1)電源:DC122)接口:RS232
3)4位3”8字(連在一起)4)亮度檢測(cè)5)二級(jí)調(diào)光4、設(shè)計(jì)一個(gè)33位1”8字的顯示板1)電源:DC5V2)接口:RS232
3)3排11位8字,分4個(gè)、3個(gè)、4個(gè)3組,帶行與行之間帶間隔4)單片機(jī)最小系統(tǒng)5)譯碼邏輯
6)顯示驅(qū)動(dòng)和驅(qū)動(dòng)器件
5、設(shè)計(jì)一個(gè)PCL725和MOXAC168P的接口板1)電源:DC5V
2)接口:PCL725/MOXA8個(gè)RS2321.PCL725,直立DB37,孔2.MOXAC168P,DB62彎
3)開關(guān)量輸出信號(hào)調(diào)理:6個(gè)固態(tài)繼電器和8個(gè)繼電器,可以被任何一路信號(hào)控制和驅(qū)動(dòng),接口:固態(tài)繼電器5.08直立,繼電器3.81直立
4)開關(guān)量輸入調(diào)理:干接點(diǎn)閉合為1或0可選,接口:3.81直立5)RS232調(diào)理:1.LED指示
2.前4路RS232全信號(hào),后4路只需要TX、RX、03.無需光電隔離
4.接口形式:DB9(針)直立第二部分:軟件知識(shí)一、匯編語言二、C51
該部分可以從市場(chǎng)上買到的N種開發(fā)板上學(xué)到,至于第一部分,需要人來帶吧
單片機(jī)的外部結(jié)構(gòu):1、DIP40雙列直插;
2、P0,P1,P2,P3四個(gè)8位準(zhǔn)雙向I/O引腳;(作為I/O輸入時(shí),要先輸出高電平)3、電源VCC(PIN40)和地線GND(PIN20);
4、高電平復(fù)位RESET(PIN9);(10uF電容接VCC與RESET,即可實(shí)現(xiàn)上電復(fù)位)
5、內(nèi)置振蕩電路,外部只要接晶體至X1(PIN18)和X0(PIN19);(頻率為主頻的12倍)6、程序配置EA(PIN31)接高電平VCC;(運(yùn)行單片機(jī)內(nèi)部ROM中的程序)7、P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1
單片機(jī)內(nèi)部I/O部件:(所為學(xué)習(xí)單片機(jī),實(shí)際上就是編程控制以下I/O部件,完成指定任務(wù))1、四個(gè)8位通用I/O端口,對(duì)應(yīng)引腳P0、P1、P2和P3;2、兩個(gè)16位定時(shí)計(jì)數(shù)器;(TMOD,TCON,TL0,TH0,TL1,TH1)3、一個(gè)串行通信接口;(SCON,SBUF)4、一個(gè)中斷控制器;(IE,IP)
針對(duì)AT89C52單片機(jī),頭文件AT89x52.h給出了SFR特殊功能寄存器所有端口的定義。教科書的160頁給出了針對(duì)MCS51系列單片機(jī)的C語言擴(kuò)展變量類型。C語言編程基礎(chǔ):
1、十六進(jìn)制表示字節(jié)0x5a:二進(jìn)制為01011010B;0x6E為01101110。
2、如果將一個(gè)16位二進(jìn)數(shù)賦給一個(gè)8位的字節(jié)變量,則自動(dòng)截?cái)酁榈?位,而丟掉高8位。3、++var表示對(duì)變量var先增一;var表示對(duì)變量后減一。4、x|=0x0f;表示為x=x|0x0f;
5、TMOD=(TMOD&0xf0)|0x05;表示給變量TMOD的低四位賦值0x5,而不改變TMOD的高四位。
6、While(1);表示無限執(zhí)行該語句,即死循環(huán)。語句后的分號(hào)表示空循環(huán)體,也就是{;}在某引腳輸出高電平的編程方法:(比如P1.3(PIN4)引腳)
#include//該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含P1.3voidmain(void)//void表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口{
P1_3=1;//給P1_3賦值1,引腳P1.3就能輸出高電平VCCWhile(1);//死循環(huán),相當(dāng)LOOP:gotoLOOP;}
注意:P0的每個(gè)引腳要輸出高電平時(shí),必須外接上拉電阻(如4K7)至VCC電源。在某引腳輸出低電平的編程方法:(比如P2.7引腳)
#include//該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含P2.7voidmain(void)//void表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口{
P2_7=0;//給P2_7賦值0,引腳P2.7就能輸出低電平GNDWhile(1);//死循環(huán),相當(dāng)LOOP:gotoLOOP;}
在某引腳輸出方波編程方法:(比如P3.1引腳)
#include//該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含P3.1voidmain(void)//void表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口{
While(1)//非零表示真,如果為真則執(zhí)行下面循環(huán)體的語句{
P3_1=1;//給P3_1賦值1,引腳P3.1就能輸出高電平VCCP3_1=0;//給P3_1賦值0,引腳P3.1就能輸出低電平GND
}//由于一直為真,所以不斷輸出高、低、高、低,從而形成方波}
將某引腳的輸入電平取反后,從另一個(gè)引腳輸出:(比如P0.4=NOT(P1.1))
#include//該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含P0.4和P1.1voidmain(void)//void表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口{P1_1=1;//初始化。P1.1作為輸入,必須輸出高電平While(1)//非零表示真,如果為真則執(zhí)行下面循環(huán)體的語句{
if(P1_1==1)//讀取P1.1,就是認(rèn)為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個(gè)引腳輸入電平,低四位取反后,從另一個(gè)端口8個(gè)引腳輸出:(比如P2=NOT(P3))#include//該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含P2和P3voidmain(void)//void表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口{
P3=0xff;//初始化。P3作為輸入,必須輸出高電平,同時(shí)給P3口的8個(gè)引腳輸出高電平While(1)//非零表示真,如果為真則執(zhí)行下面循環(huán)體的語句{//取反的方法是異或1,而不取反的方法則是異或0
P2=P3^0x0f//讀取P3,就是認(rèn)為P3為輸入,低四位異或者1,即取反,然后輸出}//由于一直為真,所以不斷將P3取反輸出到P2}
注意:一個(gè)字節(jié)的8位D7、D6至D0,分別輸出到P3.7、P3.6至P3.0,比如P3=0x0f,則P3.7、P3.6、P3.5、P3.4四個(gè)引腳都輸出低電平,而P3.3、P3.2、P3.1、P3.0四個(gè)引腳都輸出高電平。同樣,輸入一個(gè)端口P2,即是將P2.7、P2.6至P2.0,讀入到一個(gè)字節(jié)的8位D7、D6至D0。
第一節(jié):?jiǎn)螖?shù)碼管按鍵顯示
單片機(jī)最小系統(tǒng)的硬件原理接線圖:
1、接電源:VCC(PIN40)、GND(PIN20)。加接退耦電容0.1uF
2、接晶體:X1(PIN18)、X2(PIN19)。注意標(biāo)出晶體頻率(選用12MHz),還有輔助電容30pF3、接復(fù)位:RES(PIN9)。接上電復(fù)位電路,以及手動(dòng)復(fù)位電路,分析復(fù)位工作原理4、接配置:EA(PIN31)。說明原因。發(fā)光二極的控控制:?jiǎn)纹瑱C(jī)I/O輸出
將一發(fā)光二極管LED的正極(陽極)接P1.1,LED的負(fù)極(陰極)接地GND。只要P1.1輸出高電平VCC,LED就正向?qū)ǎ▽?dǎo)通時(shí)LED上的壓降大于1V),有電流流過LED,至發(fā)LED發(fā)亮。實(shí)際上由于P1.1高電平輸出電阻為10K,起到輸出限流的作用,所以流過LED的電流小于(5V-1V)/10K=0.4mA。只要P1.1輸出低電平GND,實(shí)際小于0.3V,LED就不能導(dǎo)通,結(jié)果LED不亮。開關(guān)雙鍵的輸入:輸入先輸出高
一個(gè)按鍵KEY_ON接在P1.6與GND之間,另一個(gè)按鍵KEY_OFF接P1.7與GND之間,按KEY_ON后LED亮,按KEY_OFF后LED滅。同時(shí)按下LED半亮,LED保持后松開鍵的狀態(tài),即ON亮OFF滅。
#include#defineLEDP1^1//用符號(hào)LED代替P1_1#defineKEY_ONP1^6//用符號(hào)KEY_ON代替P1_6#defineKEY_OFFP1^7//用符號(hào)KEY_OFF代替P1_7
voidmain(void)//單片機(jī)復(fù)位后的執(zhí)行入口,void表示空,無輸入?yún)?shù),無返回值{
KEY_ON=1;//作為輸入,首先輸出高,接下KEY_ON,P1.6則接地為0,否則輸入為1KEY_OFF=1;//作為輸入,首先輸出高,接下KEY_OFF,P1.7則接地為0,否則輸入為1While(1)//永遠(yuǎn)為真,所以永遠(yuǎn)循環(huán)執(zhí)行如下括號(hào)內(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)。
//同時(shí)按下時(shí),LED不斷亮滅,各占一半時(shí)間,交替頻率很快,由于人眼慣性,看上去為半亮態(tài)}
數(shù)碼管的接法和驅(qū)動(dòng)原理
一支七段數(shù)碼管實(shí)際由8個(gè)發(fā)光二極管構(gòu)成,其中7個(gè)組形構(gòu)成數(shù)字8的七段筆畫,所以稱為七段數(shù)碼管,而余下的1個(gè)發(fā)光二極管作為小數(shù)點(diǎn)。作為習(xí)慣,分別給8個(gè)發(fā)光二極管標(biāo)上記號(hào):a,b,c,d,e,f,g,h。對(duì)應(yīng)8的頂上一畫,按順時(shí)針方向排,中間一畫為g,小數(shù)點(diǎn)為h。我們通常又將各二極與一個(gè)字節(jié)的8位對(duì)應(yīng),
a(D0),b(D1),c(D2),d(D3),e(D4),f(D5),g(D6),h(D7),相應(yīng)8個(gè)發(fā)光二極管正好與單片機(jī)一個(gè)端口Pn的8個(gè)引腳連接,這樣單片機(jī)就可以通過引腳輸出高低電平控制8個(gè)發(fā)光二極的亮與滅,從而顯示各種數(shù)字和符號(hào);對(duì)應(yīng)字節(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個(gè)發(fā)光二極管的負(fù)極(陰極)內(nèi)接在一起,作為數(shù)碼管的一個(gè)引腳,這種數(shù)碼管則被稱為共陰數(shù)碼管,共同的引腳則稱為共陰極,8個(gè)正極則為段極。否則,如果是將正極(陽極)內(nèi)接在一起引出的,則稱為共陽數(shù)碼管,共同的引腳則稱為共陽極,8個(gè)負(fù)極則為段極。以單支共陰數(shù)碼管為例,可將段極接到某端口Pn,共陰極接GND,則可編寫出對(duì)應(yīng)十六進(jìn)制碼的七段碼表字節(jié)數(shù)據(jù)如右圖:16鍵碼顯示的程序
我們?cè)赑1端口接一支共陰數(shù)碼管SLED,在P2、P3端口接16個(gè)按鍵,分別編號(hào)為KEY_0、KEY_1到KEY_F,操作時(shí)只能按一個(gè)鍵,按鍵后SLED顯示對(duì)應(yīng)鍵編號(hào)。#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]=//用十六進(jìn)數(shù)作為數(shù)組下標(biāo),可直接取得對(duì)應(yīng)的七段編碼字節(jié)//
0123456789AbCdEF
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};voidmain(void){
unsignedchari=0;//作為數(shù)組下標(biāo)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];//開始時(shí)顯示0,根據(jù)i取應(yīng)七段編碼}}
第二節(jié):雙數(shù)碼管可調(diào)秒表
解:只要滿足題目要求,方法越簡(jiǎn)單越好。由于單片機(jī)I/O資源足夠,所以雙數(shù)碼管可接成靜態(tài)顯示方式,兩個(gè)共陰數(shù)碼管分別接在P1(秒十位)和P2(秒個(gè)位)口,它們的共陰極都接地,安排兩個(gè)按鍵接在P3.2(十位數(shù)調(diào)整)和P3.3(個(gè)位數(shù)調(diào)整)上,為了方便計(jì)時(shí),選用12MHz的晶體。為了達(dá)到精確計(jì)時(shí),選用定時(shí)器方式2,每計(jì)數(shù)250重載一次,即250us,定義一整數(shù)變量計(jì)數(shù)重載次數(shù),這樣計(jì)數(shù)4000次即為一秒。定義兩個(gè)字節(jié)變量S10和S1分別計(jì)算秒十位和秒個(gè)位。編得如下程序:#include
CodeunsignedcharSeg7Code[16]=//用十六進(jìn)數(shù)作為數(shù)組下標(biāo),可直接取得對(duì)應(yīng)的七段編碼字節(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按下//初始化定時(shí)器Timer0TMOD=(TMOD&0xF0)|0x02;
TH1=-250;//對(duì)于8位二進(jìn)數(shù)來說,-250=6,也就是加250次1時(shí)為256,即為0TR1=1;
while(1){//----------循環(huán)1P1=Seg7Code[s10];//顯示秒十位P2=Seg7Code[s1];//顯示秒個(gè)位while(1){//----------循環(huán)2//計(jì)時(shí)處理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”,修改顯示}}
//按個(gè)位鍵處理
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é):十字路***通燈
如果一個(gè)單位時(shí)間為1秒,這里設(shè)定的十字路***通燈按如下方式四個(gè)步驟循環(huán)工作:?60個(gè)單位時(shí)間,南北紅,東西綠;?10個(gè)單位時(shí)間,南北紅,東西黃;?60個(gè)單位時(shí)間,南北綠,東西紅;?10個(gè)單位時(shí)間,南北黃,東西紅;
解:用P1端口的6個(gè)引腳控制交通燈,高電平燈亮,低電平燈滅。#include
//sbit用來定義一個(gè)符號(hào)位地址,方便編程,提高可讀性,和可移植性sbitSNRed=P1^0;//南北方向紅燈sbitSNYellow=P1^1;//南北方向黃燈sbitSNGreen=P1^2;//南北方向綠燈sbitEWRed=P1^3;//東西方向紅燈sbitEWYellow=P1^4;//東西方向黃燈sbitEWGreen=P1^5;//東西方向綠燈/*用軟件產(chǎn)生延時(shí)一個(gè)單位時(shí)間*/voidDelay1Unit(void){
unsignedinti,j;for(i=0;i}}
第四節(jié):數(shù)碼管驅(qū)動(dòng)顯示“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ù)碼管采用動(dòng)態(tài)刷新方式顯示,在1ms定時(shí)斷服務(wù)程序中實(shí)現(xiàn)
#include
unsignedcharDisBuf[8];//全局顯示緩沖區(qū),DisBuf[0]對(duì)應(yīng)右SLED,DisBuf[7]對(duì)應(yīng)左SLED,
voidDisplayBrush(void)
{codeunsignedcharcathode[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//陰極控制碼
CodeunsignedcharSeg7Code[16]=//用十六進(jìn)數(shù)作為數(shù)組下標(biāo),可直接取得對(duì)應(yīng)的七段編碼字節(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];//將對(duì)應(yīng)陰極置低,顯示if(++i>=8)i=0;//指向下一個(gè)數(shù)碼管和相應(yīng)數(shù)據(jù)}
voidTimer0IntRoute(void)interrupt1{
TL0=-1000;//由于TL0只有8bits,所以將(-1000)低8位賦給TL0TH0=(-1000)>>8;//。-1000)的高8位賦給TH0,重新定時(shí)1msDisplayBrush();}
voidTimer0Init(void)
{TMOD=(TMOD&0xf0)|0x01;//初始化,定時(shí)器T0,工作方式1TL0=-1000;//定時(shí)1msTH0=(-1000)>>8;
TR0=1;//允許T0開始計(jì)數(shù)
ET0=1;//允許T0計(jì)數(shù)溢出時(shí)產(chǎn)生中斷請(qǐng)求}
voidDisplay(unsignedcharindex,unsignedchardataValue){DisBuf[index]=dataValue;}voidmain(void){
unsignedchari;
for(i=0;iTimer0Init();
EA=1;//允許CPU響應(yīng)中斷請(qǐng)求While(1);}
第五節(jié):鍵盤驅(qū)動(dòng)
指提供一些函數(shù)給任務(wù)調(diào)用,獲取按鍵信息,或讀取按鍵值。定義一個(gè)頭文檔,描述可用函數(shù),如下:
#ifndef_KEY_H_//防止重復(fù)引用該文檔,如果沒有定義過符號(hào)_KEY_H_,則編譯下面語句#define_KEY_H_//只要引用過一次,即#include,則定義符號(hào)_KEY_H_unsignedcharkeyHit(void);//如果按鍵,則返回非0,否則返回0
unsignedcharkeyGet(void);//讀取按鍵值,如果沒有按鍵則等待到按鍵為止voidkeyPut(unsignedcharucKeyVal);//保存按鍵值ucKeyVal到按鍵緩沖隊(duì)列末voidkeyBack(unsignedcharucKeyVal);//退回鍵值ucKeyVal到按鍵緩沖隊(duì)列首#endif
定義函數(shù)體文檔KEY.C,如下:#include“key.h”
#defineKeyBufSize16//定義按鍵緩沖隊(duì)列字節(jié)數(shù)
unsignedcharKeyBuf[KeyBufSize];//定義一個(gè)無符號(hào)字符數(shù)組作為按鍵緩沖隊(duì)列。該隊(duì)列為先進(jìn)
//先出,循環(huán)存取,下標(biāo)從0到KeyBufSize-1
unsignedcharKeyBufWp=0;//作為數(shù)組下標(biāo)變量,記錄存入位置unsignedcharKeyBufRp=0;//作為數(shù)組下標(biāo)變量,記錄讀出位置//如果存入位置與讀出位置相同,則表明隊(duì)列中無按鍵數(shù)據(jù)unsignedcharkeyHit(void)
{if(KeyBufWp==KeyBufRp)return(0);elsereturn(1);}unsignedcharkeyGet(void)
{unsignedcharretVal;//暫存讀出鍵值
while(keyHit()==0);//等待按鍵,因?yàn)楹瘮?shù)keyHit()的返回值為0表示無按鍵retVal=KeyBuf[KeyBufRp];//從數(shù)組中讀出鍵值
if(++KeyBufRp>=KeyBufSize)KeyBufRp=0;//讀位置加1,超出隊(duì)列則循環(huán)回初始位置return(retVal);}
voidkeyPut(unsignedcharucKeyVal)
{KeyBuf[KeyBufWp]=ucKeyVal;//鍵值存入數(shù)組
if(++KeyBufWp>=KeyBufSize)KeyBufWp=0;//存入位置加1,超出隊(duì)列則循環(huán)回初始位置}
/*****************************************************************************************
由于某種原因,讀出的按鍵,沒有用,但其它任務(wù)要用該按鍵,但傳送又不方便。此時(shí)可以退回按鍵隊(duì)列。就如取錯(cuò)了信件,有必要退回一樣
******************************************************************************************/
voidkeyBack(unsignedcharucKeyVal){/*
如果KeyBufRp=0;減1后則為FFH,大于KeyBufSize,即從數(shù)組頭退回到數(shù)組尾;蛘哂捎诟蓴_使得KeyBufRp超出隊(duì)列位置,也要調(diào)整回到正常位置,*/
if(--KeyBufRp>=KeyBufSize)KeyBufRp=KeyBufSize-1;KeyBuf[KeyBufRp]=ucKeyVal;//回存鍵值}
下面漸進(jìn)講解鍵盤物理層的驅(qū)動(dòng)。
電路共同點(diǎn):P2端口接一共陰數(shù)碼管,共陰極接GND,P2.0接a段、P2.1接b段、、P2.7接h段。
軟件共同點(diǎn):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,鍵編號(hào)為‘6’,顯示按鍵。#include#include“KEY.H”voidmain(void)
{P1_0=1;//作為輸入引腳,必須先輸出高電平while(1)//永遠(yuǎn)為真,即死循環(huán)
{if(P1_0==0)//如果按鍵,則為低電平{keyPut(6);//保存按鍵編號(hào)值為按鍵隊(duì)列
while(P1_0==0);//如果一直按著鍵,則不停地執(zhí)行該循環(huán),實(shí)際是等待松鍵}
if(keyHit()!=0)//如果隊(duì)列中有按鍵
P2=Seg7Code[keyGet()];//從隊(duì)列中取出按鍵值,并顯示在數(shù)碼管上}}
來源:嵌入式在線社區(qū)
在某引腳輸出方波編程方法:(比如P3.1引腳)
#include//該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含P3.1
voidmain(void)//void表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口{
While(1)//非零表示真,如果為真則執(zhí)行下面循環(huán)體的語句{P3_1=1;//給P3_1賦值1,引腳P3.1就能輸出高電平VCCP3_1=0;//給P3_1賦值0,引腳P3.1就能輸出低電平GND
}//由于一直為真,所以不斷輸出高、低、高、低……,從而形成方波}
將某引腳的輸入電平取反后,從另一個(gè)引腳輸出:(比如P0.4=NOT(P1.1))
#include//該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含P0.4和P1.1voidmain(void)//void表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口{
P1_1=1;//初始化。P1.1作為輸入,必須輸出高電平
While(1)//非零表示真,如果為真則執(zhí)行下面循環(huán)體的語句{
if(P1_1==1)//讀取P1.1,就是認(rèn)為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個(gè)引腳輸入電平,低四位取反后,從另一個(gè)端口8個(gè)引腳輸出:(比如P2=NOT(P3))
#include//該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含P2和P3
voidmain(void)//void表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口{
P3=0xff;//初始化。P3作為輸入,必須輸出高電平,同時(shí)給P3口的8個(gè)引腳輸出高電平While(1)//非零表示真,如果為真則執(zhí)行下面循環(huán)體的語句{//取反的方法是異或1,而不取反的方法則是異或0
P2=P3^0x0f//讀取P3,就是認(rèn)為P3為輸入,低四位異或者1,即取反,然后輸出}//由于一直為真,所以不斷將P3取反輸出到P2}
注意:一個(gè)字節(jié)的8位D7、D6至D0,分別輸出到P3.7、P3.6至P3.0,比如P3=0x0f,則P3.7、P3.6、P3.5、P3.4四個(gè)引腳都輸出低電平,而P3.3、P3.2、P3.1、P3.0四個(gè)引腳都輸出高電平。同樣,輸入一個(gè)端口P2,即是將P2.7、P2.6至P2.0,讀入到一個(gè)字節(jié)的8位D7、D6至D0。
1、接電源:VCC(PIN40)、GND(PIN20)。加接退耦電容0.1uF2、接晶體:X1(PIN18)、X2(PIN19)。注意標(biāo)出晶體頻率(選用12MHz),還有輔助電容30pF
3、接復(fù)位:RES(PIN9)。接上電復(fù)位電路,以及手動(dòng)復(fù)位電路,分析復(fù)位工作原理4、接配置:EA(PIN31)。說明原因。多余的引腳如單片機(jī)不用IO口輸入口不要懸空,尤其是輸入阻抗高的,更不能懸空。例如在CMOS電路中,如果輸入口懸空,可能會(huì)導(dǎo)致輸入電平處于非0和非1的中間狀態(tài),這將會(huì)使輸出級(jí)的上下兩個(gè)推動(dòng)管同時(shí)導(dǎo)通,從而產(chǎn)生很大電流。一般的做法是通過一個(gè)電阻(例如10K或者1K)上拉到高電平或者下拉到低電平。而對(duì)于不用的運(yùn)放,則可以將輸出端直接接回反向輸入端,并把同向輸入端接至參考電平點(diǎn)(一般單電源使用時(shí)(或者干脆將雙電源看成一個(gè)單電源),用1/2Vcc作為參考電平,因此有些資料上也會(huì)寫連接至halfsupply)。輸出口則可以懸空。對(duì)于IO口,一般是將其設(shè)置為輸入口,并像上面的輸入口那樣處理。如果是IO口內(nèi)帶上拉電阻的,則可使用內(nèi)部上拉電阻使其電位固定。不設(shè)置成輸出口,是為了防止誤操作時(shí),損壞IO口
P0口上拉電阻選擇
如果是驅(qū)動(dòng)led,那么用1K左右的就行了。如果希望亮度大一些,電阻可減小,最小不要小于200歐姆,否則電流太大;如果希望亮度小一些,電阻可增大,增加到多少呢,主要看亮度情況,以亮度合適為準(zhǔn),一般來說超過3K以上時(shí),亮度就很弱了,但是對(duì)于超高亮度的LED,有時(shí)候電阻為10K時(shí)覺得亮度還能夠用。我通常就用1k的。
對(duì)于驅(qū)動(dòng)光耦合器,如果是高電位有效,即耦合器輸入端接端口和地之間,那么和LED的情況是一樣的;如果是低電位有效,即耦合器輸入端接端口和VCC之間,那么除了要串接一個(gè)14.7k之間的電阻以外,同時(shí)上拉電阻的阻值就可以用的特別大,用100k500K之間的都行,當(dāng)然用10K的也可以,但是考慮到省電問題,沒有必要用那么小的。
對(duì)于驅(qū)動(dòng)晶體管,又分為PNP和NPN管兩種情況:對(duì)于NPN,毫無疑問NPN管是高電平有效的,因此上拉電阻的阻值用2K20K之間的,具體的大小還要看晶體管的集電極接的是什么負(fù)載,對(duì)于LED類負(fù)載,由于發(fā)管電流很小,因此上拉電阻的阻值可以用20k的,但是對(duì)于管子的集電極為繼電器負(fù)載時(shí),由于集電極電流大,因此上拉電阻的阻值最好不要大于4.7K,有時(shí)候甚至用2K的。對(duì)于PNP管,毫無疑問PNP管是低電平有效的,因此上拉電阻的阻值用100K以上的就行了,且管子的基極必須串接一個(gè)110K的電阻,阻值的大小要看管子集電極的負(fù)載是什么,對(duì)于LED類負(fù)載,由于發(fā)光電流很小,因此基極串接的電阻的阻值可以用20k的,但是對(duì)于管子的集電極為繼電器負(fù)載時(shí),由于集電極電流大,因此基極電阻的阻值最好不要大于4.7K。
對(duì)于驅(qū)動(dòng)TTL集成電路,上拉電阻的阻值要用110K之間的,有時(shí)候電阻太大的話是拉不起來的,因此用的阻值較小。但是對(duì)于CMOS集成電路上拉電阻的阻值就可以用的很大,一般不小于20K,我通常用100K的,實(shí)際上對(duì)于CMOS電路,上拉電阻的阻值用1M的也是可以的,但是要注意上拉電阻的阻值太大的時(shí)候,容易產(chǎn)生干擾,尤其是線路板的線條很長(zhǎng)的時(shí)候,這種干擾更嚴(yán)重,這種情況下上拉電阻不宜過大,一般要小于100K,有時(shí)候甚至小于10K。轉(zhuǎn)載自:關(guān)于51單片機(jī)P0口的結(jié)構(gòu)及上拉問題(轉(zhuǎn))--小米的筆記參考資料:
51單片機(jī)I/O口使用經(jīng)驗(yàn)
友情提示:本文中關(guān)于《51AVR單片機(jī)學(xué)習(xí)小結(jié)》給出的范例僅供您參考拓展思維使用,51AVR單片機(jī)學(xué)習(xí)小結(jié):該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請(qǐng)聯(lián)系我們及時(shí)刪除。