51單片機(jī)知識點(diǎn)總結(jié)
51單片機(jī)知識點(diǎn)總結(jié)
第二章:
存儲器空間組成,各區(qū)間特點(diǎn)及訪問方式,工作寄存器區(qū)的設(shè)定,程序狀態(tài)字的位結(jié)構(gòu)及其功能,堆棧的操作,P0-P3各端口的功能,特點(diǎn),使用方法,單片機(jī)復(fù)位信號的產(chǎn)生及復(fù)位之后的狀態(tài),振蕩周期、狀態(tài)周期、機(jī)器周期及指令周期的關(guān)系及計算方法。第三章:
尋址方式,各類指令(如一般傳送類指令五種操作數(shù)之間的數(shù)據(jù)傳遞,特殊傳送類指令的使用方法,算術(shù)運(yùn)算類指令對PSW各標(biāo)志位的影響,邏輯運(yùn)算類指令的功能及其使用,控制轉(zhuǎn)移類指令的轉(zhuǎn)移范圍等),簡單程序的編寫與識讀(如數(shù)據(jù)塊的搬移,延時程序的實(shí)現(xiàn)及如何設(shè)定循環(huán)次數(shù),查表程序),包括簡單C語言程序的識讀(如數(shù)據(jù)傳送,數(shù)據(jù)排序等)。第四章:
中斷系統(tǒng):包括中斷源有哪些,如何進(jìn)行中斷允許控制,中斷優(yōu)先級控制,各自的中斷入口地址是多少,中斷得到CPU服務(wù)(即中斷響應(yīng))的基本條件,中斷響應(yīng)延遲的原因。
定時器:定時器的各種工作方式及其使用方法,定時器的初始化,如何使用定時器實(shí)現(xiàn)周期信號的輸出。以及相應(yīng)的簡單編程。
串行口:串行口的各工作方式及其使用,接收如何使能,多機(jī)通信第五章:
三總線結(jié)構(gòu)及其實(shí)現(xiàn),片外擴(kuò)展芯片的編址方式及其特點(diǎn),片外程序及數(shù)據(jù)存儲器的擴(kuò)展實(shí)現(xiàn)并分析其地址區(qū)間,片外IO擴(kuò)展的實(shí)現(xiàn)及其器件編址,簡單編程。第六章:
鍵盤,主要是行列式編碼鍵盤的實(shí)現(xiàn)方法,識別方法,掃描法的工作原理,按鍵去抖動。LED段碼實(shí)現(xiàn)方法,動態(tài)LED顯示與靜態(tài)LED顯示的比較。
擴(kuò)展閱讀:51單片機(jī)初學(xué)知識點(diǎn)總結(jié)
51單片機(jī)初學(xué)知識點(diǎn)總結(jié)
經(jīng)過這半個月的學(xué)習(xí),我對于單片機(jī)的定時器、對I/O口的隨意操作、輸入檢測、中斷(定時器的中斷、單片機(jī)的外部中斷)、串口通信等幾大學(xué)習(xí)模塊有了一定了解和掌握。
1.軟件。我主要是在keiluvision3實(shí)現(xiàn)用C語言進(jìn)行編程和調(diào)試。使用keil時,新建或者打開已有文件,按步驟一步步來,漏掉哪一步都會影響最后程序是否能順利寫入單片機(jī)中。其中應(yīng)注意保存C文檔、添加文件到工程中和建立hex文檔這幾個關(guān)鍵步驟。
2.發(fā)光二極管和數(shù)碼管的顯示。發(fā)光二極管的靜態(tài)顯示是學(xué)習(xí)單片機(jī)的入門路標(biāo)。分析相關(guān)模塊的電路圖,弄清楚引腳連接情況,根據(jù)電路圖直接控制LED引腳電位的高低就能實(shí)現(xiàn)對相應(yīng)LED亮滅的控制。了解后完成走馬燈(流水線)或更多其他規(guī)則的LED顯示。數(shù)碼管的顯示較LED稍微復(fù)雜一點(diǎn)點(diǎn),它分位選和段選,位選控制整個數(shù)碼管的亮滅,段選控制各數(shù)碼管以何種形式亮或滅。數(shù)碼管的顯示分三步:(1).全部數(shù)碼管顯示一樣的字符;(2).選定的數(shù)碼管以規(guī)定的形式亮;(3).數(shù)碼管的動態(tài)顯示。其中利用定時器或者延時程序控制數(shù)碼管動態(tài)顯示的頻率,以調(diào)節(jié)其顯示亮度和視覺穩(wěn)定度。
用延時函數(shù)完成動態(tài)掃描:while(1){D1=nn/100;D2=nn%100/10;D3=nn%10;P1=0x01;P0=tab[D1];delay(10);P1=0x02;P0=tab[D2];delay(10);P1=0x04;P0=tab[D3];delay(10);}
延時子程序:voiddelay(x)//延時1ms子程序
{unsignedchary;while(x--){for(y=110;y>0;y--);}
}3.定時/計數(shù)器。編號中斷源0外部中斷0(INT0)中斷標(biāo)志位終端服務(wù)程序入口優(yōu)先級IE00003H最高1234定時/計數(shù)器0(T0)TF0外部中斷1(INT1)串口IE1RI或TI定時/計數(shù)器1(T1)TF1000BH0013H001BH0023H次之次之次之最低關(guān)于定時/計數(shù)器的兩個特殊功能寄存器TMOD用于T1GATETCON用于定時/計數(shù)器TF1TR1TF0TR0IE1說明13位T/C16位T/C8位自動重裝T/CT0分成兩個獨(dú)立的8位T/C,T1停止M1M0:工作方式設(shè)置位M1M0工作方式001101010123用于中斷IT1IE0IT0C/TM1M0GATE用于T0C/TM1M0GATE:門控位。GATE=0,用軟件使TR0或TR1為1,就能啟動定時/計數(shù)器;GATE=1,用軟件使TR0或TR1為1,同事外部中斷引腳也為高,啟動。我們一般置GATE=0。C/T=0,位定時器;C/T=1,位計數(shù)器。
對于定時時間的計算:t計數(shù)值N機(jī)器周期TN121focs或:要定時時間t=(65536-x)*(12/晶振頻率)
定時/計數(shù)器初始化步驟:
(1)根據(jù)上面的信息,對TMOD賦初值,確定T0、T1的工作方式。(2)計算初值,將其寫入TH0、TL0或TH1、TL1。(3)為中斷方式時,對IE賦值,開放中斷。(4)使TR0或TR1置高,啟動定時/計數(shù)器。例:
TMOD=0x01;//T0處于工作方式1,為十六位定時/計數(shù)器TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;
TR0=1;//T0初始化完畢定時子程序:
voidtimer0()interrupt1//定時子程序{TH0=(65536-50000)/256;TL0=(65536-50000)%256;aa++;if(aa==10)
{}
aa=0;
}4.鍵盤。單片機(jī)鍵盤分獨(dú)立鍵盤和矩陣鍵盤兩類,矩陣鍵盤涉及鍵盤掃描程序。而與鍵盤按下有關(guān)的程序就要注意到消除抖動和松手檢測兩個重要的細(xì)節(jié)。松手檢測原理是,當(dāng)鍵按下時,key2為低,!key2=1,此時程序一直在while語句里面循環(huán),無法跳出來,一旦松手,key2為高,程序即可跳出while循環(huán),執(zhí)行下面接下來的語句。
if(key2==0)
{delay(5);//延時5msif(key2==0)//確定key2鍵的確按下,,消抖{while(!key2);//松手檢測}}
5.串口通信。串行通信的傳輸速率用波特率表示。波特率定義為:每秒發(fā)送二進(jìn)制數(shù)碼的位數(shù),單位為“bps”。波特率的計算公式:
方式0的波特率=12SMOD方式1的波特率=(2方式2的波特率=(2SMODfosc)(T1溢出率)32)f64osc)(T1溢出率)32SMOD2方式3的波特率=(其中,T1溢出率=fosc12256-TH17698H。
串行口控制寄存器SCONSCON
其中SM0與SM1為串行口工作方式選擇位SM0SM1工作方式功能0011010101238位同步移位方式波特率543210(98H)RISM0SM1SM2RENTB8RB8TIfosc1210位異步收發(fā)器(UART)可變11位異步收發(fā)器(UART)fosc32或fosc6412位異步收發(fā)器(UART)可變
(1)51單片機(jī)串行口工作方式0實(shí)質(zhì)是并行的工作方式,為同步的移位輸出和輸入,但要實(shí)現(xiàn)工作方式0必須要借助外接移位寄存芯片,實(shí)際應(yīng)用中常用作并行I/O口得擴(kuò)展。它的波特率固定,且數(shù)據(jù)傳送是以8位數(shù)為一幀,沒有起始和停止位。。
(2)我主要研究學(xué)習(xí)了串行口工作方式1,它的數(shù)據(jù)格式是:一個起始位,8個數(shù)據(jù)位和一個停止位。設(shè)fosc=11.0592MHz,波特率為9600,則根據(jù)上面的公式,SMOD=0時,TH1=TL1=0xfd;SMOD=1時,TH1=TL1=0xfa。
(3)工作方式2和3的幀格式一樣,與工作方式1的類似,只是在原基礎(chǔ)上多加了一位內(nèi)容由用戶決定的數(shù)據(jù)位。工作方式2的波特率與PCON個SMOD位有關(guān)。SMOD=1時,波特率為
fosc32,SMOD=0時,波特率為
fosc64。
電源控制寄存器PCON(它不能位尋址)PCON797H6543210SMODSMOD為波特率倍增位。SMOD=1時,波特率增加一倍;復(fù)位時,SMOD=0。
REN是允許接收控制位:REN=1時允許接收數(shù)據(jù);REN=0時禁止接收數(shù)據(jù)。
TI是發(fā)送中斷標(biāo)志位:當(dāng)發(fā)送完一幀數(shù)據(jù)后,該位由單片機(jī)自動置1,向CPU發(fā)送中斷請求信號。在中斷服務(wù)程序中,必須用軟件將其清0.
RI是接收中斷標(biāo)志位:與TI類似,接收完一幀后自動被置1,需由軟件置0.6.液晶顯示。常見的單片液晶顯示屏分16引腳和20引腳兩種,我使用的是16引腳的YJD1602A-2。安裝LCD時按如下三步走:(1)關(guān)閉開發(fā)板電源。(2)下載一個關(guān)閉數(shù)碼管個流水燈的程序進(jìn)單片機(jī)。(3)順時針旋轉(zhuǎn)相應(yīng)電位器以調(diào)節(jié)LCD的對比度,知道看到5*7點(diǎn)陣。功能讀狀態(tài)讀數(shù)據(jù)寫數(shù)據(jù)輸入RS=L,RE=H,E=HRS=H,RW=H,E=HRS=H,RW=L,D0~D7=數(shù)據(jù),E=高脈沖輸出D0~D7=狀態(tài)字無D0~D7=數(shù)據(jù)無寫指令RS=L,RW=L,D0~D7=指令碼,E=高脈沖這四種功能里面,讀狀態(tài)與讀數(shù)據(jù)實(shí)用性不大,我們學(xué)習(xí)單片機(jī)時主要聯(lián)系寫指令和寫數(shù)據(jù),所以我們對RW置高,給E高脈沖,5引腳直接接地。
關(guān)于數(shù)據(jù)指針:顯示模式:0x38控制信號RS0控制位DLR/W0指令代碼D70D60D51D4D3D2FD10說明D00DLN具體設(shè)置表為:控制信號功能DL=0DL=1NFN=0N=1F=0接口總線為4位長度(僅D7~D4有效),8位數(shù)據(jù)與指令代碼按先高后低位的方向分兩次傳輸顯示1行字符行顯示2行字符行5*7字符體LCD與單片機(jī)接口形式。(數(shù)據(jù)的傳輸方式)接口總線為8位長度(D7~D0有效)F=15*10字符體顯示開關(guān)及光標(biāo):00001DCB
D1開顯示0關(guān)顯示C顯示光標(biāo)不顯示光標(biāo)B光標(biāo)閃爍光標(biāo)不閃爍
00001NS10當(dāng)讀/寫一個字節(jié)后地址指針減一,且光標(biāo)減一N當(dāng)讀/寫一個字節(jié)后地址指針加一,且光標(biāo)加一S當(dāng)寫一個字符,(N=1)整屏左移,當(dāng)寫一個字符,整屏顯示不(N=1)整屏左移移動清屏:指令代碼0x01。執(zhí)行此指令,HD44780將DDRAM的數(shù)據(jù)全部寫入“空白”
的代碼,清除所顯示的內(nèi)容,同事光標(biāo)移到左上角。
光標(biāo)歸位:指令代碼0x02或0x03。AC(地址計數(shù)器)的值被清“0”,但是DDRAM(顯示數(shù)據(jù)存儲器)的逐句不變,光標(biāo)移到左上角。
移動光標(biāo):
控制信號0
其中S/C和R/L的取值控制光標(biāo)或字符的左右移動:控制位S/C0011寫指令函數(shù):
voidwrite_com(ucharcom){
rs=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}
寫數(shù)據(jù)函數(shù):
voidwrite_date(uchardate){
R/L01010x100x140x180x1c指令代碼說明光標(biāo)左移光標(biāo)右移字符左移字符右移0000指令代碼D2D1D01S/CR/L------RSR/WD7D6D5D4Drs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;}
7.IIC總線。
IIC總線是由數(shù)據(jù)線SDA和時鐘線SCL構(gòu)成的串行總線,可發(fā)送和接收數(shù)據(jù)。IIC總線在數(shù)據(jù)傳送過程中有四種類型信號,他們分別是:起始信號、終止信號、應(yīng)答信號和非應(yīng)答信號。
起始信號:SCL為高時,SDA有一個下降跳變。起始信號由主機(jī)產(chǎn)生。voidstart()//起始信號{
sda=1;
delay();//5us就夠了,所以這里只需一個指令周期scl=1;delay();sda=0;delay();}
終止信號:SCL為高時,SDA有一個上升跳變。終止信號也只能由主機(jī)產(chǎn)生。voidstop()//終止信號{
sda=0;delay();scl=1;delay();sda=1;delay();}
應(yīng)答信號:IIC總線傳送時每字節(jié)為8位,從機(jī)在接收到一個字節(jié)的數(shù)據(jù)后,在第9位以低電平作為應(yīng)答信號,,同時要求主機(jī)在第9個時鐘脈沖位上釋放SDA線,以便從機(jī)發(fā)出應(yīng)答信號,將SDA拉低,表示接收數(shù)據(jù)的應(yīng)答
voidrespons()//應(yīng)答信號{
sda=0;delay();scl=1;delay();scl=0;delay();}非應(yīng)答信號:主機(jī)在第9位接收到非應(yīng)答信號,則表示停止數(shù)據(jù)的發(fā)送或接收。
voiddisrespons()//非應(yīng)答信號{
sda=1;delay();scl=1;delay();scl=0;delay();}移位操作:
左移:最低位補(bǔ)0,最高位移入PSW的CY位右移:最高位補(bǔ)0,最低位移除
器件地址:高四位固定,最低位決定讀/寫,另外A0~A2位與從機(jī)和總線的接法有關(guān)。
1010A2A1A0R/W=0,寫R/E=1,讀主機(jī)進(jìn)行寫操作時,首先由主機(jī)發(fā)送起始信號,接著是高四位固定為1010而最低位位0的寫器件地址,從機(jī)發(fā)送應(yīng)答信號后,主機(jī)發(fā)送寫數(shù)據(jù)地址,從機(jī)再次應(yīng)答之后主機(jī)就可以發(fā)送數(shù)據(jù)了,接著從機(jī)發(fā)送應(yīng)答信號或者非應(yīng)答信號之后主機(jī)發(fā)送終止信號,如下圖所示。
主機(jī)進(jìn)行讀操作時,首先由主機(jī)發(fā)送起始信號,接著是高四位固定為1010而最低位位0的寫器件地址,從機(jī)發(fā)送應(yīng)答信號后,主機(jī)發(fā)送寫數(shù)據(jù)地址,從機(jī)再次應(yīng)答之后主機(jī)再次發(fā)送起始信號,接著是高四位固定為1010而最低位位1的讀器件地址,從機(jī)應(yīng)答之后就可以讀數(shù)據(jù)了,接著主機(jī)發(fā)送應(yīng)答信號或者非應(yīng)答信號之后主機(jī)發(fā)送終止信號,如下圖。
心得體會:
以上是我根據(jù)這半個月學(xué)習(xí)的單片機(jī)知識和編寫程序時的程序文檔筆記整理的重要知識點(diǎn)和一些經(jīng)常會用到的基本子函數(shù)。學(xué)習(xí)單片機(jī)的這半個月里,我由開始時想一口吃成胖子的急躁心理慢慢調(diào)整為了平心靜氣,循序漸進(jìn)的學(xué)習(xí)心態(tài)。我是跟著單片機(jī)相關(guān)的學(xué)習(xí)視頻在學(xué)習(xí),而只是跟著視頻里面老師的講解聽的話,理解的總不會那么透徹,記憶也不會很深刻,只有舉一反三的學(xué)習(xí)視頻資料里面的內(nèi)容加上自己親手進(jìn)行編程與調(diào)試后才能更好地掌握所學(xué)的知識。在進(jìn)行C語言編程過程中一定要認(rèn)真仔細(xì),并注意養(yǎng)成良好的變成習(xí)慣,盡量保持程序工整明了,這也方便在出現(xiàn)問題時進(jìn)行糾錯和改錯。
友情提示:本文中關(guān)于《51單片機(jī)知識點(diǎn)總結(jié)》給出的范例僅供您參考拓展思維使用,51單片機(jī)知識點(diǎn)總結(jié):該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。