LCD显示--HT1621b芯片驱动程序
HT1621b芯片驱动程序
CS : 片选输入接一上拉电阻当/CS 为高电平读写HT1621的数据和命令无效串行接口电路复位当/CS 为低电平和作为输入时读写HT1621的数据和命令有效.
WR : WRITE脉冲输入接一上拉电阻在/WR 信号的上升沿 DATA线上的数据写到HT1621.
DATA : 外接上拉电阻的串行数据输入/输出.
/* Includes ------------------------------------------------------------------*/
#include "drv_ht1621.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
#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))#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 macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Public functions ----------------------------------------------------------*//*******************************************************************************
函数:LCD背光PWM
参数:
返回值:无
*******************************************************************************/
void TIM2_Configuration(void)
{TIM2_DeInit();TIM2_TimeBaseInit(TIM2_PRESCALER_1, 640); //25khzTIM2_OC2Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE, 500, TIM2_OCPOLARITY_LOW);TIM2_Cmd(ENABLE);
}/*******************************************************************************
函数:延时函数 ms
参数:
返回值:无
*******************************************************************************/
void Ht1621_Delay(uint8_t ms)
{unsigned short jj;for (jj = 1; jj <= ms; jj++){nop();}
}/*******************************************************************************
函数:HT1621初始化
参数:
返回值:无
*******************************************************************************/
void Ht1621_Init()
{ GPIO_Init(HT1621_CS_PORT, HT1621_CS_PIN, GPIO_MODE_OUT_PP_HIGH_FAST); //初始化端口GPIO_Init(HT1621_WR_PORT, HT1621_WR_PIN, GPIO_MODE_OUT_PP_HIGH_FAST);GPIO_Init(HT1621_DATA_PORT, HT1621_DATA_PIN, GPIO_MODE_OUT_PP_HIGH_FAST);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<10; 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显示--Ht1621b芯片显示屏驱动
Ht1621b芯片显示屏驱动 关于HT1621b芯片的详细信息可以参考数据手册上的内容:百度文库HT1621b中文资料 CS : 片选输入接一上拉电阻当/CS 为高电平读写HT1621的数据和命令无效 ...
- 龙芯1B:LCD显示例程
文章目录 前言 一.LCD 二.触摸屏芯片XPT2046 1.XPT2046 2.函数 3.实用程序 三.示例程序 总结 前言 一个系统最缺不了人机交互的界面,就像电脑显示器一样,如果没有显示器,电脑 ...
- ds18b20温度传感器 lcd C语言,基于AVR单片机的18B20温度传感器及LCD显示的C语言程序设计...
***************************************************/ #include #include #define uchar unsigned char # ...
- 产业链人士:LCD显示驱动芯片价格有望趋于稳定
8月18日消息,据国外媒体报道,在汽车.消费电子等多领域芯片供不应求,芯片代工商产能普遍紧张的情况下,LCD显示驱动芯片的供应也受到了影响. 今年3月份,产业链方面的人士就透露,LCD面板需求强劲,拉 ...
- TFT LCD显示原理详解
<什么是液晶> 我们一般认为物体有三态:固态.液态.气态,其实这只是针对水而言,有一些有机化和物 还有介于固态和液态中间的状态 就是液晶态,如下图(一): ...
- LCD高抗干扰液晶段码屏显示驱动芯片:VK2C21A/B/BA/C/D 大量应用于音箱/音响面板LCD显示驱动
产品品牌:VINKA/永嘉微/永嘉微电 产品型号:VK2C21A/B/C/D/VK2C21BA 封装形式:SOP28/24/20.NSOP16.SSOP24(新封装) 概述: VK2C21是一个点阵式 ...
- Arduino应用开发——LCD显示GIF动图
Arduino应用开发--LCD显示GIF动图 目录 Arduino应用开发--LCD显示GIF动图 前言 1 硬件介绍 1.1 硬件配置 1.2 硬件连接 2 开发环境搭建 2.1 安装开发板 2. ...
- AT32驱动TFT LCD显示示例
1.1 案例 TFT LCD显示 1.1.1 简介 TFT LCD液晶显示屏是薄膜晶体管型液晶显示屏,TFT液晶每个像素都可以单独控制,因而每个节点都相对独立,并可以连续控制,这不仅提高了显示的反应速 ...
- I.MX6ULL之LCD显示
I.MX6ULL之LCD显示 代码放在git仓库,有需要的可以自行下载:Gitee LCD的操作原理: 在Linux系统中通过Framebuffer驱动程序来控制LCD.我们只需要知道怎么获取LCD的 ...
最新文章
- 【组合数学】指数生成函数 ( 证明指数生成函数求解多重集排列 )
- 【搜索引擎】Smartsys部署ES的准备工作
- 终极解决方式——找到占用U盘的程序
- 看了这一篇,就不用看别的——Java中Object关于锁的的三个方法:wait,notify,notifyAll的作用
- linux uboot nfs启动,uboot中利用TFTP和NFS加载镜像到ram运行
- SVM学习(续)核函数 松弛变量和惩罚因子
- P4643-[国家集训队]阿狸和桃子的游戏【结论】
- 计算机单词修改是否正确,计算机组装必懂的53个单词及装机步骤51条.doc
- java 项目 人力资源项目,基于jsp的人力资源系统-JavaEE实现人力资源系统 - java项目源码...
- oracle 分页_80分页查询,不止写法
- 设计模式---状态变化模式之备忘录模式(Memento)
- opencv python 实现灰度图像和彩色图像直方图全局均衡化和自适应均衡化
- Centos7 ifconfig这个命令没找到的解决方法
- 20张图深度详解MAC地址表、ARP表、路由表
- 计算机视觉(三)线性分类器
- JEECMS V8.1常用标签举例
- 技术债务的高息信用卡:深入了解那些知名的端到端机器学习平台
- OpenCvSharp函数:Dilate膨胀、GetStructuringElement获取形态操作的结构元素、Erode腐蚀
- python格式化输出(二)--字符串的格式化输出
- iPhone无法连接Wi-Fi解决方法
热门文章
- fir fpga 不同截止频率_用MATLAB设计FIR滤波器的方法
- 丐中丐双卡个人微型工作站,二手Tesla M40 12G水冷显卡改造上机心得
- 初学者应该怎么快速的学习Java编程?
- 嵌入式学习之Linux驱动篇-迅为视频更新了
- 模式识别和机器学习、数据挖掘的区别与联系
- 为什么玩无线电的人那么少
- IIC实例的SDA_In和SDA_Out的代码理解GPIOB-MODER=~(3(9*2));GPIOB-MODER|=09*2;
- 解决MySQL导入Excel无法打开Excel的问题
- 用java分析班级成绩
- 世界首富贝索斯正式签定离婚协议 前妻分到383亿美元股票