⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ht1621.c

📁 pic单片机驱动HT1621的液晶显示源代码
💻 C
字号:
//PIC16C72单片机控制HT1621B驱动LCD
#include <pic18.h>
#define BIAS 0X50                        //1/2偏压,4背极
#define RC256 0X30                       //系统时钟选择为片内RC振荡器
#define WDTDIS1 0X0A                     //禁止WDT溢出标志输出
#define TIMERDIS 0X08                    //时基输出禁能
#define SYSEN 0X02                       //打开系统时钟
#define LCDON 0X06                       //打开偏压发生器
#define SYSDIS 0X00                      //关闭系统时钟和偏压发生器

#define CS RB5
#define WR RB6
#define DATA RB7
#define uchar unsigned char
#define uint unsigned int

void SENDBYTE (uchar dat);  
void SENDBIT (uchar dat,uchar bitcnt);       
//***************************延时子函数****************
void delay()                             //延时
{
 uchar i=0;
 while(i<10)
   i++; 
}
void delay1s()                           //延时1S
{
 uchar i;
 uint j;
 for(i=0;i<10;i++)
    for(j=0;j<1300;j++);
}
//**************************HT1621B初始化**************
void START_HT1621()                      //初始化HT1621
{
 CS=1;
 WR=1;
 DATA=1;
 delay();
 CS=0;
 CS=0;
 WR=0;
 WR=0;
}
//*************************发送命令子函数A**************
void SENDCOMA(uchar com)                 //发送命令A,ID=100+0
{
 START_HT1621();
 SENDBIT(0X80,4);
 SENDBYTE(com);
}
//*************************发送命令子函数B***********
void SENDCOMB(uchar adr)                 //发送命令B,发送显示数据
{
 START_HT1621();                         //HT1621初始化
 SENDBIT(0XA0,4);                        //发送写数据ID:101+6位LCD之RAM地址第1位
 SENDBIT(adr,5);                         //然后发送地址后5位
}
//*************************发送命令子函数C*****************
void SENDCOMC(uchar com)                 //发送命令C,ID=100+1
{
 START_HT1621();
 SENDBIT(0X90,4);
 SENDBYTE(com);
}
//***********************按位发送数据子函数*****************
void SENDBIT (uchar dat,uchar bitcnt)    //按位发送数据
{
 uchar i;
 for(i=0;i<bitcnt;i++)
   {
     if((dat&0x80)==0X00)                //从最高位发送
       DATA=0;
     else
       DATA=1;
     delay();
     WR=1;                               //在WR的上升沿,数据写入HT1621B
     delay();
     WR=0;
     dat=dat<<1;
   }
}
//*************************发送字节数据子函数*******************
void SENDBYTE (uchar dat)                //发送字节数据
{
 SENDBIT(dat,8);
}
//***************************LCD显示子函数**********************
void display(uchar dat)                  //LCD显示
{
uchar i;
SENDCOMB(0X00);                          //从RAM的0X00地址开始放入数据
for (i=0;i<8;i++)
  {
   SENDBYTE(dat);                        //从SEG0开始显示数据
  }
}
//*************************HT1621B初始化设置*******************
void SETUP_HT1621()                      //HT1621偏压、背极、工作方式设置
{
 SENDCOMA(BIAS);                         
 SENDCOMA(RC256);
 SENDCOMA(SYSEN);
 delay1s();
 SENDCOMA(LCDON);
 SENDCOMA(WDTDIS1);
 SENDCOMA(TIMERDIS); 
} 
//*******************************主函数*************************
main()                                   //主函数
{
  TRISB=0X00;                            //B口设为输出,以控制HT1621驱动LCD
  SETUP_HT1621();
  while(1)
  {
   display(0XFF);                        //全显示
  }                                         
}  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -