CH451的LED驱动及8*8键盘驱动程序

发布者:考古专家最新更新时间:2016-10-28 来源: eefocus关键字:CH451  LED驱动  8*8键盘 手机看文章 扫描二维码
随时随地手机看文章
CH451 
// AT89C51 C语言程序
//Web:http//winchiphead.com
//Author: yhw  2003.7

#define CH451_RESET     0x0201                           //复位
#define CH451_LEFTMOV   0x0300             //设置移动方式-作移
#define CH451_LEFTCYC   0x0301             //设置移动方式-左循
#define CH451_RIGHTMOV  0x0302             //设置移动方式-右移
#define CH451_RIGHTCYC  0x0303             //设置移动方式-右循 
#define CH451_SYSOFF    0x0400                      //关显示、键盘、看门狗
#define CH451_SYSON1    0x0401                      //开显示
#define CH451_SYSON2    0x0403                      //开显示、键盘
#define CH451_SYSON3    0x0407                      //开显示、键盘、看门狗功能
#define CH451_DSP       0x0500                      //设置默认显示方式
#define CH451_BCD       0x0580                      //设置BCD译码方式
#define CH451_TWINKLE   0x0600             //设置闪烁控制
#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_dclk=P1^7;                            //串行数据时钟上升延激活
// sbit ch451_din=P1^6;                     // 串行数据输出,接CH451的数据输入
// sbit ch451_load=P1^5;                            //串行命令加载,上升延激活
// sbit ch451_dout=P3^3;                              //INT1,键盘中断和键值数据输入,接CH451的数据输出
// uchar  ch451_key;                     // 存放键盘中断中读取的键值
//********************************************

//初始化子程序

void ch451_init()
{
  ch451_din=0;                                     //先低后高,选择4线输入
  ch451_din=1;
#ifdef USE_KEY
  IT1=0;                   //设置下降沿触发
  IE1=0;                   //清中断标志
  PX1=0;                   //设置低优先级
  EX1=1;                   //开中断
#endif

}
//*****************************************************

 //输出命令子程序
 //定义一无符号整型变量存储12字节的命令字。
 void ch451_write(unsigned int command)
{
  unsigned char i;
#ifdef USE_KEY
  EX1=0;                  //禁止键盘中断
#endif 
  ch451_load=0;                                  //命令开始       
  for(i=0;i<12;i++){                             //送入12位数据,低位在前
    ch451_din=command&1; 
    ch451_dclk=0;
    command>>=1;
    ch451_dclk=1;                               //上升沿有效
  }
  ch451_load=1;                                 //加载数据
#ifdef USE_KEY
  EX1=1;
#endif
}

#ifdef USE_KEY

//*************************************************
//输入命令子程序,MCU从451读一字节
 unsigned char ch451_read()
{
  unsigned char i;
  unsigned char command,keycode; //定义命令字,和数据存储器
  EX1=0;                //关中段 
  command=0x07;                //输入读451命令字 
  ch451_load=0;
  for(i=0;i<4;i++){
 
    ch451_din=command&1;       //送入最低位
    ch451_dclk=0;  
    command>>=1;       //往右移一位
    ch451_dclk=1;       //产生时钟上升沿锁通知CH451输入位数据
 }
  ch451_load=1;       //产生加载上升沿通知CH451处理命令数据
  keycode=0;       //清除keycode
  for(i=0;i<7;i++){
    keycode<<=1;       //数据移入keycode,高位在前,低位在后
    keycode|=ch451_dout;       //从高到低读入451的数据
    ch451_dclk=0;       //产生时钟下升沿通知CH451输出下一位
    ch451_dclk=1;
 }
  IE1=0;       //清中断标志
  EX1=1;
  return(keycode);      //反回键值
}
//*************************************************
//中断子程序  使用中断2,寄存器组1

