您需要 登录 才可以下载或查看,没有账号?注册
收藏0 举报
ningling_21 发表于 2014-6-26 08:12 第三脚直接接地是错的,用电位器调节此脚电压才能显示
caoye87 发表于 2014-6-26 20:02 谢谢你的回复,接了电位器也没有显示,不知道是不是程序出了问题
*************************************************/ void delay(uchar x) { uchar j; while((x--)!=0) { for(j=0;j<125;j++) ; } } /*************************************************************/ /* */ /*检查LCD忙状态 */ /*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据 */ /* */ /*************************************************************/ static bit lcd_busy() { bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result = (bit)(LCD_DB_Port&0x80); LCD_EN = 0; return(result); } /*******************************************************************/ /* */ /*写指令数据到LCD */ /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */ /* */ /*******************************************************************/ void lcd_wcmd(uchar cmd) { while(lcd_busy()); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); #ifdef LCD_8DB LCD_DB_Port = cmd; #endif delayNOP(); LCD_EN = 1; //上跳沿时输入数据 delayNOP(); LCD_EN = 0; } /*******************************************************************/ /* */ /*写显示数据到LCD */ /*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */ /* */ /*******************************************************************/ void lcd_wdat(uchar dat) { while(lcd_busy()); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; #ifdef LCD_8DB LCD_DB_Port = dat; #endif delayNOP(); LCD_EN = 1; delayNOP(); //上跳沿时输入数据 LCD_EN = 0; } /*************************************************************/ /* */ /* LCD初始化设定 */ /* */ /*************************************************************/ void lcd_init() { delay(15); //等待电源稳定 lcd_wcmd(LCD_MODE); //设置显示模式 delay(5); lcd_wcmd(LCD_MODE); delay(5); lcd_wcmd(LCD_MODE); delay(5); lcd_wcmd(0x0c); //显示开,关光标 delay(5); lcd_wcmd(0x06); //移动光标 delay(5); lcd_wcmd(0x01); //清除LCD的显示内容 delay(5); } /*************************************************************/ /* */ /* 设定显示位置 */ /* */ /*************************************************************/ void lcd_PrPos(uchar row,uchar col) { if(row == 0) lcd_wcmd(col | 0x80); //数据指针=80+地址变量 if(row == 1) lcd_wcmd(col | 0x80 | 0x40); } /*************************************************************/ /* */ /* 显示字符串 */ /* */ /*************************************************************/ void lcd_PrString(uchar *prstring) //显示一个字符串的子程序 { while((*prstring) != '\0') { lcd_wdat(*prstring); prstring++; } } /*************************************************************/ /* */ /* 显示二进制字节 */ /* */ /*************************************************************/ void lcd_PrHexByte(uchar prbyte) //显示一个字符子程序 { ACC = prbyte; ACC >>= 4; lcd_wdat(TAB_LCD_Hex[ACC]); //显示高四位 ACC = prbyte; ACC &= 0x0F; lcd_wdat(TAB_LCD_Hex[ACC]); //显示低四位 } /*************************************************************/ /* */ /* 写入自定义字符 */ /* */ /*************************************************************/ void lcd_wCGRAM(uchar cg_pos,uchar *cg_arr) //cg_pos 0-7 写入自定义cgram中的位置 { uchar i; cg_pos <<= 3; // cg_pos = cg_pos * 8,转化成地址 cg_pos |= 0x40; // 转化成命令字 for(i = 0; i < 8; i++ ) { lcd_wcmd(cg_pos); lcd_wdat(*cg_arr); cg_pos++; cg_arr++; } }
ningling_21 发表于 2014-6-26 20:11 这个程序你可以参考一下,STC89C52运行正常的,你要用可以改一下。
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
发帖类勋章
时间类勋章
等级类勋章
人才类勋章
6
20
0
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号