單片機實驗程序(全)_第1頁
單片機實驗程序(全)_第2頁
單片機實驗程序(全)_第3頁
單片機實驗程序(全)_第4頁
免費預(yù)覽已結(jié)束,剩余11頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、2 基本輸入輸出實驗(蜂鳴器控制程序) /* 名稱: 基本輸入輸出( I/O )程序 說 明:*/ #include/包含頭文件#define uint unsigned int/宏定義#define uchar unsigned charsbit buzzer=P3A5;sbit Keyadd=P2A。;sbit Keydec=P2A1;sbit Keycom=P2A2;void Delay(uint z) uint x;uchar y;for(x=z;x0;x-)/延時for(y=250;y0;y-); void main(void) uchar voice;voice=3;while(1

2、)/ 按鍵被按下時為 0if(Keyadd=0) voice=1;if(Keydec=0) voice=2; if(Keycom=0) voice=3;if(voice=1) buzzer=buzzer; Delay(1); else if(voice=2) buzzer=buzzer; Delay(20); elsebuzzer=1;3 定時器中斷實驗/* 名稱: 實驗三作業(yè)說 明:/包含頭文件/宏定義* #include #define uint unsigned int #define uchar unsigned char uchar counter;uchar voice;sbit

3、buzzer=P3A5;sbit Keyadd=P2A。;sbit Keydec=P2A1;sbit Keycom=P2A2;sbit Keycan=P2A3;/#define T0_TIME1#define T0ReLoadL1/定時時間us為單位#define T0ReLoadH1計算計數(shù)器初值254(65536-(uint)(T0_TIME1*11.0592/12) % 256)(65536-(uint)(T0_TIME1*11.0592/12) / 256)/計算計數(shù)器初值/#define T0_TIME2#define T0ReLoadL2#define T0ReLoadH2初始化

4、TIMER0/定時器 T0 方式 1/裝載計數(shù)器初值/啟動 Timer0/Timer0 中斷使能/總開關(guān)使能大循環(huán)1400/定時時間 us 為單位(65536-(uint)(T0_TIME2*11.0592/12) % 256) (65536-(uint)(T0_TIME2 *11.0592/12) / 256)*名稱: 主程序 說明:* void main(void)/TMOD|=0x01;TH0 =T0ReLoadH1;TL0 =T0ReLoadL1;TR0 =1;ET0 =1;EA =1;/counter=0;while(1)/ 按鍵被按下時為 0if(Keyadd=0) voice=1

5、;if(Keydec=0)voice=2;if(Keycom=0)voice=3;/*名稱: Timer0 中斷服務(wù)子程序功能:產(chǎn)生 10ms 定時中斷*/重裝載計數(shù)器初值void Timer0_Int(void) interrupt 1 if(voice=1) TH0=T0ReLoadH1; TL0=T0ReLoadL1; buzzer=buzzer;if(voice=2)TH0=T0ReLoadH2;TL0=T0ReLoadL2; buzzer=buzzer;if(voice=3)4 LED 數(shù)碼管動態(tài)掃描顯示實驗#include #define uint unsigned int #de

6、fine uchar unsigned char/LED 顯示代碼 / / bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0/ dpG C D E F B Auchar code seg10= 0x3f,0x22,0x5b,0x73,0x66, /0,1,2,3,40x75,0x7d,0x23,0x7f,0x77,; /5,6,7,8,9uchar idatadis_buff_14;uchar idatadis_buff_24; uchar counter;sbit U4_HC574_CPsbit U5_HC574_CP#define T0_TIME 10000/

7、第一行 LED 顯示緩沖/第二行 LED 顯示緩沖=P1A0;S3顯示鎖存74HC574脈沖=P1A1;S4顯示鎖存74HC574脈沖/定時時間 us 為單位#define T0ReLoadL#define T0ReLoadH(65536-(uint)(T0_TIME*11.0592/12) % 256)(65536-(uint)(T0_TIME*11.0592/12) / 256)*名稱: 數(shù)碼管顯示驅(qū)動子程序 說明:* void Display(void) uchar data i,j,k,temp00; temp00=0x20;/關(guān)所有掃描位/S3 顯示鎖存 74HC574 脈沖 上升沿

