A. 什麼是單片機,單片機學習方法,單片機原理及應用
什麼是單片機?
單片機(Microcontrollers)是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。
單片機學習方法:
第一階段:先瀏覽教科書里的硬體部分,大至了解單片機的硬體結構。如ROM、RAM、地址、I/O口等,以及看一些廠家的MCU資料(Data Sheet),來加強MCU所提供各項資源的印象。簡單點的說單片機就是一塊集成晶元,但是不同的地方就是可以通過編程來改變其引腳的電平高低。可以用計算機的原理來理解單片機。比如說 ROM 其實就像計算機的硬碟一樣,是用來裝東西的,裝運行的程序。
第二階段:就是了解二進位數字、十六進位數和軟體方面的內容。盡管有很多高級語言可用於單片機的編程,但初學還是以匯編語言為好,更有利於和硬體結合,掌握硬體結構。知道匯編語言、機器語言、指令、 程序等概念後,從MOV指令開始,學習匯編語言和編程,在MCU匯編語言系統有11條指令,簡單又好理解它們怎樣和硬體聯系,更有助於一般學習單片機的指令整合與運用.因此其方法可先了 解幾條基本的MOV指令和它的機器語言,大致建立起單片機的硬體和軟體概念,來知道單片機的硬體是由指令控制指揮的。
第三階段按照編程環境的使用手冊,熟悉使用編程環境。現在的編程環境一般都和電腦相連,只要具備基本電腦知識的人都可很快掌握步驟。
第四階段是依靠實驗板,學習掌握單片機的匯編語言指令系統和簡單編程。同時和前面所學硬體知識結合組裝,起到主學軟體,鞏固硬體的雙重作用。
單片機原理:通用計算機是分模塊的,比如內存條,CPU,顯卡,這些設備是通過系統匯流排連接成一個計算機系統。所以可以看出,單片機是微計算機系統,因為小巧,價格也便宜,很適合應用於嵌入式系統。當然單片機的功能沒有通用型計算機的功能那麼強大。
單片機的應用:導彈的導航裝置,飛機上各種儀表的控制,計算機的網路通訊與數據傳輸,工業自動化過程的實時控制和數據處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統,錄像機、攝像機、全自動洗衣機的控制,以及程式控制玩具、電子寵物等等,這些都離不開單片機。
B. C51單片機對位定址的原理和編程方法
原理:
位定址是一種使用單片機實現程序控制位邏輯操作的方法,通過一系列指令在單位元組的內存空間中的一個特定的位 (bit 位) 上進行操作。它用於控制亂拿只有兩狀態的I/O埠。
編程方法:
1. 用 ORL A, #data 命令將某個指定的位置位,即把單位元組內部某個指定的位置1。
2. 用 ANL A, #data 命令清除某個指定衡槐的位置位,即咐陪友把單位元組內部某個指定的位置0。
3. 用 CLR C 命令將某個指定的位置位清零,即把單位元組內指定的位置置零。
4. 用 MOV C, bit 命令將某個指定的位置位置1,即把單位元組內部某個指定的位置1。
C. 單片機原理及應用求數組中最大元素時常採用「打擂台」演算法,其編程原理是什麼
電機原理及其他的應用,它的除數的它的最大顏色,我們市場還是可以用打擂台的演算法了,並且他的編程原理我覺得能夠給大家帶來一種更好的是。
D. 跪求同濟大學魏鴻磊單片機原理及應用(C語言編程)課後習題答案
#include<stdio.h>
#include<stdlib.h>
void swap(int*a,int*b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void select_sort(int A[],int n)
{
register int i,j,min,m;
for(i=0;i<n-1;i++)
{
min=i;//激備頃查找最小值
for(j=i+1;j<n;j++)
{
if(A[min]>A[j])
{
min=j;
}
}
if(min!=i)
{
swap(&A[min],&A[i]);
printf("第%d趟排序結果明陸為:\n",i+1);
for(m=0;m<n;m++)
{
if(m>0)
{
printf("");
}
printf("%d",A[m]);
}
printf("\n");
}
}
}
int main(void)
{
int n;
while(scanf("%d",&n)!=EOF) /* VS2013等版本中需使用scanf_s(),VC6.0中使用scanf() */
{
int i;
int*A=(int*)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
{
scanf("%d",&A[i]);
}
select_sort(A,n);
printf("最終排序結果為:\n");
for(i=0;i<n;i++)
{
if(i>0){
printf("");
}
printf("%d",A[i]);
}
printf("\滾洞n");
}
return 0;
}
E. 什麼是單片機它的原理是什麼
單片機誕生於20世紀70年代。所謂單片機是利用大規模集成電路技術把中央處理單元(Center Processing Unit,也即常稱的CPU)和數據存儲器(RAM)、程序存儲器(ROM)及其他I/O通信口集成在一塊晶元上,構成一個最小的計算機系統,再加上了中斷單元,定時單元及A/D轉換等更復雜、更完善的電路,使得單片機的功能越來越強大,應用更廣泛。
現在更多單片機的發展已經進入了嵌入式系統時代, 由於製造工藝的進步,有如 VHDL、RTOS、CPLD、FPGA、DSP、ARM等這一系列可編程器件的體積越來越小、成本越來越低,而功能是越來越能滿足人們的需要。自上世紀80年代以來,單片機技術在我國各個控制領域得到了廣泛應用,各個世界半導體公司都非常看好中國這個龐大的市場而紛紛到中國來投資建廠,如在蘇州就有日本的瑞薩、松下、美國的快捷等半導體公司在中的生產廠地。同時面對這一技術的不斷發展,我國大部分高校都已經把單片機方面的課程作為學生的必修課,這為我國近些年來的科技、工業控制等方面的發展培養了大量人才,而且社會對此方面的人才需求還在不斷的增加。面對如此情況,作為在校學生,又該從何學起?如何學好這門課程呢?又怎樣才能不讓自己學了等於沒學呢?本文在多年實踐的基礎上,介紹自已的一些感受和經驗。
理解單片機的結構
對於一個初學者,最迷糊的就是對單片機晶元裡面的結構的理解,小小的一個晶元為何能完成如此神奇的功能。
第一次從事電子方面的工作,也總對那黑黑的晶元裡面感到不可思意的神奇。直到有一天,在檢修一台日本二手電筒子市場里買來的程式控制交換機時,發現裡面有一塊黑東西上的黑膠已經裂開,把它撬開一看,裡面就是一塊電路板,上面焊滿了密密麻麻的電子零件。終於有點明白,原來晶元也可以這樣做成。當然當時所見的那塊電路板是不能被稱之為晶元的,那隻是日本的電子製造公司為了防止別人抄襲而把整個電路板密封起來或其它原因,只引出幾個的引腳與其它電路連接。不過它可以讓人聯想到晶元的基本結構與此相類似,如果把那些內眼看得見的電子零件再縮小一千倍或更小以至於能把所有電子零件做在一個矽片上,那也就成了名副其實的晶元了。我們不防以圖1所示的電路及電路板來做一個生動形象的介紹。該圖是一個直流馬達可以正反兩個方向轉動的電路,做成電路板並焊好電子元件後,經測試沒有問題就可以用黑膠(通常採用酚醛樹脂等材料)把所有電子元件封起來,只留六個引腳來與外部電路連接,這樣看起來就好像是一個晶元。
知道了一般晶元的原理,同樣可以更進一步想像單片機為什麼會執行邏輯運算等功能,這就牽涉到數字電路和模擬電路的知識。其實不管一個單片機的功能是如何的強大,其只不過是把許多以微米,甚至是納米為單位級的數字的和模擬電子器件組成。為了形象的來說明單片機內部的結構原理,這里不訪舉如圖2所示的跑馬燈電路來闡述。圖中電路表明的最終目的是讓LED依次輪流被點亮。首先是通過計數器對輸入脈沖計數,從0到15共16個脈沖為一個輪回,也即計數器的輸出依次為二進制的0000B到1111B,再由四-十六解碼器把計數器的結果解碼輸出,即依次置Y0到Y15由高電平變為高電平。當某一輸出為高電平時,經過反向器後,與此線路相連接的LED的陰極被拉為低電平從而點亮該發光二極體。這樣一來,計數器和解碼器就相當於單片機里的處理器與PC地址寄存器了,與解碼器輸出腳相連的線就相當於地址線,與LED負極相連的輸出線就相當於數據線,每一條「地址線」都與8根「數據線」有一個交叉,每一個交叉就相當於存儲單元的每一個位。在這些交叉處是否要連通就相當於把程式燒錄到存儲器(ROM)里。最後總體來看就相當於一個只有16個地址的8位單片機。如果把LED換成圖中數碼管,改變圖中的二極體連接,在「單片機」通電和輸入時鍾脈沖後,就可以不停的來顯示數字了。
另外,要做到對單片機內部結果真正的了解,還必須得先要有很扎實的電路基礎、模擬電路、數字電路等方面的知識,否則可能就是空中樓閣。
F. C語言控制單片機的詳細原理是怎樣的
C語言源程序----->C編譯器----->匯編代碼----->匯編器----->機器代碼
所謂的單片機C語言的意思是拿C語言來編寫單片機程序,沒有什麼C語言控制單片機這回說法。具體過程是:C語言源程序通過特定的C編譯器編譯為針對某種單片機的匯編代碼,再由匯編器將匯編代碼匯編為單片機可執行的機器代碼,然後下載到單片機的存儲器運行。當前一般的集成開發環境(如Keil C)可以一次搞定生成機器代碼。
需要補充一點的是,單片機也是一種計算機,不要以為只有在PC機上才可以用C語言編程,C語言可以用作為任何計算機的編程語言,當然包括單片機,但有一個條件就是,你必需要有針對某種架構的計算機的C編譯器。目前來講,C語言的編譯器種類非常多,有用於各種單片機以及微處理器架構的編譯器版本,所以可以用C來做為單片機的編程語言。不同的是,你用TC或者VC編譯得到的是X86(如Intel,AMD)的目標代碼,只能在PC機上運行,而如果用單片機C編譯器(比如Keil C)編譯的代碼是單片機代碼,只能在特定的單片機上運行。目前C/C++是最流行的單片機/微處理器編程語言。
G. 單片機微型計算機原理
DPTR是16位寄存器,由兩個8位寄存器組成(DPH、DPL),用於存放16位外部存儲器地址;
A為累加器,用於+-x/運算時存放其中一個操作數,B寄存器用於乘法、除法;
通常加法減法運算結果存放在累加器A中,乘法運算結果高8位存放在A,低8位存入B寄存器;除法整數結果存放在A寄存器,B寄存器存放余數;
除此之外A、B寄存器可當作通用寄存器使用。
H. 單片機原理及應用
單片機原理及應用需要學習低級匯編語言和C語言。學習具有一定難度。但只要有恆心是一定能學好的。
1)編程語言:
a)匯編語言(assembly language)是一種用於電子計算機、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言。在匯編語言中,用助記符(Mnemonics)代替機器指令的操作碼,用地址符號(Symbol)或標號(Label)代替指令或操作數的地址。在不同的設備中,匯編語言對應著不同的機器語言指令集,通過匯編過程轉換成機器指令。
b)C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
2)單片機(Microcontrollers)是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。
3)由於單片機對成本是敏感的,所以目前占統治地位的軟體還是最低級匯編語言(近幾年,C語言也開始廣泛被應用),它是除了二進制機器碼以外最低級的語言了,既然這么低級為什麼還要用呢?很多高級的語言已經達到了可視化編程的水平為什麼不用呢?原因很簡單,就是單片機沒有家用計算機那樣的CPU,也沒有像硬碟那樣的海量存儲設備。一個可視化高級語言編寫的小程序裡面即使只有一個按鈕,也會達到幾十K的尺寸!對於家用PC的硬碟來講沒什麼,可是對於單片機來講是不能接受的。 單片機在硬體資源方面的利用率必須很高才行,所以匯編雖然原始卻還是在大量使用。一樣的道理,如果把巨型計算機上的操作系統和應用軟體拿到家用PC上來運行,家用PC也是承受不了的。