|
调试液晶显示为了方便用protues辅助设计,试验使用到一些问题。写来分享下。
Protues使用1602时主要注意3个问题
1初始化。试过一些例子的初始化,发现仿真失败。以下是我自己试过一个成功的初始化
delay_nms(1000);
//==========================================
//以下程序关系1602液晶的proteus正常启动不能更改
for (i=0;i<20;i++)
{
//初始化模式
LCD_write_char(0x30,0); //4bit test
delay_nms(15);
}
LCD_write_char(0x02,0);
delay_nms(1);
//==========================================
LCD_write_char(0x28,0); //四位总线模式显示设置,不检测忙信号
LCD_write_char(0x01,0); //清屏
delay_nms(1);
LCD_write_char(0x06,0); //指针自动增加
delay_nms(1);
LCD_write_char(0x0f,0); //显示光标移动设置
//LCD_write_char(0x0c,0); //不显示光标移动设置
delay_nms(10);
2检查是否空闲,由引脚判断改为掩饰,否则会发生死循环的情况
//等待显示空闲
//while (!( LCD_DATA_PIN & 0x80 ) == 0); //RW=1,读PD7,为0表示空闲;
delay_nms(1); //仿真用,代替忙标志查询
3应用4线制数据通信的时候,除了8为的数据要写两次外,读的时候也必须读两次,否则会出错
data must be sent or received in 2operations.
//由于采用四位数据方式,读也要读两次,否则会出错
//===============================================
LCD_EN_PORT |= LCD_EN; //EN=1
//等待显示空闲
//while (!( LCD_DATA_PIN & 0x80 ) == 0); //RW=1,读PD7,为0表示空闲;
delay_nms(1); //仿真用,代替忙标志查询
LCD_EN_PORT &= ~LCD_EN; //EN=0
delay_nms(1);
LCD_EN_PORT |= LCD_EN; //EN=1
//等待显示空闲
//while (!( LCD_DATA_PIN & 0x80 ) == 0); //RW=1,读PD7,为0表示空闲;
delay_nms(1); //仿真用,代替忙标志查询
LCD_EN_PORT &= ~LCD_EN; //EN=0
//===============================================
点击此处下载 ourdev_581843RJ11G1.rar(文件大小:359K) (原文件名:1602.rar) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|