一、1602 管脚说明 1.Vss 电源地 ; 2.Vdd 电源正极 4.5~5.5V 通常使用 5V; 3.Vl 对比度调节 电源调节范围 0~5V。接正电源时对比度最弱,接地对比度最高,但是对比度过高时产生“鬼影”,因此通常使用一个 10K 电位器来调整对比度,或者直接接一个电阻到地; 4.Rs 数据/命令选择 高电平选择数据寄存器,低电平选择指令寄存器; 5.R/W 读/写选择 高电平读取数据,低电平写入数据; 6.E 模块使能端 写数据需要下降沿触发模块; 7~14.D0~D7 三态双向数据口 MCU I/O 口资源紧张可以使用 4 位数据线 D4~D7 接口传送数据; 15.Blk 背光源地 16.Bla 背光源正极 需要背光串接一个限流电阻接 Vdd,blk 接地,实测该模块背光电流 50mA 左右。 二、试验接法 Vdd、Bla -- Vcc Vss、Vl、Blk -- Gnd Rs -- Pd0 R/W -- Pd1 E -- Pd2 D1~D7 -- Pb0~Pb7 三、测试程序 /************************************************* LCD 演示程序(ICCAVR) 学习 AVR 单片机的 LCD 显示 MUC: ATMEGA16 D0~D7: PB0~PB7 RS--PD0 R/W--PD1 E--PD2 CLOCK: 8MHz *************************************************/ #include #define XTAL 8 #define RS 0 #define RW 1 #define E 2 #define lcd_data_port PORTB #define lcd_data_dir DDRB #define lcd_data_pin PINB #define lcd_ctrl_port PORTD #define lcd_ctrl_dir DDRD #define lcd_ctrl_pin PIND #define delay() delay_us(80) #define set_bit(x,y) (x|=(1<1); } // 毫秒级延时程序 void delay_ms(unsigned int time) { while(time!=0) { delay_us(1000); time--; } } void lcd_port_init(void) { lcd_data_dir=0; //设置数据输入模式 lcd_data_port=0; /...