这是一段基于Atmega16的LCD1602显示程序,程序如下:

lcd.c一块:
#include<iom16v.h>
#include<macros.h>
#define uchar unsigned char
#define unit unsigned int
#include "1602LCD_drive.h"
uchar line1_R[]={" Ding-Ding "};
uchar line2_R[]={"Welcome To You "};
uchar line1_L[]={" gnid-gnid "};
uchar line2_L[]={"! uoy ot emocleW "};
/********闪烁三次函数********/
void lcd_flash()
{
Delay_ms(1000);
lcd_wcmd(0x08);
Delay_ms(500);
lcd_wcmd(0x0c);
Delay_ms(500);
lcd_wcmd(0x08);
Delay_ms(500);
lcd_wcmd(0x0c);
Delay_ms(500);
lcd_wcmd(0x08);
Delay_ms(500);
lcd_wcmd(0x0c);
Delay_ms(500);
}

/********端口设置函数********/
void port_init(void)
{
PORTA=0xff;
DDRA=0xff;
PORTC=0xff;
DDRC=0xff;
}

/********主函数********/
void main()
{
uchar i;
port_init();

lcd_init;
while(1)
{
lcd_clr();
Delay_ms(10);
lcd_wcmd(0x06);
lcd_wcmd(0x00|0x80);
LocateXY(0,0);
i=0;
while(line1_R[i]!='\0')
{
lcd_wdat(line1_R[i]);
i++;
Delay_ms(200);
}
lcd_wcmd(0x40|0x80);
LocateXY(0,1);
i=0;
while(line2_R[i]!='\0')
{
lcd_wdat(line2_R[i]);
i++;
Delay_ms(200);
}
Delay_ms(1000);
lcd_flash();
lcd_clr();
Delay_ms(10);
lcd_wcmd(0x04);
lcd_wcmd(0x0f|0x80);
LocateXY(15,0);
i=0;
while(line1_L[i]!='\0')
{
lcd_wdat(line1_L[i]);
i++;
Delay_ms(200);
}

lcd_wcmd(0x4f|0x80);
LocateXY(15,1);
i=0;
while(line2_L[i]!='\0')
{
lcd_wdat(line2_L[i]);
i++;
Delay_ms(200);
}
Delay_ms(1000);
lcd_flash();
}
}
测试结果为:能让LCD1602发光,但是就是不显示东西,如程序中要显示的字符串,请问这是怎么回事啊??

液晶的那个接可调电阻的引脚上一定要接上 大小可以是10K的电位器 我也曾经出现过这个问题做电压表时追问

谢谢,我也试过你说的这种方法,但是就只是发现这个方法只是改变了方块的明暗,最后自己不停的尝试下,才发现原来是驱动能力的问题,把A口换成B口,问题就解决了!

温馨提示:内容为网友见解,仅供参考
无其他回答

AVR Atmega16的 LCD1602显示程序,要求自己测试过的能够成功完成显示...
define EN_1 PORTD |= (1 << PD6)\/\/微秒级延时程序晶振8MHZ void delay_us(int time){ do { time--;} while (time>1);} \/\/毫秒级延时程序晶振8MHZ void delay_ms(unsigned int time){ while(time!=0){ delay_us(1000);time--;} } \/*显示屏命令写入函数*\/ void LCD_write_...

PCF8563闹铃 中断闹铃设置
void Disp_Time_In_LCD1602( ){ uchar i ;\/\/第一行 年月日 周次;第二行 小时 分秒 Read_Nbyte(SECOND_DATA_BUF, get_time,7);\/\/一次获得所有数据 get_time[0]= get_time[0]&0x7f;\/\/秒 get_time[1]= get_time[1]&0x7f;\/\/分 get_time[2]= get_time[2]&0x3f;\/\/小时 get_time[3]= ...

单片机开题报告范文
火灾报警器可以让百姓的家居生活更加安全,本报警器是一个由单片机控制的火灾烟雾浓度、温度检测系统,它将传感器输出地电压信号进行A\/D转换、滤波、线性化,由单片机将电压值转换为气体浓度和温度送LCD1602液晶显示,并判断是否超过报警上限,若超过,则发出声光报警[1],并将报警情况通过GSM模块发出,同时可以实现消防局对火...

4个DS18B20怎么循环显示温度
先显示某一位数值,延时很小的一段时间后再显示下一位,也就是顺序显示再做循环扫描就可以显示

相似回答