void ch451_inter() interrupt 2 using 1
{
  unsigned char i;       //定义循环变量
  unsigned char command,keycode;       //定义控制字寄存器,和中间变量定时器
  command=0x07;       //读取键值命令的高4位0111B
  ch451_load=0;       //命令开始
  for(i=0;i<4;i++){
    ch451_din=command&1;      //低位在前,高位在后
    ch451_dclk=0;
    command>>=1;      //右移一位
    ch451_dclk=1;      //产生时钟上升沿锁通知CH451输入位数据
 }
  ch451_load=1;      //产生加载上升沿通知CH451处理命令数据
  keycode=0;      //清除keycode
  for(i=0;i<7;i++){
    keycode<<=1;      //数据作移一位,高位在前,低位在后
    keycode|=ch451_dout;      //从高到低读入451的数据
    ch451_dclk=0;      //产生时钟下升沿通知CH451输出下一位
    ch451_dclk=1;
 }
  ch451_key=keycode;     //保存上次的键值
  IE1=0;     //清中断标志
}

//***********************************************

#endif

关键字:CH451  LED驱动  8*8键盘 引用地址:CH451的LED驱动及8*8键盘驱动程序

上一篇:51单片机开发板程序----LED流水点亮(C语言)
下一篇:6位8段数码管动态驱动电路原理图及Keil C51驱动程序

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

GVCOMTM运算放大器 降低功耗以实现更高效的LCD及OLED驱动
随着信息时代的进步,显示面板需求量正在以势不可挡之势持续快速地增长着,与此同时,面板的低功耗技术也越来越引起关注。 电视、显示器以及平板电脑中,最关键的元器件莫过于液晶 (LCD及OLED) 显示面板。随着显示面板的广泛应用,降低面板功耗以及降低面板共用级电压(VCOM)来源——VCOM放大器的结温变得越来越重要。 液晶显示通过打开和关闭玻璃基板上独立的薄膜晶体管来控制每个像素。液晶面板采用逐行扫描技术,依次打开每一行像素的栅极电压,以允许源极电压(由源极驱动芯片产生)流向每个像素。改变像素电容上面的电压差,可以控制每个像素对光的透过率,从而显示整个图像。这些TFT电路使用铟锡氧化物(ITO)电极,这是一种半透明的金属层。
[电源管理]
GVCOMTM运算放大器 降低功耗以实现更高效的LCD及O<font color='red'>LED驱动</font>
介绍几种汽车内外部照明LED驱动器的解决方案
  引言   LED(Light Emitting Diode),发光二极管,是一种固态的半导体器件,它可以直接把电转化为光。近年来,其应用领域不断拓宽,从传统的便携设备背光向中大尺寸LCD显示器/液晶电视背光、汽车及通用照明等领域不断迈进。本文将专门介绍适合于汽车照明应用的各种LED驱动器方案,并探讨一些典型应用。   1 LED为汽车照明应用提供众多优势   LED在汽车中的应用领域非常广泛,但可以简单归纳为内部照明及外部照明(参见图1)。外部照明有如前照灯、尾部照明等,内部照明包括内部便利及舒适照明和仪表盘背光等。 图1:多种多样的汽车LED照明应用   推动汽车LED照明应用的因素很多。以前照灯为例,采用LE
