钻石会员
主题
帖子
积分11063
阅读权限50
注册时间2009-12-25
最后登录1970-1-1
在线时间 小时
|
点不亮三星的vfd,请注意
一:vfd的冷启动时间很长的,你设置延时2000ms好了。
二:如果是4bit驱动的话,请考虑冷启动后的,发送4bit模式命令,其实是分前半部分跟后半部分的哦。
大多数代码都是连续发送多次:hd44780_4Bit_command(LCD_FUNCTION_4BIT_2LINES); // 显示模式设置
或者用蓝字的代码
到了vfd就不一定能用了。
请参考下面代码
void hd44780_4Bit_Reset( void )
{
unsigned char i;
DB7=0;
DB6=0;
DB5=0;
DB4=0;
Elcm=0;
RS=0;
// LDE_VO=0;
// LDE_VO_DDR=1; //设置LDE_VO输出低电平,打开对比度
// LED_OUT;//用强上拉串电阻来驱动三级管
// LED_1;//在关闭强上拉,打开弱上拉,如果是打开强上拉的话,输出高电流
DDR_RS = 1;
// DDR_RW = 1;
DDR_Elcm = 1;
DDR_DB7 = 1;
DDR_DB6 = 1;
DDR_DB5 = 1;
DDR_DB4 = 1;
hd44780_4Bit_delay_ms(2000); //预留时间给LCD模块启动时间
/*
00110011 0x33
00110010 0x32
如果用4bit连续发送这两个字符,并适当延时,就相当于:
一:在4bit硬件中的8bit状态发送了,
00110000 0x30
00110000 0x30
00110000 0x30
00100000 0x20 //相当于发送0b00100000 4bit模式命令 LCD_FUNCTION_4BIT_1LINE
二:在4bit硬件中的4bit状态发送了,
00110011 0x33 //在4bit硬件中的4bit状态转成8bit模式,硬件还是4bit
00110000 0x33 //在4bit硬件中的8bit状态,发送0x33命令,
00100000 0x20 //相当于发送0b00100000 4bit模式命令 LCD_FUNCTION_4BIT_1LINE
//折中刚好可以设置成4bit模式
//>>>
hd44780_4Bit_command(0x33);
hd44780_4Bit_delay_ms(100);
hd44780_4Bit_command(0x32);
hd44780_4Bit_delay_ms(100);
///<<<<
//但是Noritake的1602VFD屏幕,接口功能4bit或8bit设定之后的第一个字节是亮度调整参数。
//这种方法不通用
*/
#ifdef LCD_4BIT
//设置为4bit模式
//相当于发送0b00100000 4bit模式命令
//4bit硬件下的LCD_FUNCTION_4BIT_2LINES命令的前半部分。
DB4=0;
DB5=1;
DB6=0;
DB7=0;
hd44780_4Bit_lcd_e_toggle;
hd44780_4Bit_delay_ms(100);
#endif
hd44780_4Bit_command(LCD_FUNCTION_4BIT_2LINES); // 显示模式设置
hd44780_4Bit_data( 0 ); // Noritake的1602VFD屏幕,接口功能设定之后的第一个字节是亮度调整参数。
hd44780_4Bit_command(LCD_FUNCTION_4BIT_2LINES); // 显示模式设置
hd44780_4Bit_data( 0 ); // Noritake的1602VFD屏幕,接口功能设定之后的第一个字节是亮度调整参数。
hd44780_4Bit_command(LCD_DISP_OFF); // 显示关闭
hd44780_4Bit_command(LCD_CLR); // clear display 显示清屏
//如果是vfd屏幕,发出清除画面指令后一定要等待2.3mS以上才可接着发出下一条指令
hd44780_4Bit_delay_ms(400); //预留时间给LCD模块启动时间
hd44780_4Bit_command(0x06); // 显示光标移动设置
hd44780_4Bit_command( LCD_HOME ); // 光标返回HOME
hd44780_4Bit_command(LCD_DISP_ON); // 显示开及光标设置
// DispOneChar(0,0,'Y');
/*
lcd_data( 'Y' ); // 写字符
lcd_data( 'U' ); // 写字符
lcd_data( 'K' ); // 写字符
lcd_data( 'I' ); // 写字符
lcd_data( '_' ); // 写字符
lcd_data( '1' ); // 写字符
lcd_data( '6' ); // 写字符
lcd_data( '0' ); // 写字符
lcd_data( '2'); // 写字符
lcd_data( 'L' ); // 写字符
lcd_data( 'C' ); // 写字符
lcd_data( 'D' ); // 写字符
*/
关键是红字的代码。 |
|