Ht1621b芯片显示屏驱动

关于HT1621b芯片的具体信息能够參考数据手冊上的内容:百度文库HT1621b中文资料

CS : 片选输入接一上拉电阻当/CS 为高电平读写HT1621的数据和命令无效串行接口电路复位当/CS 为低电平和作为输入时读写HT1621的数据和命令有效.

WR : WRITE脉冲输入接一上拉电阻在/WR 信号的上升沿 DATA线上的数据写到HT1621.

DATA : 外接上拉电阻的串行数据输入/输出.

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

#include "stm8s.h"
#include "global.h" /* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
//显示芯片HT1621引脚定义
#define HT1621_CS_PORT GPIOC
#define HT1621_CS_PIN GPIO_PIN_7
#define Ht1621CsHigh (HT1621_CS_PORT->ODR |= (u8)(HT1621_CS_PIN))
#define Ht1621CsLow (HT1621_CS_PORT->ODR &= (u8)(~HT1621_CS_PIN)) #define HT1621_WR_PORT GPIOC
#define HT1621_WR_PIN GPIO_PIN_6
#define Ht1621WrHigh (HT1621_WR_PORT->ODR |= (u8)(HT1621_WR_PIN))
#define Ht1621WrLow (HT1621_WR_PORT->ODR &= (u8)(~HT1621_WR_PIN)) #define HT1621_DATA_PORT GPIOC
#define HT1621_DATA_PIN GPIO_PIN_5
#define Ht1621DataHigh (HT1621_DATA_PORT->ODR |= (u8)(HT1621_DATA_PIN))
#define Ht1621DataLow (HT1621_DATA_PORT->ODR &= (u8)(~HT1621_DATA_PIN)) //LCD屏背光PWM设定
#define BLACK_LIGHT_PORT GPIOD
#define BLACK_LIGHT_PIN GPIO_PIN_3
#define LedPwmDuty(A) TIM2->CCR2H = (u8)((A)>> 8);TIM2->CCR2L = (u8)(A);
#define LedOn() TIM2->CCER1 |= TIM2_CCER1_CC2E
#define LedOff() TIM2->CCER1 &= (~TIM2_CCER1_CC2E) #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芯片显示屏驱动的更多相关文章

  1. FPGA驱动LCD显示红绿蓝彩条

    实验目的:先简单熟悉LCD灯的驱动和时序图的代码实现.设计功能是让LCD显示红绿蓝三种颜色,即三个彩带.本次实验比较容易实现,主要是对LCD驱动时序图的理解和时序参数的配置. 实验条件:1.LCD原理 ...

  2. 基于NIOS-II的示波器:PART1 按键&显示屏驱动&界面

    NIOS II 相关资料以及基础入门 <NiosII的奇幻漂流> <Nios II那些事儿> 本文所有的硬件基础以及工程参考来自魏坤示波仪,重新实现驱动并重构工程. 基于NIO ...

  3. TFT LCD显示原理详解

    <什么是液晶> 我们一般认为物体有三态:固态.液态.气态,其实这只是针对水而言,有一些有机化和物 还有介于固态和液态中间的状态 就是液晶态,如下图(一):                 ...

  4. u-boot支持LCD显示(基于TQ2440)【转】

    本文转载自:http://www.cnblogs.com/pengdonglin137/p/4633877.html u-boot支持LCD显示(基于TQ2440)   阅读目录(Content) 平 ...

  5. LCD显示方向

    一.ILI9341内存到显示地址的映射 本文只讨论“正常显示”,不讨论“垂直滚动显示”模式. 可以看到物理内存被两个指针访问,行指针和列指针,行指针范围从000h到013Fh,列指针范围为0000h到 ...

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

    关于Pait_Bmp(x0, y0, x, y, BMPaddr);函数 像素图在屏幕左上角为(0,0),Pait_Bmp中的x0.y0分别像素点初始位置,x,y为BMP图片的X,Y的大小.BMPad ...

  7. 2.数码相框-编码(ASCII/GB2312/Unicode)介绍,并使LCD显示汉字字符(2)

    在上章-学习了数码相框的框架分析(1)了 本章主要内容如下: 1)熟悉ASCII/GB2312/Unicode编码 2)写应用程序,使LCD显示汉字和字符 大家都知道,数据传输的是二进制,而字符和汉字 ...

  8. LCD显示异常分析——撕裂(tear effect)【转】

    转自:LCD显示异常分析--撕裂(tear effect) 概述 在上一篇<LCD显示异常分析--开机闪现花屏>中,我们一起分析了开机花屏的问题,在这一篇中,我将对LCD撕裂(tear e ...

  9. LCD显示异常分析——开机闪现花屏【转】

    转自LCD显示异常分析--开机闪现花屏 最近在工作中,有同事遇到LCD开机瞬间会闪现雪花屏的问题,而这类问题都有个共同点,那就是都发生在带GRAM的屏上,同样的问题,在休眠唤醒时也会出现. 其实这类问 ...

随机推荐

  1. Android 锁屏状态/锁屏密码等相关

    Android 锁屏状态/锁屏密码等相关 开始是在设备管理器方面找方法,但一直不行,可能在公司系统组同事的帮助下,知道KeyguardManager这个类 /** * 当前系统锁屏是否有密码 * @p ...

  2. android 网络交互

    一. 在Android中,发送和处理http请求实在太常见了,以至于我们经常需要写这方面的代码. Android中网络交互的代码不能在UI线程中执行,只能在额外的子线程中执行. 我一般的做法是通过创建 ...

  3. solr 从零学习开始

    2010-10 目 录 1 1.1 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.3 1.3.1 1.3.2 1.4 1.4.1 1.4.2 1.4. ...

  4. SQL Server截取字符串和处理中文技巧

    一 环境介绍 SQL  Server PRINT @@VERSION MicrosoftSQLServer2012-11.0.2100.60(X64) Feb10201219:39:15 Copyri ...

  5. IT忍者神龟之Oracle DBA经常使用查询吐血列举

    –1. 查询系统全部对象 select owner, object_name, object_type, created, last_ddl_time, timestamp, status from ...

  6. Microsoft Win32 Programmer's Reference.chm

    实在是太棒了,感谢这位网友: http://download.csdn.net/detail/tgyd6800/9632351

  7. SilkTest Q&A 13

    Q121 :我想要测试 windows2003 上的 remote 应用,但是每次都得到如下的错误 我想要测试 windows2003 上的 remote 应用,但是每次都得到如下的错误: " ...

  8. Codeforces Round #112 (Div. 2)---A. Supercentral Point

    Supercentral Point time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  9. password学3——Java BASE64加密解密

    Base64是网络上最常见的用于传输8Bit字节代码的编码方式之中的一个,大家能够查看RFC2045-RFC2049.上面有MIME的具体规范.Base64编码可用于在HTTP环境下传递较长的标识信息 ...

  10. No enclosing instance of type Hello is accessible

    1.static 关键字 修饰的成员被所有对象共享(包括成员变量和方法). 修饰的成员优先于对象存在. 存储于方法区(共享数据区)的静态区中. 静态方法只能访问静态成员. 静态方法中不可以使用this ...