版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、單片機原理與應用單片機原理與應用 實驗指導書實驗指導書 實驗一實驗一 實驗板使用,實驗板使用,keilkeil c51c51軟件使用軟件使用 一、實驗目的一、實驗目的 1. 熟悉單片機實驗版、keil c51軟件使用 二、實驗說明二、實驗說明 本實驗指定某塊存儲器的起始地址和長度,要求能將其內容置 1。通過該實驗學 生可以了解單片機讀寫存儲器的方法,同時也可以了解單片機編程、調試方法。 三、實驗內容及步驟三、實驗內容及步驟 1.啟動 pc 機,安裝好 isp 驅動,用 isp 數據通信線連接計算機與實驗板(usb 線) 。 2.打開 keil uvision2 仿真軟件,首先建立本實驗的項目文
2、件,接著建立源程序,編譯 無誤后,全速運行程序。 3.可把源程序編譯成可執(zhí)行文件,用 isp 燒錄器燒錄到 89s52 芯片中。 四、四、keil c51 軟件使用步驟軟件使用步驟 1. 使用 keil 前必須先安裝。安裝過程簡單,這里不在敘述。 2. 安裝好了 keil 軟件以后,我們打開它。打開以后界面如下: 3. 我們先新建一個工程文件,點擊“project-new project”菜單,如下圖: 3. 選擇工程文件要存放的路徑,輸入工程文件名 led,最后單擊保存。 4. 在彈出的對話框中選擇 cpu 廠商及型號 5. 選擇好 atmel 公司的 at89s52 后 , 單擊確定 在接
3、著出現的對話框中選擇“是”。 5. 新建一個 c51 文件 , 單擊左上角的 new file 如下圖所示 : 6. 保存新建的文件,單擊 save 如下圖: 在出現的對話框中輸入保存文件名 main.c(注意后綴名必須為.c) ,再單擊“保存”, 如下圖; 7. 保存好后把此文件加入到工程中方法如下 : 用鼠標在 source group1 上單擊右鍵 , 然 后再單擊 add files to group source group 1 如下圖: 8. 選擇要加入的文件 , 找到 main.c 后 , 單擊 add, 然后單擊 close 9. 在編輯框里輸入如下代碼 : 10. 到此我們完
4、成了工程項目的建立以及文件加入工程 , 現在我們開始編譯工程如下圖所 示 : 我們先單擊編譯, 如果在錯誤與警告處看到 0 error(s) 表示編譯通過 ; 11. 生成 .hex 燒寫文件,先單擊 options for target,如圖; 12. 在下圖中,我們單擊 output, 選中 create hex f。再單擊“確定”。 13. 打開文件夾實驗 1,查看是否生成了 hex 文件。如果沒有生成,在執(zhí)行一遍步驟 10 到步驟 12,直到生成。 實驗二實驗二 簡單簡單i/oi/o控制實驗控制實驗 一、實驗目的一、實驗目的 1、 學習 i/o 口的使用方法。 2、學習延時子程序的編寫
5、和使用。 二、實驗內容二、實驗內容 1、 p1 口做輸出輸出口,接八只發(fā)光二極管(其輸入端為低電平時發(fā)光二極管點亮) ,編 寫程序,使發(fā)光二極管循環(huán)點亮。 2、 p30、p31、p32、p33 作輸入輸入口接四個開關 s0、s1 、s2、s3;p10,p11, p12,p13 作輸出口,接四個發(fā)光二極管,編寫 程序讀取開關狀態(tài),將此狀態(tài)在發(fā)光二極管上顯示出來。編程時應注意 p3 口作 為輸入口時應先置 1,才能正確讀入值。 三、實驗說明三、實驗說明 1、p3 口是準雙向口。它作為輸出口時與一般的雙向口使用方法相同。由準雙向口 結構可知當 p3 口用作輸入口時必須先對它置“1” 。若不先對它置“
6、1” ,讀入的數 據是不正確的。 2、延時子程序 void delay(unsigned int cnt) /簡單的延時 while(-cnt); 四、電路原理圖四、電路原理圖 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 dd cc bb aa title numberrevisionsize a2 date:2010-9-19sheet of file:e:不不不.不不不.schdocdrawn by: ld2 ld3 ld4 ld5 ld6 ld7 ld8 ld1 vcc 1k lr1 1k lr2 1k lr3 1k lr4 1k lr5 1k lr6 1k lr7
7、1k lr8 流流水水燈燈 104 lc1 vcc 12 34 56 78 910 11 12 13 14 15 16 header 8x2 lsd_p1 led 連接圖 1 1 2 2 3 3 4 4 dd cc bb aa title numberrevisionsize a4 date:2010-9-13sheet of file:e:不不不不不不不不不不.schdocdrawn by: ea/vpp 31 xtal1 19 xtal2 18 rst 9 p3.7(rd) 17 p3.6(wr) 16 p3.2(int0) 12 p3.3(int1) 13 p3.4(t0) 14 p3.
8、5(t1) 15 p1.0 1 p1.1 2 p1.2 3 p1.3 4 p1.4 5 p1.5 6 p1.6 7 p1.7 8 (ad0)p0.0 39 (ad1)p0.1 38 (ad2)p0.2 37 (ad3)p0.3 36 (ad4)p0.4 35 (ad5)p0.5 34 (ad6)p0.6 33 (ad7)p0.7 32 (a8)p2.0 21 (a9)p2.1 22 (a10)p2.2 23 (a11)p2.3 24 (a12)p2.4 25 (a13)p2.5 26 (a14)p2.6 27 (a15)p2.7 28 psen 29 ale/prog 30 (txd)p3.1
9、 11 (rxd)p3.0 10 gnd 20 vcc 40 at89c51 u3 vcc 12 xtal y1 30pf cap c8 30pf cap c9 10k res semi r3 22uf cap pol1 c3 sw-pb rst 1k res semi r2 p0_0 p0_1 p0_2 p0_3 p0_4 p0_5 p0_6 p0_7 p1_0 p1_1 p1_2 p1_3 p1_4 p1_5 p1_6 p1_7 p2_0 p2_1 p2_2 p2_3 p2_4 p2_5 p2_6 p2_7 vcc3 txd rxd gnd int0 int1 t0 t1 led3 ds1
10、 vcc3 gnd p3_6 p3_7 rst1 單片機最小系統(tǒng) 五、實驗儀器和設備五、實驗儀器和設備 pc 機、keil 軟件、實驗板等。 六、實驗步驟六、實驗步驟 七、參考程序框圖七、參考程序框圖 p1 口循環(huán)點燈框圖 p3 口輸入 p1 口輸出框 開始 讀入 p3 口值低 4 位值 p3 口置 1 將讀入的值輸出到 p1 低 4 位 開始 延時 設置循環(huán)次數 數據輸出 左移一位 設置循環(huán)初始值 次數- 1=0? y n 圖 1、 流水燈控制: #include void delay(unsigned int cnt) /簡單的延時 while(-cnt); main() p1=0 xfe
11、;/給初始化值 while(1) delay(30000); p1=1; /左移一位 p1|=0 x01; /最后一位補 1 if(p1=0 x7f) /檢測是否移到最左端? delay(30000); /delay p1=0 xfe; 2、 p30、p31、p32、p33 作輸入輸入口接四個開關 s0、s1 、s2、s3;p10,p11, p12,p13 作輸出口,接四個發(fā)光二極管,編寫程序 讀取開關狀態(tài),將此狀態(tài)在發(fā)光二極管上顯示出來。 /按下 p3 口的按鍵,p1 顯示相應的位置,io 讀寫操作程序 #include void main (void) unsigned char pval
12、; /* temp variable for port values */ p1 = 0 xff; /* setup p1 for input */ while (1) pval = p3; /* read p1 into pval */ p1 = pval; /* write pval to p3 */ 實驗三實驗三 定時定時/ /計數器實驗計數器實驗 一、一、 實驗目的實驗目的 1、通過本實驗學習8051內部定時器的使用和編程方法。 2、掌握中斷處理程序的編程方法。 二、實驗內容二、實驗內容 8051內部定時器t0用中斷方式計時,實現每一秒鐘使p1.0的輸出狀態(tài)發(fā)生一次反轉, 從而形成方波
13、輸出。 8051內部定時計數器t0,按計數器模式和方式1工作,對p3.4(t0)引腳進行計數, 并將計數值按二進制數通過p1口驅動led燈顯示出來。 三、實驗儀器和設備三、實驗儀器和設備 pc 機、keil 軟件、實驗板等。 四、實驗步驟四、實驗步驟 8051 單片機的定時/計數器在進行定時或計數之前要進行初始化編程,通常包括如下 幾個步驟: (1) 確定工作方式,即給方式控制寄存器 tmod 寫入控制字。 (2) 計算定時器/計數器初值,并將初值寫入寄存器 tl 和 th。 (3) 根據需要對中斷控制寄存器 ie 置初值,決定是否開放定時器中斷。 (4) 使 tcon 中的 tr0 或 tr
14、1 置“1” ,啟動定時器/計數器。 在初始化過程中,要設置定時或計數的初始值,則計算初值 x 的公式如下: 計數方式: x = m-要求的計數值 式中 m 取決于不同工作方式,可以是 213、216或 28)。 定時方式: x = (m-(要求的定時值/t) 式中t=12/fosc,稱為定時周期。 五、實驗程序流程圖及參考程序五、實驗程序流程圖及參考程序 1 1、 用用t1t1中斷方式定時中斷方式定時, ,每秒鐘使每秒鐘使p1.0p1.0輸出狀態(tài)發(fā)生一次反轉輸出狀態(tài)發(fā)生一次反轉 將t1作定時器定時1秒,由于實驗系統(tǒng)fosc=12mhz,定時周期t=1us。為了實現定時1秒, 通過中斷服務程序
15、進行定時擴展,即設置t1定時50ms產生一次中斷,同時設置一個軟件計 數器來計數中斷次數,當達到中斷20次時即完成了定時1秒鐘。 t1選用工作方式1,定時50ms的初值為x=65536-50000=15536 th1=15536/256; tl1=15536%256; 實驗程序清單如下。 (中斷方式) org 0000h ljmp main org 001bh ;t1的中斷入口地址 ajmp server org 0060h main:mov sp,#60h mov r2,#20 ; 中斷20次 mov tmod,#10h ;t1模式1 mov tl1,#0b0h ;50ms初值 mov th
16、1,#3ch setb tr1 ;啟動t1 setb et1 ;開t1中斷 setb ea ;開總中斷 sjmp $ server: mov tl1,#0b0h ;50ms初值 mov th1,#3ch djnz r2,loop mov r2,#20 cpl p0.0 loop:reti end ( (查詢方式查詢方式) ) loop:jbc tf1,next sjmp loop next: mov tl1,#0b0h ;50ms初值 mov th1,#3ch djnz r2,loop mov r2,#20 cpl p0.0 sjmp loop #include sbit p1_0=p10;
17、char i; main() tmod=0 x01;/t0工作方式1 th0=(65536-50000)/256; tl0=(65536-50000)%256; ea=1;et0=1;/總中斷允許,t0中斷允許 i=0; tr0=1;/啟動t0 while(1); void time0_int(void) interrupt 1 th0=(65536-50000)/256; tl0=(65536-50000)%256; i+; if(i= =20) p1_0=! p1_0; i=0; 2 2、 用用t0t0計數外部脈沖計數外部脈沖, ,通過通過p1p1口顯示計數值口顯示計數值 采用t0作計數器
18、,外部計數脈沖由p3.4引入,8051單片機在每個機器周期采樣一次輸 入信號,因此至少需要兩個機器周期才能檢測到一次脈沖跳變。這就要求被采樣的外部脈 沖高低電平保持時間均要大于一個機器周期,以保證電平在變化之前即被采樣,并且外部 計數脈沖的最高計數頻率為fosc/24。 計數器實驗參考程序框圖 實驗程序清單如下。 org 0000h mov tmod, #00000110b ;設置t0為工作方式2,計數器 mov th0, #0 mov tl0, #0 setb tr0 loop: mov p1, tl0 ;將記數結果送p1口 ljmp loop end #include sbit p3_4=
19、p34; unsigned char a; main() tmod=0 x06;/t0計數,工作方式2; th0=0; tl0=0; tr0=1;/啟動t0 while(1) a=tl0; p1=a; 開始 設置 t0 工作方式 (方式 2、計數模式) 開始計數 計數,輸出計數值 實驗四實驗四 中斷實驗中斷實驗 一、實驗目的一、實驗目的 1. 學習外部中斷技術的基本使用方法。 2. 學習中斷處理程序的編程方法。 二、實驗內容二、實驗內容 用單次脈沖申請中斷,在中斷處理程序中對信號進行反轉輸出。 三、實驗電路連線三、實驗電路連線 p1.0 -led0 -int0 四、實驗說明四、實驗說明 編寫中
20、斷處理程序需要注意的問題是: 1保護進入中斷時的狀態(tài),并在退出中斷之前恢復進入時的狀態(tài)。 2必須在中斷處理程序中設定是否允許中斷重入,即設置 ex0 位。 本例中使用了 int0 中斷,一般進入中斷處理程序時應保護 psw,acc 以及 中斷處理程序使用但非其專用的寄存器(保護現場) 。本例的 int0 中斷處理程序 保護了 psw,acc 等三個寄存器并且在退出前恢復了這三個寄存器(恢復現場) 。 另外中斷處理程序中涉及到關鍵數據的設置時應關中斷,即設置時不允許中斷重 入。本例中沒有涉及這種情況。 3int0 端接單次脈沖發(fā)生器。p10 接 led 燈,以查看信號反轉 五、實驗儀器和設備五、
21、實驗儀器和設備 pc 機、keil 軟件、實驗板等。 六、參考程序框圖六、參考程序框圖 主程序框圖 int0 中斷處理程序框圖 單次脈沖 開始 設置有關中斷控制 寄存器開外中斷 int0 設置 p1.0 初始狀態(tài) 死循環(huán)等待中 斷 int0 中斷 入口 p1.0 狀態(tài)取反 保護現場 恢復現場 中斷返回 /中斷試驗程序 #include sbit led=p10; void main() it0=1; /脈沖方式觸發(fā)中斷,cpu 響應后自動清零 ie0 ea=1; ex0=1; while(1); void ext0_int(void) interrupt 0 /ie0=0;/如果采用電平觸發(fā)方
22、式,需要手動清零 ie0 ex0=0; /關中斷 led=!led; ex0=1; 硬件實驗五硬件實驗五(i) 交通燈控制交通燈控制(軟件延時法)(軟件延時法) 一、實驗目的一、實驗目的 1. 學習數據輸出程序的設計方法。 2.學習模擬交通燈控制的方法。 3. 進一步了解軟件延時方法。 二、實驗內容二、實驗內容 用 cpu 的 p1 口輸出控制信號,控制六個 led 燈(紅,綠,黃),模擬交通燈管理。 三、實驗電路連接三、實驗電路連接 p10 - led0 p11 - led1 p12 - led2 p13 - led3 p14 - led4 p15 - led5 四、實驗說明四、實驗說明 l
23、. 因為本實驗是交通燈控制實驗,所以要先了解實際交通燈的變化規(guī)律。假設一 個十字路口為東西南北走向。初始為狀態(tài) 0。 狀態(tài)狀態(tài) 0:東西紅燈,紅燈,南北紅燈紅燈;然后轉 狀態(tài)狀態(tài) 1:南北綠燈綠燈通車,東西紅燈紅燈;過一段時間轉 狀態(tài)狀態(tài) 2:南北綠燈閃綠燈閃幾次轉黃燈亮黃燈亮,延時幾秒,東西仍然紅燈;紅燈;再轉 狀態(tài)狀態(tài) 3:東西綠燈綠燈通車,南北紅燈紅燈;過一段時間轉 狀態(tài)狀態(tài) 4:東西綠燈閃綠燈閃幾次轉亮黃燈亮黃燈,延時幾秒,南北仍然紅燈紅燈;最后循環(huán)至狀態(tài)狀態(tài) 1。 2. 各用一組紅、黃、綠色 led 分別表示南北方向和東西方向紅綠燈。 3. 延時程序參考硬件實驗一中的例子,具體時間長
24、短由同學自己確定。 五、實驗儀器和設備五、實驗儀器和設備 pc 機、keil 軟件、實驗板等。 六、參考程序框圖六、參考程序框圖 led3、led4、led5 分分 別表示東西方向紅、黃、別表示東西方向紅、黃、 綠燈綠燈 開始開始 狀態(tài)狀態(tài) 1:南北綠燈,東西紅燈,:南北綠燈,東西紅燈, 延時一會兒延時一會兒 狀態(tài)狀態(tài) 4:南北紅燈,東西綠燈閃轉亮黃:南北紅燈,東西綠燈閃轉亮黃 燈,延時一會兒燈,延時一會兒 初始狀態(tài)東西南北都是紅燈,初始狀態(tài)東西南北都是紅燈, 延時一會兒延時一會兒 狀態(tài)狀態(tài) 2:南北綠燈閃轉黃燈亮,東西紅:南北綠燈閃轉黃燈亮,東西紅 燈,延時一會兒燈,延時一會兒 狀態(tài)狀態(tài) 3
25、:南北紅燈,東西綠燈,:南北紅燈,東西綠燈, 延時一會兒延時一會兒 led0、led1、led2 分分 別表示南北方向紅、黃、別表示南北方向紅、黃、 綠燈綠燈 交通燈控制參考程序框圖 /交通燈,軟件延時 #include #define uint unsigned int #define uchar unsigned char sbit led0=p10; sbit led1=p11; sbit led2=p12; sbit led3=p13; sbit led4=p14; sbit led5=p15; uchar state0=0 xf6; uchar state1=0 xf3; uchar
26、 state2=0 xf5; uchar state3=0 xde; uchar state4=0 xee; void delayms(uint ms) uint i,j; for(i=0;ims;i+) for(j=0;j123;j+); void main() uint i; p1=state0; delayms(2000); while(1) p1=state1; delayms(2000); for(i=0;i3;i+) led2=!led2; delayms(2000); p1=state2; delayms(500); p1=state3; delayms(500); for(i=
27、0;i3;i+) led5=!led5; delayms(2000); p1=state4; delayms(500); *硬件實驗五硬件實驗五 (ii) 交通燈控制交通燈控制(定時器延時法)(定時器延時法) 一、實驗目的一、實驗目的 1. 進一步理解單片機內部定時器/計數器的工作原理和使用方法。 2. 學習模擬交通燈控制的方法。 3. 學習數據輸出程序的設計方法。 4. 學習中斷處理程序的編程方法。 二、實驗內容二、實驗內容 用 cpu 的 p1 口輸出控制信號,控制六個 led 燈(紅,綠,黃),模擬交通燈管理。 三、實驗電路連接三、實驗電路連接 p10 - led0 p11 - led1
28、 p12 - led2 p13 - led3 p14 - led4 p15 - led5 四、實驗說明四、實驗說明 l. 因為本實驗是交通燈控制實驗,所以要先了解實際交通燈的變化規(guī)律。假設一個 十字路口為東西南北走向。初始為狀態(tài) 0。 狀態(tài)狀態(tài) 0:東西紅燈,紅燈,南北紅燈紅燈;然后轉入 狀態(tài)狀態(tài) 1:南北綠燈綠燈通車,東西紅燈紅燈;過一段時間轉入 狀態(tài)狀態(tài) 2:南北綠燈閃綠燈閃幾次轉黃燈亮黃燈亮,延時幾秒,東西仍然紅;紅;再轉入 狀態(tài)狀態(tài) 3:東西綠燈綠燈通車,南北紅燈紅燈;過一段時間轉入 狀態(tài)狀態(tài) 4:東西綠燈閃綠燈閃幾次轉黃燈亮,黃燈亮,延時幾秒,南北仍然紅燈紅燈;最后循環(huán)至狀態(tài)狀態(tài) 1
29、。 2. 各用一組紅、黃、綠色 led 分別表示南北方向和東西方向。 3. 由定時器來產生通車延時定時器來產生通車延時時間,時間長短 1 秒以上(由同學自己確定) 。 提示:內部計數器用作定時器時,是對機器周期計數。每個機器周期的長度是 12 個振蕩器周期。因為實驗系統(tǒng)的晶振是 12mhz,本程序定時器工作于方式 1(16 位方式)時,最大定時時間為: 216*1s=65536s=65.536ms 所以需要配合軟件記數。如要延時 2 秒,則需要 t0 中斷 32 次,所 用時間為 65536*32=2097120s2s 因此在 t0 中斷處理程序中,要判斷中斷次數是否到 32 次,若不到 32
30、 次,則只 使中斷次數加 1,然后返回,若到了 32 次,定時 2 秒時間到。 3.用軟件延時方法產生軟件延時方法產生“閃閃”延時延時時間(參考硬件實驗一) 。 led3、led4、led5 分分 別表示東西方向紅、黃、別表示東西方向紅、黃、 綠燈綠燈 led0、led1、led2 分分 別表示南北方向紅、黃、別表示南北方向紅、黃、 綠燈綠燈 五、實驗儀器和設備五、實驗儀器和設備 pc 機、keil 軟件、實驗板等。 六、參考程序框圖六、參考程序框圖 否 是 否 是 是 否 主程序框圖 是 否 開始 設置 t0 時間常數 0000h 設置狀態(tài)記數初 值 b=0 置 t0 工作方式 1,定時器
31、通過 p1 口送初始狀態(tài) (東西南北都是紅燈) 設置秒計數值 r6=32(2 秒) 中斷允許,定時 開始 動態(tài)停機等待 中斷 保護現場并重新設置保護現場并重新設置 t0 時間常數時間常數 是否到是否到 2 秒?秒? t0 中斷入口中斷入口 秒計數值秒計數值 r6 減減 1 狀態(tài)值狀態(tài)值 b 加加 1 重新設置秒計數值重新設置秒計數值 r6=32 恢復現場恢復現場 中斷返回中斷返回 重設狀態(tài)記數初值重設狀態(tài)記數初值 r2=0 南北綠燈,東西紅燈南北綠燈,東西紅燈 南北綠燈閃轉黃南北綠燈閃轉黃 燈亮,東西紅燈燈亮,東西紅燈 南北紅燈,東西綠燈南北紅燈,東西綠燈 是否狀態(tài)是否狀態(tài) 1? 是否狀態(tài)是否
32、狀態(tài) 2? 是否狀態(tài)是否狀態(tài) 3? 進入狀態(tài)進入狀態(tài) 4,南北紅燈,南北紅燈, 東西綠燈閃轉黃燈亮東西綠燈閃轉黃燈亮 中斷處理程序框圖 實驗六實驗六 串并轉換實驗串并轉換實驗 一、一、 實驗目的實驗目的 1、掌握8051串行口方式0工作方式及編程方法。 2、掌握利用串行口擴展i/o通道的方法。 二、實驗內容二、實驗內容 利用8051單片機串行口和串行輸入并行輸出移位寄存器74ls164,擴展一個8位輸出通 道,用8個led發(fā)光二極管顯示轉換的8位數據,采樣中斷方式設計每隔1秒鐘顯示1種花樣, 能循環(huán)顯示8種不同的led花樣。 三、實驗電路原理圖三、實驗電路原理圖 rxd 接 datain,tx
33、d 接 dclk。 四、實驗說明四、實驗說明 串行口工作在方式 0 時,可通過外接移位寄存器實現串并行轉換。在這種方式下,數 據為 8 位,只能從 rxd 端輸入輸出,txd 端總是輸出移位同步時鐘信號,其波特率固定為 晶振頻率 1/12。由軟件置位串行控制寄存器(scon)的 ren 后才能啟動串行接收,在 cpu 將數據寫入 sbuf 寄存器后,立即啟動發(fā)送。待 8 位數據輸完后,硬件將 scon 寄存器的 ti 位置 1,ti 必須由軟件清零。 五、實驗程序框圖五、實驗程序框圖 主程序方框圖 int-t0 方框圖 實驗七實驗七 數碼管顯示實驗數碼管顯示實驗 一、實驗目的一、實驗目的 1、
34、掌握 led 數碼管的工作原理及驅動方法。 2、掌握多位 led 數碼管動態(tài)顯示方法。 二、實驗內容二、實驗內容 在 6 位數碼管上顯示“012345” 。 三、實驗說明三、實驗說明 數碼管有共陰和共陽兩種結構,工作電流一般在 10-20ma 左右,對于動態(tài)掃描方式驅 動的 led 數碼管,其亮度與穩(wěn)定度與掃描頻率有關,一般掃描頻率在 60hz 以上,也就是 在 16ms 之內完整掃描一周,才能穩(wěn)定顯示,不會閃爍。實驗原理圖如下圖所示: 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 dd cc bb aa title numberrevisionsize a2 date:20
35、10-9-19sheet of file:e:不不不.不不不.schdocdrawn by: 330330330330330330 value: 1k vcc 單單片片機機動動態(tài)態(tài)數數碼碼管管 2n3906 q1 2n3906 q2 2n3906 q3 q5 k 3 f 2 g 1 e 4 d 5 k 8 c 7 dp 6 b 9 a 10 h1 k 3 f 2 g 1 e 4 d 5 k 8 c 7 dp 6 b 9 a 10 h4 k 3 f 2 g 1 e 4 d 5 k 8 c 7 dp 6 b 9 a 10 h2 k 3 f 2 g 1 e 4 d 5 k 8 c 7 dp 6 b
36、9 a 10 h5 k 3 f 2 g 1 e 4 d 5 k 8 c 7 dp 6 b 9 a 10 h3 k 3 f 2 g 1 e 4 d 5 k 8 c 7 dp 6 b 9 a 10 h6 seg0 seg1 seg5 seg4 seg3 seg2 seg6 seg7 seg0 seg1 seg5 seg4 seg3 seg2 seg6 seg7 seg0 seg1 seg5 seg4 seg3 seg2 seg6 seg7 seg0 seg1 seg5 seg4 seg3 seg2 seg6 seg7 seg0 seg1 seg5 seg4 seg3 seg2 seg6 seg7
37、seg0 seg1 seg5 seg4 seg3 seg2 seg6 seg7 bit1bit2bit3 bit4bit5bit6 bit1 bit2 bit3 bit4 bit5 bit6 sig1 sig2 sig3 sig4 sig5 sig6 12 34 56 78 910 11 12 13 14 15 16 header 8x2 p5 seg0 seg1 seg5 seg4 seg3 seg2 seg6 seg7 12 34 56 78 910 11 12 header 6x2 p7 sig6 sig5 sig4 sig3 sig2 sig1 1k smg_r13 smg_r14 s
38、mg_r15 smg_r16 smg_r17 smg_r18 smg_r19 1k smg_r20 value: 1kvalue: 1kvalue: 1k value: 1kvalue: 1k q6 2n3906 q4 八位數碼管連接圖 四、實驗儀器和設備四、實驗儀器和設備 pc 機、keil 軟件、實驗板等。 五、實驗步驟五、實驗步驟 六、參考程序框圖六、參考程序框圖 #include #define uint unsigned int #define uchar unsigned char uchar num1; uchar num2; uchar code table= 0 x90,0
39、xf6,0 x58,0 x52, 0 x36,0 x13; uchar code wei= 0 x7f,0 xbf,0 xdf,0 xef, 0 xf7,0 xfb; void delay(); void main() while(1) for(num1=0;num10;x-) for(y=4;y0;y-); 初始化 輸入位碼 輸入段碼 延時 輸入位碼 輸入段碼 延時 實驗八實驗八 da 轉換實驗轉換實驗 一、實驗目的一、實驗目的 1. 了解 d/a 轉換的基本原理。 2. 了解 d/a 轉換芯片 0832 的性能及編程方法。 3. 了解單片機系統(tǒng)中擴展 d/a 轉換的基本方法。 二、實驗內容
40、二、實驗內容 1. 利用 dac0832 將任意 1 字節(jié)數字量轉換成電壓模擬量,用電壓表測量輸出 電壓。 2. 編制程序產生鋸齒波、三角波,用示波器觀看。 三、實驗電路連線三、實驗電路連線 用電壓表測量輸出電壓或用示波器探頭接觸 out,觀察顯示波形。 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 dd cc bb aa title numberrevisionsize a2 date:2010-9-19sheet of file:e:不不不.不不不.schdocdrawn by: d da a0 08 83 32 2 vref 8 rfb 9 gnd 10 iout1 1
41、1 iout2 12 di7 13 di6 14 di5 15 di4 16 di0 7 cs 1 wr1 2 gnd 3 di3 4 di2 5 di1 6 xfer 17 wr2 18 ile 19 vdd 20 dac0832lcj da_u1 vcc da不不不不bfffh 84 7 5 6 2 lm358ad da_u2b 8 1 4 3 2 1 lm358ad da_u2a 1k rpot da_w1 1k da_r1 1 2 header 2 da_p1 da_j1 da_j2 p00 p01 p02 p03 p04 p05 p06 p07 +12 -12 dac0832 原理圖
42、 四、實驗說明四、實驗說明 1. 正向階梯波實驗程序。 在圖中,讓8051單片機的累加器a從0開始循環(huán)增量,每增量一次向dac0832送 出一個數,得到一個輸出電壓,這樣就可以獲得一個正向階梯波,波形的周期可以 通過調整延時時間來改變。 2、要產生鋸齒波、三角波,比較簡單的方法是表格法表格法:先產生這二個波形的數據 表格,然后依次查表得到波形中一點的數字量,送 d/a 轉換,得到模擬量的電壓信號, 再送示波器顯示。這種表格法對輸出較復雜的波形(如正弦波或其他任意波形)是非 常有用的。產生鋸齒波和三角波的表格只需由數字量的增減來控制,同時要注意三角 波要分段來產生。 3、da 轉換取值范圍為一個
43、周期,在一個周期數據點越多,精度越高些。本例采 用的數據點為 256 點周期,即最小數字量為 0,最大為 255(ffh) 。 8 位 da 轉換器的輸入數據 n 與輸出電壓 vo1的關系為 vo1= -vref*n256 (vref為參考電壓,vref= -5v) 五、實驗儀器和設備五、實驗儀器和設備 pc 機、keil 軟件、實驗板等。 六、參考程序框圖(表格法)六、參考程序框圖(表格法) 否 是 表格法產生鋸齒波、三角波參考程序框圖 正向階梯波實驗程序。 mov dptr,#0bfffh ;dac0832 地址 mov a,#00h loop:movx dptr,a ;啟動 d/a 轉換
44、 acall delay ;延時 inc a ajmp loop ;連續(xù)輸出波形 delay:mov r4,#0ffh ;延時子程序 loop1:mov r5,#10h loop2:nop nop nop djnz r5,loop2 djnz r4,loop1 ret 三角波實驗程序。 若要獲得負向的鋸齒波,只需將以上程序中的指令 inc a 換成指令 dec a 即可,如 果將正向鋸齒波與負向鋸齒波組合起來就可以獲得三角波,程序如下: mov dptr,#0bfffh ;dac0832 地址 開始 表格首地址送 dptr 置循環(huán)計數初值 查表得到波形數據 修改表指針、修改計數值 一周期數據轉
45、 換完畢? 送 d/a 轉換 mov a,#00h up: movx dptr,a ;啟動 d/a 轉換 inc a ;上升沿 cjne a,#0ffh,up down:movx dptr,a ;啟動 d/a 轉換 dec a ;下降沿 cjne a,#00h,down ajmp up ;連續(xù)輸出波形 方波實驗程序。 方波信號是波形發(fā)生器中最常用的一種信號,下面的程序可以從 dac 的輸出端得到 方波,改變兩次調用延時子程序的延時值,可得到不同占空比的矩形波。改變 hi 和 lo 對 應的數字量可以改變方波信號高、低電平值。程序如下: hi equ 0ffh lo equ 00h mov dp
46、tr,#0bfffh ;dac0832 口地址 sq: mov a,#low ;取低電平數字量 movx dptr,a ;dac 輸出低電平 acall delay ;延時 mov a,#high ;取高電平數字量 movx dptr,a ;dac 輸出高電平 acall delay ;延時 delay:mov r4,#0ffh ;延時子程序 loop1:mov r5,#10h loop2:djnz r5,loop2 djnz r4,loop1 ret 復習思考題復習思考題 1 若希望輸出一個梯形波,應如何修改實驗程序? 2 設計一個用查表方式實現的正弦波實驗程序。 實驗九實驗九 ad 轉換實
47、驗轉換實驗 一、實驗目的一、實驗目的 1. 掌握 ad 轉換與單片機的接口方法。 2. 了解 ad 芯片 adc0809 轉換性能及編程。 3. 通過實驗了解單片機如何進行數據采集。 二、實驗內容二、實驗內容 利用實驗板上的 adc0809 做 ad 轉換器,實驗板上的電位器提供模擬量 輸入,編制程序,將模擬量轉換成二進制數字量,并用發(fā)光二極管顯示。 三、實驗電路原理圖三、實驗電路原理圖 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 dd cc bb aa title numberrevisionsize a2 date:2010-9-19sheet of file:e:不不
48、不.不不不.schdocdrawn by: in3 1 in4 2 in5 3 in6 4 in7 5 start 6 eoc 7 d3 8 oe 9 clk 10 vcc 11 ref+ 12 gnd 13 d1 14 d2 15 ref- 16 d0 17 d4 18 d5 19 d6 20 d7 21 ale 22 add c 23 add b 24 add a 25 in0 26 in1 27 in2 28 adc0809n ad_u1 vcc top 1 bot 2 tap 3 bot 2 top 1 tap 3 10krpot ad_w1 1k rpot ad_w2 1 2 3 4
49、 5 6 7 8 header 8 ad_p1 adda addb addc clr 2 clk 1 qa 3 qb 4 qc 5 qd 6 gnd 7 gnd vdd 14 vdd sn74ls393n ad_u3a ale ad_clk ad_clk 5 6 4 sn74ls02n ad_u2b 8 9 10 sn74ls02n ad_u2c 2 3 1 sn74ls02n ad_u2a p27 p36 p37 st_ad st_ad rd_ad st_ad rd_ad ad_eoc ad_eocp33 ad不不不不不1 ad不不不不7ff8h7fffh a ad d0 08 80 09
50、9 104 cap ad_c1 12 34 56 header 3x2 add_p1 adda addb addc vcc p00 p01 p02 p03 p04 p05 p06 p07 104 cap ad_c2 104 cap ad_c3 vcc 四、實驗說明四、實驗說明 1.ad 轉換器大致有三類:一是雙積分 ad 轉換器,優(yōu)點是精度高,抗干 擾性好,價格便宜,但速度慢;二是逐次逼近 ad 轉換器,精度、速度、 價格適中;三是并行 a/d 轉換器,速度快,價格也昂貴。 2. 每采集一次一般需 100s, ad 轉換結束后會自動產生 eoc 信號。本程 序是用查詢方式讀入 ad 轉換結果。
51、實驗系統(tǒng)具有 8 路 a/ d 通道(模擬量輸入 端為 in0、in1in7) ,地址分別為 7ff8h 7fffh,eoc=0 表示未轉換完, eoc=1 表示轉換完畢,可以讀入轉換好的數據了。實現轉換的過程是: 先向某一路通道寫入任意數從而啟動轉換,然后讀入 eoc 狀態(tài)進行判斷,若 轉換完成,則讀入數據即可。a/d 轉換部分的參考程序如下: mov dptr,#07ff8h ;選中通道 0(d2d1d0=000) movx dptr,a ;啟動轉換 mov r3,#20h delay:djnz r3,delay ;等待 eoc 信號變低 setb p3.3 ;讀入狀態(tài) test: jb
52、p3.3,test ; eoc=0 繼續(xù)查詢,eoc=1,轉換完畢 movx a,dptr ;讀入數據 3轉換得到的二進制數字量通過 p1 口送到發(fā)光二極管顯示。 五、實驗儀器和設備五、實驗儀器和設備 pc 機、keil 軟件、實驗板等。 六、參考程序框圖六、參考程序框圖 否 是 a/d 轉換參考程序框圖 復習思考題復習思考題 1 認真復習實驗,希望采用查詢方式讀取a/d結果,應如何修改實驗程序? 2 設計一個用中斷方式實現讀取a/d轉換結果并顯示的實驗程序。 參考程序: #include/包含相應的頭文件 #include #include sbit cs=p16;/定義數模轉換器硬件對應引
53、腳 sbit clk=p13; sbit do=p14; sbit di=p15; bit adflag; 開始 讀入狀態(tài)信息 啟動 a/d 轉換 數據輸出顯示 a/d 轉換 完畢? unsigned char code dis=0 xf7,0 xfb,0 xfd; /定義數碼管位碼 unsigned char code datatab=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;/7 段數 碼管段碼表 data unsigned char display3;/定義臨時存放數碼管數值 void init_timer1(void) tmod |= 0 x10; th1=0 xff; /* init value */ tl1=0 x00; /pt1=1; /* 優(yōu)先級 */ ea=1; /* interupt enable */ et1=1; /* enable timer1 interrupt */ tr1=1; unsigned char readadc(unsigned char channel) unsigned char i,j; unsigned char temp=0; channel =3; channel |=3; cs =0; /按
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 平臺代賣合同模板
- 2024年辦公樓租賃協議格式
- 買賣成品小米合同模板
- 安保設施采購合同模板
- 戰(zhàn)略增資合同模板
- 廣電勞動合同模板
- 微信貨運合同模板
- 會計出納招聘合同模板
- 辦公室搬運合同模板
- 博物館VRV空調系統(tǒng)調試方案
- T管護理-PPT課件 (2)
- 長安汽車集團介紹PPT課件
- NRS評分表參考
- 胡壯麟《語言學教程》測試習題及答案
- 推拿手法在治療頸椎病中的作用課題論文開題結題中期報告(經驗交流)
- 絕對成交的銷售技巧_圖文ppt課件
- 【整理】加熱爐澆注施工方案
- 江蘇省裝配式監(jiān)理細則
- 人工挖孔樁單樁豎向承載力特征值計算Excel
- 南昌大學道路交通安全管理暫行辦法
- 軟件工程-網上購物系統(tǒng)的設計與實現(共32頁)
評論
0/150
提交評論