📄 disp_test.c
字号:
#include <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
#define RS PA0 //LCD的RS信号
#define RW PA1 //LCD的RW信号
#define E PA2 //LCD的E 信号
#define RST PB1 //LCD的RST信号
#define SPEAKER PA4
void delay(uint); //延时子程序
void MCU_initial(void); //MCU初始化
void LCD_initial(void); //LCD初始化
void LcdWrite(uchar rd,uchar data); //LCD写函数,rd=0表示写命令,=1表示写数据
uchar LcdReadCom(void); //LCD读命令字
void WriteHz(uchar *ptr,uchar row,uchar col); //ptr为要显示的字符,row与col为显示起始的行与列,均从0开始
uchar disp1[]="显示测试";
uchar disp2[]="hanar929";
void main()
{
MCU_initial();
LCD_initial();
WriteHz(disp1,2,2);
WriteHz(disp2,3,1);
}
void MCU_initial()
{
DDRA = 0xff; //定义PA口为输出
DDRC = 0xff;
DDRD = 0xff;
PORTA = 0xff;
// PORTC = 0xff;
PORTD = 0xff;
PORTA&=~BIT(E);
PORTA&=~BIT(SPEAKER);
}
void LCD_initial()
{
PORTB&=~BIT(RST);
delay(5000);
PORTB|=BIT(RST);
LcdWrite(0,0x30); //LCD设置为基本指令集
LcdWrite(0,0x02); //LCD地址归位,游标移至原点
LcdWrite(0,0x04); //LCD游标初始化
LcdWrite(0,0x01); //清屏
LcdWrite(0,0x0E); //LCD开显示
LcdWrite(0,0x80); //设置DDRAM地址归零
}
uchar LcdReadCom(void)
{
uchar data;
PORTA&=~BIT(RS); //PORTA0位置0,即RS=0
PORTA|=BIT(RW); //PORTA1位置1,即RW=1
PORTA|=BIT(E); //PORTA2位置1,即E =1
DDRC&=0x00;
PORTC|=0x80;
data = PINC;
delay(200);
DDRC=0xff;
PORTA&=~BIT(E); //PORTA2位置0,即E =0
return data;
}
void LcdBusy()
{
uchar busy;
do{
busy = LcdReadCom();
}while(busy&0x80);
}
void LcdWrite(uchar rd,uchar data)
{
LcdBusy();
if(rd == 0) //command
PORTA&=~BIT(RS); //RS=0
else PORTA|=BIT(RS); //RS=1,data
PORTA&=~BIT(RW); //RW=0
DDRC = 0xff;
PORTC = 0xff;
NOP();
PORTC = data;
PORTA|=BIT(E); //E =1
delay(500);
PORTA&=~BIT(E); //E =0
}
void WriteHz(uchar *ptr,uchar row,uchar col) //ptr为要显示的字符,row与col为显示起始的行与列,均从0开始
{
uchar addr,i;
switch(row) //设定显示起始的行号
{
case 0: addr = 0x80;break;
case 1: addr = 0x90;break;
case 2: addr = 0x88;break;
case 3: addr = 0x98;break;
default:addr = 0x80;break;
}
addr+=col;
LcdWrite(0,addr);
for(i = 0;*(ptr+i) != 0;i++)
LcdWrite(1,*(ptr+i));
}
void delay(uint timer)
{
for(;timer>0;timer--);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -