DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1203|回复: 0
打印 上一主题 下一主题

PIC16F72单片机控制HT1621B驱动LCD

  [复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 19:44:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  
         
    //PIC16C72单片机控制HT1621B驱动LCD
#include
#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);                        //全显示
  }                                         
}  
  
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-7-16 05:30 , 耗时 0.084947 秒, 16 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表