单片机编程实例大全.doc

上传人(卖家):淡淡的紫竹语嫣 文档编号:540602 上传时间:2020-05-21 格式:DOC 页数:187 大小:629.50KB
下载 相关 举报
单片机编程实例大全.doc_第1页
第1页 / 共187页
单片机编程实例大全.doc_第2页
第2页 / 共187页
单片机编程实例大全.doc_第3页
第3页 / 共187页
单片机编程实例大全.doc_第4页
第4页 / 共187页
单片机编程实例大全.doc_第5页
第5页 / 共187页
点击查看更多>>
资源描述

1、学习单片机学习单片机 /实例实例 1:用单片机控制第一个灯亮用单片机控制第一个灯亮 #include /包含 51 单片机寄存器定义的头文件 void main(void) P1=0xfe; /P1=1111 1110B,即 P1.0 输出低电平 /实例实例 2:用单片机控制一个灯闪烁:认识单片机的工作频率:用单片机控制一个灯闪烁:认识单片机的工作频率 #include  /包含单片机寄存器的头文件 /                     函数功能:延时一段时间 / void de

2、lay(void)    /两个 void 意思分别为无需返回值,没有参数传递 unsigned int i;    /定义无符号整数,最大取值范围 65535 for(i=0;i0)/将逻辑运算结果送 P0 口 while(1) ;  /设置无限循环,防止程序“跑飞” /实例实例 14:用:用 P0 口显示条件运算结果口显示条件运算结果 #include  /包含单片机寄存器的头文件 void main(void)   P0=(84)?8:4;/将条件运算结果送 P0 口,P0=8=0000 1000B while(1)

3、;  /设置无限循环,防止程序“跑飞” /实例实例 15:用:用 P0 口显示按位口显示按位“异或异或“运算结果运算结果 #include  /包含单片机寄存器的头文件 void main(void)   P0=0xa20x3c;/将条件运算结果送 P0 口,P0=8=0000 1000B while(1) ;  /设置无限循环,防止程序“跑飞” /实例实例 16:用:用 P0 显示左移运算结果显示左移运算结果 #include  /包含单片机寄存器的头文件 void main(void)   P0=0x3b1;  /每次循

4、环 P1 的各二进位右移 1 位,高位补 0 delay();  /调用延时函数 /实例实例 19:用:用 if 语句控制语句控制 P0 口口 8 位位 LED 的流水方向的流水方向 #include /包含单片机寄存器的头文件 sbit S1=P14;   /将 S1 位定义为 P1.4 sbit S2=P15;   /将 S2 位定义为 P1.5 /                函数功能:主函数 / void main(void)  while(1) if(S1=0)

5、 /如果按键 S1 按下 P0=0x0f; /P0 口高四位 LED 点亮 if(S2=0)  /如果按键 S2 按下 P0=0xf0; /P0 口低四位 LED 点亮     /实例实例 20:用:用 swtich 语句的控制语句的控制 P0 口口 8 位位 LED 的点亮状态的点亮状态 #include /包含单片机寄存器的头文件 sbit S1=P14;   /将 S1 位定义为 P1.4 /                函数功能:延时一段时间 / void

