【转载】贴个1602 液晶的驱动程序

/*=======================================
1602lcd模块驱动程序
==========================================

说明:1.晶体:11.0592MHz
2.1602驱动:ks0066

******************************************/
#i nclude
#i nclude
#define lcm_rs P2_7 //寄存器选择
#define lcm_rw P2_6 //读/写控制
#define lcm_e P2_5 //读/写使能
#define lcm_blk P2_4 //背光led 1.off 0.on
#define lcm_data P0

//函数声明
void delay5ms(void);
void delay400ms(void);
void lcm_write_command(unsigned char wc_lcm,busy_c);

/***********************************
//函数名称: void lcm_ini(void)
//传递参数: 无
//返 回 值: 无
//函数功能: LCM初始化
//函数说明:
***********************************/
void lcm_ini(void)
{
lcm_data = 0;
lcm_write_command(0×38,0); //16*2显示,5*7点阵,8位数据接口,不检测忙
delay5ms();
lcm_write_command(0×38,0);
delay5ms();
lcm_write_command(0×38,0); //三次显示模式, 不检测忙
delay5ms();
lcm_write_command(0×38,1); //16*2显示,5*7点阵,8位数据接口,需要检测忙
lcm_write_command(0×80,1); //关闭显示
lcm_write_command(0×01,1); //clear显示
lcm_write_command(0×06,1); //指针和光标+1,不滚屏
lcm_write_command(0x0c,1); //开显示,不显示光标
}

/***********************************
//函数名称: unsigned char lcm_read_status(void)
//传递参数: 无
//返 回 值: unsigned char
//函数功能: 读lcm状态,等待lcm空闲
//函数说明: DB7=1,忙
***********************************/
unsigned char lcm_read_status(void)
{
lcm_data=0xff;
lcm_rs=0;
lcm_rw=1;
lcm_e=0;
lcm_e=0;
lcm_e=1;
while(lcm_data & 0×80);
return lcm_data;
}

/***********************************
//函数名称: void lcm_write_data(unsigned char wd_lcm)
//传递参数: unsigned char wd_lcm
//返 回 值: 无
//函数功能: lcm写数据
//函数说明:
***********************************/
void lcm_write_data(unsigned char wd_lcm)
{
lcm_read_status(); //判断lcm忙标志
lcm_data = wd_lcm;
lcm_rs = 1;
lcm_rw = 0;
lcm_e = 0;
lcm_e = 0;
lcm_e = 1;
}

/***********************************
//函数名称: void lcm_write_command(unsigned char wc_lcm, busy_c)
//传递参数: unsigned char wc_lcm, busy_c
//返 回 值: 无
//函数功能: lcm写命令
//函数说明: busy_c=0是,不用检测忙信号
***********************************/
void lcm_write_command(unsigned char wc_lcm, busy_c)
{
if (busy_c)
lcm_read_status();
lcm_data = wc_lcm;
lcm_rs=0;
lcm_rw = 0;
lcm_e = 0;
lcm_e = 0;
lcm_e = 1;
}

/***********************************
//函数名称: void disp_one_char(unsigned char x, unsigned char y,unsigned char disp_data)
//传递参数: unsigned char x, unsigned char y,unsigned char disp_data
//返 回 值: 无
//函数功能: 指定位置显示一个字符
//函数说明:
***********************************/
void disp_one_char(unsigned char x,unsigned char y,unsigned disp_data)
{
y = y&0×01;
x = x&0x0f; //限制2行,没行15个字
if (y)
x =x + 0×40; //算RAM地址
x = x + 0×80;
lcm_write_command(x,0);
lcm_write_data(disp_data);
}

/***********************************
//函数名称: void disp_one_char(unsigned char x, unsigned char y,unsigned char *disp_data)
//传递参数: unsigned char x, unsigned char y,unsigned char *disp_data
//返 回 值: 无
//函数功能: 指定位置显示一串字符
//函数说明:
***********************************/
void disp_list_char(unsigned char x,unsigned char y,unsigned char *disp_data)
{
unsigned char char_length,j;
char_length = strlen(disp_data);
y = y&0×1;
x = x&0x0f;
for (j=0;j {
disp_one_char( x,y,disp_data[j]); //显示一个字符
x++;
}
}

/***********************************
//函数名称: void delay5ms(void)
//传递参数: 无
//返 回 值: 无
//函数功能: 延时5MS
//函数说明:
***********************************/
void delay5ms(void)
{
unsigned int TempCyc = 5552;
while(TempCyc–);
}
/***********************************
//函数名称: void delay400ms(void)
//传递参数: 无
//返 回 值: 无
//函数功能: L延时400MS
//函数说明: LCM开机延时
***********************************/
void delay400ms(void)
{
unsigned char TempCycA = 5;
unsigned int TempCycB;
while(TempCycA–)
{
TempCycB=7269;
while(TempCycB–);
};
}

/*****d******************************
//函数名称: void main(void)
//传递参数: 无
//返 回 值: 无
//函数功能: 主函数
//函数说明:
************************************/
void main(void)
{
delay400ms();
lcm_ini();
disp_list_char(1,0,”Welcome”);
disp_list_char(1,0,”www.dzkjcn.com”)
while(1);
}

以上的程序只是简单的显示两行字符,没有滚屏和背光

This entry was posted in 从初学者到电子工程师. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word