ht1621 c源代码
根据提供的文件信息,我们可以归纳出以下相关知识点: ### 一、程序基本信息 #### 文件名: lcdht1621.c - **设计者**: Zhengyingjun - **日期**: 2005-06-28 - **功能**: 测试HT1621驱动器 ### 二、HT1621简介 HT1621 是一款通用的段式液晶显示器驱动芯片,广泛应用于各种低功耗设备中。该芯片主要特点包括: - **低功耗**:适用于电池供电的应用场景。 - **简单接口**:仅需3根控制线(数据、时钟、片选)即可实现与微控制器的通信。 - **灵活的显示控制**:支持多种显示模式,如静态显示、闪烁等。 ### 三、程序结构与功能 #### 1. 头文件包含 ```c #include<msp430x14x.h> #include<intrinsics.h> ``` - `msp430x14x.h`: MSP430系列微控制器的标准库头文件,用于访问硬件寄存器。 - `intrinsics.h`: 内联汇编函数定义,常用于实现高效的延迟操作或直接操作硬件。 #### 2. 宏定义 - `uchar`: 定义为`unsigned char`类型的别名。 - `uint`: 定义为`unsigned int`类型的别名。 - 各种配置宏定义(例如`BIAS0X52`, `XTAL320X28`等),用于配置HT1621的工作参数。 #### 3. 函数声明 - `Start_spi()`: 初始化SPI通信。 - `Delay()`: 延时函数。 - `Delay1s()`: 延时1秒的函数。 - `SENDCOMA()`, `SENDCOMB()`, `SENDCOMC()`: 分别向HT1621发送命令A、B、C。 - `disp()`: 显示一个字符。 - `DISP_ALL()`: 显示所有数据。 - `SendByte()`: 发送一个字节的数据。 - `SendBit()`: 发送一个位的数据。 #### 4. 数据表定义 ```c uchartable[32]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0xbf,0x86,0xdb,0xcf,0xe6,0xed, 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0xbf,0x86,0xdb,0xcf,0xe6,0xed }; ``` - 该数组包含了32个字节的数据,用于表示数字0-9以及部分特殊字符的编码。这些编码用于驱动HT1621来显示相应的字符。 ### 四、SPI通信初始化 #### 函数: Start_spi() - 初始化SPI通信,设置相关的控制信号线。 ### 五、延时函数 #### 函数: Delay() - 实现简单的延时功能,通常用于等待硬件响应或进行必要的等待时间。 - 通过循环计数实现延时。 #### 函数: Delay1s() - 实现1秒的延时功能,同样通过循环计数实现。 ### 六、发送命令及数据 #### 函数: SENDCOMA(), SENDCOMB(), SENDCOMC() - 这三个函数分别用于发送命令A、B、C至HT1621。 - 命令A用于设置工作模式,命令B用于设置显示地址,命令C用于发送显示数据。 #### 函数: SendByte(), SendBit() - `SendByte()`: 用于发送一个完整的字节数据。 - `SendBit()`: 用于逐位发送数据。 ### 七、显示函数 #### 函数: disp(), DISP_ALL() - `disp()`: 显示单个字符。 - `DISP_ALL()`: 显示整个数组中的数据,即显示所有的字符。 ### 八、总结 该程序实现了对HT1621驱动器的基本控制,包括SPI通信的初始化、基本的延时处理、命令和数据的发送以及字符的显示等功能。通过这些基础功能,可以进一步开发更复杂的应用场景,如动态显示不同的字符序列等。
*program name:lcdht1621.c
*function: TEST TO HT1621(drive)
*Design: Zhengyingjun
*Date:2005-06-28
*********************************************************************************/
#include<msp430x14x.h>
#include<intrinsics.h>
#define uchar unsigned char
#define uint unsigned int
/*********************************************************
* 接口定义:DATA<--->P2.5; CS<--->P2.6; WR<--->P2.7 *
**********************************************************/
#define BIAS 0X52 /*定义1 3 偏压4 背极*/
#define XTAL32 0X28 /*使用外部晶振*/
#define RC256 0X30 /*使用内部256KRC 振荡器*/
#define SYSEN 0X02 /*打开振荡发生器*/
#define LCDON 0X06 /*打开LCD*/
#define SYSDIS 0X00 /*关闭振荡发生器*/
#define LCDOFF 0X04 /*显示关闭*/
#define TONE4 0X80 /*设置BZ 输出频率为4K*/
#define TONEON 0X12 /*打开BZ 音频输出*/
#define TONEOFF 0X10 /*关闭BZ 音频输出*/
#define CLRWDT 0X1c /*清零WDT*/
#define F1 0X40 /*WDT设置为4 秒溢出*/
#define IRQEN 0X10 /*IRQ 输出禁止*/
#define WDTEN 0X0e /*打开WDT*/
#define WDTDIS 0X0a /*关闭WDT*/
#define TIMERDIS 0X08 /*关闭时基输出*/
uchar table[32]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0xbf,0x86,0xdb,0xcf,0xe6,0xed,
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0xbf,0x86,0xdb,0xcf,0xe6,0xed };
void Start_spi(void);
void Delay(void);
void Delay1s(void);
void SENDCOMA(uchar com);
void SENDCOMB(uchar adr);
void SENDCOMC(uchar com);
void disp(uchar dat);
void DISP_ALL(uchar data);
void SendByte(uchar dat);
void SendBit(uchar dat,uchar bitcnt);
/**********************************************************************
延时函数
***********************************************************************/
void Delay(void)
{
uchar i;
for(i=0;i<10;i++); /*用于调整CLK 脉冲宽度*/
}
/**********************************************************************
剩余7页未读,继续阅读
- yanjibao2016-11-20一直以为是软件问题,后来才发现1621B不仅要给VCC,带要给VREF。如果不工作,不防考虑硬件问题
- lcy200910012015-05-13很实用,谢谢分享!
- 代码行行2014-05-22调试成功 谢谢楼主分享
- dxl3655202013-07-28还可以哈 我最近就在调试!
- bobo6302015-11-10看着不错,还没开始调试
- 粉丝: 0
- 资源: 6
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助