一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 1578|回复: 4

[其他综合] 菜鸟求助 驱动1602显示

[复制链接]
发表于 2013-8-22 15:09 | 显示全部楼层 |阅读模式
本帖最后由 zjhchp 于 2013-8-22 15:14 编辑

现在手头上有两个的SET1602液晶,使用KS0074控制器,论坛上有介绍。现在可以点亮,现在想让它左右滚屏显示,请高手指点下程序如何写!
先谢谢了!!!!!

KS0074

KS0074



#include <reg52.H>
#include <intrins.h>
#include <string.h>
#define uchar unsigned char
#define uint unsigned int
#define DATA_PORT P2
/***********************************************************************/
sbit lcdrs=P2^0;
sbit lcden=P2^2;
/***********************函数申明***********************************/
void delay_ms(uint z);
void write_com_lcd(uchar com);
void write_data_lcd(uchar date);
void init_lcd();
void write_string_lcd(uchar x,uchar y,uchar *str);
void LocateXY(uchar posx,uchar posy);
/******************************************************************/
void delay_ms(uint z)
{ uint x,y;
for(x=z;x>0;x--)
  for(y=452;y>0;y--);
}
/******************************************************************/
void LocateXY(uchar posx,uchar posy)
{ char temp=0;
if(posy==0)temp=0x80+posx;
if(posy==1)temp=0x90+posx;
if(posy==2)temp=0xc0+posx;
write_com_lcd(temp);
}
/******************************************************************/
void write_com_lcd(uchar com)
{ lcdrs=0;
DATA_PORT &=0x0f ;                    //清高四位,低四位不变
DATA_PORT |=(com&0xf0);               //高四位传送
lcden=1;
delay_ms(1);
lcden=0;
com= com<<4;                          //低四位移到高四位
DATA_PORT &=0x0f ;                    //清高四位,低四位不变
DATA_PORT |=(com&0xf0);               //高四位传送
lcden=1;
delay_ms(1);
lcden=0;
}
/******************************************************************/
void write_data_lcd(uchar dat)
{ lcdrs=1;
DATA_PORT &=0x0f ;                    //清高四位,低四位不变
DATA_PORT |=(dat&0xf0);               //高四位传送
lcden=1;
delay_ms(1);
lcden=0;
dat=dat<<4;
DATA_PORT &=0x0f ;                    //清高四位,低四位不变
DATA_PORT |=(dat&0xf0);               //高四位传送
lcden=1;
delay_ms(1);
lcden=0;
}

/******************************************************************/
void write_string_lcd(uchar x,uchar y,uchar *str)
{ uchar  i;
LocateXY(x,y);
for(i=0;i<strlen(str);i++){         
  write_data_lcd(str);
}  
}
/******************************************************************/
void init_lcd()
{
DATA_PORT=0;
write_com_lcd(0x02); //归位 AC=0 指令至少1.64ms
delay_ms(3);
write_com_lcd(0x28); //功能设置,4位总线
delay_ms(1);
write_com_lcd(0x22);
delay_ms(1);
write_com_lcd(0x2c); //re=1,2c
delay_ms(1);
write_com_lcd(0x07);
delay_ms(1);
write_com_lcd(0x08);
delay_ms(1);
write_com_lcd(0x2a); //re=0,2a
delay_ms(1);
write_com_lcd(0x0c); // 0x0c:1100   光标不显示,  字符不闪
           // 0x0d:1101   光标显示闪,  字符闪
           // 0x0e:1110   光标显示不闪,字符不闪
           // 0x0f:1111   光标显示不闪,字符闪
           // bit2=0:显示功能关 bit2=1:显示功能开               
delay_ms(1);
write_com_lcd(0x07);         
delay_ms(1);
}
/******************************************************************/      
void main()
{
init_lcd();
delay_ms(3);
write_string_lcd(0,0," LCD_1602          TEST      OK    !");  
write_string_lcd(0,1,"ABCDEFGHIJKLMNOPQRSTUVWXYZ ");  
  while(1)
  {
  }
  
}



 楼主| 发表于 2013-8-23 07:43 | 显示全部楼层
本帖最后由 zjhchp 于 2013-8-24 11:28 编辑

屏就是这个SET的屏!!!!!! https://www.yleee.com.cn/thread-21035-1-1.html
回复

使用道具 举报

发表于 2013-8-23 20:03 | 显示全部楼层
大多数的1602引脚、参数、驱动几乎一样
网上搜个代码试试即可
不行的话多换几个再试
回复

使用道具 举报

 楼主| 发表于 2013-8-24 11:31 | 显示全部楼层
xjlcd 发表于 2013-8-23 20:03
大多数的1602引脚、参数、驱动几乎一样
网上搜个代码试试即可
不行的话多换几个再试

关键是这个程序该如何改,搞不好!请高手给个介绍!  谢谢!!
回复

使用道具 举报

发表于 2013-8-26 20:19 | 显示全部楼层
把你的液晶屏上个图片看看~~~~~~~~~
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2026-1-30 20:02 , Processed in 0.036167 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表