性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發(fā)新帖

單片機新手入門的指路小燈

  首先呢,點進來的一定有像我一樣是個單片機新手,也一定有高手們來看看這里面這有什么花樣,嘻嘻,不管怎么樣,同志們來看帖子的不會失望的,因為我本來是個新手,所以寫的東西也一定是好理解的,這里呢,鄙人還有一個不情之請,就是請大家?guī)兔貜蛶讞l唄,畢竟拿獎品實在誘人,而我最近有在物色開發(fā)板,每每看到一個相中的,心里就抽搐一下,畢竟作為學生經(jīng)濟來源靠父母,所以想買開發(fā)板,只有勒緊褲腰帶過日子了。再次謝謝各位了。

  好了言歸正傳,關(guān)于單片機大家多多少少有些理解,還有結(jié)構(gòu)什么的大家只要問一下度娘,各種資料就都有了,而我如果只是copy一下也沒什么意思,所以我就說點別的。大家都知道單片機一般來說包括以下幾個部分,中央處理器,就是CPU,他就像人的大腦一樣控制著整個系統(tǒng)的運行,還有存儲器,存儲器包括ROM和RAM,所謂ROM學名只讀存儲器,他通常用來存儲永久性的數(shù)據(jù),所以又被叫做,程序存儲器。而RAM是用來存放程序執(zhí)行時產(chǎn)生的數(shù)據(jù)的,成為數(shù)據(jù)存儲器。但是這兩者有什么區(qū)別呢?一般的ROM就像你電腦的硬盤一樣,用來存放文件等,存儲量較大,而RAM就像你電腦的內(nèi)存一樣,存儲量較小。CPU讀取數(shù)據(jù)并不是直接從硬盤讀取的,而是從內(nèi)存中讀取的,因為內(nèi)存的讀寫速度比硬盤要快。這樣就可以理解為什么電腦有硬盤,單片機有ROM和RAM 了吧,另外ROM在斷電后數(shù)據(jù)并不會消失,而RAM的數(shù)據(jù)則會隨著斷電而消失。單片機還有輸入輸出單元就是高手們口中的I/O接口,可以類比的想象成你電腦的外接東西,比如鍵盤鼠標顯示器等等,而單片機的外接只要是,電子元器件,比如開關(guān),LED等,數(shù)碼管等等。所以說單片機相當于一種小小小電腦,雖然可以處理的數(shù)據(jù)很小,但是在許多領域已經(jīng)夠用了。

好了,我們開始做點小東西吧,流水燈,雖然簡單,但是卻是許多人入門單片機行業(yè)的第一個小制作,我們的也不例外,從小的東西一點點擴展到大的復雜的東西。

這次我們需要兩大軟件, proteus和 Keil uVision4。前者主要是做仿真用的,就是在沒向單片機燒寫程序之前,先用這個軟件進行仿真操作,如果仿真成功那么在板子上的實驗也多半會成功,如果在仿真上都通不過的話,那么即使把程序燒寫進單片機也一定不會成功,這就是為什么電子開發(fā)者都喜歡這款軟件的原因了。后者是單片機開發(fā)的集成環(huán)境,目前用的最多性能最穩(wěn)定的是uVision2,我們學校實驗室用的也是2,但是我的電腦里用的是4,但這不是主要問題,因為大體上他們的操作是一樣的。終于可以開始操作了!

首先呢,我們在 proteus中制作實驗流水燈用的原理圖

打開軟甲后,點一下我用紅圈圈住的P,這時候會彈出一個對話框,這里面可以選擇你所需要的元器件,雙擊,他就會存在于你的調(diào)用區(qū)內(nèi),把所有的原件選進調(diào)用區(qū)內(nèi),到時候便于畫電路圖,調(diào)用區(qū),就是那個P下面的框框,你可以看到我的調(diào)用區(qū)里已經(jīng)有了幾個原件了,我們用的單片機是AT89C51,按圖選擇就行了,這些都是實驗要用的原件,一一加載完。

AT89C51

開始畫圖,學過Altium Designer的人對于畫電路圖應該并不陌生,就是布原件,連線,按照合理的位置布好原件之后就是連線,看上一個圖吧,在最左邊有各種快捷工具箱,從上往下數(shù)第六個就是劃線用的,點一下后就可以連接各個元器件了。這里我們用到了總線,就是那根很粗的藍色線,這樣,在空白處單擊右鍵,選擇place->bus就可以了,總線的畫法,在起點處單擊,在終點處單擊,在按esc鍵退出劃線狀態(tài),連完線之后我們還需要給這塊單片機加載程序,這里我們就要用到下一個軟件了,keil。



