發光二極管流水燈實驗_第1頁
發光二極管流水燈實驗_第2頁
發光二極管流水燈實驗_第3頁
發光二極管流水燈實驗_第4頁
發光二極管流水燈實驗_第5頁
已閱讀5頁,還剩11頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實驗一 發光二極管流水燈實驗一、實驗目的:1.通過AT89C51單片機控制8個發光二極管,八個發光二極管分別接在單片機的P0.0P0.7接口上,輸出“0”時,發光二極管亮。開始時P0.0P0.1.P0.7,實現亮點以1HZ頻率循環移動。2.用PROTEUS 設計,仿真以AT89C51為核心的發光二極管流水燈實驗裝置。3.掌握發光二極管的控制方法。二、PROTEUS電路設計:三、程序部分#includesbit control = P37;void delay(int z)int x,y;for(x=z;x0;x-)for(y=110;y0;y-);void main()int i,tmp;co

2、ntrol = 0;P0 = 0xef;delay(1000);for(i=1;i1)+ 0x80;delay(1000);實驗二 開關控制LED數碼管實驗一、實驗目的:1.通過AT89C51讀入4位開關K1、K2、K3、K4的輸入狀態,并按照二進制編碼關系0-F輸出到數碼管顯示。(如K4K3K2K1全部按下,則顯示F;若只有K2按下,則顯示2。)2.掌握LED數碼管的靜態顯示。3.掌握I/O口的控制方法。二、PROTEUS電路設計:三、程序部分#includeunsigned char table=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x

3、90,0x88,0x83,0xC6,0xA1,0x86,0x8E,;unsigned char KEY;void main()while(1)KEY = P2;switch(KEY)case 0xff:P0 = table0;break;case 0xfe:P0 = table1;break;case 0xfd:P0 = table2;break;case 0xfc:P0 = table3;break;case 0xfb:P0 = table4;break;case 0xfa:P0 = table5;break;case 0xf9:P0 = table6;break;case 0xf8:P0

4、= table7;break;case 0xf7:P0 = table8;break;case 0xf6:P0 = table9;break;case 0xf5:P0 = table10;break;case 0xf4:P0 = table11;break;case 0xf3:P0 = table12;break;case 0xf2:P0 = table13;break;case 0xf1:P0 = table14;break;case 0xf0:P0 = table15;break;default :break;實驗三 外中斷優先級實驗一、實驗目的:1.理解單片機中斷優先級和優先權。2.用P

5、ROTEUS 設計,仿真基于AT89C51單片機的中斷優先級實驗。3.掌握中斷編程方法。單片機主程序控制P0口數碼管循環顯示08;外中斷0、外中斷1發生時分別在P2口、P1口依次顯示08。通過實驗可演示高優先級可中斷低優先級,但低優先級的中斷請求不能中斷高優先級。二、PROTEUS電路設計:三、程序部分#includeunsigned char code table=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80;/ 共陽數碼管的段碼void delay(int z) /延時子程序,大約1msint x,y;for(x=110;x0;x-)for(y=

6、z;y0;y-);int i0=0,i1=0;/ 用于中斷0,1顯示數碼管的變量void main()int i;EX0 = 1;/開外部中斷0EX1 = 1;/開外部中斷1IT0 = 1;IT1 = 1;PX0 = 1;PX1 = 0;EA = 1;/開總中斷while(1)for(i=0;i9;i+)/P0 循環顯示08P0 = tablei;delay(200);void int0()interrupt 0 / 外部中斷0優先級高于外部中斷1 ,中斷號為 0for(i0=0;i09;i0+) /顯示08 P2 = tablei0;delay(200); void int1()interr

7、upt 2 /外部中斷1,中斷號為2for(i1=0;i19;i1+) /顯示08 P1 = tablei1;delay(200);實驗四 60S倒計時實驗一、實驗目的:1.通過AT89C51的定時器實現60S倒計時,顯示采用兩位數碼管動態顯示。2.用PROTEUS 設計,仿真基于AT89C51單片機的60S倒計時實驗。二、PROTEUS電路設計:三、程序部分#include sbit GE = P21; sbit SHI = P20; int count = 0,number = 60; unsigned char code table=0xC0,0xF9,0xA4,0xB0,0x99,0x

8、92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E; void delay(int z); void display(); void main() EA = 1; ET0 = 1; TMOD = 0X01; TH0 = (65536-50000)/256; TL0 = (65536-50000)%256; TR0 = 1; while(1) display(); void delay(int z) int x,y; for(x=110;x0;x-) for(y=z;y0;y-); void display() SHI = 0; GE =

