书签 分享 收藏 举报 版权申诉 / 187
上传文档赚钱

类型单片机编程实例大全.doc

  • 上传人(卖家):淡淡的紫竹语嫣
  • 文档编号:540602
  • 上传时间:2020-05-21
  • 格式:DOC
  • 页数:187
  • 大小:629.50KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《单片机编程实例大全.doc》由用户(淡淡的紫竹语嫣)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    单片机 编程 实例 大全 doc
    资源描述:

    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); /                                        函数

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:单片机编程实例大全.doc
    链接地址:https://www.163wenku.com/p-540602.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


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

    163文库