#include
#include"1602.h"
uchar L[]="L I Miss You";
void display()//显示函数
{
write_com(0x80);
show_string(L);//显示字符串
}
void init()//初始化函数
{
DDRC=0xff;//全部设置为输出
DDRA|=(1<<7)|(1<<6);//设置PA口的第6位(1602的rs控制脚)和第7位(1602的en控制脚)为输出
init_1602();//1602液晶初始化
}
int main()
{
init();
display();
while(1);
}
//1602液晶显示头文件
#define uint unsigned int
#define uchar unsigned char
//PA口的第6位(1602的rs控制脚)和第7位(1602的en控制脚)
#define lcdrs0 PORTA &= ~(1 << 6)//第6位输出低电平
#define lcdrs1 PORTA |= (1 << 6)//第6位输出高电平
#define lcden0 PORTA &= ~(1 << 7)//第7位输出低电平
#define lcden1 PORTA |= (1 << 7)//第7位输出高电平
void write_com(uchar com)//写命令函数
{
lcdrs0;
PORTC=com;
_delay_ms(5);
lcden1;
_delay_ms(5);
lcden0;
}
void write_date(uchar date)//写数据函数
{
lcdrs1;
PORTC=date;
_delay_ms(5);
lcden1;
_delay_ms(5);
lcden0;
}
void init_1602()//1602液晶初始化函数
{
lcden0;
write_com(0x38);//设置1602显示模式为5*7点阵
_delay_ms(5);
write_com(0x01);//清屏
_delay_ms(5);
write_com(0x0c);//开显示,不显示光标,光标不闪烁
_delay_ms(5);
write_com(0x06);//设置当读或写一个字符后,地址指针加一,且光标加一
_delay_ms(5);
//write_com(0x80);//设置写数据起始地址
}
void show_string(uchar *string)//显示字符串函数
{
while(*string)
{
write_date(*string++);
}
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』