CH451的使用总结
一 CH451是何物?(来自说明书)
CH451 是一个整合了数码管显示驱动和键盘扫描控制以及μP 监控的多功能外围芯片。CH451 内置RC 振荡电路,可以动态驱动8 位数码管或者64 位LED,具有BCD 译码、闪烁、移位等功能;同时还可以进行64 键的键盘扫描;CH451 通过1 线或者可以级联的4 线串行接口与单片机等交换数据;并且提供上电复位和看门狗等监控功能。
它的功能特点有:
1. 显示驱动
● 内置大电流驱动级,段电流不小于30mA,字电流不小于160mA。
● 动态显示扫描控制,直接驱动8 位数码管或者64 位发光管LED。
● 可选数码管的段与数据位相对应的不译码方式或者BCD 译码方式。
● 字数据左移、右移、左循环、右循环。
● 各数字独立闪烁控制。
● 通过占空比设定提供16 级亮度控制。
● 支持段电流上限调整,可以省去所有限流电阻。
● 扫描极限控制,支持1 到8 个数码管,只为有效数码管分配扫描时间。
2. 键盘控制
● 内置64 键键盘控制器,基于8×8 矩阵键盘扫描。
● 内置去抖动电路。
● 键盘中断,低电平有效输出。
● 提供按键释放标志位。
3. 外部接口
● 可选高速的4 线串行接口,支持芯片级联,时钟速度从0 到10MHz。
● 可选简洁的1 线串行接口。
● 内置RC 阻容振荡电路,同时支持外接阻容振荡。
● 内置上电复位,提供高电平有效复位输出和低电平有效复位输出。
● 内置看门狗电路Watch-Dog。
4. 其它杂项
● 可选多种封装:DIP28、SOP28、DIP24S、CHIP。
● 经过授权采用了2 项专利技术,低成本,简便易用。
二 数码管驱动
必须先知道单片机是如何与CH451通讯的。请看下图:
CH451本身的引脚很多,但是与单片机有关的,就七个引脚(如图)。CH451 具有硬件实现的高速4 线串行接口,包括4 根信号线:串行数据输入线DIN、串行数据时钟线DCLK、串行数据加载线LOAD、串行数据输出线DOUT。其中,DIN、DCLK、LOAD 是带上拉的输入信号线,默认是高电平;DOUT 在未启用键盘扫描功能时作为串行数据输出线,在启用键盘扫描功能后作为键盘中断和数据输出线,默认是高电平。因此与数码管显示有关的只有DIN、DCLK、LOAD 。
1芯片初试化
CH451默认选择1线串行接口,需要在DCLK串行时钟输入之前,在P1^0口(假设P1^0接DIN;P1^1接DCLK; P1^2接LOAD)输出一个低电平脉冲(由高电平变为低电平再恢复为高电平)(注:附在keil c实现该功能的代码)通知CH451选择4线串行接口。
附:
sbit ch451_din = P1^0;
sbit ch451_clk = P1^1;
sbit ch451_load = P1^2;
void ch451_init(void) //对芯片初始化
{
ch451_din = 0;
ch451_din = 1;
ch451_load = 1;
ch451_clk = 1;
}
2 输送串行数据
芯片初始化后,开始输送串行数据。CH451 的各个操作命令均为12 位,即每个操作命令对应12 位串行数据,数据输入的顺序是低位在前,高位在后,如B11B10~~~B0,最后一位B0先进入。串行数据输入 ch451过程可总结如下:
① 输出一位数据,即向DIN 输出最低位数据B0,并向DCLK 输出低电平脉冲(从高
电平变为低电平再恢复为高电平),其中包括一个上升沿使CH451 输入位数据;
② 以同样的方式,输出位数据B1~B11;
③ 向LOAD 输出低电平脉冲,其中包括一个上升沿使CH451 加载串行数据。
需要注意地,数据是一位一位的往DIN输送,把12位数据全输完,刚好要12次。(附:代码)
ch451_load=0; /*命令开始*/
for(i=0;i<12;i++)
{ /*送入12位数据,低位在前*,&表按位与,如5&7=5,即:0101^0111=5*/
ch451_din=command&1;
ch451_clk=0;
ch451_clk=1;
command>>=1; /*上升沿有效*/
}
注意:command>>=1为右移一位,其左边高位补0;类似 command<=1为左移一位,其右边最高位补0。
ch451_load=1; /*加载数据*/
上述过程可以用电平的变化来描述(如下图):
3 操作命令
每次往串行接口输送数据前,需要了解操作命令的含义,该输送什么命令,这是本小节讨论的。下表列出了CH451 的各个操作命令所对应的12 位串行数据。其中,标注为x 的位表示该位可以是任意值;标有名称的位表示该位在CH451芯片内部具有相应的寄存器,其数据根据操作命令的不同而变化。
注意:在送数据前前先为被显示的数码管定义(位选).找到上表"加载字数据0"栏,可以这样定义#define CH451_DIG0 0x0800,该语句表示数码管位0显示;数码管位1显示
CH451使用总 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)