📄 lcdtest.c
字号:
#include <iom16v.h>
#include <macros.h>
#define Enableon PORTB |=BIT(3); //EN
#define Enableoff PORTB &=~BIT(3);
#define Dion PORTB |=BIT(5); //DI
#define Dioff PORTB &=~BIT(5);
#define RWon PORTB |=BIT(4); //RW
#define RWoff PORTB &=~BIT(4);
extern const unsigned char dis1[] = {"AVR Demo Board"};
extern const unsigned char dis2[] = {"98dian@163.com"};
void delay(unsigned char ms)
{ // 延时子程序
int i;
while(ms--)
{
for(i = 0; i< 250; i++)
{
NOP();
NOP();
NOP();
NOP();
}
}
}
void LCD_wait(void) //等待LCD空闲
{
DDRC=0x00;
Dioff;
RWon;
DDRC=0x00;
NOP();
Enableon;
while(PINC&0x80);
Enableoff;
DDRC=0xff; //output
}
void write_command(unsigned char cmd) //写指令使能
{
LCD_wait();
Dioff;
RWoff;
Enableoff;
NOP();
Enableon;
PORTC=cmd;
Enableoff;
}
void lcd_pos(unsigned char pos)
{ //设定显示位置
write_command(pos | 0x80);
}
void write_data(unsigned char dat)
{
LCD_wait();
Dion;
RWoff;
Enableoff;
NOP();
Enableon;
PORTC=dat;
Enableoff;
}
void lcd_init(void)
{
delay(15); //LCD初始化设定
write_command(0x38); //
delay(100);
write_command(0x01); //清除LCD的显示内容
write_command(0x06); //
write_command(0x0c); //
}
void main(void)
{
char i;
DDRC=0xff;
DDRB=0xff;
lcd_init(); // 初始化LCD
delay(100);
lcd_pos(1); // 设置显示位置
i = 0;
while(1){
while(dis1[i] != '\0')
{ // 显示字符
write_data(dis1[i]);
i++;
}
lcd_pos(0x41); // 设置显示位置
i = 0;
while(dis2[i] != '\0')
{
write_data(dis2[i]); // 显示字符
i++;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -