91视频免费?看_蜜芽MY188精品TV在线观看_国产免费无遮挡在线观看视频_深夜国产_亚洲精品欧洲精品_欧美黑人粗暴多交

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發新帖

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

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

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

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

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

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

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

AT89C51

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



單片機

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


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

執行

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



編譯

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

流水燈4

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



代碼

下面我們來分析下代碼,

#include //調用51 單片機的頭文件

//定義一個數據表格unsigned char code TAB[16]=

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

0xFE, //表格第1 步數據0b111111100

xFD,//表格第2 步數據0b11111101

0xFB, //表格第3 步數據0b11111010

0xF7, //表格第4 步數據0b11110111

0xEF, //表格第5 步數據0b11101111

0xDF, //表格第6 步數據0b11011111

0xBF, //表格第7 步數據0b10111111

0x7F, //表格第8 步數據0b01111111

0x3F, //表格第9 步數據0b00111111

0x1F, //表格第10 步數據0b00011111

0x0F, //表格第11 步數據0b00001111

0x07, //表格第12 步數據0b00000111

0x03, //表格第13 步數據0b00000011  

0x01, //表格第14 步數據0b00000001

0x00, //表格第15 步數據0b00000000

0xFF, //表格第16 步數據0b11111111};

//---------------------------------------//名稱: 主函數//---------------------------------------

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

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

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

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

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

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

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

}

}

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

看剛開始我們定義了一串數組,他們全是用16進制表示的,這個可以表示燈的狀態,看2進制,1代表燈亮,0代表燈滅,所以我們只要改變下1和0,就可以實現不同的亮的狀態了,下面有幾張圖,實際上是我們的作業,看黑的代表亮,白的代表滅,所以我們只要在相應的位置上把1,0換一換就行了,然后再把它們換成十六進制寫進代碼里,在執行上面的步驟,就可以實現不同的燈亮法了,

流水燈2

流水燈3

流水燈圖1

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



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

原創 關注!感謝sherlocked的帖子,另外標題我給你加了【原創】加油!~

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

樓主要更新的節奏嚒

0
回復
2014-04-15 13:46
@電源網-娜娜姐
樓主要更新的節奏嚒
對啊,,因為做起來是一個不間斷的過程,正好把他們全都記錄下來,,共享
0
回復
2014-04-16 09:47
@sherlocked
對啊,,因為做起來是一個不間斷的過程,正好把他們全都記錄下來,,共享
支持,搬板凳坐等~
0
回復
2014-04-16 12:58

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

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

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

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

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

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

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

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

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

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

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

0
回復
sherlocked
LV.4
12
2014-04-24 21:15
@shenx123
要做到這樣的設計,需要哪些材料呢,給指點下啊
首先你需要兩大軟件,protues和keil,前者是用來做仿真用的,如果你沒有一塊自己的51開發板的話,這款軟件可謂是成本超低呀,,另外有塊板子最好,即使有板子也要這個來仿真,在把程序燒寫進單片機里之前可以用它來找錯,如果仿真都通不過,那么在板子上一定出錯,,后者呢就是專門的51c語言的環境,寫51程序都是用這個,uvision,,有了這些,就要在來個教材了,,別人會推薦那個郭天祥的書,,我在這里給你推薦一本別的,真的很不錯哦,,叫《例說51單片機》,,看完前三章,就可以自己設計初步的電路,至于代碼,你可以跟著咱論壇里的  @吳堅鴻 和@高山云兩個大神學,他們的思想,尤其是鴻哥的,真心不錯,最后算是一點建議,工程,或者說技術這東西,是要靠實踐來學的,不要等到理論什么的都學好了再來學,那么你已經落后很多了,,做工程時用到什么知識,現在的網絡這么發達,,不怕找不到想要的,,對吧,
0
回復
joyban
LV.3
13
2014-04-25 16:15
@sherlocked
首先你需要兩大軟件,protues和keil,前者是用來做仿真用的,如果你沒有一塊自己的51開發板的話,這款軟件可謂是成本超低呀,,另外有塊板子最好,即使有板子也要這個來仿真,在把程序燒寫進單片機里之前可以用它來找錯,如果仿真都通不過,那么在板子上一定出錯,,后者呢就是專門的51c語言的環境,寫51程序都是用這個,uvision,,有了這些,就要在來個教材了,,別人會推薦那個郭天祥的書,,我在這里給你推薦一本別的,真的很不錯哦,,叫《例說51單片機》,,看完前三章,就可以自己設計初步的電路,至于代碼,你可以跟著咱論壇里的 @吳堅鴻和@高山云兩個大神學,他們的思想,尤其是鴻哥的,真心不錯,最后算是一點建議,工程,或者說技術這東西,是要靠實踐來學的,不要等到理論什么的都學好了再來學,那么你已經落后很多了,,做工程時用到什么知識,現在的網絡這么發達,,不怕找不到想要的,,對吧,
指路小燈有視頻教我們怎么做嗎?
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這兩個已經非常好用了,,要說流行的話,,應該就是他們的最高版本 了吧
0
回復
2014-04-28 16:34
@sherlocked
至于流行,,我不太清楚,,但是我學習用的是protues和keiluVison4這兩個已經非常好用了,,要說流行的話,,應該就是他們的最高版本了吧

向樓主學習,支持一個!

0
回復
sherlocked
LV.4
18
2014-04-28 16:37
@yueyunno1
向樓主學習,支持一個!
是向您學習才對啊,,大師您的LED帖子幫了我個大忙啊
0
回復
主站蜘蛛池模板: 库伦旗| 维西| 洪湖市| 黄骅市| 泗洪县| 南华县| 广安市| 康定县| 莱阳市| 墨竹工卡县| 耿马| 巴林右旗| 定陶县| 无为县| 兰溪市| 平果县| 于都县| 湖口县| 图们市| 敦煌市| 建阳市| 白银市| 恩平市| 中西区| 武宁县| 花垣县| 岫岩| 虎林市| 郧西县| 大悟县| 杭锦后旗| 故城县| 崇文区| 中宁县| 华宁县| 淳安县| 崇阳县| 泰安市| 右玉县| 焦作市| 纳雍县|