首页 lcd1602_C51显示程序

lcd1602_C51显示程序

举报
开通vip

lcd1602_C51显示程序lcd1602_C51显示程序 //////////////////////////////////////////////////////// // lcd1602显示 // //////////////////////////////////////////////////////// #include #include //使用其中_nop_()精准空函数 #define uchar unsigned char #define uint unsigned int ////LCD端口设置///...

lcd1602_C51显示程序
lcd1602_C51显示程序 //////////////////////////////////////////////////////// // lcd1602显示 // //////////////////////////////////////////////////////// #include #include //使用其中_nop_()精准空函数 #define uchar unsigned char #define uint unsigned int ////LCD端口设置//// #define dataport P0 //p0作LCDIO数据连接口 sbit lcd_rs=P2^5; //RS sbit lcd_rw=P2^6; //RW sbit lcd_e=P2^7; //E // 声明函数////// void delay1ms(uchar x); //延时函数 void lcdcheckbusy(void); // 因为每次操作LCD前要先检查忙状态才可以操作LCD void lcdwritecmd(uchar cmd,uchar busy_on); //函数参数,cmd是要发送的命令,busy_on,是定义是否要检查忙状态 void lcdwritedata(char ddata); //函数参数,ddata是要发送到LCD当前光标显示出来的数据,单字节 void lcdpos(uchar xpos,uchar ypos); //光标定位函数 void lcdreset(void); //lcd 初始化函数 void lcdwritechar(uchar xpos,uchar ypos,char c); //指定列上显示字符函数,参数:横坐标x列,丛坐标Y行,显示c; void lcdwritestring(uchar xpos,uchar ypos,char s[]); //指定列显示字符串函数,参数:x列,Y行,显示字符串S void main() { uchar s[]="seastar"; // 定义字符串 注意:C语中,字符串用双引号,字符用单引号 lcdreset(); //lcd初始化 delay1ms(5); //延时5m秒,等待初始化完成 lcdwritechar(0,1,'a'); //在第一行第0列显示字符A; lcdwritestring(0,0,s); //在第0列第0行显示字符串seastar while(1); } //读忙状态函数// //读命令 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 : rs(0)+rw(1)=>e(1->0)=>读出端口命令值 void lcdcheckbusy(void) { dataport=0xff; //先把P0口设高状态//不写也可以,因为复位后默认为高 lcd_rs=0; //设定用 lcd_rw=1; _nop_(); lcd_e=1; _nop_(); _nop_(); while(dataport&0x80); //检查D7的状态,D7=1是忙,E就不变O等待(变0就从 IR寄存器取出数据到端口) lcd_e=0; // 若D7=0,说明不忙,E=0把端口 从IR中取出数据到 端口 } //LCD写入命令函数// // 写命令标准: rs(0)+rw(0)+d(0-7)=>e(1->0)=>写入IR 寄存器 void lcdwritecmd(uchar cmd,uchar busy_on) //函数参数中,cmd是要发送的命令, busy_on,是定义是否要检查忙状态 { if(busy_on==1)lcdcheckbusy(); //等于1就检查忙状态,因为有时不需要检查的,例 如刚开始操作LCD就不要 lcd_rs=0; lcd_rw=0; _nop_(); dataport=cmd; //把命令发到端口 _nop_(); lcd_e=1; _nop_(); _nop_(); lcd_e=0; } //LCD写入数据函数// //写入数据标准:rs(1)+rw(0)+d(0-7)=>e(1->0)=>写入IR 寄存器 void lcdwritedata(char ddata) { lcdcheckbusy(); lcd_rs=1; lcd_rw=0; _nop_(); dataport=ddata; _nop_(); lcd_e=1; _nop_(); _nop_(); lcd_e=0; } //光标定位函数//// void lcdpos(uchar xpos,uchar ypos) { uchar tmp; xpos&=0x0f; ypos&=0x01; tmp=xpos; if(ypos==1) tmp|=0xc0; tmp|=0x80; lcdwritecmd(tmp,0); } //lcd初始化函数//// void lcdreset(void) { lcdwritecmd(0x38,0); //功能指令,设定八位接口,显示器2行,5*7字符节 lcdwritecmd(0x38,1); //设置显示模式,检查忙状态 lcdwritecmd(0x08,1); //显示开关控制指令,显示关闲 lcdwritecmd(0x01,1); //清屏指令, lcdwritecmd(0x06,1); //输入方式设置,字符不动,光标自动右移一格 lcdwritecmd(0x0f,1); //显示开关控制指令,显示器开,光标开,光标闪烁 } //指定列上显示字符函数/// void lcdwritechar(uchar xpos,uchar ypos,char c) //横坐标X列,丛坐标Y行,显示 字符C, { lcdpos(xpos,ypos); lcdwritedata(c); } //指定列显示字符串函数// void lcdwritestring(uchar xpos,uchar ypos,char s[]) //x列,Y行,显示字符串S { uchar i=0; while(1) { lcdwritechar(xpos,ypos,s[i]); i++; if(s[i]==0) break; if(++xpos>=15) { xpos=0; ypos=1; } } } //1ms延时函数// void delay1ms(uchar x) { uchar i,j; for(i=0;i
本文档为【lcd1602_C51显示程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_079973
暂无简介~
格式:doc
大小:19KB
软件:Word
页数:0
分类:互联网
上传时间:2017-10-24
浏览量:11