9、1;P1 = tablenumber%10;delay(10);GE = 0;SHI = 1;P1 = tablenumber/10;delay(10); void time_count() interrupt 1 TH0 = (65536-50000)/256; TL0 = (65536-50000)%256; count+; if(count = 20) count = 0; number-;if(number 0)number = 59; 實驗五 矩陣式鍵盤的設計一、實驗目的:1.掌握鍵盤設計中按鍵識別的原則。2.用PROTEUS 設計一個常規44的矩陣鍵盤。3.鍵盤編碼規則自己定義,分

10、別對應數字鍵0-9、A-F,按下對應的按鍵顯示在數碼管上顯示對應的數據。二、PROTEUS電路設計:三、程序部分#includesbit show_1 = P10;sbit show_2 = P11;sbit show_3 = P12;sbit show_4 = P13;unsigned char j,k,temp,key;unsigned char code table=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,;void delay(unsigned char i);voi

11、d display(unsigned char num);void key_scan();void main() while(1) key_scan(); display(key); void delay(unsigned char i) for(j=i;j0;j-) for(k=110;k0;k-);void display(unsigned char num) P0=tablenum; show_4 = 0;void key_scan()P2=0xef; temp=P2; temp=temp&0x0f; if(temp!=0x0f) delay(10); if(temp!=0x0f) te

12、mp=P2; switch(temp) case 0xe7: key=0; break; case 0xeb: key=1; break; case 0xed: key=2; break; case 0xee: key=3; break; while(temp!=0x0f) temp=P2; temp=temp&0x0f; display(key); P2=0xdf; temp=P2; temp=temp&0x0f; if(temp!=0x0f) delay(10); if(temp!=0x0f) temp=P2; switch(temp) case 0xd7: key=4; break; c

13、ase 0xdb: key=5; break; case 0xdd: key=6; break; case 0xde: key=7; break; while(temp!=0x0f) temp=P2; temp=temp&0x0f; display(key); P2=0xbf; temp=P2; temp=temp&0x0f; if(temp!=0x0f) delay(10); if(temp!=0x0f) temp=P2; switch(temp) case 0xb7: key=8; break; case 0xbb: key=9; break; case 0xbd: key=10; bre

14、ak; case 0xbe: key=11; break; while(temp!=0x0f) temp=P2; temp=temp&0x0f; display(key); P2=0x7f; temp=P2; temp=temp&0x0f; if(temp!=0x0f) delay(10); if(temp!=0x0f) temp=P2; switch(temp) case 0x77: key=12; break; case 0x7b: key=13; break; case 0x7d: key=14; break; case 0x7e: key=15; break; while(temp!=

15、0x0f) temp=P2; temp=temp&0x0f; display(key); 實驗六 AD轉換程序設計一、實驗目的:1.掌握轉換器ADC0809的使用。2.用PROTEUS 設計,仿真基于AT89C51單片機的A/D轉換實驗。3.通過改變電位器的值改變模擬量的輸入,經轉換為數字量在LED上顯示,比對模擬量和數字量的關系。二、PROTEUS電路設計:三、程序部分#includesbit OE = P31;sbit START = P33;sbit NUM_1 = P34;sbit NUM_2 = P35;sbit NUM_3 = P36;sbit NUM_4 = P37;sbit d

16、p = P17;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;unsigned int date;void show();void delay(int z)int x,y;for(x=z;x0;x-)for(y=110;y0;y-); void main()EX0 = 1;IT0 = 1;EA = 1; START = 0;START = 1;START = 0;while(1);void over() interrupt 0OE

17、 = 1;date = P0;OE = 0;show();START = 0;START = 1;START = 0;void show()NUM_3 = 1;NUM_2 = 1;P1=tabledate/51;dp = 1;NUM_1 = 0;delay(5);NUM_1 = 1;P1=tabledate%51*100/51/10;NUM_2 = 0;delay(5);NUM_2 = 1;P1=tabledate%51*100/51%10;NUM_3 = 0;delay(5);實驗七 雙機通信實驗一、實驗目的:1.掌握單片機串口通信程序的設計。2.了接RS232接口通信的特點。3.雙機通信:分別把接收到的對方通過邏輯開關輸入的信息在本地數碼管上顯示,如下圖甲機的邏輯開關數據為81H,乙機通過串口接收該數據并數碼關管顯示,而甲機顯示乙機發送的數據88H。二、PROTEUS電路設計:三、程序部分#includevoid init()TMOD = 0X20;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論