![2022年嵌入式實(shí)驗(yàn)報(bào)告_第1頁(yè)](http://file4.renrendoc.com/view/b34a0e89a624b7d3c3a8043fc3a429c9/b34a0e89a624b7d3c3a8043fc3a429c91.gif)
![2022年嵌入式實(shí)驗(yàn)報(bào)告_第2頁(yè)](http://file4.renrendoc.com/view/b34a0e89a624b7d3c3a8043fc3a429c9/b34a0e89a624b7d3c3a8043fc3a429c92.gif)
![2022年嵌入式實(shí)驗(yàn)報(bào)告_第3頁(yè)](http://file4.renrendoc.com/view/b34a0e89a624b7d3c3a8043fc3a429c9/b34a0e89a624b7d3c3a8043fc3a429c93.gif)
![2022年嵌入式實(shí)驗(yàn)報(bào)告_第4頁(yè)](http://file4.renrendoc.com/view/b34a0e89a624b7d3c3a8043fc3a429c9/b34a0e89a624b7d3c3a8043fc3a429c94.gif)
![2022年嵌入式實(shí)驗(yàn)報(bào)告_第5頁(yè)](http://file4.renrendoc.com/view/b34a0e89a624b7d3c3a8043fc3a429c9/b34a0e89a624b7d3c3a8043fc3a429c95.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、ARM實(shí)驗(yàn)報(bào)告姓名: 學(xué)號(hào):專業(yè):學(xué)院:指引教師:GPIO輸出與按鍵控制實(shí)驗(yàn)按鍵控制流水燈實(shí)驗(yàn)實(shí)驗(yàn)原內(nèi)容:通過(guò)數(shù)組覺(jué)得定義流水燈把戲;一種按鍵控制一種流水燈花色;實(shí)驗(yàn)電路圖:源程序:#include Config.h#include Target.h/* 名稱:DelayNS() 功能:長(zhǎng)軟件延時(shí) 入口參數(shù):dly延時(shí)參數(shù),值越大,延時(shí)越久*/void DelayNS(uint32 dly) uint32 i; for(; dly0; dly-) for(i=0; i50000; i+);/* 函數(shù)名稱:main() 函數(shù)功能:GPIO輸出測(cè)試,把戲流水燈。*/const uint32 LED
2、_TBL810 = 把戲流水燈,注意調(diào)用時(shí)候用了取反操作 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 xFF,/ 所有點(diǎn)亮0 x00, 0 x01, 0 x02, 0 x04, 0 x08, 0 x10, 0 x20, 0 x40, 0 x80, 0 xFF, / 依次逐個(gè)點(diǎn)亮0 x00, 0 x01, 0 x03, 0 x07, 0 x0F, 0 x1F, 0 x3F, 0 x7F, 0 xFF, 0 xFF, / 依次逐個(gè)疊加0 xFF, 0 x7F, 0 x3F, 0 x1F, 0 x0F, 0 x07
3、, 0 x03, 0 x01, 0 x00, 0 xFF, / 依次逐個(gè)遞減0 x00, 0 x81, 0 x42, 0 x24, 0 x18, 0 x18, 0 x24, 0 x42, 0 x81, 0 xFF, / 兩個(gè)靠攏后分開0 x00, 0 x81, 0 xC3, 0 xE7, 0 xFF, 0 xFF, 0 xE7, 0 xC3, 0 x81, 0 xFF,/ 從兩邊疊加后遞減0 xAA, 0 x55, 0 xAA, 0 x55, 0 xAA, 0 x55, 0 xAA, 0 x55, 0 xFF, 0 xFF,0 x00, 0 xFF, 0 x00, 0 xFF, 0 x00,
4、0 xFF, 0 x00, 0 xFF, 0 x00, 0 xFF ;/* 函數(shù)名稱:keyscan() 函數(shù)功能:按鍵掃描,每按一次鍵對(duì)相應(yīng)旳LED進(jìn)行取反*/void keyscan(void) uint32 i,j,k,m; PINSEL0 = 0 x00000000; / 設(shè)立管腳連接GPIO IO0DIR = 0 x000000ff; k=IO0PIN; if(k&keycon)!=keycon) for(j=0; j50000; j+);/延時(shí)去抖 k=IO0PIN; if(k&keycon)!=keycon) i=(k&keycon)|(keycon); i=i; switch(
5、i) case KEY1 :for(m=0;m10;m+)IO0SET=(LED_TBL0m);DelayNS(3);IO0CLR = (LED_TBL0m);DelayNS(3); break; case KEY2 :for(m=0;m10;m+)IO0SET=(LED_TBL1m);DelayNS(3);IO0CLR = (LED_TBL1m);DelayNS(3); break; case KEY3 :for(m=0;m10;m+)IO0SET=(LED_TBL2m);DelayNS(3);IO0CLR = (LED_TBL2m);DelayNS(3); break; case KEY4
6、 :for(m=0;m10;m+)IO0SET=(LED_TBL3m);DelayNS(3);IO0CLR = (LED_TBL3m);DelayNS(3); break; case KEY5 :for(m=0;m10;m+)IO0SET=(LED_TBL4m);DelayNS(3);IO0CLR = (LED_TBL4m);DelayNS(3); break; case KEY6 :for(m=0;m10;m+)IO0SET=(LED_TBL5m);DelayNS(3);IO0CLR = (LED_TBL5m);DelayNS(3); beak; case KEY7 :for(m=0;m10
7、;m+)IO0SET=(LED_TBL6m);DelayNS(3);IO0CLR = (LED_TBL6m);DelayNS(3); break; case KEY8 :for(m=0;m0; dly-)for (i=0; i50000; i+);/* 函數(shù)名稱:main() 函數(shù)功能:GPIO輸出測(cè)試,把戲流水燈。*/const uint32 LED_TBL = / 把戲流水燈,注意調(diào)用時(shí)候用了取反操作 0 x00, 0 xFF, / 所有熄滅后,再所有點(diǎn)亮0 x01, 0 x02, 0 x04, 0 x08, 0 x10, 0 x20, 0 x40, 0 x80, / 依次逐個(gè)點(diǎn)亮0 x0
8、1, 0 x03, 0 x07, 0 x0F, 0 x1F, 0 x3F, 0 x7F, 0 xFF, / 依次逐個(gè)疊加0 xFF, 0 x7F, 0 x3F, 0 x1F, 0 x0F, 0 x07, 0 x03, 0 x01, / 依次逐個(gè)遞減0 x81, 0 x42, 0 x24, 0 x18, 0 x18, 0 x24, 0 x42, 0 x81, / 兩個(gè)靠攏后分開0 x81, 0 xC3, 0 xE7, 0 xFF, 0 xFF, 0 xE7, 0 xC3, 0 x81 ;/ 從兩邊疊加后遞減int main (void) uint8 i;PINSEL0 = 0 x00000000
9、; / 設(shè)立管腳連接GPIO IO0DIR = 0 x000000ff;/ 設(shè)立P0.0-P0.7控制口為輸出while (1) for (i=0; i42; i+)/ 把戲流水燈顯示 IO0SET = (LED_TBLi);DelayNS(3);IO0CLR = (LED_TBLi);DelayNS(3);單路按鍵控制LED/蜂鳴器實(shí)驗(yàn)內(nèi)容:按鍵key1一按,蜂鳴器響,LED燈亮;實(shí)驗(yàn)電路圖:源程序:#include config.h#define BEEP 17 /P0.7控制蜂鳴器,低電平蜂鳴#define KEY1 10; dly-)for (i=0; i50000; i+);/* 函
10、數(shù)名稱:main()* 函數(shù)功能:用P0.7控制BEEP,讓蜂鳴器蜂鳴*/int main (void) PINSEL0 = 0 x00000000; / 設(shè)立引腳連接GPIOPINSEL1 = 0 x00000000; IO0DIR = BEEP; / 設(shè)立BEEP控制口為輸出while (1) if(IO0PIN & KEY1) = 0)IO0CLR = BEEP; else IO0SET = BEEP;定期器0控制數(shù)碼管一亮一滅實(shí)驗(yàn)內(nèi)容:0.5定期時(shí)間一到,數(shù)碼管閃爍一次;實(shí)驗(yàn)電路圖:源程序:#include Config.h#include Target.h#define LED (1
11、 0;i-);uint8 table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;uint8 table1=0 x01,0 x02,0 x04,0 x08,0 x10,0 x20,0 x40,0 x80;int main(void)uint8 i,j,p=16;PINSEL0=0 x00000000;PINSEL1=0 x00000000;IO0DIR=0 x00ffff00;while(1)for(i=0;i8;i+)IO0CLR=IO0CLR|
12、0 xff00;IO0SET=tablei8;for(j=0;j8;j+) IO0CLR=IO0CLR|0 xff0000; IO0SET=10; dly-)for (i=0; i50000; i+);/* 函數(shù)名稱:main()* 函數(shù)功能:主函數(shù)*/int main(void)uint8 i; Init(); / I/O端口初始化 lcd_init();/ LCD初始化DisText(0 x80,Current Temperature:);for(i=0;i110;i+)ReadTemp();/ 預(yù)讀DS18B20while (1)ConvertTemperature(ReadTemp()
13、; / 溫度轉(zhuǎn)換DisText(0 xc4,Tp);/ 顯示目前溫度LCD 1602顯示1實(shí)驗(yàn)電路圖:源程序:#include config.h#define rs (15)#define rw (16)#define en (17)#define busy (115)/* 函數(shù)名稱:ChkBusy()* 函數(shù)功能:檢查總線與否忙*/void ChkBusy()IO0DIR=0 xf0;while(1)IO0CLR=rs;IO0SET=rw;IO0SET=en;if(!(IO0PIN & busy)break;IO0CLR=en;IO0DIR=0 xffffffff;/* 函數(shù)名稱:WrOp(
14、)* 函數(shù)功能:寫命令* 入口參數(shù):dat,待寫入LCD旳命令 */void WrOp(uint8 dat)ChkBusy();IO0CLR=rs;IO0CLR=rw;IO0CLR=IO0CLR|0 xff00;/先清零IO0SET=dat8;/再送數(shù)IO0SET=en;IO0CLR=en;/* 函數(shù)名稱:WrDat()* 函數(shù)功能:寫數(shù)據(jù)* 入口參數(shù):dat,待寫入LCD旳數(shù)據(jù) */void WrDat(uint8 dat)ChkBusy();IO0SET=rs;IO0CLR=rw;IO0CLR=IO0CLR|0 xff00;/先清零IO0SET=dat8;/再送數(shù)IO0SET=en;IO0
15、CLR=en;/* 函數(shù)名稱:lcd_init()* 函數(shù)功能:lcd初始化*/void lcd_init(void)WrOp(0 x38);WrOp(0 x06);WrOp(0 x0c);/* 函數(shù)名稱:LocateXY()* 函數(shù)功能:顯示光標(biāo)定位* 入口參數(shù):posx LCD列位置,posy LCD行位置 */void LocateXY( uint8 posx,uint8 posy) uint8 temp;temp = posx & 0 xf;posy &= 0 x1;if ( posy )temp |= 0 x40;temp |= 0 x80;WrOp(temp);/* 函數(shù)名稱:Di
16、spOneChar()* 函數(shù)功能:顯示單字符* 入口參數(shù):x LCD列位置,y LCD行位置,Wdata 顯示字符*/void DispOneChar(uint8 x,uint8 y,uint8 Wdata) LocateXY( x, y );/ 定位顯示字符旳x,y位置WrDat( Wdata );/ 寫字符/* 函數(shù)名稱:ePutstr() * 函數(shù)功能:顯示字符串* 入口參數(shù):x LCD列,y LCD行,j 字符串長(zhǎng)度,*ptr 字符串指針 */void ePutstr(uint8 x,uint8 y, uint8 j,uint8 *ptr)uint8 i,l=0;for (i=0;i
17、j;i+)DispOneChar(x+,y,ptri);if ( x = 16 )x = 0; y = l;/* 函數(shù)名稱:DisText()* 函數(shù)功能:顯示文本* 入口參數(shù):addr LCD DDRAM地址,*p 文本指針 */void DisText(uint8 addr,char *p)WrOp(addr);while(*p !=0)WrDat(*(p+);/* 函數(shù)名稱:main()* 函數(shù)功能:LCD初始化,自定義中文字符,LCD顯示英文和中文字符。*/int main(void) uint8 i; uint8 examp1=0 x32,0 x30,0 x31,0 x32,0 x0
18、0,0 x31,0 x01,0 x32,0 x36,0 x02; uint8 Hzzimo=0 x08,0 x0F,0 x12,0 x0F,0 x0A,0 x1F,0 x02,0 x00, / 年 0 x0F,0 x09,0 x0F,0 x09,0 x0F,0 x09,0 x11,0 x00, / 月 0 x0F,0 x09,0 x09,0 x0F,0 x09,0 x09,0 x0F,0 x00;/ 日 lcd_init(); / LCD初始化WrOp( 0 x40 ); / 自定義中文字符:年、月、日f(shuō)or (i=0;i24;i+)WrDat(Hzzimoi); DisText(0 x80,
19、lu ming yue); / 第一行從第0位開始顯示英文字符ePutstr(4,1,10,examp1); / 第二行從第4位開始顯示1月26日while(1);LCD 1602顯示2實(shí)驗(yàn)電路圖:源程序:#include config.h#define rs (15)#define rw (16)#define en (17)#define busy (115)/* 函數(shù)名稱:ChkBusy()* 函數(shù)功能:檢查總線與否忙*/void ChkBusy()IO0DIR=0 xf0;while(1)IO0CLR=rs;IO0SET=rw;IO0SET=en;if(!(IO0PIN & busy)
20、break;IO0CLR=en;IO0DIR=0 xffffffff;/* 函數(shù)名稱:WrOp()* 函數(shù)功能:寫命令* 入口參數(shù):dat,待寫入LCD旳命令 */void WrOp(uint8 dat)ChkBusy();IO0CLR=rs;IO0CLR=rw;IO0CLR=IO0CLR|0 xff00;/先清零IO0SET=dat8;/再送數(shù)IO0SET=en;IO0CLR=en;/* 函數(shù)名稱:WrDat()* 函數(shù)功能:寫數(shù)據(jù)* 入口參數(shù):dat,待寫入LCD旳數(shù)據(jù) */void WrDat(uint8 dat)ChkBusy();IO0SET=rs;IO0CLR=rw;IO0CLR=
21、IO0CLR|0 xff00;/先清零IO0SET=dat8; /再送數(shù)IO0SET=en;IO0CLR=en;/* 函數(shù)名稱:lcd_init()* 函數(shù)功能:lcd初始化*/void lcd_init(void)WrOp(0 x38);WrOp(0 x06);WrOp(0 x0c);/* 函數(shù)名稱:DisText()* 函數(shù)功能:顯示文本* 入口參數(shù):addr LCD DDRAM地址,*p 文本指針 */void DisText(uint8 addr,char *p)WrOp(addr);while(*p !=0)WrDat(*(p+);/* 函數(shù)名稱:main()* 函數(shù)功能:LCD初始
22、化,自定義中文字符,LCD顯示英文和中文字符。*/int main(void) uint8 i; lcd_init(); / LCD初始化DisText(0 x80,lu ming yue);DisText(0 xc0,abcdefg hijklmn); while(1);LCD 1602顯示3實(shí)驗(yàn)電路圖:源程序:#include config.h#define rs (15)#define rw (16)#define en (17)#define busy (115)/* 函數(shù)名稱:ChkBusy()* 函數(shù)功能:檢查總線與否忙*/void ChkBusy()IO0DIR=0 xf0;wh
23、ile(1)IO0CLR=rs;IO0SET=rw;IO0SET=en;if(!(IO0PIN & busy)break;IO0CLR=en;IO0DIR=0 xffffffff;/* 函數(shù)名稱:WrOp()* 函數(shù)功能:寫命令* 入口參數(shù):dat,待寫入LCD旳命令 */void WrOp(uint8 dat)ChkBusy();IO0CLR=rs;IO0CLR=rw;IO0CLR=IO0CLR|0 xff00;/先清零IO0SET=dat8;/再送數(shù)IO0SET=en;IO0CLR=en;/* 函數(shù)名稱:WrDat()* 函數(shù)功能:寫數(shù)據(jù)* 入口參數(shù):dat,待寫入LCD旳數(shù)據(jù) */voi
24、d WrDat(uint8 dat)ChkBusy();IO0SET=rs;IO0CLR=rw;IO0CLR=IO0CLR|0 xff00;/先清零IO0SET=dat8; /再送數(shù)IO0SET=en;IO0CLR=en;/* 函數(shù)名稱:lcd_init()* 函數(shù)功能:lcd初始化*/void lcd_init(void)WrOp(0 x38);WrOp(0 x06);WrOp(0 x0c);/* 函數(shù)名稱:DisText()* 函數(shù)功能:顯示文本* 入口參數(shù):addr LCD DDRAM地址,*p 文本指針 */void DisText(uint8 addr,char *p)WrOp(ad
25、dr);while(*p !=0)WrDat(*(p+);/* 函數(shù)名稱:main()* 函數(shù)功能:LCD初始化,自定義中文字符,LCD顯示英文和中文字符。*/int main(void) uint8 i; lcd_init(); / LCD初始化DisText(0 x80,abcdefg hijklmn); DisText(0 xc0,lu ming yue); while(1);PWM脈寬調(diào)制實(shí)驗(yàn)內(nèi)容:LPC2131芯片PWM模塊可以實(shí)現(xiàn)6路單邊沿控制或者3路雙邊沿控制,或者兩者混合輸出。實(shí)驗(yàn)電路圖:源程序:#include #define RED_A (18);#define YELLO
26、W_A (19);#define GREEN_A(110);#define RED_B(111);#define YELLOW_B(112);#define GREEN_B(10;t-);void Traffic_lignt() switch(Operation_Type)case 1:IO0SET=RED_A;IO0SET=YELLOW_A;IO0CLR=GREEN_A;IO0CLR=RED_B;IO0SET=YELLOW_B;IO0SET=GREEN_B;DelayMS();Operation_Type = 2; break;case 2:DelayMS(200);IO0SET=YELLO
27、W_A;DelayMS(200);IO0CLR=YELLOW_A;IO0SET=GREEN_A;if(+Flash_Count !=5) return;Flash_Count=0; Operation_Type = 3; break;case 3:IO0CLR=RED_A;IO0SET=YELLOW_A;IO0SET=GREEN_A;IO0SET=RED_B;IO0SET=YELLOW_B;IO0CLR=GREEN_B;DelayMS();Operation_Type = 4; break;case 4:DelayMS(200);IO0SET=YELLOW_B;DelayMS(200);IO0
28、CLR=YELLOW_B;IO0SET=GREEN_B;if(+Flash_Count !=5) return;Flash_Count=0;Operation_Type = 1;break; int main(void)PINSEL0=0 x00000000;PINSEL1=0X00000000;IO0DIR=0 x00003f00; while(1)Traffic_lignt();十一、流水燈實(shí)驗(yàn)電路圖:#include config.hvoid DelayNS (uint32 dly) uint32 i;for ( ; dly0; dly-)for (i=0; i50000; i+);in
29、t main (void) PINSEL0 = 0 x00000000; IO0DIR = 0 x000000ff; while (1) IO0PIN = 0 xAA; DelayNS(15); IO0PIN = 0 x55 ; DelayNS(15); IO0PIN = 0 x00 ; DelayNS(15); 十二、模擬交通燈實(shí)驗(yàn)電路圖:源程序:#include #define RED_A (18);#define YELLOW_A (19);#define GREEN_A(110);#define RED_B(111);#define YELLOW_B(112);#define GREE
30、N_B(10;t-);void Traffic_lignt() switch(Operation_Type)case 1:IO0SET=RED_A;IO0SET=YELLOW_A;IO0CLR=GREEN_A;IO0CLR=RED_B;IO0SET=YELLOW_B;IO0SET=GREEN_B;DelayMS();Operation_Type = 2; break;case 2:DelayMS(200);IO0SET=YELLOW_A;DelayMS(200);IO0CLR=YELLOW_A;IO0SET=GREEN_A;if(+Flash_Count !=5) return;Flash_C
31、ount=0; Operation_Type = 3; break;case 3:IO0CLR=RED_A;IO0SET=YELLOW_A;IO0SET=GREEN_A;IO0SET=RED_B;IO0SET=YELLOW_B;IO0CLR=GREEN_B;DelayMS();Operation_Type = 4; break;case 4:DelayMS(200);IO0SET=YELLOW_B;DelayMS(200);IO0CLR=YELLOW_B;IO0SET=GREEN_B;if(+Flash_Count !=5) return;Flash_Count=0;Operation_Typ
32、e = 1;break; int main(void)PINSEL0=0 x00000000;PINSEL1=0X00000000;IO0DIR=0 x00003f00; while(1)Traffic_lignt();十三、FIQ中斷服務(wù)實(shí)驗(yàn)電路圖:#include config.h#define LED1 1 18 #define EINT0 14 int main (void) PINSEL1 = 0 x00000001; IO0DIR = LED1; EXTMODE = 0 x00; FIQEnable(); VICIntSelect = 1 EINT0; EXTINT = 0 x01
33、; VICIntEnable = 1 0; dly-) for(i=0; i50000; i+);void keyscan(void) uint32 i,j,k; k=IO0PIN; if(k&keycon)!=keycon) for(j=0; j50000; j+); k=IO0PIN; if(k&keycon)!=keycon) i=(k&keycon)|(keycon); i=i; switch(i) case KEY1 :if(IO0PIN&LED1)!=LED1) IO0SET=LED1;else IO0CLR=LED1;break; case KEY2 :if(IO0PIN&LED
34、2)!=LED2) IO0SET=LED2;、else IO0CLR=LED2; break; case KEY3 :if(IO0PIN&LED3)!=LED3) IO0SET=LED3;else IO0CLR=LED3; break; case KEY4 :if(IO0PIN&LED4)!=LED4) IO0SET=LED4;else IO0CLR=LED4; break; case KEY5 :if(IO0PIN&LED5)!=LED5) IO0SET=LED5;else IO0CLR=LED5; break; case KEY6 :if(IO0PIN&LED6)!=LED6) IO0SE
35、T=LED6;else IO0CLR=LED6; break; case KEY7 :if(IO0PIN&LED7)!=LED7) IO0SET=LED7; else IO0CLR=LED7; break; case KEY8 :if(IO0PIN&LED8)!=LED8) IO0SET=LED8;else IO0CLR=LED8; break; while(k&keycon)!=keycon) k=IO0PIN; int main(void) TargetResetInit(); PINSEL0 = 0 x00000000; PINSEL1 = 0 x00000000; IO0DIR = 0
36、 x000000ff; IO0CLR = 0 xffffffff; while(1) keyscan(); 十五、PWM作32位定期器實(shí)驗(yàn)實(shí)驗(yàn)內(nèi)容:將PWM作為32位定期器使用,控制蜂鳴器、LED燈旳響與亮滅實(shí)驗(yàn)電路圖:源程序:/*Copyright (c)* Guangzou ZLG-MCU Development Co.,LTD.* graduate school* *File Info* File name:main.c* Last modified Date: -09-16* Last Version:1.0* Descriptions:The main() function exam
37、ple template* Created by:Chenmingji* Created date:-09-16* Version:1.0* Descriptions:The original version* Modified by:* Modified date:* Version:* Descriptions:*/#include config.h#define BEEP 1 7/ P0.7控制蜂鳴器/* 函數(shù)名稱: PWM_Int()* 功能描述: PWM中斷服務(wù)函數(shù),取反控制蜂鳴器。*/void _irq PWM_Int(void) PWMIR = 0 x01; / 復(fù)位PWM中斷標(biāo)
38、志 /* 取反LED9狀態(tài) */ if(IO0SET & BEEP) = 0) IO0SET = BEEP; else IO0CLR = BEEP; VICVectAddr = 0 x00;/ VIC結(jié)束/* 函數(shù)名稱: main()* 功能描述: 演示PWM作32位定期器使用實(shí)驗(yàn)。*/int main (void)PINSEL0 = 0 x00000000;/ 設(shè)立管腳連接GPIO IO0DIR = BEEP; IO0SET = BEEP; IRQEnable();/ IRQ中斷使能 /* PWM作為定期器時(shí)旳初始化 */ PWMTC = 0;/ 定期器設(shè)立為0PWMPR = 0;/ 時(shí)鐘不
39、分頻PWMMCR = 0 x03;/ 設(shè)立T0MR0匹配后復(fù)位T0TC,并產(chǎn)生中斷標(biāo)志PWMMR0 = Fpclk / 2;/ 0.5秒鐘定期PWMTCR = 0 x01;/ 啟動(dòng)定期器 /* 設(shè)立PWM中斷 */ VICIntSelect = 0 x00000000;/ 所有中斷連接IRQ VICVectCntl0 = 0 x20 | 8;/ 選擇通道0 VICVectAddr0 = (int)PWM_Int;/ PWM中斷服務(wù)程序地址 VICIntEnable = (1 8);/ 使能PWM中斷 while(1); / 等待中斷 return 0;十六、LCD 1602顯示4實(shí)驗(yàn)電路圖:源
40、程序:#include config.h#define rs (15)#define rw (16)#define en (17)#define busy (115)/* 函數(shù)名稱:ChkBusy()* 函數(shù)功能:檢查總線與否忙*/void ChkBusy()IO0DIR=0 xf0;while(1)IO0CLR=rs;IO0SET=rw;IO0SET=en;if(!(IO0PIN & busy)break;IO0CLR=en;IO0DIR=0 xffffffff;/* 函數(shù)名稱:WrOp()* 函數(shù)功能:寫命令* 入口參數(shù):dat,待寫入LCD旳命令 */void WrOp(uint8 da
41、t)ChkBusy();IO0CLR=rs;IO0CLR=rw;IO0CLR=IO0CLR|0 xff00;/先清零IO0SET=dat8;/再送數(shù)IO0SET=en;IO0CLR=en;/* 函數(shù)名稱:WrDat()* 函數(shù)功能:寫數(shù)據(jù)* 入口參數(shù):dat,待寫入LCD旳數(shù)據(jù) */void WrDat(uint8 dat)ChkBusy();IO0SET=rs;IO0CLR=rw;IO0CLR=IO0CLR|0 xff00;/先清零IO0SET=dat8;/再送數(shù)IO0SET=en;IO0CLR=en;/* 函數(shù)名稱:lcd_init()* 函數(shù)功能:lcd初始化*/void lcd_ini
42、t(void)WrOp(0 x38);WrOp(0 x06);WrOp(0 x0c);/* 函數(shù)名稱:LocateXY()* 函數(shù)功能:顯示光標(biāo)定位* 入口參數(shù):posx LCD列位置,posy LCD行位置 */void LocateXY( uint8 posx,uint8 posy) uint8 temp;temp = posx & 0 xf;posy &= 0 x1;if ( posy )temp |= 0 x40;temp |= 0 x80;WrOp(temp);/* 函數(shù)名稱:DispOneChar()* 函數(shù)功能:顯示單字符* 入口參數(shù):x LCD列位置,y LCD行位置,Wdat
43、a 顯示字符*/void DispOneChar(uint8 x,uint8 y,uint8 Wdata) LocateXY( x, y );/ 定位顯示字符旳x,y位置WrDat( Wdata );/ 寫字符/* 函數(shù)名稱:ePutstr() * 函數(shù)功能:顯示字符串* 入口參數(shù):x LCD列,y LCD行,j 字符串長(zhǎng)度,*ptr 字符串指針 */void ePutstr(uint8 x,uint8 y, uint8 j,uint8 *ptr)uint8 i,l=0;for (i=0;ij;i+)DispOneChar(x+,y,ptri);if ( x = 16 )x = 0; y =
44、l;/* 函數(shù)名稱:DisText()* 函數(shù)功能:顯示文本* 入口參數(shù):addr LCD DDRAM地址,*p 文本指針 */void DisText(uint8 addr,char *p)WrOp(addr);while(*p !=0)WrDat(*(p+);/* 函數(shù)名稱:main()* 函數(shù)功能:LCD初始化,自定義中文字符,LCD顯示英文和中文字符。*/int main(void) uint8 i; uint8 examp1=0 x32,0 x30,0 x31,0 x33,0 x00,0 x36,0 x01,0 x31,0 x36,0 x02; uint8 Hzzimo=0 x08,
45、0 x0F,0 x12,0 x0F,0 x0A,0 x1F,0 x02,0 x00, / 年 0 x0F,0 x09,0 x0F,0 x09,0 x0F,0 x09,0 x11,0 x00, / 月 0 x0F,0 x09,0 x09,0 x0F,0 x09,0 x09,0 x0F,0 x00;/ 日 lcd_init(); / LCD初始化WrOp( 0 x40 ); / 自定義中文字符:年、月、日f(shuō)or (i=0;i24;i+)WrDat(Hzzimoi); DisText(0 x80,I love ARM); / 第一行從第0位開始顯示英文字符ePutstr(4,1,10,examp1)
46、; / 第二行從第4位開始顯示1月26日while(1);十七、128*64顯示實(shí)驗(yàn)電路圖:源程序:#include #define LCD12864_RS (17) #define LCD12864_RW (16) #define LCD12864_E (15) #define LCD12864_CS1 (116) #define LCD12864_CS2 (10;i-);void Read_busy()IO0CLR=IO0CLR|0 xff00;IO0SET=LCD12864_RW ;IO0CLR=LCD12864_RS;IO0SET=LCD12864_E;while(IO0CLR=IO0
47、CLR|0 xff00) & 0 x80);IO0CLR=LCD12864_E;void LCD12864_WriteCOM(uint8 com) Read_busy();IO0CLR=LCD12864_RW; IO0CLR=LCD12864_RS;IO0CLR=IO0CLR|0 xff00;IO0SET=com8;IO0SET=LCD12864_E;IO0CLR=LCD12864_E;Read_busy();void LCD12864_WriteData(uint8 dat) IO0CLR=LCD12864_RW;IO0SET=LCD12864_RS;IO0CLR=IO0CLR|0 xff0
48、0;IO0SET=dat8;IO0SET=LCD12864_E;IO0CLR=LCD12864_E;Read_busy(); unsigned char LCD12864_ReadData(void)unsigned char LCD12864_data;IO0CLR=LCD12864_E;IO0SET=LCD12864_RW;IO0SET=LCD12864_RS;IO0SET=LCD12864_E;LCD12864_data =IO0DIR|0 xff00;Read_busy(); /讀LCM忙return LCD12864_data;void LCD12864_Write1Byte_X_Y
49、( unsigned char x, unsigned char y, unsigned char LCD12864_data) x = x&0 x7f; y = y&0 x3f; IO0SET=LCD12864_CS1; IO0SET=LCD12864_CS2; if(x64) IO0CLR=LCD12864_CS1; elseIO0CLR=LCD12864_CS2; x = x-64;LCD12864_WriteCOM(0 x40+x); LCD12864_WriteCOM(0 xb8+y); LCD12864_WriteData(LCD12864_data); void LCD12864_Fill_Screen( uint8 t,uint8 LCD12864_FillData) unsigned char x,y;IO0CLR=LCD1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- pocib出口合同范本
- 北京保密合同范例
- 產(chǎn)品代售代理合同范例
- 代銷權(quán)合同范本
- 買賣合同補(bǔ)充協(xié)議合同范本
- 2025年度住宅小區(qū)綠化與建筑裝飾一體化合同
- 2025年度高新技術(shù)居間服務(wù)費(fèi)合同范本正規(guī)范本
- 2025年度建筑工程安全生產(chǎn)環(huán)保措施實(shí)施合同
- 2025年蕓香行業(yè)深度研究分析報(bào)告
- 2025年中國(guó)草魚行業(yè)市場(chǎng)供需規(guī)模及發(fā)展戰(zhàn)略咨詢報(bào)告
- 年產(chǎn)10噸功能益生菌凍干粉的工廠設(shè)計(jì)改
- GB∕T 41461-2022 自助銀行網(wǎng)點(diǎn)服務(wù)要求
- 部編新教材人教版七年級(jí)上冊(cè)歷史重要知識(shí)點(diǎn)歸納
- 重點(diǎn)時(shí)段及節(jié)假日前安全檢查表
- 道路標(biāo)線施工技術(shù)規(guī)程(已執(zhí)行)
- 給排水管道工程分項(xiàng)、分部、單位工程劃分
- 《傻子上學(xué)》臺(tái)詞
- 高中英語(yǔ)新課程標(biāo)準(zhǔn)解讀 (課堂PPT)
- 石灰石石膏濕法脫硫化學(xué)分析方案
- 《數(shù)學(xué)趣味活動(dòng)》PPT課件.ppt
- 銅冶煉渣選銅尾礦還原焙燒—磁選回收鐵工藝研究
評(píng)論
0/150
提交評(píng)論