單片機

下面就是keil的主界面,選擇project->new,新建一個工程,命好名就行了,然后,再點文件,也就是file,new,寫代碼,然后保存,保存時注意,要自己加上后綴名,就是(.c)


這樣系統(tǒng)會自動保存為C程序文件,然后需要點擊我圈住的幾個圖標,來編譯生成可執(zhí)行的文件,這里需要注意的是,要點擊我圈住的想魔術(shù)棒一樣的東西,然后選擇output選項,勾選,created HEX?。妫椋欤澹@個HEX文件就是待會能夠加載進,剛剛我們畫好的單片機里面進行仿真。

執(zhí)行

這里點擊我畫的三個圖標中間那個,然后看看沒錯,說明成功了,然后再切換至protues里,雙擊單片機,看第二欄,選擇文件,把剛才生成的HEX文件加進去,OK,可以執(zhí)行了,



編譯

在protues的左下角有控制開關(guān),點擊小三角就可以看到你的燈在像流水一樣,亮起!效果就像圖一樣,但是圖不會動,大家就想像著吧!

流水燈4

如果你有單片機,想在板子上看效果就要在keil中點一下這個圖標,把程序燒寫進單片機里就行了,執(zhí)行起來,非常有成就感,因為我沒有板子,而我在實驗室做的效果也忘記拍照片了,實在是不好意思了。



代碼

下面我們來分析下代碼,

#include //調(diào)用51 單片機的頭文件

//定義一個數(shù)據(jù)表格unsigned char code TAB[16]=

{ //定義表格一定要使用code,這樣會做到程序存儲區(qū)中

0xFE, //表格第1 步數(shù)據(jù)0b111111100

xFD,//表格第2 步數(shù)據(jù)0b11111101

0xFB, //表格第3 步數(shù)據(jù)0b11111010

0xF7, //表格第4 步數(shù)據(jù)0b11110111

0xEF, //表格第5 步數(shù)據(jù)0b11101111

0xDF, //表格第6 步數(shù)據(jù)0b11011111

0xBF, //表格第7 步數(shù)據(jù)0b10111111

0x7F, //表格第8 步數(shù)據(jù)0b01111111

0x3F, //表格第9 步數(shù)據(jù)0b00111111

0x1F, //表格第10 步數(shù)據(jù)0b00011111

0x0F, //表格第11 步數(shù)據(jù)0b00001111

0x07, //表格第12 步數(shù)據(jù)0b00000111

0x03, //表格第13 步數(shù)據(jù)0b00000011  

0x01, //表格第14 步數(shù)據(jù)0b00000001

0x00, //表格第15 步數(shù)據(jù)0b00000000

0xFF, //表格第16 步數(shù)據(jù)0b11111111};

//---------------------------------------//名稱: 主函數(shù)//---------------------------------------

void main(void) //主函數(shù),單片機開機后就是從這個函數(shù)開始運行

{   unsigned int a=0; //定義一個int 型變量,做延時用   

unsigned char b=15; //定義一個char 型變量,顯示內(nèi)容用   

while(1)   //死循環(huán),單片機初始化后,將一直運行這個死循環(huán)  

 {    for(a=0;a<20000;a++);   //延時若干時間   

 if(++b>15) b=0;   //b 做加1 操作,并限制在0-15 以內(nèi)   

 P0=TAB[b]; //將TAB[b]的值送入PO 口輸出   

}

}

稍微有點C語言基礎的人應該都能看懂,如果看不懂,就應該惡補一下嘍!

看剛開始我們定義了一串數(shù)組,他們?nèi)怯茫保哆M制表示的,這個可以表示燈的狀態(tài),看2進制,1代表燈亮,0代表燈滅,所以我們只要改變下1和0,就可以實現(xiàn)不同的亮的狀態(tài)了,下面有幾張圖,實際上是我們的作業(yè),看黑的代表亮,白的代表滅,所以我們只要在相應的位置上把1,0換一換就行了,然后再把它們換成十六進制寫進代碼里,在執(zhí)行上面的步驟,就可以實現(xiàn)不同的燈亮法了,

流水燈2

流水燈3

流水燈圖1

大概就是這樣,作為入門我們先從左東西開始,慢慢的在把相應的單片機的知識補上來,要不直接 學什么引腳什么的一來枯燥,二來容易忘記,因為并不是每個引腳都會經(jīng)常用的,既然是做工程的,就沒必要做那么多的無用功,只學對自己有用的,慢慢的自己的知識就積累起來了。各位加油!



