4位数据线 LCM

网摘:

几天前搞了个LCM1602来玩,网上下载了别人的程序改巴改巴就写到M48里面,就遇到了初始化很不稳定的问题.
上网查看,发现很多人都反映如此,也有人提供了解决方法但并不完美.继续找资料,查了很多pdf资料,最后在
微雪电子公布的技术文档里找到了答案.
原来1602初始化成4位数据线之前必需先初始化成8位(此时命令发送方式是8位格式,但数据线只需接4位),然后再改到4位线宽,
这样才能稳定的进入4位模式.
正确的初始化过程是这样的:

1)上电
2)等待15ms以上
3)8位模式写命令0b0011xxxx (后面4位线不用接,所以是无效的)
4)等待4.1ms以上
5)同3)
6)等待100us以上
7)同3)
以上步骤中不可查询BF状态,只能用延时控制

从一下步骤开始可以查询BF状态确定模块是否忙
8)8位模式写命令0b0010xxxx 进入4位模式

以下操作都必需用4位模式格式进行
9)4位模式写命令0b0010NFxx NF为行数和字符高度设置位,之后行数和字符高不可重设

10)4位模式写命令0b00001000 关闭现实
11)4位模式写命令0b00000001 清屏
12)4位模式写命令0b000001(I/D)S 设置光标模式

初始化完成,可以用4位模式写字符

适用型号:ZXM2002B1, LMB402C, JHD824M10, J402B


sbit  LCD_DB0=P1^4;
sbit  LCD_DB1=P1^5;
sbit  LCD_DB2=P1^6;
sbit  LCD_DB3=P1^7;

sbit  LCD_RS=P2^7;
sbit  LCD_RW=P2^6;   //只读数据而不写时可以直接接地
sbit  LCD_E=P2^5;

/*-------------------------------------
;首次初始化时  要先运行此函数
;
/*************************************/
void LCD_init_first(void)
{
	delay_ms(50);
	LCD_write_command(0x30);
	delay_ms(6);
	LCD_write_command(0x30);
	delay_ms(1);
	LCD_write_command(0x30);
	delay_ms(1);
	LCD_write_command(0x02);
}

void LCD_init(void)
{
	//LCD_write_command(0x38);//设置8位格式,2行,5x7
	LCD_write_command(0x28);//设置4位格式,2行,5x7
	LCD_write_command(0x0c);//整体显示,关光标,不闪烁
	LCD_write_command(0x06);//设定输入方式,增量不移位
	LCD_write_command(0x01);//清除屏幕显示
	delay_n10us(100);       //延时清屏,延时函数,延时约n个10us
}

void main()
{
    int i;

    EA = 0;
	init_serialcomm();  //初始化串口
	EA = 1;

	//send_string("lcm\r\n");

    LCD_init_first();
    LCD_init();

    LCD_disp_str(0, 1, "test");

    LCD_disp_char(0, 1, 'A');
    delay_ms(10);
    LCD_disp_char(3, 1, 'd');
    delay_ms(10);
    LCD_disp_char(4, 1, 'c');

    while(1)
    {
        send_string("lcm\r\n");
        LCD_disp_str(0, 1, "WDY  Technology  Co.,Ltd.");
        LCD_disp_str(0, 2, "WDY  Co.,Ltd.");
        delay_ms(10);
    }
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值