大一想參加學校機器人設計比賽,已經組好隊,要學習單片機,我們學完c語言了,單片機入門需要看一些什么書
我大學測控技術與儀器專業,記得當初是大三學長帶著我做比賽。剛開始,最好找一個學長幫忙指導一下,從中你能學到很多包括硬件以及軟件的知識,能少走特別多的彎路。全國大學生電子設計大賽,飛思卡爾比賽可以了解一下。先從51單片機入手,買一個開發版,大概就100-200左右,跟著事例做,現在就動手做,不要覺得現在什么都不會,沒學過數電模電,等你什么都學會了,黃瓜菜都涼了。我當時就會一門c語言,學的還很菜,勉強60分過的,沒學數電,模電之類的書(大三才開課)。然后從圖書館借了一本單片機的書看,單純的看書沒什么意義,不動手永遠停留再原點。好在那是有學長帶著我們(飛思卡爾東三省一等獎),感謝學長,我們就打打下手,做做硬件,我那時是負責軟件的,說實話毛都不會,就是動手太少了,不過從那次比賽后,我就突然豁然開朗的感覺。期間參加差不多十多次科技競賽,得過幾次省三等獎。你們剛大一,多找學長指導指導,先確定一個方案,即使很粗糙,不要緊,先搞出來再說,然后慢慢改進。不要好高騖遠,直接一步到位,如果粗糙的都搞不出來,你覺得能一下子就做到完美嗎?一定動手做,在做的過程中才能知道自己的不足,才能學到很多東西。多上一些論壇逛逛,先從基礎的做起,開始學習51,有些基礎了,可以學16位的stm系列或者k系列,甚至更高的32位單片機。祝你們好運!
51單片機用C語言或者匯編程序如何實現定時1秒如何設定初始值如何計算如何輸出方波如何對外部
使用定時器實現1秒定時;初始值要看單片機配置的晶振頻率了,若12M晶振,初始值為TH0=0x3c;TL0=0xb0;這才是50ms,還要一個單元做計數器,計數20次才是1秒方波?在定時中斷里求反一次。
對外輸出?就對端口(比如P1.0)求反如何計算?常用的,記熟了,你自己看書想學習單片機,有什么好的書籍推薦
五年之前
那是在大學期間,距離現在大約有4年了吧,教我們單片機的老師要離我們而去了,因為她要去她的城市教書去了。怎么形容她呢?那是一個風度翩翩,很有才華、做事很干練不像老師的女老師。她走的時候要搬行李,我們幾個學習成績好的一塊去送的她,可能是送別的時候都愛下雨吧,那天也不例外,下起了綿綿小雨,在送老師走的時候,我問的也是這個問題:“我看我們現在的教科書如同看天書,有什么好的書籍推薦嗎?”老師只是很隨性的一笑,說:”我們現在用的這一本書就不錯,單片機之類的書都大同小異“,當時也并沒有深究,我們當時用的就是標準的規中規矩的教科書,名字叫做《XXXXX基礎》,具體名字就不說了,免得被當廣告。
五年之后現在想想當時老師所說的,完全就是我現在所想的,在五年之前真不曉得思想會有這樣的轉變,歸根到底是我對51單片機深刻的理解,還有自己的工作經驗和積淀,你讓我推薦給學習單片機的書籍,別說幾本了,就是幾十本,我都能給你脫口而出,就像這道問題的另一個答主推薦的《愛上單片機》,這也是一本不錯的書,但是像《愛上單片機》這一類書,實在太多了,像郭天祥的《51單片機C語言教程》,還有其他的《51單片機項目教程》、《實例解讀51單片機完全學習與應用》等等、這些都是不錯的單片機教程書,我也全都讀過,如果你讓我就給你推薦一本,那么很抱歉,我是真不知道哪一本更好一些,根本原因是這些書都是根據51單片機的官方數據手冊所編寫的,你以為那些作者憑空就能出書?關于單片機所有的用法數據手冊上都解釋清楚了,對于剛入門的同學可能不適應,但數據手冊是最具有權威的參考資料,像我現在工作的書柜上關于專業的書很少有了,為什么呢?現在有哪里不清楚的都是去訪問他的電子版的數據手冊,關于51單片機的數據手冊我也都給你們打包到云端了,私信筆者“數據手冊”,收到之后秒回信息。
數據手冊?至于是看書還是數據手冊,這得取決于你,如果你只是想玩玩,那么從我上面推薦的書里面隨便選擇一本對你來說就足夠了,如果你以后想從事半片機的工作,讀那些作者編著的書是遠遠不夠的,或許書上已經把你要知道的已經很清楚了,但如果換一個單片機,我敢保證你照樣一頭霧水,唯有我們掌握了單片機的數據手冊,再去讀別的單片機的數據手冊,你會發現都是一個套路,比如你對51單片機的數據手冊已經了然于胸,我現在讓你用STM32寫代碼,這時候我們打開STM32的數據手冊寫程序對我們來說是信手沾來的。
比51更優的選擇如果你是從來沒有接觸過單片機的新手,或許Arduino比51更適合你,為什么這么說呢?曾經帶過一個要學習單片機的新人,本來他是對單片機不感興趣的,為了讓他對電子提起興趣,我就是讓他學的Arduino做的項目,不到一個星期,教會了他點亮LED、中斷、紅外、舵機、自動尋跡小車、WiFi小車等一系列高級項目,要知道這些在51上做出來至少得花費半年的時間。在中國提起Arduino,更多的人對他的映像是不專業,或者建高樓于浮沙,他們這么說不是沒有道理,這只是因為Arduino把軟件和硬件整合的天衣無縫,比如他的單片機的引腳,還有他的庫編寫的簡潔至極。可以這么比喻,51是手動擋的汽車的話,那么Arduino就好似全自動檔的汽車,即使我們不懂各種引擎、離合依舊可以輕松駕駛,難道你們會說開自動擋的人不會開車。STM32何嘗不是呢?為什么STM32也是庫函數配置,之所以人們很少說他不專業,是因為STM32的庫更加的繁瑣,這就是我們中國人的性情。當Arduino在全球大火的時候,在中國招致而來的確是口誅筆伐。
當我在很小的時候,一直期望從事制造出電腦、手機之類的高端工作,然我的夢想實現之后,卻期望著在浩瀚無垠的草原上沐浴春風,在美麗的夜空下遙望星空,感受大自然的花香鳥語,事實永遠和我們期望的永遠不一樣,就連上個月幾十年不遇的藍月亮都沒有觀看,為了趕項目,我都是偷偷的在手機上看直播,想想這是何等的悲催,想想在我們工作之后又如何誰能保持初心,現在想想學習一門知識的時候那才叫幸福,等你把需要的知識學到盡頭,你會發現自己走出半生,不是少年!
51單片機c語言編程入門
1、單片機概念:在一片集成電路芯片上集成微處理器(CPU)、存儲器(ROM和RAM)、I/O接口電路,從而構成了單芯片微型計算機,即單片機(singlechipMicrocomputer)也叫微控制器(MCU)。
2、學習51單片機C語言編程基本知識:
(1)電平特性
數字電路中只有兩種電平:高和低
單片機為TTL電平:高+5V低0V
RS232電平:計算機的串口高-12V低+12V
所以計算機與單片機之間通訊時需要加電平轉換芯片max232等其他芯片
(2)二進制
數字電路中的兩種電平特性決定了它使用二進制運算。
二進制邏輯運算:
邏輯變量:只有兩個:“0”(假)和“1”(真)。
(3)基本語法:
變量定義
數據類型變量名
intnum1;
doublenum2=2;
unsignedshortnum3;
<1>if()語句
if(條件){分支}
if(條件){分支1}else{分支2}
if(x>=0)
{y=y/2;}
else
{y=y*x;}
<2>.while()語句
while(條件){循環體}
while(i<10)
{s+=k;}
<3>for()語句
for(表達式1;條件2;表達式3){循環體}
for(i=0;x!=y;j++)
{z/=3;}
做單片機C語言編程,(就是給單片機編軟件,用C語言)對C語言要掌握到什么程度
做單片機C語言編程,對C語言基礎并沒有特別高的要求,只要基本掌握C語言程序結構、關鍵字及其意義和用法、數據類型和作用域及定義與使用、算術及邏輯運算符用法及優先權,就可以上機操作了,C51不同于PC上的C語言,有些自身規定,這個可以在實踐中邊用邊學,只要是多看例程多實踐,實踐出真知這個一點沒錯。至于數組、指針、結構、聯合、枚舉等等,可以逐漸熟悉。學習C51可以從點亮一個發光二極管開始,只要堅持和努力,三個月基本全面掌握。
單片機C語言編寫點亮兩盞led燈,首先從中間兩盞點亮,依次相鄰兩盞燈點亮,依次循環永不停息
#include
sbitM=P1^0;voiddelayms(unsignedcharms)
{
unsignedinti;
while(ms--)
{
for(i=0;i
}
}
main()
{unsignedcharLED;
LED=0xff;
P1=LED;
while(1)
{LED=0xe7;
P1=LED;
delayms(1000);
LED=0xdb;
P1=LED;
delayms(1000);
LED=0xbd;
P1=LED;
delayms(1000);
LED=0x7e;
P1=LED;
delayms(1000);
}
}