8、/S4 顯示鎖存 74HC574 脈沖 上升沿/送掃描位/延時/掃描位移位/關(guān)所有掃描位for(i=0;i4;i+) P1 |= 0x3C;P0=dis_buff_1i;U4_HC574_CP=0; U4_HC574_CP=1;P0=dis_buff_2i;U5_HC574_CP=0; U5_HC574_CP=1;P1 &= (temp00); for(j=0;j20;j+) for(k=0;k=1;P1|=0x3C;/* 名稱: 主程序*void main(void)uchar data bai,shi,ge; uint data Num;uchar data temp00;TMOD|=0x

9、01;TH0 =T0ReLoadH;TL0 =T0ReLoadL;TR0 =1;ET0 =1;EA =1;counter=0;Num=999;for(;) bai=Num/100;temp00=Num-bai*100; shi=temp00/10;ge =temp00-shi*10; dis_buff_10=0; dis_buff_11=0; dis_buff_12=0; dis_buff_13=0; dis_buff_20=0;dis_buff_21=segbai;dis_buff_22=segshi;dis_buff_23=segge; if(counter=100)counter=0;/

10、 定時器 T0 方式 1/裝載計數(shù)器初值/ 啟動 Timer0/Timer0 中斷使能/總開關(guān)使能Num-; if(Num=0) Num=999; Display();/ 調(diào)用 LED 數(shù)碼管顯示子程序void Timer0_Int(void) interrupt 1 TH0=T0ReLoadH;TL0=T0ReLoadL; counter+;/重裝載計數(shù)器初值5 實時時鐘與溫度傳感器實驗(只需main ()部分代碼)void main(void)uchar Hour,Min,Sec;/ 初始化TIMER0TMOD|=0x01;/ 定時器 T0 方式 1TH0 =T0ReLoadH;/裝載計數(shù)

11、器初值TL0 =T0ReLoadL;TR0 =1;/ 啟動 Timer0ET0 =1;/Timer0 中斷使能EA =1;/總開關(guān)使能counter=0;/ 大循環(huán)WR_DS1302(0x8e,0X00);WR_DS1302(0x84,0X14);WR_DS1302(0x82,0X43);WR_DS1302(0x80,0X00);WR_DS1302(0x8e,0X80);for(;)Hour=RD_DS1302(0x85);Min=RD_DS1302(0x83);Sec=RD_DS1302(0x81);dis_buff_10=segHour4;if(counter=49)dis_buff_11

12、=segHour&0x0f|0x80;else if(counter4;dis_buff_13=segMin&0x0f;dis_buff_20=0;dis_buff_21=0;dis_buff_22=segSec4;dis_buff_23=segSec&0x0f;Display();/ use _nop_() function6 74HC595 串行輸入實驗 #include #include #define uint unsigned int#define uchar unsigned char uchar counter;/ 計算計數(shù)器初值 /#define T0ReLoadL#defin

13、e T0ReLoadH(65536-(uint)(T0_TIME*11.0592/12) % 256)(65536-(uint)(T0_TIME*11.0592/12) / 256)#define T0_TIME 10000/定時時間 us 為單位uchar bdata HC595_buff2;sbit HC595RegCLK=P2A5;sbit HC595S_Data=卩2人6;sbit HC595ShiftCLK=P2A7;/交通燈控制 1 的位尋址變量 /4hc595 鎖存時鐘輸出/74hc595 串行數(shù)據(jù) 輸出 /74hc595 串行移位時鐘輸出/*名稱: WR_74HC595說明:向

14、 2 片 74HC595 寫入 2 字節(jié)數(shù)據(jù)( HC595_buff ) */ void WR_74HC595(void)uchar i,j,k,temp00;HC595RegCLK = 0;HC595ShiftCLK = 0;/鎖存線置“低”/HC595.CLK =0for(i=0;i2;i+) k=0X80;temp00=HC595_buff1-i;for(j=0;j= 1;/HC595.SDA/產(chǎn)生上升沿 ,移入數(shù)據(jù) /k 右移一位HC595ShiftCLK = 0;/HC595.CLKHC595RegCLK = 1;/產(chǎn)生上升沿,鎖存數(shù)據(jù)void Timer0_Int(void) in

15、terrupt 1TH0=T0ReLoadH;/ 重裝載計數(shù)器初值TL0=T0ReLoadL;counter+;/* 名稱:主程序說明: main 主函數(shù)放在所有子程序的后面,自稱無需聲明定義 */ void main(void) uchar CN,i;CN=0;HC595_buff0=0x00;HC595_buff1=0x00;/初始化 TIMER0TMOD|=0x01;TH0 =T0ReLoadH; TL0 =T0ReLoadL;TR0 =1;ET0 =1;EA =1;/ 定時器 T0 方式 1/裝載計數(shù)器初值/ 啟動 Timer0 /Timer0 中斷使能 /總開關(guān)使能counter=0

16、;for(;) if(CN10)if(counter=50)counter=0;HC595_buff0=HC595_buff0;HC595_buff1=HC595_buff1;CN+;counter=0;i=0;if(CN=10)HC595_buff0=0x00;HC595_buff1=0x08;else if(CN=10)if(counter=10) i+; counter=0; if(i=1;else if (i=4) HC595_buff0=0x80; HC595_buff1=0x00; else if(i=1;else if(i=12) i=0;HC595_buff0=0x00;HC5

17、95_buff1=0x08; WR_74HC595();7 交通信號燈控制實驗(僅需 TraficLighter_ctrl() 子程序部分代碼) void TraficLighter_ctrl(void)switch(TraficLighter_state)case 0:/初始化狀態(tài),兩個方向都為紅燈5 秒鐘 if(timer_count1=50) timer_count1=0; HC595_buff0=HC595_buff0; HC595_buff1=HC595_buff1;if (timer_count0=0) TraficLighter_state=1; timer_count0=30;

18、 HC595_buff0=0; HC595_buff1=0;break;case 1:/狀態(tài) 1,南北方向紅燈,東西綠燈East_Green=1; West_Green=1;North_Red=1; South_Red=1;if(timer_count0=0) TraficLighter_state=2; timer_count0=5;HC595_buff0=0;HC595_buff1=0;break;case 2:/ 狀態(tài) 2,南北方向紅,東西黃燈閃爍South_Red=1; North_Red=1;if(timer_count1=50) timer_count1=0;East_Yellow

19、=East_Yellow;West_Yellow=West_Yellow; if(timer_count0=0) TraficLighter_state=3; timer_count0=50; HC595_buff0=0; HC595_buff1=0;break;case 3:/狀態(tài) 3,南北方向綠燈,東西紅燈 East_Red=1;West_Red=1;North_Green=1;South_Green=1;if(timer_count0=0) TraficLighter_state=4; timer_count0=5;HC595_buff0=0;HC595_buff1=0;break;ca

20、se 4:/ 狀態(tài) 4,東西方向紅,南北黃燈閃爍 East_Red=1;West_Red=1; if(timer_count1=50) timer_count1=0; South_Yellow=South_Yellow; North_Yellow=North_Yellow; if(timer_count0=0) TraficLighter_state=1; timer_count0=5; HC595_buff0=0; HC595_buff1=0;break;8 UART 串口通訊實驗 #include/包含頭文件#define uint unsigned int/宏定義#define uchar unsigned charuchar Rec_No;uchar Rec_Data;uchar Rec_Addr;uchar Sen

溫馨提示

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

最新文檔

評論

0/150

提交評論