码迷,mamicode.com
首页 > 其他好文 > 详细

LCD显示--Ht1621b芯片显示屏驱动

时间:2014-09-29 10:57:20      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:lcd显示   lcd显示驱动   ht1621   ht1621b   lcd驱动   

Ht1621b芯片显示屏驱动


关于HT1621b芯片的详细信息可以参考数据手册上的内容:百度文库HT1621b中文资料


以下为芯片驱动程序(STM8单片机):


/* Includes ------------------------------------------------------------------*/
#include "stm8s.h"
#include "global.h"

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
#define  COMMAND_CODE                0x80  //命令码
#define  WRITE_DATA_CODE             0xa0  //写命令
#define  READ_DATA_CODE              0xc0  //读命令
#define  DISPLAY_BEGIN_ADDR          (0X0F << 2) //显示起始地址
#define  SYS_EN                      0x02
#define  RC_256K                     0x30
#define  BIAS_13                     0x52
#define  TONE_ON                     0x12  //打开声音输出
#define  TONE_OFF                    0x10
#define  TONE_2K                     0xc0
#define  TONE_4K                     0x80
#define  LCD_ON                      0x06          

/* Private variables ---------------------------------------------------------*/
void Ht1621_WriteCommand(uint8_t Cmd);
void Ht1621_WriteNBit(uint8_t BitCnt, uint8_t wData);
/* Public functions ----------------------------------------------------------*/
void Ht1621_Init(void);
void Ht1621_WriteData(const uint8_t *wDataBuf);
void Ht1621_BuzzerControl(uint8_t RunFlag);


/*******************************************************************************
函数:延时函数 ms 
参数: 
返回值:无
*******************************************************************************/
void Ht1621_Delay(uint8_t ms)
{
   unsigned short jj;
   for (jj = 1; jj <= ms; jj++)
   {
      nop();
   }
}

/*******************************************************************************
函数:HT1621初始化
参数: 
返回值:无
*******************************************************************************/
void Ht1621_Init(void)
{  
   Ht1621_WriteCommand(SYS_EN);   //SYS_EN 打开系统振荡器
   Ht1621_Delay(5);
   
   Ht1621_WriteCommand(RC_256K);   //RC_256K 系统时钟源 片内RC振荡器
   Ht1621_Delay(5);
   
   Ht1621_WriteCommand(BIAS_13);  //BIAS13 4个公共口 
   Ht1621_Delay(5);
   
   Ht1621_WriteCommand(TONE_4K);  //TONE_2KC0  TONE_4K80 
   Ht1621_Delay(5);
   
   Ht1621_WriteCommand(LCD_ON);   //LCD_ON 打开LCD偏压发生器
   Ht1621_Delay(5);
}


/*******************************************************************************
函数:HT1621 写一字节数据
参数: 写数据的为位数 和 数据
返回值:无
*******************************************************************************/
void Ht1621_WriteNBit(uint8_t wData , uint8_t BitCnt)
{
   uint8_t i;
   
   for(i=0; i< BitCnt; i++)
   {
      Ht1621WrLow;
      Ht1621_Delay(2);
      
      if((wData << i) & 0x80)
      {
         Ht1621DataHigh;
      }
      else 
      {
         Ht1621DataLow;
      }
      Ht1621_Delay(2);
      
      Ht1621WrHigh;
      Ht1621_Delay(2);
   }
}

/*******************************************************************************
函数:HT1621 写数据操作(连续写  3位写操作命令+6位地址+ ...数据)
参数: 写数据指针
返回值:无
*******************************************************************************/
void Ht1621_WriteData(const uint8_t *wDataBuf)
{
   uint8_t i;
      
   Ht1621CsLow;
   Ht1621_Delay(2);
      
   Ht1621_WriteNBit(WRITE_DATA_CODE, 3);
   Ht1621_WriteNBit(DISPLAY_BEGIN_ADDR, 6);            //TODO: 20140820  hzg  注意要对应原理图上的起始地址
   
   for(i=0; i<12; i++)                                 
   {
    Ht1621_WriteNBit(wDataBuf[i], 8);  
   }
   
   Ht1621CsHigh;
   Ht1621_Delay(2);
}

/*******************************************************************************
函数:HT1621 写命令操作(12位命令数据)
参数: 命令值
返回值:无
*******************************************************************************/
void Ht1621_WriteCommand(uint8_t Cmd)
{
   Ht1621CsLow;
   Ht1621_Delay(2);
   
   Ht1621_WriteNBit(COMMAND_CODE, 4);       
   Ht1621_WriteNBit(Cmd, 8);
   
   Ht1621CsHigh;
   Ht1621_Delay(2);
}

/*******************************************************************************
函数:HT1621 蜂鸣器输出控制(12位命令数据)
参数: 开关标志
返回值:无
*******************************************************************************/
void Ht1621_BuzzerControl(uint8_t RunFlag)
{
   (RunFlag == 0)?Ht1621_WriteCommand(TONE_OFF):Ht1621_WriteCommand(TONE_ON);
}


LCD显示--Ht1621b芯片显示屏驱动

标签:lcd显示   lcd显示驱动   ht1621   ht1621b   lcd驱动   

原文地址:http://blog.csdn.net/a656343072/article/details/39666323

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!