HCS08单片机驱动字符液晶1602的实验程序
0赞1、实验功能介绍
本实验单的IO口控制1602字符液晶的显示。做本实验时需将拨码开关“SW2”和“SW6”的所有位拨到“ON”位置。
2、流程图
3、实验现象
运行“LCD1602实验”,LCD1602液晶屏幕上显示“Free-Tech www.myhcs08.com”字样。
4、程序代码:
#define LCD_DAT PTBD
#define SEG PTCD_PTCD3
//unsigned char t;
#define LCDRS PTCD_PTCD4 //数据指令控制
#define LCDRW PTCD_PTCD5 //读写控制
#define LCDEN PTCD_PTCD6 //液晶屏使能控制
//**********延时函数,延时n*1ms*********
void delay(unsigned char n)
{
int i,j;
for (i=0; i<n; i++)
for (j=0; j<500; j++)
;
}
//*************写命令***************
void Write_Cmd(unsigned char C)
{
LCDEN=1;//使能端,由高电平跳变成低电平时,液晶屏模块执行命令
LCDRS=0;//指令寄存器选择
LCD_DAT=C;
delay(5);
LCDEN=0;
}
//**************写数据**************
void Write_Data(unsigned char D)
{
LCDEN=1;//使能端,由高电平跳变成低电平时,液晶屏模块执行命令
LCDRS=1;//选择数据寄存器
LCD_DAT=D;
delay(5);
LCDEN=0;
}
//**********LCD初始化*****************
void LCD_Init()
{
LCDRS=0;//指令寄存器选择
Write_Cmd(0x01);//清屏
Write_Cmd(0x38);//功能设置8位双行显示5*7点阵
Write_Cmd(0x0F);//开关显示设置
Write_Cmd(0x06);//输入方式设置,光标从左向右移动,内容不移动
}
//============================
//函数名:Init_io初始化I/O
//作用:初始化I/O
//输入参数:无
//返回参数:无
//=============================
void Init_io(void)
{
//io初始值都为0
PTBD = 0xFF;
PTCD_PTCD2=1;
PTCD_PTCD3=1;
PTCD_PTCD4=1;
PTCD_PTCD5=1;
PTCD_PTCD6=1;
//io为输出
PTBDD = 0xFF;
PTCDD_PTCDD2=1;
PTCDD_PTCDD3=1;
PTCDD_PTCDD4=1;
PTCDD_PTCDD5=1;
PTCDD_PTCDD6=1;
//高驱动强度
PTBDS = 0xFF;
PTCDS_PTCDS2=1;
PTCDS_PTCDS3=1;
PTCDS_PTCDS4=1;
PTCDS_PTCDS5=1;
PTCDS_PTCDS6=1;
}
void main(void) {
unsigned char Code1[]="Free-Tech";
unsigned char Code2[]="www.myhcs08.com";
unsigned char m;
EnableInterrupts; /* enable interrupts */
/* include your code here */
Init_io();
//LED,数码管锁存器片选设置
// LED=0;
//DUAN=0;
//WEI=0;
LCDRW=0;//写选择
LCD_Init();
Write_Cmd(0x80+0x01);//写入显示缓冲区起始地址为1行2列
for(m=0;m<9;m++)
{
Write_Data(Code1[m]);
delay(3);
}
Write_Cmd(0x80+0x40);//写入显示缓冲区起始地址为2行1列
for(m=0;m<15;m++)
{
Write_Data(Code2[m]);
delay(3);
}
for(;;) {
__RESET_WATCHDOG(); /* feeds the dog */
} /* loop forever */
/* please make sure that you never leave main */
}

