#include #include #include"delay.h" #define uchar unsigned char #define uint unsigned int
uchar table[]="i like you!";
void a1602_int(void) { DDRC|=0x07;//控制为 设置为输出 PORTA=0XFF;//很重要 哦 要不数据无法传输 默认为高阻态 不能流通 不用设置为输入 DDRA=0XFF; PORTC|=BIT(6);//pc6设置为输出高 这样显示器才亮哦 DDRC&=~BIT(6); PORTC&=~BIT(2);//使能端初始化为低 delay_nms(10); a1602_write_com(0x38);//显示设置命令 delay_nms(10); a1602_write_com(0x0f);//开显示光标闪烁 delay_nms(10); a1602_write_com(0x06);//光标加1 delay_nms(10); a1602_write_com(0x01);//清屏 delay_nms(10); a1602_write_com(0x80);//数据指针初始化 delay_nms(10);
}
void a1602_write_com(uchar com) { PORTC&=~BIT(0);//RS LOW 写指令 PORTC&=~BIT(1);//选择 为写 PORTA=com;//将a传送给数据口 PORTC|=BIT(2);//使能端 设置为高 开始发送数据 // delay_nms(10);//延时5ms PORTC&=~BIT(2);//使能端 设置为低 发送数据结束
delay_nms(10);//延时5ms }
void a1602_write_dat(uchar dat) { PORTC|=BIT(0);//RS high 写数据 PORTC&=~BIT(1);//选择 为写 PORTA=dat;//将a传送给数据口 PORTC|=BIT(2);//使能端 设置为高 开始发送数据
//delay_nms(10);//延时5ms PORTC&=~BIT(2);//使能端 设置为低 发送数据结束2);//使能端 设置为低 发送数据结束
delay_nms(10);//延时5ms
} //x为第几位开始0-15 y=0第一行 其他第二行 *s=“abc”要写入的字母 数字 void lcd_write_str(uchar x,uchar y,uchar *s)//指针形式 读取字符串哦! {
if(y==0) { a1602_write_com(0x80+x); } else { a1602_write_com(0xc0+x); } while(*s) { a1602_write_dat(*s); //delay_nms(500);//实现延时输入哦 s++; }
}
//单个字符输入 实现延时输入 void lcd_write_char(uchar x,uchar y,uchar dat)//指针形式 读取字符串哦! {
if(y==0) { a1602_write_com(0x80+x); } else { a1602_write_com(0xc0+x); } a1602_write_dat(dat);
}
void main(void) { uchar i; a1602_int(); //a1602_write_dat('s'); lcd_write_str(0,0,"123456789"); lcd_write_char(0,1,'1'); }
|