天天看點

單片機入門 - 模電、數電與單片機

部落客福利:100G+電子設計學習資源包!

​​http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5d5d0f15df84f4a92ebf72f88d4ee8&scene=18#wechat_redirect​​ --------------------------------------------------------------------------------------------------------------------------

大家都用過電腦,有沒有想過它是怎麼實作的呢?這裡我不詳述電腦的原理,而隻對思路進行簡單介紹。等我們學會了單片機,也可以親手制作一個電腦。

用電路進行數學計算

通過電路進行數學計算,應該怎麼做呢?為了便于了解,下面我舉個很簡單的例子。

單片機入門 - 模電、數電與單片機

在這個電路中,電阻R1=R2,我給A、B兩點分别接入3V和5V電壓,這個時候,C點的電壓則為(5+3)/2=4V。這個電路完成了一個求平均值的操作,如果我們用1V表示數字1,它計算出來3和5的平均值是4;如果我們定義1mV表示數字1,這個電路就計算出了3000和5000的平均值是4000。

如果我能通過巧妙的方法,利用電阻電容乃至半導體等元器件的特性,設計出很多類似這樣的電路,它就可以完成很複雜的四則運算,以及平方、開方、對數等運算。這就是通過電路來幫助我們進行數學計算的簡單例子。在這個例子中,并不見得能展現到電路計算相比于我們用筆紙計算的優勢。但是如果我們把電路做的足夠複雜,它的計算速度是相當快的,并且隻要有電能供應,它就永遠不知疲倦的計算,而且不容易出錯。

上面我們設計了一個簡單的模拟電路電腦,它能計算兩個數的平均值,我們用電壓值直接表示數字。但是這個電路在實際中工作并沒有那麼理想。做基本電學實驗測量電壓的時候,大家會發現,電壓的測量總是有誤差的,電壓表有誤差,讀數也有誤差,并且基本上無法避免。自然界中很多東西都是有誤差的。

在這裡除了電壓表測出來的值和實際值不同,實際C點電壓值也并不完全等于AB電壓值的平均,因為我們很難保證R1和R2阻值完全一緻,并且導線也有電阻。于是我們計算出來的結果,更可能是3.99或者4.01而不是精确的4.00,這就導緻我們的計算出了誤差。如果電路複雜了,誤差會逐漸累積,越來越大,最後導緻計算結果完全沒有意義,而減小電路的誤差也是相當不容易的。

模拟電路與數字電路、十進制與二進制

于是數字電路誕生了。相較于模拟電路的不精确,數字電路就有很大優勢了。注意,數字電路是相對于模拟電路而言的,數字電路的本質也是模拟電路。通常我們所說的模拟電路,指的是除數字電路以外的電路。

我們人類用十進制計數法表示數字,原因是我們有十個手指。而數字電路中使用二進制數字來進行運算,因為很多電子器件往往會有兩種很确定的狀态,比如開關的“開”和“關”,燈的“亮”和“滅”。

二進制數其實比十進制數簡單多了。十進制中,從0到9,滿10就向高位進位,即9+1=10;而二進制滿二進一,是以二進制中1+1=10。一開始我們會感覺這樣很别扭,實際上并非二進制有多難,隻是我們習慣了十進制而已。二進制與十進制的轉換等更多知識可以自行學習。

數字電路中,我們使用的比較多的一種用電壓表示二進制數字的方式,稱為TTL電平(TTL = Transistor-Transistor Logic,原意為邏輯門電路)。它規定+5V電壓為高電平,表示數字“1”,0V電壓為低電平,表示數字“0”。由于電路自身特點,實際上這種TTL電平電路輸出的電壓,并非絕對準确的5V和0V,而是規定将>2.4V的電壓視為高電平, 電壓<0.4V則視為低電平。也正是因為這樣的特點,我們根本不需要将電壓控制的很準确,就能很準确的表示出我們想要表示的數字。和前面的模拟平均數計算電路相比,明顯很有優勢。而這也正是數字電路得以廣泛應用的根本原因。

傳統數字電路和單片機

數字電路的介紹就到此為止,在原理篇中會有更詳細的介紹。事實上,單片機的本質也是數字電路。下面我們要說的傳統數字電路,指的是除單片機這類可程式設計器件以外的數字電路。下面我們來看看單片機和傳統數字電路的差別。

利用一些常用的傳統數字電路器件(一般都是內建電路晶片),我們可以設計出如下圖的電路。它是一個電子表,有六個數位管顯示時間,圖中正顯示的就是00:00:18。可以看出來這個電路還是挺複雜的,設計起來也是很費時間的。

單片機入門 - 模電、數電與單片機

但是單片機的出現,使得實作相同功能的電路設計難度大大降低。下圖就是使用單片機設計的電路。同樣是電子表,不僅顯示效果比前面的那個要好,而且功能更強大了,兩個按鍵可以像市面上常見的兩個按鍵的手表一樣調整時間和日期;而電路卻簡單了很多。我們隻需要給單片機寫進去特定的程式,就可以讓它按照我們設計好的方式工作。

如果某天,我們想要給這個電子表增加馬表計時的功能,對于前面的那個數字電路,恐怕整個電路都得重新設計制作;但是對于單片機制作的這個電路,我們隻需要修改程式代碼,然後重新寫進去就可以了,就像在電腦上安裝軟體一樣,根本不需要修改電路,十分友善。

單片機入門 - 模電、數電與單片機

繼續閱讀