CH451的使用总结

发布者:chaxue1987最新更新时间:2016-09-25 来源: eefocus关键字:CH451  使用总结 手机看文章 扫描二维码
随时随地手机看文章
       最近单片机学习进度到数码管显示。我用的学习板,是用CH451芯片来驱动数码管显示的。刚看CH451技术资料时,被抽象的解释和大量的信息难住了,并不能很好的理解CH451的工作过程。重新学习了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显示,可定义#define CH451_DIG1      0x0900,其它类推``````

       开始输送12位串行数据。

       首先送“设定系统参数”命令。设定系统参数命令用于设定CH451 的系统级参数:看门狗使能WDOG,键盘扫描使能KEYB,显示驱动使能DISP。各个参数均通过1 位数据控制,将相应的数据位置为1 则启用该功能,否则关闭该功能(默认值)。例如,命令数据010000000101B 表示启用看门狗的功能、关闭键盘扫描的功能、启用显示扫描驱动的功能。

        其次送“设定显示参数” 。设定显示参数命令用于设定CH451 的显示参数:译码方式MODE,扫描极限LIMIT,显示亮度INTENSITY。译码方式MODE 通过1 位数据控制,置1 时选择BCD 译码方式,置0 时选择不译码方式(默认值)。扫描极限LIMIT 通过3 位数据控制,数据001B~111B和000B 分别设定扫描极限为1~7 和8(默认值)。显示亮度INTENSITY 通过4 位数据控制,数据0001B~1111B 和0000B 分别设定显示驱动占空比为1/16~15/16 和16/16(默认值)。例如,命令数据010101110000B 表示选择不译码方式、扫描极限为7、显示驱动占空比16/16;命令数据010110001010B表示选择BCD 译码方式、扫描极限为8、显示驱动占空比为10/16。
       然后送数码管显示的命令。如果是BCD 译码方式,发送“CH451_DIG7|8”,表示数码管7显示,且显示的数值是8;要让数码管5显示“A”数值,就发送命令“CH451_DIG5|10”。

       数码管显示的过程,可以简单记为:初始化芯片(DIN、DCLK、LOAD ),定义操作命令(系统参数、显示参数等),发送操作命令。

 完整的数码管显示程序如下所示:

#include
#include
#define uchar  unsigned char
#define uint   unsigned int
#define CH451_DIG0      0x0800         /*数码管位0显示*/
#define CH451_DIG1      0x0900         /*数码管位1显示*/
#define CH451_DIG2      0x0a00         /*数码管位2显示*/
#define CH451_DIG3      0x0b00         /*数码管位3显示*/
#define CH451_DIG4      0x0c00         /*数码管位4显示*/
#define CH451_DIG5      0x0d00         /*数码管位5显示*/ 
#define CH451_DIG6      0x0e00         /*数码管位6显示*/ 
#define CH451_DIG7      0x0f00         /*数码管位7显示*/
sbit     ch451_din  = P1^0;
sbit     ch451_clk  = P1^1;
sbit     ch451_load = P1^2;
/********************************************************************
函 数 名:ch451_init()
功    能:对ch451芯片进行初始化 
***********************************************************************/
void ch451_init(void)
{
  ch451_din  = 0;           /*先低后高,选择4线输入*/
  ch451_din  = 1;
  ch451_load = 1;
  ch451_clk  = 1;
 }
/********************************************************************
函 数 名:ch451_write()
功    能:把12位的指令或数据写入ch451
说    明:12位数据或指令的写入顺序是低位
入口参数:command
***********************************************************************/
void ch451_write(unsigned int command)
{
  unsigned char i;
  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;                    /*上升沿有效*/
  }
  ch451_load=1;                     /*加载数据*/
  }
void main()
{

  ch451_init();
  //系统参数设定,参照说明书
  ch451_write(0x401);
  //显示参数设定,
  ch451_write(0x580);
  //第六位显示6
  ch451_write(CH451_DIG5|6);
  //第8位显示8
  ch451_write(CH451_DIG7|8);
}

关键字:CH451  使用总结 引用地址:CH451的使用总结

上一篇:单片机page和bank切换问题
下一篇:用于单片机系统的干扰抑制元件有哪些

推荐阅读最新更新时间:2024-03-16 15:11

iOS15.5正式版使用总结:续航发热异常?但我的体验与大家相反
自从iOS15.4正式版发布之后,大家对于iOS15的关注度明显下降很多,毕竟这几个月是新机频发的几个月,像四月份就发布了二三十款新机。而且15.4带来戴口罩识别Face ID这个重磅功能之后,后面的iOS15版本已经没有其他重磅功能的更新,关注度自然少了很多。 但是我相信对于很多使用iPhone的用户来说,iOS15的更新在他们眼中还是非常重要的,谁都想要一个稳定好用的系统,所以今天我们就来聊聊苹果前两天刚刚发布的iOS15.5正式版体验如何,值不值得升级? 首先是升级内容,这次正式版的更新内容涵盖了之前beta版的总和,包括苹果钱包功能增强;照片回忆自动屏蔽敏感位置照片;播客下载方式更多了,以及其他一些小功能的更新,整体来
[手机便携]
STM32 GPIO使用超强总结
STM32 GPIO使用超强总结 STM32GPIO使用 操作步骤: 1. 使能GPIO对应的外设时钟 例如://使能GPIOA、GPIOB、GPIOC对应的外设时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC , ENABLE); 2. 声明一个GPIO_InitStructure结构体 例如: GPIO_InitTypeDef GPIO_InitStructure; 3. 选择待设置的GPIO管脚 例如://选择待设置的GPIO第7、8、9管脚位 ,中间加“|”符号 GPIO_InitStruc
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved