#include <avr/io.h>
//******* LCD 1602地址数据端口定义 *********
#define lcd_bus PORTA // 1602数据口
#define lcd_con PORTC // 1602控制口
#define rs0 lcd_con & 0xfe // rs=0
#define rs1 lcd_con | 0x01 // rs=1
#define rw0 lcd_con & 0xfd // rw=0
#define rw1 lcd_con | 0x02 // rw=1
#define e0 lcd_con & 0xfb // e=0
#define e1 lcd_con | 0x04 // e=1
//************************************************
// 显示延时子程序
//************************************************
void lcddelay()
{
unsigned int j;
for (j=400;j>0;j--);
}
//************************************************
// 初始化延时子程序
//************************************************
void inidelay()
{
unsigned int j;
for (j=20000;j>0;j--);
}
//************************************************
// lcd1602写指令子程序
//************************************************
void enable_lcd()
{
lcd_con=rs0; //写指令时序rs=0
lcd_con=rw0; //rw=0
lcd_con=e0; //e=0
lcddelay(); //调显示延时子程序
lcd_con=e1; //e=1
}
//************************************************
// lcd1602写数据子程序
//************************************************
void data_lcd()
{
lcd_con=rs1; //写数据时序rs=1;
lcd_con=rw0; //rw=0
lcd_con=e0; //e=0
lcddelay(); //调显示延时子程序
lcd_con=e1; //e=1
}
//************************************************
// lcd1602初始化子程序
//************************************************
void init_lcd()
{
lcd_bus=0x01; //清屏
enable_lcd();
lcd_bus=0x38; //显示功能,2行显示 ,5*7
enable_lcd();
lcd_bus=0x0c; //显示开关
enable_lcd();
lcd_bus=0x06; //显示模式 ,光标移动
enable_lcd();
}
//************************************************
// 显示数据子程序
//************************************************
void lcd_show()
{
lcd_bus=0x80; //设置数据存储器起始地址 ,第一行起始地址80h,
//第二行起始地址为C0H
enable_lcd(); //调写指令子程序
lcd_bus='A';
data_lcd(); //调写数据子程序
lcd_bus='V';
data_lcd();
lcd_bus='R';
data_lcd();
lcd_bus=' ';
data_lcd();
lcd_bus='s';
data_lcd();
lcd_bus='y';
data_lcd();
lcd_bus='s';
data_lcd();
lcd_bus='t';
data_lcd();
lcd_bus='e';
data_lcd();
lcd_bus='m';
data_lcd();
}
//***************** 主程序 ********************//
int main(void)
{
//****************初始化*****************************//
inidelay();
DDRA=0xff;
DDRC=0xff;
init_lcd(); //LCD初始化子程序
do
{
lcd_show();
}
while(1);
}
atmega8l-8pu.rar
(26.26 KB, 下载次数: 9)
|