6、 delay(void) unsigned int n; for(n=0;n80  /如果字符串 100 大于 80 P3=0xf0;  /P3 口低四位 LED 点亮 #else P3=0x0f;  /否则,P3 口高四位 LED 点亮 #endif  /结束本次编译 /                                  中断、定时器中断、定时器   &nbs

7、p;中断、定时器中断、定时器            中断、定时器中断、定时器     中断、定时器中断、定时器                                    / /实例实例 42:用定时器:用定时器 T0 查询方式查询方式 P2 口口 8 位控制位控制 LED 闪烁闪烁 #include    

8、/ 包含 51 单片机寄存器定义的头文件 /                                函数功能:主函数 / void main(void) / EA=1;         /开总中断 / ET0=1;         /定时器 T0 中断允许      TMOD=0x01;     &n

9、bsp;/使用定时器 T0 的模式 1 TH0=(65536-46083)/256; /定时器 T0 的高 8 位赋初值 TL0=(65536-46083)%256; /定时器 T0 的高 8 位赋初值 TR0=1;        /启动定时器 T0 TF0=0; P2=0xff; while(1)/无限循环等待查询 while(TF0=0) ; TF0=0; P2=P2; TH0=(65536-46083)/256; /定时器 T0 的高 8 位赋初值 TL0=(65536-46083)%256; /定时器 T0 的高 8 位赋初值 /实例实例 43:

10、用定时器:用定时器 T1 查询方式控制单片机发出查询方式控制单片机发出 1KHz 音频音频 #include    / 包含 51 单片机寄存器定义的头文件 sbit sound=P37;  /将 sound 位定义为 P3.7 引脚 /                                函数功能:主函数 / void main(void) / EA=1;      

11、;   /开总中断 / ET0=1;         /定时器 T0 中断允许      TMOD=0x10;      /使用定时器 T1 的模式 1 TH1=(65536-921)/256; /定时器 T1 的高 8 位赋初值 TL1=(65536-921)%256; /定时器 T1 的高 8 位赋初值 TR1=1;        /启动定时器 T1 TF1=0; while(1)/无限循环等待查询 while(TF1=0) ; TF1=0;

12、 sound=sound; /将 P3.7 引脚输出电平取反 TH1=(65536-921)/256; /定时器 T0 的高 8 位赋初值 TL1=(65536-921)%256; /定时器 T0 的高 8 位赋初值 /实例实例 44:将计数器:将计数器 T0 计数的结果送计数的结果送 P1 口口 8 位位 LED 显示显示 #include    / 包含 51 单片机寄存器定义的头文件 sbit S=P34;  /将 S 位定义为 P3.4 引脚 /                

13、                函数功能:主函数 / void main(void) / EA=1;         /开总中断 / ET0=1;         /定时器 T0 中断允许      TMOD=0x02;      /使用定时器 T0 的模式 2 TH0=256-156; /定时器 T0 的高 8 位赋初值 TL0=256-156; /定时器 T0 的高 8 位

14、赋初值 TR0=1;        /启动定时器 T0 while(1)/无限循环等待查询 while(TF0=0) /如果未计满就等待 if(S=0) /按键 S 按下接地,电平为 0 P1=TL0; /计数器 TL0 加 1 后送 P1 口显示  TF0=0; /计数器溢出后,将 TF0 清 0 /实例实例 45:用定时器:用定时器 T0 的中断控制的中断控制 1 位位 LED 闪烁闪烁 #include / 包含 51 单片机寄存器定义的头文件 sbit D1=P20; /将 D1 位定义为 P2.0 引脚 /    

15、                            函数功能:主函数 / void main(void) EA=1;         /开总中断 ET0=1;         /定时器 T0 中断允许      TMOD=0x01;       /使用定时器 T0 的模式 2 TH0=(65536-46083)/2

16、56; /定时器 T0 的高 8 位赋初值 TL0=(65536-46083)%256; /定时器 T0 的高 8 位赋初值 TR0=1;         /启动定时器 T0 while(1)/无限循环等待中断 ; /                                函数功能:定时器 T0 的中断服务程序 / void Time0(void) interrupt 1 using 0

17、/“interrupt”声明函数为中断服务函数 /其后的 1 为定时器 T0 的中断编号;0 表示使用第 0 组工作 寄存器   D1=D1; /按位取反操作,将 P2.0 引脚输出电平取反 TH0=(65536-46083)/256; /定时器 T0 的高 8 位重新赋初值 TL0=(65536-46083)%256; /定时器 T0 的高 8 位重新赋初值 /实例实例 46:用定时器:用定时器 T0 的中断实现长时间定时的中断实现长时间定时 #include / 包含 51 单片机寄存器定义的头文件 sbit D1=P20; /将 D1 位定义为 P2.0 引脚 unsigned

18、 char Countor; /设置全局变量,储存定时器 T0 中断次数 /                                函数功能:主函数 / void main(void) EA=1;         /开总中断 ET0=1;         /定时器 T0 中断允许      TMOD=0x01; &nbs

19、p;     /使用定时器 T0 的模式 2 TH0=(65536-46083)/256; /定时器 T0 的高 8 位赋初值 TL0=(65536-46083)%256; /定时器 T0 的高 8 位赋初值 TR0=1;         /启动定时器 T0 Countor=0;      /从 0 开始累计中断次数 while(1)/无限循环等待中断 ; /                     &nb

20、sp;          函数功能:定时器 T0 的中断服务程序 / void Time0(void) interrupt 1 using 0 /“interrupt”声明函数为中断服务函数 /其后的 1 为定时器 T0 的中断编号;0 表示使用第 0 组工作 寄存器   Countor+;  /中断次数自加 1 if(Countor=20) /若累计满 20 次,即计时满 1s D1=D1;   /按位取反操作,将 P2.0 引脚输出电平取反 Countor=0; /将 Countor 清 0,重新从 0 开始计

21、数 TH0=(65536-46083)/256; /定时器 T0 的高 8 位重新赋初值 TL0=(65536-46083)%256; /定时器 T0 的高 8 位重新赋初值 /实例实例 47:用定时器:用定时器 T1 中断控制两个中断控制两个 LED 以不同周期闪烁以不同周期闪烁 #include / 包含 51 单片机寄存器定义的头文件 sbit D1=P20; /将 D1 位定义为 P2.0 引脚 sbit D2=P21; /将 D2 位定义为 P2.1 引脚 unsigned char Countor1; /设置全局变量,储存定时器 T1 中断次数 unsigned char Coun

22、tor2; /设置全局变量,储存定时器 T1 中断次数 /                                函数功能:主函数 / void main(void) EA=1;         /开总中断 ET1=1;         /定时器 T1 中断允许      TMOD=0x10;    

23、   /使用定时器 T1 的模式 1 TH1=(65536-46083)/256; /定时器 T1 的高 8 位赋初值 TL1=(65536-46083)%256; /定时器 T1 的高 8 位赋初值 TR1=1;         /启动定时器 T1 Countor1=0;      /从 0 开始累计中断次数 Countor2=0;      /从 0 开始累计中断次数  while(1)/无限循环等待中断 ; /         &

24、nbsp;                      函数功能:定时器 T1 的中断服务程序 / void Time1(void) interrupt 3 using 0 /“interrupt”声明函数为中断服务函数 /其后的 3 为定时器 T1 的中断编号;0 表示使用第 0 组工作 寄存器   Countor1+;  /Countor1 自加 1 Countor2+;  /Countor2 自加 1 if(Countor1=2) /若累计满 2 次,

25、即计时满 100ms D1=D1;   /按位取反操作,将 P2.0 引脚输出电平取反 Countor1=0; /将 Countor1 清 0,重新从 0 开始计数 if(Countor2=8) /若累计满 8 次,即计时满 400ms D2=D2;   /按位取反操作,将 P2.1 引脚输出电平取反 Countor2=0; /将 Countor1 清 0,重新从 0 开始计数  TH1=(65536-46083)/256; /定时器 T1 的高 8 位重新赋初值 TL1=(65536-46083)%256; /定时器 T1 的高 8 位重新赋初值 /实例实例 4

26、8:用计数器:用计数器 T1 的中断控制蜂鸣器发出的中断控制蜂鸣器发出 1KHz 音频音频 #include / 包含 51 单片机寄存器定义的头文件 sbit sound=P37; /将 sound 位定义为 P3.7 引脚 /                                函数功能:主函数 / void main(void) EA=1;         /开总中断 ET1=1;

27、         /定时器 T1 中断允许      TMOD=0x10;       /TMOD=0001 000B,使用定时器 T1 的模式 1 TH1=(65536-921)/256;  /定时器 T1 的高 8 位赋初值 TL1=(65536-921)%256; /定时器 T1 的高 8 位赋初值 TR1=1;         /启动定时器 T1 while(1)/无限循环等待中断 ; /       &nb

28、sp;                        函数功能:定时器 T1 的中断服务程序 / void Time1(void) interrupt 3 using 0 /“interrupt”声明函数为中断服务函数 sound=sound; TH1=(65536-921)/256;  /定时器 T1 的高 8 位重新赋初值 TL1=(65536-921)%256; /定时器 T1 的高 8 位重新赋初值 /实例实例 49:用定时器:用定时器 T0 的中断实现的中

29、断实现“渴望渴望“主题曲的播放主题曲的播放 #include  /包含 51 单片机寄存器定义的头文件 sbit sound=P37;  /将 sound 位定义为 P3.7 unsigned int C;   /储存定时器的定时常数 /以下是 C 调低音的音频宏定义 #define l_dao 262  /将“l_dao”宏定义为低音“1”的频率 262Hz #define l_re 286  /将“l_re”宏定义为低音“2”的频率 286Hz #define l_mi 311  /将“l_mi”宏定义为低音“3”的频率 311H

30、z #define l_fa 349  /将“l_fa”宏定义为低音“4”的频率 349Hz #define l_sao 392  /将“l_sao”宏定义为低音“5”的频率 392Hz #define l_la 440  /将“l_a”宏定义为低音“6”的频率 440Hz #define l_xi 494  /将“l_xi”宏定义为低音“7”的频率 494Hz /以下是 C 调中音的音频宏定义 #define dao 523   /将“dao”宏定义为中音“1”的频率 523Hz #define re 587   /将“re”宏定义

31、为中音“2”的频率 587Hz #define mi 659   /将“mi”宏定义为中音“3”的频率 659Hz #define fa 698   /将“fa”宏定义为中音“4”的频率 698Hz #define sao 784   /将“sao”宏定义为中音“5”的频率 784Hz #define la 880   /将“la”宏定义为中音“6”的频率 880Hz #define xi 987   /将“xi”宏定义为中音“7”的频率 523H    /以下是 C 调高音的音频宏定义 #define h_dao 1046

32、   /将“h_dao”宏定义为高音“1”的频率 1046Hz #define h_re 1174   /将“h_re”宏定义为高音“2”的频率 1174Hz #define h_mi 1318   /将“h_mi”宏定义为高音“3”的频率 1318Hz #define h_fa 1396   /将“h_fa”宏定义为高音“4”的频率 1396Hz #define h_sao 1567  /将“h_sao”宏定义为高音“5”的频率 1567Hz #define h_la 1760   /将“h_la”宏定义为高音“6”的频率 1760

33、Hz #define h_xi 1975   /将“h_xi”宏定义为高音“7”的频率 1975Hz /                       函数功能:1 个延时单位,延时 200ms / void delay()         unsigned char i,j; for(i=0;i=1; _nop_();   /等待一个机器周期    DQ = 1;   /将数据线“人为“拉高,为单

34、片机检测 DS18B20 的输出电 平作准备 for(time=0;time=1;    /将 dat 中的各二进制位数据右移 1 位 for(time=0;time1; /temp 中的各数据位右移一位, 因为先读出的是 高位数据      TH0=0;     /定时器清 0 TL0=0;     /定时器清 0 TR0=1;     /开启定时器 T0 while(IR=0)  /如果是低电平就等待 ;    /低电平计时 TR0=0;  

35、   /关闭定时器 T0 LowTime=TH0 256+TL0;  /保存低电平宽度 TH0=0;     /定时器清 0 TL0=0;     /定时器清 0 TR0=1;     /开启定时器 T0 while(IR=1)  /如果是高电平就等待 ;    TR0=0;    /关闭定时器 T0 HighTime=TH0 256+TL0;  /保存高电平宽度 if(LowTime640) return 0;    /如果低电平长度

36、不在合理范围, 则认 为出错,停止解码   if(HighTime420)  /如果满足条件,执行遥控功能 EX0=1;  /开启外中断 EX0 /实例实例 97:用红外遥控器控制继电器:用红外遥控器控制继电器 #include    /包含单片机寄存器的头文件 sbit IR=P32;      /将 IR 位定义为 P3.2 引脚 unsigned char a4;  /储存用户码、用户反码与键数据码、键数据反码 unsigned int LowTime,HighTime; /储存高、低电平的宽度 &

37、nbsp;sbit Relay=P13;   /将 Relay 位定义为 P1.3 引脚 /                               函数功能:对 4 个字节的用户码和键数据码进行解码 说明:解码正确,返回 1,否则返回 0 出口参数:dat / bit DeCode(void)     unsigned char i,j; unsigned char temp;  /储存解码出的数据

38、for(i=0;i1; /temp 中的各数据位右移一位, 因为先读出的是 高位数据      TH0=0;     /定时器清 0 TL0=0;     /定时器清 0 TR0=1;     /开启定时器 T0 while(IR=0)  /如果是低电平就等待 ;    /低电平计时 TR0=0;     /关闭定时器 T0 LowTime=TH0 256+TL0;  /保存低电平宽度 TH0=0;     /定时器清 0 T

39、L0=0;     /定时器清 0 TR0=1;     /开启定时器 T0 while(IR=1)  /如果是高电平就等待 ;    TR0=0;    /关闭定时器 T0 HighTime=TH0 256+TL0;  /保存高电平宽度 if(LowTime640) return 0;    /如果低电平长度不在合理范围, 则认 为出错,停止解码   if(HighTime420)  /如果满足条件,执行遥控功能 EX0=1;  /开启外中断

40、EX0 /实例实例 98:基于:基于 DS1302 的日历时钟的日历时钟 #include   /包含单片机寄存器的头文件 #include  /包含_nop_()函数定义的头文件 /                                     以下是 DS1302 芯片的操作程序 / unsigned char code digit10=“0123456789“;  /定义

41、字符数组显示数字 sbit DATA=P11;  /位定义 1302 芯片的接口,数据输出端定义在 P1.1 引脚 sbit RST=P12;  /位定义 1302 芯片的接口,复位端口定义在 P1.1 引脚 sbit SCLK=P10;  /位定义 1302 芯片的接口,时钟输出端口定义在 P1.1 引脚 /                            函数功能:延时若干微秒 入口参数:n /  void

42、 delaynus(unsigned char n) unsigned char i; for(i=0;i=1;     /将 dat 的各数据位右移 1 位,准备写入下一个数 据位 /                            函数功能:根据命令字,向 1302 写一个字节数据 入口参数:Cmd,储存命令字;dat,储存待写的数据 /  void WriteSet1302(unsigned char Cmd,un

43、signed char dat) RST=0;      /禁止数据传递 SCLK=0;     /确保写数居前 SCLK 被拉低 RST=1;      /启动数据传输 delaynus(2);   /稍微等待,使硬件做好准备 Write1302(Cmd); /写入命令字 Write1302(dat); /写数据 SCLK=1;     /将时钟电平置于已知状态 RST=0;      /禁止数据传递 /       &nb

44、sp;                    函数功能:从 1302 读一个字节数据 入口参数:x /  unsigned char Read1302(void) unsigned char i,dat; delaynus(2);    /稍微等待,使硬件做好准备 for(i=0;i=1;    /将 dat 的各数据位右移 1 位, 因为先读出的是字节的最 低位 if(DATA=1)  /如果读出的数据是 1 dat|=0x80; &

45、nbsp;/将 1 取出,写在 dat 的最高位 SCLK=1;    /将 SCLK 置于高电平,为下降沿读出 delaynus(2); /稍微等待 SCLK=0;    /拉低 SCLK,形成脉冲下降沿 delaynus(2); /稍微等待  return dat;    /将读出的数据返回  /                            函数功能:根据命令字,

46、从 1302 读取一个字节数据 入口参数:Cmd /  unsigned char ReadSet1302(unsigned char Cmd) unsigned char dat; RST=0;         /拉低 RST SCLK=0;        /确保写数居前 SCLK 被拉低 RST=1;         /启动数据传输 Write1302(Cmd);    /写入命令字 dat=Read1302();    

47、/读出数据 SCLK=1;       /将时钟电平置于已知状态 RST=0;        /禁止数据传递 return dat;     /将读出的数据返回 /                            函数功能: 1302 进行初始化设置 /  void Init_DS1302(void)  WriteSet1302(0x8E,0

48、x00);         /根据写状态寄存器命令字,写 入不保护指令  WriteSet1302(0x80,(0/10)4) 10 + (ReadValue/将读出数据转化 DisplaySecond(second);     /显示秒 ReadValue = ReadSet1302(0x83); /从分寄存器读 minute=(ReadValue /将读出数据转化 DisplayMinute(minute);    /显示分 ReadValue = ReadSet1302(0x85); /从分寄存器读

49、 hour=(ReadValue /将读出数据转化 DisplayHour(hour);       /显示小时 ReadValue = ReadSet1302(0x87); /从分寄存器读 day=(ReadValue /将读出数据转化 DisplayDay(day);        /显示日 ReadValue = ReadSet1302(0x89); /从分寄存器读 month=(ReadValue /将读出数据转化 DisplayMonth(month);      /显示月 ReadV

50、alue = ReadSet1302(0x8d); /从分寄存器读 year=(ReadValue /将读出数据转化 DisplayYear(year);       /显示年 /实例实例 99:单片机数据发送程序单片机数据发送程序 #include    /包含单片机寄存器的头文件 /                            函数功能:向 PC 发送一个字节数据 / void Send(un

51、signed char dat) SBUF=dat; while(TI=0) ; TI=0; /                            函数功能:延时 1ms (3j+2)i=(333+2) 10=1010(微秒),可以认为是 1 毫秒 / void delay1ms() unsigned char i,j;  for(i=0;i10;i+) for(j=0;j33;j+) ;   /     &nb

52、sp;                      函数功能:延时若干毫秒 / void delaynms(unsigned char x) unsigned char i; for(i=0;ix;i+) delay1ms(); /                            函数功能:主函数 / void main(void) unsig

53、ned char i; TMOD=0x20; /定时器 T1 工作于方式 2  TH1=0xfd;  /根据规定给定时器 T1 赋初值 TL1=0xfd;  /根据规定给定时器 T1 赋初值 PCON=0x00; /波特率 9600 TR1=1;   /启动定时器 t1 SCON=0x40; /串口工作方式 1 while(1) for(i=0;i200;i+)  /模拟检测数据 Send(i);    /发送数据 i delaynms(100);  /100ms 发送一次检测数据     &n

54、bsp; /实例实例 100:电机转速表设计:电机转速表设计 #include  /包含单片机寄存器的头文件 #include /包含_nop_()函数定义的头文件 sbit RS=P20;  /寄存器选择位,将 RS 位定义为 P2.0 引脚 sbit RW=P21;  /读写选择位,将 RW 位定义为 P2.1 引脚 sbit E=P22;   /使能信号位,将 E 位定义为 P2.2 引脚 sbit BF=P07;  /忙碌标志位,将 BF 位定义为 P0.7 引脚 unsigned char code digit =“012345678

55、9“; /定义字符数组显示数字 unsigned int v;  /储存电机转速 unsigned char count; /储存定时器 T0 中断次数 bit flag;   /计满 1 秒钟标志位 /                            函数功能:延时 1ms (3j+2) i=(333+2)10=1010(微秒),可以认为是 1 毫秒 / void delay1ms() unsigned char i,j; &n

56、bsp;for(i=0;i10;i+) for(j=0;j33;j+) ;   /                            函数功能:延时若干毫秒 入口参数:n / void delay(unsigned char n) unsigned char i; for(i=0;in;i+) delay1ms(); /                  

57、;          函数功能:判断液晶模块的忙碌状态 返回值:result。result=1,忙碌;result=0,不忙 / unsigned char BusyTest(void) bit result; RS=0;    /根据规定,RS 为低电平,RW 为高电平时,可以读状态 RW=1; E=1;    /E=1,才允许读写 _nop_();  /空操作 _nop_(); _nop_();  _nop_();  /空操作四个机器周期,给硬件反应时间  re

58、sult=BF; /将忙碌标志电平赋给 result E=0;     /将 E 恢复低电平 return result; /                            函数功能:将模式设置指令或显示地址写入液晶模块 入口参数:dictate / void WriteInstruction (unsigned char dictate)   while(BusyTest()=1); /如果忙就等待 RS=0; &n

59、bsp;       /根据规定,RS 和 R/W 同时为低电平时,可以写 入指令 RW=0;   E=0;          /E 置低电平(根据表 8-6, 写指令时, E 为高脉冲,  / 就是让 E 从 0 到 1 发生正跳变,所以应先置“0“ _nop_(); _nop_();       /空操作两个机器周期,给硬件反应时间 P0=dictate;      /将数据送入 P0 口,即写入指令或地址 _nop_(); _no

60、p_(); _nop_(); _nop_();        /空操作四个机器周期,给硬件反应时间 E=1;          /E 置高电平 _nop_(); _nop_(); _nop_(); _nop_();        /空操作四个机器周期,给硬件反应时间 E=0;         /当 E 由高电平跳变成低电平时,液晶模块开始 执行命令 /  函数功能:指定字符显示的实际地址 入口参数:x / void

61、WriteAddress(unsigned char x) WriteInstruction(x|0x80); /显示位置的确定方法规定为“80H+地址码 x“ /                            函数功能:将数据(字符的标准 ASCII 码)写入液晶模块 入口参数:y(为字符常量) / void WriteData(unsigned char y) while(BusyTest()=1);  RS=1;   &n

62、bsp;  /RS 为高电平,RW 为低电平时,可以写入数据 RW=0; E=0;      /E 置低电平(根据表 8-6,写指令时,E 为高脉冲, / 就是让 E 从 0 到 1 发生正跳变,所以应先置“0“ P0=y;      /将数据送入 P0 口,即将数据写入液晶模块 _nop_(); _nop_(); _nop_(); _nop_();    /空操作四个机器周期,给硬件反应时间 E=1;     /E 置高电平 _nop_(); _nop_(); _nop_(); _n

63、op_();    /空操作四个机器周期,给硬件反应时间 E=0;      /当 E 由高电平跳变成低电平时,液晶模块开始执行命令 /                            函数功能:对 LCD 的显示模式进行初始化设置 / void LcdInitiate(void) delay(15);       /延时 15ms,首次写指令时应给 LCD 一段较长的反

64、 应时间 WriteInstruction(0x38); /显示模式设置:162 显示,57 点阵,8 位数据 接口 delay(5);        /延时 5ms ,给硬件一点反应时间 WriteInstruction(0x38); delay(5); WriteInstruction(0x38); /连续三次,确保初始化成功 delay(5); WriteInstruction(0x0c); /显示模式设置:显示开,无光标,光标不闪烁 delay(5); WriteInstruction(0x06); /显示模式设置:光标右移,字符不移 delay(5); WriteInstruction(0x01); /清屏幕指令,将以前的显示内容清除 delay(5); /                                        函数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 电子与机械类
版权提示 | 免责声明

1,本文(单片机编程实例大全.doc)为本站会员(淡淡的紫竹语嫣)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|