|
发表于 2019-10-5 16:29:21
|
显示全部楼层
- /***********************************************************************
- * 1602写指令或写数据
- * write_rs=0写命令,write_re=1写数据
- ***********************************************************************/
- void write_com_data(unsigned char write_rs,unsigned char dat)
- {
- if(write_rs==0)
- port &=~ (1<<rs); //写命令
- else
- port |= (1<<rs); //写数据
- _delay_us(1);
- port &= 0xf0; //清4位数据总线
- port |= (dat>>4); //输出高4位
- port |= (1<<e); //e=1
- _delay_us(1);
- port &=~ (1<<e); //e=0
- port &= 0xf0;
- port |= (dat&0x0f); //输出低4位
- port |= (1<<e); //e=1
- _delay_us(1);
- port &=~ (1<<e); //e=0
- _delay_us(50);
- }
复制代码
这是我的程序。
对的,这样想法就统一了,小于30us开始出现花屏,我保险用了50us延时,太大1602刷新一次时间过长,其实Proteus仿真也能看出问题 |
|