[电源管理]
介绍几种汽车内外部照明<font color='red'>LED驱动</font>器的解决方案
选择LED驱动电源的十个注意
如何明智地选择适合的LED 驱动电源 ,是每位工程师都关心的问题。在此为大家整理了论坛里网友们的观点,供大家参考使用。 根据 电网 的用电的特点,LED特性的要求以及相关LED产品,考虑选择LED驱动电源时要遵循三个总体原则: 1、根据LED电流和电压特点,比较理想的是使用 恒流 驱动。它能避免LED正向电压的改变而引起电流变动,同时恒定的电流使LED的亮度稳定。 2、另外,LED 光通量 与温度成反比,所以使用中应尽量减少电源发热和设计良好的散热系统。从而降低LED的工作的温度。 3、为了保证LED的整体寿命必须将LED的节温控制在一定的范围内。 以下是选择LED驱动电源的十个注意要素: 1、高可靠性:LED产品主要
[电源管理]
应对LED通用照明挑战的AC-DC LED驱动解决方案
LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。这些LED照明设计挑战和电源设计挑战类似,具体讲,LED通用照明有以下几个挑战:由于总光效要求及散热限制的影响,即使是低功率应用能效也很重要;在许多情况下,较低功率也要求功率因数校正和谐波处理;在空间受限应用中,特别是替代灯泡应用时,对驱动功率密度的要求很高;总体电源可靠性对提高整个灯的寿命非常重要;宽输入电源电压范围应该支持高达277 Vac;兼容TRIAC调光等传统特定照明要求。另外,LED通用照明还要符合仍在演进的标准及安全规范,如美国“能源之星”和欧盟的国际电工委员会(IEC)要求。 安森美半导体一直致力于为LED照明
[电源管理]
应对LED通用照明挑战的AC-DC <font color='red'>LED驱动</font>解决方案
LM3492两路单独调光LED驱动方案
NS公司的LM3492是两路单独调光LED驱动器" title="LED驱动器" LED驱动器 " LED驱动器 ,集成了升压转换器和快速电流稳压器.可编程开关频率从200 kHz到1 MHz,输入电压4.5V-65V,可编程LED电流从50 mA 到 200 mA,调光电压达65V,总功率可达15W,主要应用在超高对比度6.5”-10”难关LCD显示屏背光以及汽车或航海GPS显示器.本文介绍了LM3492主要特性, 简化功能方框图, 典型应用电路图以及LM3492评估板参考设计电路图和评估板材料清单(BOM),PCB元件布局图. LM3492: Two-Channel Individual Dimmable LED Driver
[电源管理]
LM3492两路单独调光<font color='red'>LED驱动</font>方案
NS推出一款业界最小的白光LED驱动
  美国国家半导体公司 (National Semiconductor Corporation)宣布推出一款业界最小的白光LED驱动器,可以灵活控制显示屏背光亮度。这款型号为LM3530的升压转换器属于美国国家半导体PowerWise® 高能效芯片系列,可以驱动高达11颗串联的大电流LED,能够为智能手机等便携式多媒体电子产品的大显示屏提供充足的背光。LM3530芯片采用12焊球的micro SMD封装,整个芯片的体积只有1.615mm x 1.215mm x 0.425mm大小。   由于便携式电子产品播放的多媒体内容日趋丰富多彩,配备的显示屏也越来越大,用来播放短片的时间也越来越长。相应地,这也造成耗电量的大幅增加的问题。
[电源管理]
NS推出一款业界最小的白光<font color='red'>LED驱动</font>器
基于TRIAC调光的绿色LED驱动器参考设计
据国际能源署(IEA)统计全球消耗的电能中有19%是用于照明。因此,近年来,世界各国纷纷致力于以更高能效的方案来替代低能效的白炽灯光源。而随着发光二极管(LED)在流明输出及光效方面持续快速进步,同时,平均每流明光输出的成本也在下降,再结合LED在高指向性、长寿命和低维护成本等方面的优势,LED照明(也称固态照明,或SSL)成为一种极为引人注目的替代解决方案。 针对固态照明的能效规范要求 为了促进节能,世界各地的政府机构或规范组织制定了不同LED照明规范,主要体现在对功率因数(PF)的要求方面。如欧盟的国际电工联盟(IEC)规定了功率大于25W照明应用的总谐波失真性能,某些地区的其它国际标准也适用这规定。 另外,美国能源部
[电源管理]
基于TRIAC调光的绿色<font color='red'>LED驱动</font>器参考设计
ICL8001G可控硅调光LED驱动电路与应用
  1 LED照明与LED可控硅( TRAIC)调光控制   自从1968年第一批LED 开始进入市场以来, 至今已有30多年。随着新材料的开发和LED生产工艺的改进, LED 趋于高亮度化和全色化。氮化镓基底的蓝色LED的出现, 更是扩展了LED 的应用领域。   LED的发光原理就是将电能转换为光的过程, 将电流通过化合物半导体, 通过电子与空穴的结合, 过剩的能量将以光的形式释出, 达到发光的效果。通过LED的正向电流越大则LED 的发光亮度越高, 同时,通过LED发光电流的稳定性将影响LED 的发光稳定性。因此, 在实用中应采用可以提供精确稳定电流的LED驱动恒流源来为LED 供电。   LED 的调光可以进
[电源管理]
ICL8001G可控硅调光<font color='red'>LED驱动</font>电路与应用
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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