2022年嵌入式实验报告_第1页
2022年嵌入式实验报告_第2页
2022年嵌入式实验报告_第3页
2022年嵌入式实验报告_第4页
2022年嵌入式实验报告_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ARM实验报告姓名: 学号:专业:学院:指引教师:GPIO输出与按键控制实验按键控制流水灯实验实验原内容:通过数组觉得定义流水灯把戏;一种按键控制一种流水灯花色;实验电路图:源程序:#include Config.h#include Target.h/* 名称:DelayNS() 功能:长软件延时 入口参数:dly延时参数,值越大,延时越久*/void DelayNS(uint32 dly) uint32 i; for(; dly0; dly-) for(i=0; i50000; i+);/* 函数名称:main() 函数功能:GPIO输出测试,把戏流水灯。*/const uint32 LED

2、_TBL810 = 把戏流水灯,注意调用时候用了取反操作 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 xFF,/ 所有点亮0 x00, 0 x01, 0 x02, 0 x04, 0 x08, 0 x10, 0 x20, 0 x40, 0 x80, 0 xFF, / 依次逐个点亮0 x00, 0 x01, 0 x03, 0 x07, 0 x0F, 0 x1F, 0 x3F, 0 x7F, 0 xFF, 0 xFF, / 依次逐个叠加0 xFF, 0 x7F, 0 x3F, 0 x1F, 0 x0F, 0 x07

3、, 0 x03, 0 x01, 0 x00, 0 xFF, / 依次逐个递减0 x00, 0 x81, 0 x42, 0 x24, 0 x18, 0 x18, 0 x24, 0 x42, 0 x81, 0 xFF, / 两个靠拢后分开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 ;/* 函数名称:keyscan() 函数功能:按键扫描,每按一次键对相应旳LED进行取反*/void keyscan(void) uint32 i,j,k,m; PINSEL0 = 0 x00000000; / 设立管脚连接GPIO IO0DIR = 0 x000000ff; k=IO0PIN; if(k&keycon)!=keycon) for(j=0; j50000; j+);/延时去抖 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+);/* 函数名称:main() 函数功能:GPIO输出测试,把戏流水灯。*/const uint32 LED_TBL = / 把戏流水灯,注意调用时候用了取反操作 0 x00, 0 xFF, / 所有熄灭后,再所有点亮0 x01, 0 x02, 0 x04, 0 x08, 0 x10, 0 x20, 0 x40, 0 x80, / 依次逐个点亮0 x0

8、1, 0 x03, 0 x07, 0 x0F, 0 x1F, 0 x3F, 0 x7F, 0 xFF, / 依次逐个叠加0 xFF, 0 x7F, 0 x3F, 0 x1F, 0 x0F, 0 x07, 0 x03, 0 x01, / 依次逐个递减0 x81, 0 x42, 0 x24, 0 x18, 0 x18, 0 x24, 0 x42, 0 x81, / 两个靠拢后分开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、; / 设立管脚连接GPIO IO0DIR = 0 x000000ff;/ 设立P0.0-P0.7控制口为输出while (1) for (i=0; i42; i+)/ 把戏流水灯显示 IO0SET = (LED_TBLi);DelayNS(3);IO0CLR = (LED_TBLi);DelayNS(3);单路按键控制LED/蜂鸣器实验内容:按键key1一按,蜂鸣器响,LED灯亮;实验电路图:源程序:#include config.h#define BEEP 17 /P0.7控制蜂鸣器,低电平蜂鸣#define KEY1 10; dly-)for (i=0; i50000; i+);/* 函

10、数名称:main()* 函数功能:用P0.7控制BEEP,让蜂鸣器蜂鸣*/int main (void) PINSEL0 = 0 x00000000; / 设立引脚连接GPIOPINSEL1 = 0 x00000000; IO0DIR = BEEP; / 设立BEEP控制口为输出while (1) if(IO0PIN & KEY1) = 0)IO0CLR = BEEP; else IO0SET = BEEP;定期器0控制数码管一亮一灭实验内容:0.5定期时间一到,数码管闪烁一次;实验电路图:源程序:#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+);/* 函数名称:main()* 函数功能:主函数*/int main(void)uint8 i; Init(); / I/O端口初始化 lcd_init();/ LCD初始化DisText(0 x80,Current Temperature:);for(i=0;i110;i+)ReadTemp();/ 预读DS18B20while (1)ConvertTemperature(ReadTemp()

13、; / 温度转换DisText(0 xc4,Tp);/ 显示目前温度LCD 1602显示1实验电路图:源程序:#include config.h#define rs (15)#define rw (16)#define en (17)#define busy (115)/* 函数名称:ChkBusy()* 函数功能:检查总线与否忙*/void ChkBusy()IO0DIR=0 xf0;while(1)IO0CLR=rs;IO0SET=rw;IO0SET=en;if(!(IO0PIN & busy)break;IO0CLR=en;IO0DIR=0 xffffffff;/* 函数名称:WrOp(