全部回復(17)
正序查看
倒序查看
2014-04-11 09:38

原創(chuàng) 關(guān)注!感謝sherlocked的帖子,另外標題我給你加了【原創(chuàng)】加油!~

0
回復
2014-04-11 15:04
樓主v5~
0
回復
2014-04-11 18:40
@電源網(wǎng)-娜娜姐
原創(chuàng)關(guān)注!感謝sherlocked的帖子,另外標題我給你加了【原創(chuàng)】加油!~
謝謝嘍,,我會把我在單片機上的進展,心得都寫進帖子,跟大家分享的
0
回復
2014-04-11 18:41
@電源網(wǎng)-儷儷
樓主v5~
3Q了,,我會繼續(xù)努力的
0
回復
2014-04-14 13:53
@sherlocked
[圖片]3Q了,,我會繼續(xù)努力的

樓主要更新的節(jié)奏嚒

0
回復
2014-04-15 13:46
@電源網(wǎng)-娜娜姐
樓主要更新的節(jié)奏嚒
對啊,,因為做起來是一個不間斷的過程,正好把他們?nèi)加涗浵聛恚?,共?/div>
0
回復
2014-04-16 09:47
@sherlocked
對啊,,因為做起來是一個不間斷的過程,正好把他們?nèi)加涗浵聛?,,共?/span>
支持,搬板凳坐等~
0
回復
2014-04-16 12:58

今天說點Keil C語言的特點吧,總的看起來,和我們平常學的C語言是差不多的,因為大概的框架是一樣的。

  總的來說C語言是由一堆函數(shù)所構(gòu)成的,其中主程序也是一個main 函數(shù),而每個函數(shù)可以看做獨立的個體,就像是模塊一樣。

在開頭,大家都知道的,就是調(diào)用頭文件(*.h),這是一種事先定義好的基本數(shù)據(jù),在8051程序里,必要的頭文件是定義8051,內(nèi)部寄存器地址的數(shù)據(jù),至于寄存器的種種復雜的東西,我會在下節(jié)更新中給大家做一個詳細的解釋。

接下來就是聲明區(qū),在選擇頭文件之后,可以在這里聲明程序中所用到的各種變量,函數(shù),甚至常數(shù)等。起作用范圍將是整個程序,包括主函數(shù),和所有子函數(shù)。但是如果在某個函數(shù)內(nèi)部定義變量或者常數(shù),那么這種變量的作用范圍僅僅是這個函數(shù),一旦函數(shù)執(zhí)行到最后一個大括號,那么,這個變量便失去了作用。我在此建議,最好把函數(shù)調(diào)用語句寫在這里,如果沒有聲明的話,在使用一個函數(shù)之前必須對他進行定義。

主程序,就是以mian()開頭,直到他的下大括號結(jié)束,如果能夠很好的利用函數(shù)調(diào)用,那么主函數(shù)將會非常的簡單,僅僅是幾句調(diào)用函數(shù)的語句。

子函數(shù),就是C語言比較好的一方面,因為他可以讓你的程序?qū)崿F(xiàn)模塊化,即用每個函數(shù)來執(zhí)行每種特定的功能,然后再主函數(shù)中調(diào)用,這樣不僅便于代碼的閱讀,而且便于改錯,在程序比較大時,大家應該盡量利用函數(shù)讓自己的函數(shù)模塊化。

然后就是變量,和數(shù)據(jù)類型。在C語言中不管是變量還是常量,都在內(nèi)存中占一定的空間,至于占多少空間,在于你給他分配了多少,我們給變量和常量分配孔家就是通過對他進行數(shù)據(jù)類型的限制。比如常用的 int型表示整數(shù),在內(nèi)存中占四個字節(jié),16位。float型占8個字節(jié)32位。char型,占兩個字節(jié)8位。等等可以通過網(wǎng)絡來查閱。

8051有自己特殊的數(shù)據(jù)類型:bit,1位,范圍是0~1。sbit  1位,范圍也是0~1;sfr 8位,范圍0~255;sfr16 16位,范圍,0~65535。bit會被存放在0x20~0x2f之間的存儲區(qū)域。其他的東西可以自己上網(wǎng)查,這種東西也沒必要記在腦子里,因為網(wǎng)絡的發(fā)達,所以我們完全可以把對這些東西外包給網(wǎng)絡。

這里哈設計到了間接尋址之類的東西,等我下節(jié)介紹了寄存器什么的之后再聯(lián)系在一起,到時候就是一張知識網(wǎng)絡了。

