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