freetech

HCS08单片机驱动字符液晶1602的实验程序

0
阅读(2150)

1、实验功能介绍

本实验单的IO口控制1602字符液晶的显示。做本实验时需将拨码开关“SW2”和“SW6”的所有位拨到“ON”位置。

2、流程图

clip_image002

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 */
}