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

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);
}
时间: 2024-10-04 13:47:07

LCD显示--Ht1621b芯片显示屏驱动的相关文章

LCD显示--HT1621b芯片驱动程序

HT1621b芯片驱动程序 CS : 片选输入接一上拉电阻当/CS 为高电平读写HT1621的数据和命令无效串行接口电路复位当/CS 为低电平和作为输入时读写HT1621的数据和命令有效. WR : WRITE脉冲输入接一上拉电阻在/WR 信号的上升沿 DATA线上的数据写到HT1621. DATA : 外接上拉电阻的串行数据输入/输出. /* Includes ------------------------------------------------------------------*

LCD显示--TM1640芯片驱动程序

TM1640芯片驱动 DIN:串行数据输入,输入数据在 SCLK 的低电平变化,在 SCLK 的高电平被传输. SCLK:在上升沿输入数据 . /* Includes ------------------------------------------------------------------*/ #include "stm8s.h" #include "global.h" #include "string.h" /* Private ty

LCD显示方向

一.ILI9341内存到显示地址的映射 本文只讨论“正常显示”,不讨论“垂直滚动显示”模式. 可以看到物理内存被两个指针访问,行指针和列指针,行指针范围从000h到013Fh,列指针范围为0000h到00EFh.也就是说,物理内存和LCD显示屏的对应关系是一种竖屏(240*320)的对应的关系.至于如何让GRAM数据显示到LCD屏上,不需要我们去考虑,只要知道这种对应关系就可以了. 那么ILI9341有8种显示方式:左上角->右下角(竖屏).左下角->右上角(竖屏).右上角->左下角(竖

在emwin中显示字库芯片GT23L24M0140的字模

?? 在emwin中显示字库芯片GT23L24M0140的字模 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN8 开发环境:MDK5.13 mcu: stm32f407VGIGH6 emwin: STemWin5.22 字库芯片:GT23L24M0140 说明: 项目中需要显示生僻字,所以不能使用GB2312,选择字库芯片GT23L24M0140,支持GB18030标准. 难点在于在emwin中嵌入此字库芯片的字符,emwin

内核启动后,lcd显示logo失败

针对-s5pv210,但对其他平台也使用 lcd显示logo失败,若显示成功默认的logo是一只企鹅,但是串口打印"Start display and show logo",但是LCD屏没有显示 [ 0.833071] s3cfb s3cfb: [fb2] dma: 0x465ab000, cpu: 0xe1000000, size: 0x005dc000 [ 0.845112] FIMD src sclk = 166750000 [ 0.965701] s3cfb s3cfb: re

mini2440裸机试炼之—计算器(LCD显示,触摸屏中断)

基于T35 TFT LCD屏实现功能: 1. 在屏幕上画一个计算器界面,包括0-9,+,-,*,/: 2. 实现触摸选择界面上的数字和运算符, 3. 并计算出结果显示在显示框内. 注意,只实现整数功能,没涉及小数,只实现一次运算,不保存上次运算结果. 实现界面: 实现过程: 开启LCD电源,初始化LCD>>>LCD填充界面图片>>>开启触摸屏中断>>>获取键值>>>区分数字和功能来调用数字图片显示.   数字图片: 空白图: 除数为零

mini2440裸试验—计算器(LCD显示,触摸屏突破)

关于Pait_Bmp(x0, y0, x, y, BMPaddr);函数 像素图在屏幕左上角为(0,0),Pait_Bmp中的x0.y0分别像素点初始位置,x,y为BMP图片的X,Y的大小.BMPaddr为BMP图片转换的数组地址 基于T35 TFT LCD屏实现功能: 1. 在屏幕上画一个计算器界面,包含0-9,+.-,*./: 2. 实现触摸选择界面上的数字和运算符. 3. 并计算出结果显示在显示框内. 注意.仅仅实现整数功能,没涉及小数.仅仅实现一次运算,不保存上次运算结果. 实现界面:

Raspberry PI Model B+ (LCD显示CPU温度)

Title:Raspberry PI Model B+ (LCD显示CPU温度)  --2015-01-29 17:44 买了块连接Raspberry PI Model B+的LCD显示器,上面没写CPU温度,就加工了下. 修改后的pcd8544_rpi.c: /* ================================================================================= Name : pcd8544_rpi.c Version : 0.1

东芝线阵CCD芯片TCD1305DG驱动时序设计

最近在做微型光谱仪,用到了东芝的CCD芯片TCD1305DG,该芯片是单行3648像素,输出信号是时间上离散的模拟信号,典型输出速率为0.5M,即每2000ns输出一个像素值(模拟信号),芯片内部集成了相关双采样电路,直接输出稳定的像元电压值,而不是传统的三阶梯信号.TCD1305DG需要三路驱动信号,分别是主时钟CLK,移位输出信号SH,积分清除信号ICG,芯片手册上给出的时序波形如下: 图1 TCD1305DG驱动时序 该CCD的基本工作原理如下:光敏元接收外部光信号并将其转换为电荷储存在光