14、)* 函数功能:写命令* 入口参数:dat,待写入LCD旳命令 */void WrOp(uint8 dat)ChkBusy();IO0CLR=rs;IO0CLR=rw;IO0CLR=IO0CLR|0 xff00;/先清零IO0SET=dat8;/再送数IO0SET=en;IO0CLR=en;/* 函数名称:WrDat()* 函数功能:写数据* 入口参数:dat,待写入LCD旳数据 */void WrDat(uint8 dat)ChkBusy();IO0SET=rs;IO0CLR=rw;IO0CLR=IO0CLR|0 xff00;/先清零IO0SET=dat8;/再送数IO0SET=en;IO0

15、CLR=en;/* 函数名称:lcd_init()* 函数功能:lcd初始化*/void lcd_init(void)WrOp(0 x38);WrOp(0 x06);WrOp(0 x0c);/* 函数名称:LocateXY()* 函数功能:显示光标定位* 入口参数: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);/* 函数名称:Di

16、spOneChar()* 函数功能:显示单字符* 入口参数:x LCD列位置,y LCD行位置,Wdata 显示字符*/void DispOneChar(uint8 x,uint8 y,uint8 Wdata) LocateXY( x, y );/ 定位显示字符旳x,y位置WrDat( Wdata );/ 写字符/* 函数名称:ePutstr() * 函数功能:显示字符串* 入口参数:x LCD列,y LCD行,j 字符串长度,*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;/* 函数名称:DisText()* 函数功能:显示文本* 入口参数:addr LCD DDRAM地址,*p 文本指针 */void DisText(uint8 addr,char *p)WrOp(addr);while(*p !=0)WrDat(*(p+);/* 函数名称:main()* 函数功能: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 ); / 自定义中文字符:年、月、日for (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实验电路图:源程序:#include config.h#define rs (15)#define rw (16)#define en (17)#define busy (115)/* 函数名称:ChkBusy()* 函数功能:检查总线与否忙*/void ChkBusy()IO0DIR=0 xf0;while(1)IO0CLR=rs;IO0SET=rw;IO0SET=en;if(!(IO0PIN & busy)

20、break;IO0CLR=en;IO0DIR=0 xffffffff;/* 函数名称:WrOp()* 函数功能:写命令* 入口参数:dat,待写入LCD旳命令 */void WrOp(uint8 dat)ChkBusy();IO0CLR=rs;IO0CLR=rw;IO0CLR=IO0CLR|0 xff00;/先清零IO0SET=dat8;/再送数IO0SET=en;IO0CLR=en;/* 函数名称:WrDat()* 函数功能:写数据* 入口参数:dat,待写入LCD旳数据 */void WrDat(uint8 dat)ChkBusy();IO0SET=rs;IO0CLR=rw;IO0CLR=

21、IO0CLR|0 xff00;/先清零IO0SET=dat8; /再送数IO0SET=en;IO0CLR=en;/* 函数名称:lcd_init()* 函数功能:lcd初始化*/void lcd_init(void)WrOp(0 x38);WrOp(0 x06);WrOp(0 x0c);/* 函数名称:DisText()* 函数功能:显示文本* 入口参数:addr LCD DDRAM地址,*p 文本指针 */void DisText(uint8 addr,char *p)WrOp(addr);while(*p !=0)WrDat(*(p+);/* 函数名称:main()* 函数功能: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实验电路图:源程序:#include config.h#define rs (15)#define rw (16)#define en (17)#define busy (115)/* 函数名称:ChkBusy()* 函数功能:检查总线与否忙*/void ChkBusy()IO0DIR=0 xf0;wh

23、ile(1)IO0CLR=rs;IO0SET=rw;IO0SET=en;if(!(IO0PIN & busy)break;IO0CLR=en;IO0DIR=0 xffffffff;/* 函数名称:WrOp()* 函数功能:写命令* 入口参数:dat,待写入LCD旳命令 */void WrOp(uint8 dat)ChkBusy();IO0CLR=rs;IO0CLR=rw;IO0CLR=IO0CLR|0 xff00;/先清零IO0SET=dat8;/再送数IO0SET=en;IO0CLR=en;/* 函数名称:WrDat()* 函数功能:写数据* 入口参数:dat,待写入LCD旳数据 */voi

24、d WrDat(uint8 dat)ChkBusy();IO0SET=rs;IO0CLR=rw;IO0CLR=IO0CLR|0 xff00;/先清零IO0SET=dat8; /再送数IO0SET=en;IO0CLR=en;/* 函数名称:lcd_init()* 函数功能:lcd初始化*/void lcd_init(void)WrOp(0 x38);WrOp(0 x06);WrOp(0 x0c);/* 函数名称:DisText()* 函数功能:显示文本* 入口参数:addr LCD DDRAM地址,*p 文本指针 */void DisText(uint8 addr,char *p)WrOp(ad

25、dr);while(*p !=0)WrDat(*(p+);/* 函数名称:main()* 函数功能:LCD初始化,自定义中文字符,LCD显示英文和中文字符。*/int main(void) uint8 i; lcd_init(); / LCD初始化DisText(0 x80,abcdefg hijklmn); DisText(0 xc0,lu ming yue); while(1);PWM脉宽调制实验内容:LPC2131芯片PWM模块可以实现6路单边沿控制或者3路双边沿控制,或者两者混合输出。实验电路图:源程序:#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();十一、流水灯实验电路图:#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); 十二、模拟交通灯实验电路图:源程序:#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中断服务实验电路图:#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位定期器实验实验内容:将PWM作为32位定期器使用,控制蜂鸣器、LED灯旳响与亮灭实验电路图:源程序:/*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控制蜂鸣器/* 函数名称: PWM_Int()* 功能描述: PWM中断服务函数,取反控制蜂鸣器。*/void _irq PWM_Int(void) PWMIR = 0 x01; / 复位PWM中断标

38、志 /* 取反LED9状态 */ if(IO0SET & BEEP) = 0) IO0SET = BEEP; else IO0CLR = BEEP; VICVectAddr = 0 x00;/ VIC结束/* 函数名称: main()* 功能描述: 演示PWM作32位定期器使用实验。*/int main (void)PINSEL0 = 0 x00000000;/ 设立管脚连接GPIO IO0DIR = BEEP; IO0SET = BEEP; IRQEnable();/ IRQ中断使能 /* PWM作为定期器时旳初始化 */ PWMTC = 0;/ 定期器设立为0PWMPR = 0;/ 时钟不

39、分频PWMMCR = 0 x03;/ 设立T0MR0匹配后复位T0TC,并产生中断标志PWMMR0 = Fpclk / 2;/ 0.5秒钟定期PWMTCR = 0 x01;/ 启动定期器 /* 设立PWM中断 */ VICIntSelect = 0 x00000000;/ 所有中断连接IRQ VICVectCntl0 = 0 x20 | 8;/ 选择通道0 VICVectAddr0 = (int)PWM_Int;/ PWM中断服务程序地址 VICIntEnable = (1 8);/ 使能PWM中断 while(1); / 等待中断 return 0;十六、LCD 1602显示4实验电路图:源

40、程序:#include config.h#define rs (15)#define rw (16)#define en (17)#define busy (115)/* 函数名称:ChkBusy()* 函数功能:检查总线与否忙*/void ChkBusy()IO0DIR=0 xf0;while(1)IO0CLR=rs;IO0SET=rw;IO0SET=en;if(!(IO0PIN & busy)break;IO0CLR=en;IO0DIR=0 xffffffff;/* 函数名称:WrOp()* 函数功能:写命令* 入口参数:dat,待写入LCD旳命令 */void WrOp(uint8 da

41、t)ChkBusy();IO0CLR=rs;IO0CLR=rw;IO0CLR=IO0CLR|0 xff00;/先清零IO0SET=dat8;/再送数IO0SET=en;IO0CLR=en;/* 函数名称:WrDat()* 函数功能:写数据* 入口参数:dat,待写入LCD旳数据 */void WrDat(uint8 dat)ChkBusy();IO0SET=rs;IO0CLR=rw;IO0CLR=IO0CLR|0 xff00;/先清零IO0SET=dat8;/再送数IO0SET=en;IO0CLR=en;/* 函数名称:lcd_init()* 函数功能:lcd初始化*/void lcd_ini

42、t(void)WrOp(0 x38);WrOp(0 x06);WrOp(0 x0c);/* 函数名称:LocateXY()* 函数功能:显示光标定位* 入口参数: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);/* 函数名称:DispOneChar()* 函数功能:显示单字符* 入口参数:x LCD列位置,y LCD行位置,Wdat

43、a 显示字符*/void DispOneChar(uint8 x,uint8 y,uint8 Wdata) LocateXY( x, y );/ 定位显示字符旳x,y位置WrDat( Wdata );/ 写字符/* 函数名称:ePutstr() * 函数功能:显示字符串* 入口参数:x LCD列,y LCD行,j 字符串长度,*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;/* 函数名称:DisText()* 函数功能:显示文本* 入口参数:addr LCD DDRAM地址,*p 文本指针 */void DisText(uint8 addr,char *p)WrOp(addr);while(*p !=0)WrDat(*(p+);/* 函数名称:main()* 函数功能: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 ); / 自定义中文字符:年、月、日for (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显示实验电路图:源程序:#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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论