是马老师书的例子,我试过,管用,用的是CVAVR开发环境,运行后在第一行显示its demo_6_8.c,第二行显示Hello world! this is a lCd display demo.
注意接线:用的是mega16 ,将lcd的PB7,pb6,pb5,pb4接到avr 的pc7,pc6,pc5,pc4引脚上。
程序如下:/*********************************************
File name : demo_6_8.c
Chip type : ATmega16
Program type : Application
Clock frequency : 4.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*********************************************/
#include <mega16.h>
#include <delay.h>
#asm
.equ __lcd_port=0x15 ; PORTC数据寄存器地址
#endasm
/* [LCD]
1 GND- 9 GND
2 +5V- 10 VCC
3 VLC- LCD HEADER Vo
4 RS - 1 PC0 (M16)
5 RD - 2 PC1 (M16)
6 EN - 3 PC2 (M16)
11 D4 - 5 PC4 (M16)
12 D5 - 6 PC5 (M16)
13 D6 - 7 PC6 (M16)
14 D7 - 8 PC7 (M16) */
#include <lcd.h>
flash unsigned char dis_str[]="Hello World! This is a LCD display demo.";
void main(void)
{
unsigned char flash *str;
str = dis_str;
lcd_init(16); // initialize the LCD for 2 lines & 16 columns
while(1)
{
lcd_clear(); // clere the LCD
lcd_putsf("It's demo_6_8.c"); // display the message
lcd_gotoxy(0,1); // go on the second LCD line
lcd_putsf(str); // display the message
if (*str++ == 0) str = dis_str;
delay_ms(500);
}
}
参考资料:引用马潮老师课本