0
回復
sherlocked
LV.4
10
2014-04-16 12:58
@電源網(wǎng)-娜娜姐
支持,搬板凳坐等~
0
回復
shenx123
LV.10
11
2014-04-24 14:06

要做到這樣的設計,需要哪些材料呢, 給指點下啊

0
回復
sherlocked
LV.4
12
2014-04-24 21:15
@shenx123
要做到這樣的設計,需要哪些材料呢,給指點下啊
首先你需要兩大軟件,protues和keil,前者是用來做仿真用的,如果你沒有一塊自己的51開發(fā)板的話,這款軟件可謂是成本超低呀,,另外有塊板子最好,即使有板子也要這個來仿真,在把程序燒寫進單片機里之前可以用它來找錯,如果仿真都通不過,那么在板子上一定出錯,,后者呢就是專門的51c語言的環(huán)境,寫51程序都是用這個,uvision,,有了這些,就要在來個教材了,,別人會推薦那個郭天祥的書,,我在這里給你推薦一本別的,真的很不錯哦,,叫《例說51單片機》,,看完前三章,就可以自己設計初步的電路,至于代碼,你可以跟著咱論壇里的  @吳堅鴻 和@高山云兩個大神學,他們的思想,尤其是鴻哥的,真心不錯,最后算是一點建議,工程,或者說技術(shù)這東西,是要靠實踐來學的,不要等到理論什么的都學好了再來學,那么你已經(jīng)落后很多了,,做工程時用到什么知識,現(xiàn)在的網(wǎng)絡這么發(fā)達,,不怕找不到想要的,,對吧,
0
回復
joyban
LV.3
13
2014-04-25 16:15
@sherlocked
首先你需要兩大軟件,protues和keil,前者是用來做仿真用的,如果你沒有一塊自己的51開發(fā)板的話,這款軟件可謂是成本超低呀,,另外有塊板子最好,即使有板子也要這個來仿真,在把程序燒寫進單片機里之前可以用它來找錯,如果仿真都通不過,那么在板子上一定出錯,,后者呢就是專門的51c語言的環(huán)境,寫51程序都是用這個,uvision,,有了這些,就要在來個教材了,,別人會推薦那個郭天祥的書,,我在這里給你推薦一本別的,真的很不錯哦,,叫《例說51單片機》,,看完前三章,就可以自己設計初步的電路,至于代碼,你可以跟著咱論壇里的 @吳堅鴻和@高山云兩個大神學,他們的思想,尤其是鴻哥的,真心不錯,最后算是一點建議,工程,或者說技術(shù)這東西,是要靠實踐來學的,不要等到理論什么的都學好了再來學,那么你已經(jīng)落后很多了,,做工程時用到什么知識,現(xiàn)在的網(wǎng)絡這么發(fā)達,,不怕找不到想要的,,對吧,
指路小燈有視頻教我們怎么做嗎?
0
回復
sherlocked
LV.4
14
2014-04-25 20:26
@joyban
指路小燈有視頻教我們怎么做嗎?
沒有哎,,因為我的時間被實驗室和課程安排的滿滿的,,錄制視頻可能有點困難,,所以我盡量敘述的很清楚,,你有什么不懂的可以問哦,,先裝好軟件,操作之前總覺得難,,真正做起來會感覺很好的,,加油!
0
回復
山東大漢
LV.10
15
2014-04-27 23:57
@sherlocked
沒有哎,,因為我的時間被實驗室和課程安排的滿滿的,,錄制視頻可能有點困難,,所以我盡量敘述的很清楚,,你有什么不懂的可以問哦,,先裝好軟件,操作之前總覺得難,,真正做起來會感覺很好的,,加油!
目前單片機的軟件哪個比較流行呢
0
回復
sherlocked
LV.4
16
2014-04-28 16:15
@山東大漢
目前單片機的軟件哪個比較流行呢
至于流行,,我不太清楚,,但是我學習用的是protues和keil uVison4這兩個已經(jīng)非常好用了,,要說流行的話,,應該就是他們的最高版本 了吧
0
回復
2014-04-28 16:34
@sherlocked
至于流行,,我不太清楚,,但是我學習用的是protues和keiluVison4這兩個已經(jīng)非常好用了,,要說流行的話,,應該就是他們的最高版本了吧

向樓主學習,支持一個!

0
回復
sherlocked
LV.4
18
2014-04-28 16:37
@yueyunno1
向樓主學習,支持一個!
是向您學習才對啊,,大師您的LED帖子幫了我個大忙啊
0
回復
發(fā)