数码管显示和键盘扫描的ch451应用1
最新-数码管显示驱动和键盘扫描控制器CH451及其应用 精品
数码管显示驱动和键盘扫描控制器CH451及其应用摘要介绍一种新型的键盘显示驱动芯片451的性能特点和工作原理,给出了451键盘显示驱动芯片与-51单片机的接口方法与相应的软件驱动程序。
关键词键盘显示控制;单片机;451单片机在开发过程中,常常会因为资源不足而不得不大量扩展接口芯片以满足应用系统的需要,其中原因之一是人机界面中的键盘显示占用了系统太多资源,从而造成系统庞大,同时降低了系统的可靠性。
在单片机应用系统中,键盘显示通常可采用以下几种方式1采用并行接口的键盘显示专用芯片8279。
但8279所需外围元件多显示驱动、译码等、占用电路板面积大、综合成本高,在中小系统中常常大材小用;2采用通用并行I/O芯片扩展如用8155等,但此方案同样需要驱动显示,同时键盘显示扫描还需占用CPU大量时间;3采用专用显示控制器,并用CPU的I/O引脚完成键盘输入如MC14499、PS7219、MAX7219、ICM7218、TLC5921等,大多是串行接口并有显示驱动能力,I/O占用少。
这种接口方式省去了显示的扫描,而且电路大多也很简单,通常在系统需要的按键较少时比较适用;4采用带I2C总线的键盘显示芯片如显示用SAA1064,键盘用PCF8574,不过这种方式对于无I2C总线接口的CPU来说,编程显得有些不便;5采用串行接口的键盘显示专用芯片,如BC7280/81、HD7279、CH451等。
这类芯片占用CPU的资源少,传输速度较快,外围器件要求也较少,在中小系统中都可得到广泛的应用。
BC7280/81与HD7279中已有介绍,本文着重介绍CH451的主要特性及接口应用方法。
1CH451的功能与引脚介绍CH451是一个整合了数码管显示驱动和键盘扫描控制以及μP监控的多功能外围芯片。
CH451内置RC振荡电路,可以直接动态驱动8位数码管或者64位LED,具有BCD译码或不译码功能,可实现数据的左移、右移、左循环、右循环、各数字独立闪烁等控制功能。
CH451或CH452的常见问题解答
CH451或CH452的常见问题解答CH451或CH452的常见问题解答转载来自官网需要设计参考资料(光盘资料可以参考FILELIST.TXT文档,网上资料更新)数码管LED显示驱动及键盘扫描的产品选型有CH451和CH452两种,都可以直接驱动数码管LED显示和键盘扫描,同时进行显示驱动和键盘扫描。
详细使用说明可以参考各自的使用手册,其中也有可供参考的应用电路图。
CH451比CH452的驱动电流大一倍,所以显示更亮些;CH452比CH451的功能更多些,并且支持兼容I2C的两线接口。
更详细的性能比较及特征说明请参考CH451PLN.PDF文档。
* 关于电源CH451和CH452都可以支持3.3V和5V电源电压,但是CH451用于3.3V时要外接振荡电阻才能避免显示闪烁。
考虑到直接驱动显示时消耗电流较大,布线时应该确保电源和地线有足够的宽度和良好的电源退耦。
* 刚通电数码管就全亮可能是数码管的极性错误,CH45X能够直接驱动共阴数码管,外加反相驱动器后才能驱动共阳数码管。
CH45X向LED供正向电压为亮,供反向电压为灭,复位后CH45X默认使LED灭,所以当极性反时就全亮。
* 显示或者操作无反应检查硬件接线是否正确,可以先试用公司提供的例子程序,确保硬件无误后再进一步开发。
如果连线距离较远,那么可以先在短距离下试用,无误后再加大距离,必要时可以用缓冲器加强信号的驱动能力。
对于支持4线接口和2线接口的CH452芯片,要检查H3L2引脚确保单片机接口程序与CH452是同一接口方式* 全部或者部分按键无反应1、确保发出设置命令启用了按键功能2、如果电源电压超过5V,或者是CH452S芯片直接驱动数码管,那么应该参考CH452手册在共阴数码管的公共端也就是每个DIG引脚上串接二极管,二级管应该串到LED 显示电路中而非按键扫描电路中3、有其它优先极更高的键一直在按下,导致优先极较低的键始终无效,键码最小的按键优先极最高* 在实际未按键时,CH45X不断主动产生按键中断,或者总是有某个按键在按下,具有随机性1、只有当前一个按键值被读出后,CH45X的DOUT或者KEY#或者INT#引脚才会恢复默认的高电平2、检查线路板是否有漏电或者短路情况3、所接数码管或者LED发光管存在反向漏电现象。
数码管显示和键盘扫描的ch451应用1
451 的数码管显示和键盘显示
1.系统功能:
单片机在开发过程中,常常会因为资源不足而不得不大量扩展接口芯片以满足应用系 统的需要,其中原因之一是人机界面中的键盘显示占用了系统太多资源,从而造成系统庞 大,同时降低了系统的可靠性。在单片机应用系统中,键盘显示通常可采用以下几种方式: (1)采用并行接口的键盘显示专用芯片8279。但8279所需外围元件多(显示驱动、 译码等)、占用电路板面积大、综合成本高,在中小系统中常常大材小用;(2)采用通用并 行I/O芯片扩展(如用8155等),但此方案同样需要驱动显示,同时键盘显示扫描还 需占用CPU大量时间;(3)采用专用显示控制器,并用CPU的I/O引脚完成键盘输 入(如 MC14499、PS7219、MAX7219、ICM7218、TLC5921等, 大多是串行接口并有显示驱动能力,I/O占用少)。这种接口方式省去了显示的扫描,而 且电路大多也很简单,通常在系统需要的按键较少时比较适用;(4)采用带I2C总线的 键盘显示芯片(如显示用SAA1064,键盘用PCF8574),不过这种方式对于无 I2C总线接口的CPU来说,编程显得有些不便;(5)采用串行接口的键盘显示专用芯 片,如BC7280/81、HD7279、CH451等。这类芯片占用CPU的资源 少,传输速度较快,外围器件要求也较少,在中小系统中都可得到广泛的应用,本文着重 介绍CH451的主要特性及接口应用方法。
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根保通据护过生高管产中线工资敷艺料设高试技中卷术资配,料置不试技仅卷术可要是以求指解,机决对组吊电在顶气进层设行配备继置进电不行保规空护范载高与中带资负料荷试下卷高总问中体题资配,料置而试时且卷,可调需保控要障试在各验最类;大管对限路设度习备内题进来到行确位调保。整机在使组管其高路在中敷正资设常料过工试程况卷中下安,与全要过,加度并强工且看作尽护下可关都能于可地管以缩路正小高常故中工障资作高料;中试对资卷于料连继试接电卷管保破口护坏处进范理行围高整,中核或资对者料定对试值某卷,些弯审异扁核常度与高固校中定对资盒图料位纸试置,.卷编保工写护况复层进杂防行设腐自备跨动与接处装地理置线,高弯尤中曲其资半要料径避试标免卷高错调等误试,高方要中案求资,技料编术试5写交卷、重底保电要。护气设管装设备线置备4高敷动调、中设作试电资技,高气料术并中课3试中且资件、卷包拒料中管试含绝试调路验线动卷试敷方槽作技设案、,术技以管来术及架避系等免统多不启项必动方要方式高案,中;为资对解料整决试套高卷启中突动语然过文停程电机中气。高课因中件此资中,料管电试壁力卷薄高电、中气接资设口料备不试进严卷行等保调问护试题装工,置作合调并理试且利技进用术行管,过线要关敷求运设电行技力高术保中。护资线装料缆置试敷做卷设到技原准术则确指:灵导在活。分。对线对于盒于调处差试,动过当保程不护中同装高电置中压高资回中料路资试交料卷叉试技时卷术,调问应试题采技,用术作金是为属指调隔发试板电人进机员行一,隔变需开压要处器在理组事;在前同发掌一生握线内图槽部纸内故资,障料强时、电,设回需备路要制须进造同行厂时外家切部出断电具习源高题高中电中资源资料,料试线试卷缆卷试敷切验设除报完从告毕而与,采相要用关进高技行中术检资资查料料和试,检卷并测主且处要了理保解。护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
基于CH451的键盘扫描程序设计
基于CH451的键盘扫描程序设计简介:基于CH451的键盘扫描程序设计采用AVR单片机ATmega16进行读取CH451的接收到的按键值,CH451可以实现8*8矩阵键盘输入,且带有中断提醒,接收到的按键值在12864液晶上显示。
程序中采用的是2*3矩阵。
系统采用AVR Studio+WinAVR构成的AVR GCC编译环境。
系统源程序如下:#define F_CPU 1000000UL#include <avr/io.h>#include <util/delay.h>#include <math.h>#include <avr/interrupt.h>#define nop() asm("NOP")/*液晶显示引脚定义*//*对rs引脚进行定义与设置*/#define rs_out DDRD|=_BV(PD5)#define rs_in DDRD&=~_BV(PD5)#define rs_1 PORTD|=_BV(PD5)/*对rw引脚进行定义与设置*/#define rw_out DDRD|=_BV(PD6)#define rw_in DDRD&=~_BV(PD6)#define rw_1 PORTD|=_BV(PD6)#define rw_0 PORTD&=~_BV(PD6) /*对使能en引脚进行定义与设置*/ #define en_out DDRD|=_BV(PD7)#define en_in DDRD&=~_BV(PD7) #define en_1 PORTD|=_BV(PD7) #define en_0 PORTD&=~_BV(PD7) #define busy_1 DDRB|=_BV(PB7)#define busy_0 DDRB&=~_BV(PB7)/*ch451引脚定义*//*数据输出与键盘中断*/#define dout_out DDRA|=_BV(PA2)#define dout_in DDRA&=~_BV(PA2) #define dout_1 PORTA|=_BV(PA2) #define dout_0 PORTA&=~_BV(PA2) #define dout_read (PINA&_BV(PA2))/*串行数据加载引脚*/#define load_in DDRA&=~_BV(PA3)#define load_1 PORTA|=_BV(PA3)#define load_0 PORTA&=~_BV(PA3)/*数据输入引脚*/#define din_out DDRA|=_BV(PA4)#define din_in DDRA&=~_BV(PA4)#define din_1 PORTA|=_BV(PA4)#define din_0 PORTA&=~_BV(PA4)/*数据时钟线*/#define dclk_out DDRA|=_BV(PA5)#define dclk_in DDRA&=~_BV(PA5)#define dclk_1 PORTA|=_BV(PA5)#define dclk_0 PORTA&=~_BV(PA5)const unsigned char tabn[]={"0123456789"}; unsigned char temp=0;/*检查引脚是否忙*/void checkbusy(){rs_0;rw_1;en_1;_delay_us(200);busy_0;while((PINB&0x80)==1);en_0;busy_1;}/*写命令*/void write_com(unsigned char cmd) {checkbusy();rs_0;rw_0;en_1;_delay_us(1);PORTB=cmd;_delay_us(2);en_0;}/*写数据*/void write_date(unsigned char dat) {checkbusy();rs_1;rw_0;en_1;_delay_us(2);PORTB=dat;_delay_us(2);en_0;}/*液晶初始化*/void init_lcd(){DDRB=0xff;PORTB=0xff;DDRD=0xff;PORTB=0xff;write_com(0x30);_delay_us(2);write_com(0x0c);_delay_us(2);write_com(0x01);_delay_us(2);write_com(0x06);_delay_us(2);}/*向lcd写入一个字符串*/void write_string(const unsigned char *s){while(*s>0){write_date(*s);s++;_delay_us(1);}_delay_ms(3);}/*向lcd某个地址写入一个字符串*/void write_addstr(unsigned char add,const unsigned char *s) {write_com(add);while(*s>0){write_date(*s);s++;_delay_us(1);}}/*向ch451写命令*/void write_ch451(unsigned int cmd) {unsigned char i;load_0;for(i=0;i<12;i++){if(cmd&0x0001)din_1;elsedin_0;dclk_0;cmd=cmd>>1;dclk_1;}load_1;}/*初始化ch451*/void init_ch451(){din_0;din_1;write_ch451(0x0201);//初始化芯片内部write_ch451(0x0402);//开键盘、关显示、关看门狗write_ch451(0x0508);//BCD译码write_ch451(0x0600);//不闪烁}/*读取ch451的按键值*/unsigned char read_ch451(){unsigned char i,date=0;din_1; //输入下拉load_1;dclk_1;for(i=0;i<4;i++){dclk_0;if(i==3)din_0;dclk_1;}load_0;load_1;for(i=0;i<7;i++){date<<=1;if(dout_read)date|=0x01;dclk_0;din_1;dclk_1;}return date;}/*主函数*/int main(){unsigned char i,j,k;DDRA=0xfb;PORTA=0x04;init_ch451();init_lcd();_delay_ms(1);while(1){temp=read_ch451();i=(temp/100)%10;j=(temp/10)%10;k=temp%10;write_com(0x90);_delay_ms(10);write_date(tabn[i]);write_date(tabn[j]);write_date(tabn[k]);_delay_ms(500);}}。
CH451芯片资料
1001111B
3
10011B
1000001B
= 等于号
00100B
1100110B
4
10100B
0111001B
[ 左方括号
00101B
1101101B
5
10101B
0001111B
] 右方括号
00110B
1111101B
6
10110B
0001000B
_ 下划线
00111B
0000111B
7
10111B
CH451 中文手册(一)
1
2.4. 其它杂项
● 可选封装:SOP28、DIP24S。 ● 经过授权采用了 2 项专利技术,低成本,简便易用。
3、封装
封装形式 SOP28 DIP24S
宽度 7.62mm 300mil 7.62mm 300mil
引脚间距 1.27mm 50mil 2.54mm 100mil
CH451 默认情况下工作于不译码方式,此时 8 个数据寄存器中字数据的位 7~位 0 分别对应 8 个 数码管的小数点和段 G~段 A,对于发光二极管阵列,则每个字数据的数据位唯一地对应一个发光二 级管。当数据位为 1 时,对应的数据管的段或者发光管就会点亮;当数据位为 0 时,则对应的数据管 的段或者发光管就会熄灭。例如,第三个数据寄存器的位 0 为 1,所以对应的第三个数码管的段 A 点 亮。通过设定,CH451 还可以工作于 BCD 译码方式,该方式主要应用于数码管驱动,单片机只要给出 二进制数 BCD 码,由 CH451 将其译码后直接驱动数码管显示对应的字符。BCD 译码方式是指对数据寄 存器中字数据的位 4~位 0 进行 BCD 译码,控制段驱动引脚 SEG6~SEG0 的输出,对应于数码管的段 G~ 段 A,同时用字数据的位 7 控制段驱动引脚 SEG7 的输出,对应于数码管的小数点,字数据的位 6 和
CH451或CH452的常见问题解答
CH451或CH452的常见问题解答转载来自官网需要设计参考资料(光盘资料可以参考FILELIST.TXT文档,网上资料更新)数码管LED显示驱动及键盘扫描的产品选型有CH451和CH452两种,都可以直接驱动数码管LED显示和键盘扫描,同时进行显示驱动和键盘扫描。
详细使用说明可以参考各自的使用手册,其中也有可供参考的应用电路图。
CH451比CH452的驱动电流大一倍,所以显示更亮些;CH452比CH451的功能更多些,并且支持兼容I2C的两线接口。
更详细的性能比较及特征说明请参考CH451PLN.PDF文档。
* 关于电源CH451和CH452都可以支持3.3V和5V电源电压,但是CH451用于3.3V时要外接振荡电阻才能避免显示闪烁。
考虑到直接驱动显示时消耗电流较大,布线时应该确保电源和地线有足够的宽度和良好的电源退耦。
* 刚通电数码管就全亮可能是数码管的极性错误,CH45X能够直接驱动共阴数码管,外加反相驱动器后才能驱动共阳数码管。
CH45X向LED供正向电压为亮,供反向电压为灭,复位后CH45X默认使LED灭,所以当极性反时就全亮。
* 显示或者操作无反应检查硬件接线是否正确,可以先试用公司提供的例子程序,确保硬件无误后再进一步开发。
如果连线距离较远,那么可以先在短距离下试用,无误后再加大距离,必要时可以用缓冲器加强信号的驱动能力。
对于支持4线接口和2线接口的CH452芯片,要检查H3L2引脚确保单片机接口程序与CH452是同一接口方式* 全部或者部分按键无反应1、确保发出设置命令启用了按键功能2、如果电源电压超过5V,或者是CH452S芯片直接驱动数码管,那么应该参考CH452手册在共阴数码管的公共端也就是每个DIG引脚上串接二极管,二级管应该串到LED显示电路中而非按键扫描电路中3、有其它优先极更高的键一直在按下,导致优先极较低的键始终无效,键码最小的按键优先极最高* 在实际未按键时,CH45X不断主动产生按键中断,或者总是有某个按键在按下,具有随机性1、只有当前一个按键值被读出后,CH45X的DOUT或者KEY#或者INT#引脚才会恢复默认的高电平2、检查线路板是否有漏电或者短路情况3、所接数码管或者LED发光管存在反向漏电现象。
ch451工作原理
标题:CH451多功能外围芯片工作原理及其应用引言CH451是由WCH公司开发的一款高度集成的多功能外围芯片,专为简化系统设计、减少组件数量以及提高系统可靠性而设计。
该芯片集成了数码管显示驱动、键盘扫描控制以及微处理器(uP)监控等多种功能,广泛应用于仪器仪表、工业控制、家电产品以及其他需要直观人机交互界面的嵌入式系统中。
CH451芯片的主要特性- 内置RC振荡器:CH451内部带有高精度RC振荡电路,可直接生成系统时钟,无需外部晶振,简化硬件设计并降低系统成本。
- 显示驱动能力:能够动态驱动8位数码管或64个独立LED,支持静态和动态显示模式,且具备丰富的显示效果控制,如左移、右移、闪烁等。
- 键盘扫描控制:集成多路键盘输入接口,支持矩阵键盘扫描,能有效管理和识别用户按键输入,大大简化了键盘接口的设计与编程。
- 数据处理功能:提供字数据左循环和右循环命令,便于实现数码管显示内容的滚动更新,例如,执行字数据左循环命令后,原本在DIG0位置的数字将移动到DIG7的位置,并从DIG7位置补充进原DIG0的数据。
工作原理概述CH451通过SPI或者特定的指令集与主控制器(如MCS51系列单片机)进行通信,主控器可以向CH451发送命令来控制其显示状态、键盘扫描以及其他相关功能。
对于显示部分,CH451根据接收到的数据流更新数码管或LED的状态;在键盘扫描方面,芯片会自动检测键盘矩阵上的按键动作并将结果返回给主机进行处理。
接口方法与软件驱动程序CH451与单片机之间的接口通常包括数据线、命令/时钟线和使能线。
在软件层面,开发者需按照CH451的数据手册编写相应的初始化代码和驱动函数,以实现对芯片各项功能的精确控制。
例如,设置显示模式、加载待显示的数据、启动键盘扫描任务以及响应按键事件等。
应用实例在实际应用中,CH451常用于智能电表、工业设备控制面板、家电产品的显示屏和控制按键模块,通过灵活配置及简单的编程即可实现复杂的人机交互界面设计。
键盘扫描与LED数码管显示课件
设计温度传感器模块,如 DS18B20,用于获取环境温
度。
编写程序读取温度传感器数 据,并进行处理和转换。
04
05
使用LED数码管显示当前温 度值,如“25℃”。
THANKS
感谢观看
特点
LED数码管具有高亮度、低功耗、寿命长、耐腐蚀等特点,且体积小、重量轻, 易于安装和携带。
LED数码管的应用场景与优势
应用场景
LED数码管广泛应用于各种需要数字 显示的场合,如仪表盘、计时器、遥 控器等。
优势
LED数码管具有高亮度、低功耗、寿 命长等特点,能够提供清晰、稳定的 数字显示,同时价格相对较低,易于 实现大规模生产。
联合应用的常见问题与解决方案
常见问题
键盘扫描可能会出现按键抖动、串扰等 问题;LED数码管显示可能会出现亮度不 均、闪烁等问题。
VS
解决方案
针对按键抖动问题,可以采用软件消抖或 硬件消抖的方法;针对串扰问题,可以增 加隔离电路或采用差分信号传输方式。针 对LED数码管亮度不均问题,可以调整各 段数码管的电流参数;针对闪烁问题,可 以增加刷新频率或采用动态扫描显示方式 。
放相应音符。
01
设计音符键区,包括 do-re-mi等音符按键。
03
使用LED数码管显示当 前播放的音符名称,如
“C”。
05
详细描述
02
编写程序识别按键并播 放相应音符,如播放C
大调音阶。
04
案例四:温度显示系统设计
详细描述
总结词:通过温度传感器获 取温度值,使用LED数码管
显示温度值。
01
02
03
键盘扫描原理
通过逐行或逐列扫描键盘的每个按键 ,检测是否有键被按下。当某个按键 被按下时,相应的行或列电平发生变 化,从而识别出被按下的按键。
CH451键盘显示实验
实验一 CH451键盘显示实验一、实验内容根据LJD-SY-5100实验板上的CH451与键盘和数码管的接线,编写程序实现:1.上电后数码管从最左边向右移位显示0—F;2.按键时显示相应的键符;并在实验板上调试运行程序,实现上述功能。
CH451与数码管和键盘的接线如图1.1所示,其中数码管为共阴极,4×4键盘,键编码表如表1.1所示。
图1.1 键盘/显示器接线图表1.1 键盘编码表参考程序如下:;*************************************LOAD BIT P1.2DIN BIT P1.0DCLK BIT P1.1DOUT BIT P3.3;**********************************TIMER DATA 030H ;存延时参数TIMER1 DATA 031HTIMER2 DATA 032HTIMER3 DATA 033HKEY_F DATA 034H ;按键标志位KEY DATA 035H ;存键码;***********************************ORG 0000HJMP STARTORG 0013H ;键盘中断使用外部中断1口LJMP CH451_INTORG 030HSTART: MOV SP,#60HMOV P1,#60H ;禁止P1接口上的其它芯片工作;***********************************CLR DIN ;初始化CH451SETB DCLKSETB DINSETB LOADSETB DOUTMOV B,#04H ;设定系统参数命令字MOV A,#03H ;关看门狗,开显示、键盘LCALL WRITE _CH451 ;写入命令MOV B,#05H ;MOV A,#80H ;设置显示参数为译码方式LCALL WRITE _CH451 ;写入命令NOPCLR IT1 ;置外部中断信号为低电平触发CLR IE1 ;清中断标志SETB PX1 ;设置INT1优先SETB EX1 ;允许键盘中断SETB EA ;开总中断LX0: MOV R5,#00H ;显示数据初始化LX: MOV A,R5 ;送显示数据MOV B,#08H ;加载字数据0 命令字(在DIG0位数码管显示)LCALL WRITE _CH451 ;写命令NOPLCALL DELAY_1S ;延时MOV B,#03H ;字数据左移命令字MOV A,#00HLCALL WRITE _CH451 ;写命令INC R5 ;下一个显示数据CJNE R5,#10H,LX ;0—F轮显一遍JMP LX0 ;循环;*********************************************DELAY_1S:MOV TIMER1,#4DLY: MOV TIMER2,#255DLY1: MOV TIMER3,#255DLY2: NOPNOPDJNZ TIMER3, DLY2DJNZ TIMER2, DLY1DJNZ TIMER1, DLYRET;**********************************************WRITE _CH451: 子程序略,参考课件自己补全。
矩阵键盘扫描与数码管显示实验结果分析
矩阵键盘扫描与数码管显示实验结果分析
矩阵键盘扫描与数码管显示实验是一种常见的数字电路实验。
在这个实验中,我们可以通过按下矩阵键盘上的按键,控制数码管上的数字显示。
实验结果分析主要包括以下几个方面:
1. 矩阵键盘扫描:在实验中按下键盘上的某个按键,可以通过扫描算法检测到按键的位置,并将对应按键的行列信息送入微处理器或控制电路。
分析实验结果时,可以观察是否可以正常检测到按键的位置,并且是否能够正确传递给其他部分的电路或处理器。
2. 数码管显示:通过实验中的控制电路,可以将微处理器或其他控制器输出的数字信号转换成数码管上的对应数字显示。
在分析实验结果时,可以观察数码管是否能够正常显示所期望的数字,并且是否能够响应输入信号的变化。
3. 信号传递与处理:在整个实验电路中,信号的传递和处理是关键部分。
可以分析信号在各个部分的传递过程中是否出现错误或干扰,是否能够实现正确的数据传输和处理。
4. 稳定性和可靠性:实验结果的分析还需要考虑电路的稳定性和可靠性。
即在长时间使用或复杂环境条件下,电路能否保持正常工作,并且不出现意外错误或故障。
总结来说,矩阵键盘扫描与数码管显示实验结果的分析需要关注按键的检测和传递、数码管的正确显示、信号传递与处理等方面,同时也需要考虑电路的稳定性和可靠性。
数码管驱动及键盘控制芯片CH451
数码管驱动及键盘控制芯片CH451一、概述CH451 是一个整合了数码管显示驱动和键盘扫描控制以及μP 监控的多功能外围芯片。
CH451 内置RC 振荡电路,可以动态驱动8 位数码管或者64 只LED发光管,具有BCD 译码、闪烁、移位等功能;同时还可以进行64 键的键盘扫描;CH451 通过可以级联的串行接口与单片机等交换数据;并且提供上电复位和看门狗等监控功能。
二、特点(一)显示驱动●内置大电流驱动级,段电流不小于25mA,字电流不小于150mA。
●动态显示扫描控制,直接驱动8 位数码管或者64 只发光管LED。
●可选数码管的段与数据位相对应的不译码方式或者BCD 译码方式。
●数码管的字数据左移、右移、左循环、右循环。
●各数码管数字独立闪烁控制。
●通过占空比设定提供16 级亮度控制。
●支持段电流上限调整,可以省去所有限流电阻。
●扫描极限控制,支持1 到8 个数码管,只为有效数码管分配扫描时间。
(二)键盘控制●内置64 键键盘控制器,基于8×8 矩阵键盘扫描。
●内置按键状态输入的下拉电阻,内置去抖动电路。
●键盘中断,低电平有效输出。
●提供按键释放标志位,可供查询按键按下与释放。
(三)其它●高速的4 线串行接口,支持多片级联,时钟速度从0 到10MHz。
●串行接口中的DIN 和DCLK 信号线可以与其它接口电路共用,节约引脚。
●完全内置时钟振荡电路,不需要外接晶体或者阻容振荡。
●内置上电复位和看门狗Watch-Dog,提供高电平有效和低电平有效复位输出。
●支持3V~5V 电源电压。
●提供SOP28 和DIP24S 两种无铅封装,兼容RoHS。
●引脚及功能基本兼容CH452 芯片。
键盘显示芯片CH451与MEGA32的接口设计
键盘显示芯片CH451与MEGA32的接口设计在水泥生料率值配料系统中需要监控水泥厂的多条生产线。
它的硬件单元率值配料下位机硬件系统需要多个数码管和来显示工况,并且还需要键盘控制。
假如采纳普通的显示计划则元器件多且复杂,导致系统牢靠性降低,成本加大。
采纳集成了键盘显示功能的驱动芯片CH451后使设计计划大大简化,更具经济性和牢靠性。
1 键盘显示计划比较无数以为核心的仪器仪表都需要数码管显示和键盘扫描。
在单片机的开发过程中,经常会由于资源不足而不得不大量扩展接口芯片以满足应用系统的需要,从而造成系统浩大,同时也降低了系统的牢靠性。
在单片机应用系统中,键盘显示通常可采纳如下3种计划。
1.1 经典计划:用法8279芯片采纳并行接口的键盘显示专用芯片8279,该芯片是Intel于20世纪80年月首先推出的,应用较成熟,但所需外围元件(显示驱动、译码等)多、占用板面积大、综合成本高,在中小系统中经常大材小用。
1.2 自由计划:用法辅助单片机在仪器的主控单片机之外,另外用法一个辅助的单片机特地做显示驱动和键盘扫描。
为了提高串行接口的速度,辅助单片机需要尽可能高的系统时钟,而参考单片机厂商的解释,采纳低成本的外部阻容振荡很难稳定地工作在10 MHz以上。
所以在工业现场,辅助单片机很可能由于阻容振荡频率太高而受到干扰,甚至内部程序跑飞或者意外死锁。
其优点是灵便,缺点是元器件多,速度慢,易受干扰,综合成本高。
1.3 新计划:用法CH451芯片CH451由南京沁恒公司生产,是以硬件实现的多功能外围芯片,用法串行接口,支持显示驱动和键盘扫描以及μP监控,外围元器件极少,十分适合作为单片机的外围辅助芯片,工作原理1所示。
CH451的特点是:a) 具有大驱动能力,段电流不小于25 mA,字电流不小于150 mA,平均段电流是辅助单片机计划的8倍,而且非延续的电流驱动能力更高。
b) 用硬件实现,串行接口、显示驱动、键盘扫描、μP监控之间互相自立不受干扰,串行接口的位时钟能够支持到10 MHz,数据传输速度比辅助单片机计划提高40倍,即使主控单片机频繁操作也彻低不会影响显示驱动和键盘扫描以及μP监控。
基于CH451芯片的LED显示系统的设计
[]崔坚 . 4 西门子工业 网络通信指南[ . 京: M】北 机械工业出 版社 ,0 5 20.
员 实施 操 作授 权 管理 , 员 操作 安全 、设备 安 全符 合 人
国家相 关 规范 。在 保 证安 全 可靠 的前提 下 , 统还 具 系 有 良好的开放 性 , 要措施 为 : 用开放 的通用 的 网络 主 采
的软硬件设计 与实现 . 线电视技术,0 8 ()9 — 4 有 2 0 ,6 :2 9 . [】庞家成 . 7 多功能 L D信息显示屏的设计… . E 现代电子技 术,0 6 2 ,9 :4 —19 2 0 ,9 () 17 4 .
示, 分别接到 L A O D、D N和 DC K脚。4 8×8 E I L 个 L D阵 列组成 l 6的点阵屏模块, 6X1 如果要显示一个汉字 , 只要
n0 】冯寿鹏 , 张大鹏 . 基于嵌入 式系统的L D信息显示技术 E 研究【】现代电子技术 ,0 6 2 ,2 )1 8 6 . J. 2 0 ,9 (3 :5 —10 [1 1]刘清明. 嵌入式系统 的L D点阵显示控制系统设计[] E J.
中国水运( 理论版)2 0 ,()9 - 6 ,0 6 46 :5 9 .
控 制 工程 。
[】周林 , 4 殷侠 . 数据采集 与分析技术【 , M]西安 : 西安 电子科
( 上接第 9 2页) 经 过 近 半 年 的 生 产调 试 ,本 系 统 运行 安 全 可靠 、 控制 稳定 。我 们在设 计 、生 产 、安 装和调 试 中执 行严 格的 I O9 0 质量管理规范 , S 01 管理层 系统 有严格的用户 权 限功能 , 保证 了系 统 的安 全运 行 。 网络 结构 布 局合 理, 设备 网和控制 网 既能相互 结合 , 又能相 互独立 。当 上 层控 制 网 出现故 障时 , 统能 把控 制 权 限交 由设 备 系 层 控 制 , 证整 个 工艺 线 的正 常 运行 。对各 类 操 作人 保
CH451显示按键驱动——C语言程序
for(i=0;i<7;i++)
{
keycode<<=1;//数据移入keycode,高位在前,低位在后
keycode|=ch451_dout;//从高到低读入451数据
ch451_dclk=0;//产生时钟上升沿锁通知ch451输出下一位
ch451_dclk=1;
#define CH451_TWINKLE 0x0600 //设置闪烁控制
#define CH451_DIG0 0x0800 //数码管位0显示
#define CH451_DIG1 0x0900 //数码管位1显示
#define CH451_DIG2 0x0a00 //数码管位2显示
//CH451.c显示按键驱动芯片程序(mushy制作,QQ:1052772177)
//AT89s52
#define CH451_RESET 0x0201//复位
#define CH451_LEFTMOV 0x0300//设置移动方式-左移
#define CH451_LEFTCYC 0x0301//左循
}
IE1=0;//清中断标志
EX1=1;
return keycode;
}
/*********************************************************************************/
/*中断子程序,使用外中断2,寄存器组2*/
ch451_dclk=1;
}
ch451_key=keycode; //保存键值
fk=1; //设置按键标志
IE1=0; //清中断标志
ch451完成按键显示[指南]
ch451实现按键显示CH451_DCLK BIT P1.7 ;串行数据时钟,上升沿激活CH451_DIN BIT P1.6 ;串行数据输出,接 CH451 的数据输入CH451_LOAD BIT P1.5 ;串行命令加载,上升沿激活CH451_DOUT BIT P1.4 ;INT0,键盘中断和键值数据输入,接 CH451 的数据输出CH451_KEY DATA 7FH ;存放键盘中断中读取的键值;********************************************************** ******************; R452 367 1ORG 0000HSTART:ACALL CH451_INIT ;调用初始化程序MOV R5,#00H ;将要显示的数放入R5中MOV R4,#00H ;将要在第几位上显示放在R4中,最右边是0位 2013MOV 50H,R5ACALL CHANGEMOV R5,#01H ;将要显示的数放入R5中MOV R4,#01H ;将要在第几位上显示放在R4中,最右边是0位 2013MOV 51H,R5ACALL CHANGEMOV R5,#02H ;将要显示的数放入R5中MOV R4,#02H ;将要在第几位上显示放在R4中,最右边是0位 2013MOV 52H,R5ACALL CHANGEMOV R5,#03H ;将要显示的数放入R5中MOV R4,#03H ;将要在第几位上显示放在R4中,最右边是0位 2013MOV 53H,R5ACALL CHANGEKEYSHOW:ACALL SCAN1MOV A,R4CJNE R4,#00H,CC1INC 50HMOV R5,50HAJMP TTEESCC1: CJNE R4,#01H,CC2INC 51HMOV R5,51HAJMP TTEESCC2: CJNE R4,#02H,CC3INC 52HMOV R5,52HAJMP TTEESCC3: CJNE R4,#03H,KEYSHOWINC 53HMOV R5,53HAJMP TTEESTTEES:MOV A,R5TTEESEE: CJNE A,#00H,QWER1 AJMP TTEESEQWER1: CJNE A,#01H,QWER2 AJMP TTEESEQWER2: CJNE A,#02H,QWER3 AJMP TTEESEQWER3: CJNE A,#03H,QWER4 AJMP TTEESEQWER4: CJNE A,#04H,QWER5 AJMP TTEESEQWER5: CJNE A,#05H,QWER6 AJMP TTEESEQWER6: CJNE A,#06H,QWER7 AJMP TTEESEQWER7: CJNE A,#07H,QWER8AJMP TTEESEQWER8: CJNE A,#08H,QWER9AJMP TTEESEQWER9: CJNE A,#09H,QWER0AJMP TTEESEQWER0: SUBB A,#10AJMP TTEESEETTEESE: MOV R5,AACALL CHANGESJMP KEYSHOWSJMP $;********************************************************** ******************;子程序调用;********************************************************** ******************; 初始化子程序CH451_INIT:CLR CH451_DIN ;先低后高,输出上升沿通知 CH451 选择 4 线串行接口SETB CH451_DCLK ;置为默认的高电平SETB CH451_DINSETB CH451_LOADSETB CH451_DOUT ;置为输入CLR IT0 ;置外部信号为低电平触发SETB PX0 ;置高优先级或者低优先级CLR IE0 ;清中断标志SETB EX0 ;允许键盘中断MOV B,#04H ;设置为键盘与显示开MOV A,#03HACALL CH451_WRITERET;********************************************************** ******************;数码管显示程序;********************************************************** ******************;转换程序,在R4位显示R5值CHANGE:MOV A,R5ACALL TTA ;对应M2t1板的数码管转换MOV R2,AMOV A,R4ACALL TTB ;对应m2t1板的数码管位置转换MOV B,AMOV A,R2ACALL CH451_WRITERET;M2T1板数码管对应表TTA: MOV DPTR,#TAB_AMOVC A,@A+DPTRRET;对应m2t1板的数码管位置转换TTB: MOV DPTR,#TAB_B/*AAAA:CJNE A,#00H,AA1SJMP HAHAAA1: CJNE A,#01H,AA2SJMP HAHAAA2: CJNE A,#02H,AA3SJMP HAHAAA3: CJNE A,#03H,AA4SJMP HAHAAA4: CJNE A,#04H,AA5SJMP HAHAAA5: CJNE A,#05H,AA6SJMP HAHAAA6: CJNE A,#06H,AA7SJMP HAHAAA7: CJNE A,#07H,AA8SJMP HAHAAA8: CJNE A,#08H,AA9SJMP HAHAAA9: CJNE A,#09H,AA10SJMP HAHAAA10:SUBB A,#0AHAJMP AAAAHAHA:*/MOVC A,@A+DPTRRETTAB_A:DB 07EH;0 显示数DB 06H ;1DB 0BCH;2DB 09EH;3 后面还没改DB 0C6H;4DB 0DAH;5DB 0FAH;6DB 0EH;7DB 0FEH;8DB 0DEH;9TAB_B:DB 08H;0 显示数码管号DB 09H;1DB 0AH;2DB 0BH;3;********************************************************** ******************;键盘扫描程序;********************************************************** ******************SCAN1:MOV C,CH451_DOUTJC SCAN1ACALL CH451_READMOV R1,AC0: CJNE A,#40H,C1AJMP TESC1: CJNE A,#41H,C2MOV R4,#01HAJMP TESC2: CJNE A,#42H,C3MOV R4,#02HAJMP TESC3: CJNE A,#43H,SCAN1MOV R4,#03HAJMP TESTES:RET;********************************************************** ******************;移位程序;********************************************************** ******************;DELAY_1S 延迟1秒/*DELAY_1S:MOV R7,#20DEL1:MOV R6,#200DEL2:MOV R3,#248DJNZ R3,$DJNZ R6,DEL2DJNZ R7,DEL1RET;左四位左移位/*LIFT:MOV B,#03HACALL CH451_WRITEINC R5ACALL CHANGEACALL DELAY_1SCJNE R5,#09H,LIFTSJMP STARTRET*/;********************************************************** ******************;串口通信读出写入程序;********************************************************** ******************CH451_WRITE:CLR EX0 ;禁止键盘中断CLR CH451_LOAD ;命令开始,此命令可以放在后面MOV R7,#08H ;将 ACC 中 8 位送出CH451_WRITE_8: RRC A ;低位在前,高位在后CLR CH451_DCLKMOV CH451_DIN,C ;送出一位数据SETB CH451_DCLK ;产生时钟上升沿通知 CH451 输入位数据DJNZ R7,CH451_WRITE_8 ;位数据未完继续MOV A,BMOV R7,#04H ;将 B 中 4 位送出CH451_WRITE_4: RRC A ;低位在前,高位在后CLR CH451_DCLKMOV CH451_DIN,C ;送出一位数据SETB CH451_DCLK ;产生时钟上升沿通知 CH451 输入位数据DJNZ R7,CH451_WRITE_4 ;位数据未完继续SETB CH451_LOAD ;产生加载上升沿通知 CH451 处理命令数据SETB EX0 ;允许键盘中断RET; 输入键值子程序CH451_READ: CLR EX0 ;禁止键盘中断CLR CH451_LOAD ;命令开始MOV A,#07H ;读取键值命令的高 4 位 0111B MOV R7,#04H ;忽略 12 位命令的低 8 位CH451_READ_4: RRC A ;低位在前,高位在后CLR CH451_DCLKMOV CH451_DIN,C ;送出一位数据SETB CH451_DCLK ;产生时钟上升沿锁通知 CH451 输入位数据DJNZ R7,CH451_READ_4 ;位数据未完继续SETB CH451_LOAD ;产生加载上升沿通知 CH451 处理命令数据CLR A ;先清除键值单元以便移位MOV R7,#07H ;读入 7 位键值CH451_READ_7:MOV C,CH451_DOUT ;读入一位数据CLR CH451_DCLK ;产生时钟下升沿通知 CH451 输出下一位RLC A ;数据移入 ACC,高位在前,低位在后SETB CH451_DCLKDJNZ R7,CH451_READ_7 ;位数据未完继续CLR IE0 ;清中断标志,读操作过程中有低电平脉冲SETB EX0 ;允许键盘中断RETEND。
cc4511驱动数码管
译码器及其应用一、数码显示译码器a、七段发光二极管(LED)数码管LED数码管是目前最常用的数字显示器,图6—5(a)、(b)为共阴管和共阳管的电路,(c)为两种不同出线形式的引出脚功能图。
一个LED数码管可用来显示一位0~9十进制和一个小数点。
小型数码管(0.5寸和0.36寸)每段发光二极管的正向压降,随显示光(通常为红、绿、黄、橙色)的颜色不同略有差别,通常约为2~2.5V,每个发光二极管的点亮电流在5~10mA。
LED数码管要显示BCD码所表示的十进制数字就需要有一个专门的译码器,该译码器不但要完成译码功能,还要有相当的驱动能力。
(a)共阴连接(“1”电平驱动)(b)共阳连接(“0”电平驱动)(c)符号及引角功能图 6-5 LED数码管b.BCD码七段译码驱动器此类译码器型号有74LS47(共阳),74LS48(共阴), CC4511(共阴)等,本电路采用 CC4511 码锁存/七段译码/驱动器。
驱动共阴极LED数码管。
为 CC4511引脚排列图6-6 CC4511 引角排列其中A. B.C. D~ BCD 码输入端a.b.c.d.e.f.g ~译码输出端,输出“1”有效,用来驱动共阴极LED数码管。
—测试输入端, =“0”时,译码输出全为“1”一消隐输入端, =“0”时,译码输出全为“0”LE—锁定端, =“1”时,译码器处于锁定(保持)状态,译码输出保持在 =0时的数值, =0为正常译码。
表6-2为CC4511功能表。
内接有上拉电阻,故只需在输出端与数码管笔段串入限流电阻即可工作。
译码器还有拒伪码功能,当输入码超过1001时,输出全为“0”,数码管熄灭。
表6-2电源和将十进制数的BCD码接至译码器的相应输入端A.B.C.D 即可显示0~9的数字。
四位数码管可接受四组BCD码输入。
CC4511与LED数码管的连接如图6-7所示。
图6-7 CC4511驱动一位LED数码管二、所需器件1、 +5V 直流电源2、CC4511芯片一块3、1K电阻5只4、100K电阻一只5、共阴数码管1个6、拨码开关组三、内容将实验电路的四组拨码开关的输入A.B.C.D 分别接至四组显示译码/驱动器CC4511的对应输入口,LE,BI非,LT非接至三个逻辑开关的输出插口,接上+5 V 显示器的电源,然后按功能表6-2输入的要求掀动四个数码的增减键(“+”与“—”键)和操作与 LE,BI非,LT 对应的三个逻辑开关,观测拨码盘上的四位数与LED数码管显示的对应数字是否一致,及译码显示是否正常。
数码管显示驱动和键盘扫描控制器CH451初始化C语言程序
#include<reg52.h>#define uchar unsigned char#define uint unsigned int#define ch451_rst 0x0201 //复位#define ch451_lmov 0x0300 //设置移动方式-左移#define ch451_lcyc 0x0301 //设置移动方式-左循#define ch451_rmov 0x0302 //设置移动方式-右移#define ch451_rcyc 0x0303 //设置移动方式-右循#define ch451_soff 0x0400 //关显示、键盘、看门狗#define ch451_son 0x0401 //开显示#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_load=P0^0;sbit ch451_din =P0^1;sbit ch451_dclk=P0^2;const uchar DatCode[18]={0x3F,0x06,0x5B,0x4F,//0,1,2,30x66,0x6D,0x7D,0x07,//4,5,6,70x7F,0x6F,0x77,0x7C,//8,9,A,b0x39,0x5E,0x79,0x71,//C,d,E,F0x40,0x00};//-,全灭const uint DigCode[8]={ch451_DIG0,ch451_DIG1,ch451_DIG2,ch451_DIG3,ch451_DIG4,ch451_DIG5,ch451_DIG6,ch451_DIG7};const uinttable[]={0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x00 08,0x0009};void delay(uchar t){uchar tt;for(;t>0;t--)for(tt=200;tt>0;tt--);}void long_delay(uchar t){for(;t>0;t--)delay(255);}void write_ch451(uint cmd){uchar i;ch451_load=0;for(i=0;i<12;i++){ch451_din=cmd&1;ch451_dclk=0;cmd=cmd>>1;ch451_dclk=1;}ch451_load=1;}void ch451_init(){ch451_din=0;ch451_din=1;write_ch451(ch451_rst);write_ch451(0x0401); //开显示}void main(){uchar i;uint temp=0x01;ch451_init();long_delay(5);// write_ch451(0x0c80);write_ch451(0x08ff);write_ch451(0x09ff);write_ch451(0x0aff);write_ch451(0x0bff);write_ch451(0x0cff);write_ch451(0x0dff);write_ch451(0x0eff);write_ch451(0x0fff);while(1){/* for(i=0;i<8;i++){write_ch451(DigCode[i]|table[i]);long_delay(2);} */}}。
基于CH451芯片的LED显示系统的设计
基于CH451芯片的LED显示系统的设计 引言 LED点阵显示是集微电子技术、计算机技术、信息处理于一体的新型显示方式。
由于其具有寿命长、动态范围广、工作稳定可靠、低功耗和快速的时间响应等优点,成为众多显示媒体中的佼佼者,是户外作业显示理想的选择。
用CH451芯片驱动LED点阵有以下特点:速度快,功耗小,动态显示扫描控制,直接驱动64位LED点阵,可以软件控制LED的亮度,以减小功耗。
CH451可以通过1线或者可以级联的4线串行接口与单片机等控制器交换数据。
CH451的串行接口是由硬件实现的,控制器可以频繁地通过串行接口进行高速操作,而绝对不会降低CH451的工作效率。
用它设计的电路,不仅软硬件设计简单,而且功耗低,响应速度快,驱动能力强,占用的I/O口线较少,是一种性价比高、应用灵活的设计方案。
1 CH451的使用说明 CH451内部具有8个8位的数据寄存器,用于保存8个字数据,分别对应于CH451所驱动的8组每组8个的发光二极管,并且支持数据寄存器中的字数据左移、右移、左循环、右循环,并且支持各数码管的独立闪烁控制,在字数据左右移动或者左右循环移动的过程中,闪烁控制的属性不受影响。
CH451具有硬件实现的高速4线串行接口,包括4根信号线:串行数据输入线DlN、串行数据时钟线DCLK、串行数据加载线LOAD、串行数据输出线DOUT。
DIN用于提供串行数据,高电平表示位数据1,低电平表示位数据0,串行数据输入的顺序是低位在前,高位在后。
DCLK用于提供串行时钟,CH451在其上升沿从DIN输入数据,在其下降沿从DOUT输出数据。
CH451内部具有12位移位寄存器,在DCLK的上升沿,DIN上的位数据被移入移位寄存器的最高位寄存器,以此类推,原次低位数据移入最低位寄存器,在该上升沿后的第一个下降沿,原次低位数据从DOUT输出。
CH451允许DCLK引脚的串行时钟频率大于10MHz,从而可以实现高速串行输入输出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
451的数码管显示和键盘显示1.系统功能:单片机在开发过程中,常常会因为资源不足而不得不大量扩展接口芯片以满足应用系统的需要,其中原因之一是人机界面中的键盘显示占用了系统太多资源,从而造成系统庞大,同时降低了系统的可靠性。
在单片机应用系统中,键盘显示通常可采用以下几种方式:(1)采用并行接口的键盘显示专用芯片8279。
但8279所需外围元件多(显示驱动、译码等)、占用电路板面积大、综合成本高,在中小系统中常常大材小用;(2)采用通用并行I/O芯片扩展(如用8155等),但此方案同样需要驱动显示,同时键盘显示扫描还需占用CPU大量时间;(3)采用专用显示控制器,并用CPU的I/O引脚完成键盘输入(如MC14499、PS7219、MAX7219、ICM7218、TLC5921等,大多是串行接口并有显示驱动能力,I/O占用少)。
这种接口方式省去了显示的扫描,而且电路大多也很简单,通常在系统需要的按键较少时比较适用;(4)采用带I2C总线的键盘显示芯片(如显示用SAA1064,键盘用PCF8574),不过这种方式对于无I2C总线接口的CPU来说,编程显得有些不便;(5)采用串行接口的键盘显示专用芯片,如BC7280/81、HD7279、CH451等。
这类芯片占用CPU的资源少,传输速度较快,外围器件要求也较少,在中小系统中都可得到广泛的应用,本文着重介绍CH451的主要特性及接口应用方法。
CH451是一个整合了数码管显示驱动和键盘扫描控制以及μP监控的多功能外围芯片。
CH451内置RC振荡电路,可以直接动态驱动8位数码管或者64位LED,具有BCD译码或不译码功能,可实现数据的左移、右移、左循环、右循环、各数字独立闪烁等控制功能。
CH451内置大电流驱动级,段电流不小于30mA,字电流不小于160mA,并有16级亮度控制功能;在键盘控制方面,该器件内置64键键盘控制器,可实现8×8矩阵键盘扫描,并内置去抖动电路,可提供按键中断与按键释放标志位等功能;在外部接口方面,CH451可选择简洁的1线串行接口或高速4线串行接口,且内置上电复位,可提供高电平有效复位和低电平有效复位两种输出,同时内置看门狗电路Watch-Dog。
2.性能指标:2.1 显示驱动内置大电流驱动级,段电流不小于25mA,字电流不小于150mA。
动态显示扫描控制,直接驱动8位数码管或64只发光LED。
可选数码管的段与数据位相对应的不译码方式或者BCD译码方式。
数码管的字数据左移、右移、左循环、右循环。
各数码管数字独立闪烁控制。
任意段位寻址,独立控制各个LED或者数码管的各个段的亮与灭。
支持段电流上限调整,可以省去所有限流电阻。
扫描极限控制,支持1到8个数码管,只为有效数码管分配扫描时间。
2.2 键盘控制内置64键键盘控制器,基于8x8矩阵键盘扫描。
内置按键状态输入的下拉电阻,内置去抖电路。
键盘中断,低电平有效输出。
提供按键释放标志位,可供按键按下查询释放。
2.3 其他高速的4线串行接口,支持多片级联,时钟速度从0到10MHZ。
串行接口中的DIN和DCLK信号线可以与其他接口电路共用,节约引脚。
内置时钟振荡电路,不需外接晶体或阻容振荡。
内置上电复位和看门狗,提供高电平有效和低电平有效复位输出。
支持3V到5V电源电压。
提供SOP28和DIP24无铅封装。
引脚及功能基本兼容4线接口方式的CH452芯片。
2.4 电气特性CH451显示扫描的周期最大为6.5毫秒,所以数码管不会出现闪屏现象。
键盘扫描间隔,按键响应时间最大为70毫秒;数码管闪烁显示值0.7HZ;看门狗溢出范围300到930毫秒,典型值为550毫秒。
2.5 ch451的操作命令CH451的操作命令均为12位,其中高4位为标识码,低8位为参数,各操作命令如下:●空操作:0000xxxxxxxxB(x可为任意值,下同)空操作命令对CH451不产生任何影响。
该命令可以在多个CH451级联的应用中透过前级CH451向后级CH451发送操作命令而不影响前级CH451的状态。
例如,要将操作命令001000000001B发送给两级级联电路中的后级CH451(后级CH451的DIN引脚连接到前级CH451的DOUT引脚),只要在该操作命令后添加空操作命令000000000000B再发送,那么,该操作命令将经过前级CH451到达后级CH451,而空操作命令留给了前级CH451。
另外,为了在不影响CH451的前提下变化DCLK以清除看门狗计时器,也可以发送空操作命令。
在非级联的应用中,空操作命令可只发送高4位。
●芯片内部复位:001000000001B内部复位命令可将CH451的各个寄存器和各种参数复位到默认的状态。
芯片上电时,CH451均被复位,此时各个寄存器均复位为0,各种参数均恢复为默认值。
●字数据移位:0011000000[D1][D0]B字数据移位命令共有4个:开环左移、右移,闭环左移、右移。
D0为0时为开环,为1时为闭环,D1为0时左移,为1时为右移。
开环左移时 DIG0引脚对应的单元补00H,此时不译码方式显示为空格,BCD译码方式时显示为0;开环右移时,DIG7引脚对应的单元补00H;而在闭环时 DIG0与DIG7头尾相接,闭环移位。
●设定系统参数:010000000[WDOG][KEYB][DISP]B该命令用于设定CH451的系统级参数 如看门狗使能WDOG、键盘扫描使能KEYB、显示驱动使能DISP等。
各个参数均可通过1位数据来进行控制,将相应的数据位置为1可启用该功能,否则关闭该功能(默认值)。
●设定显示参数:0101[MODE][LIMIT][INTENSITY]B此命令用于设定CH451的显示参数,如译码方式MODE(1位)、扫描极限LIMIT(3位)、显示亮度INTENSITY(4位)等。
译码方式MODE为1时选择BCD译码方式,为0时选择不译码方式。
CH451默认工作于不译码方式,此时8个数据寄存器中字节数据的位7~位0分别对应8个数码管的小数点和段G~段A,当数据位为1时,对应的数据段(或发光管)点亮;数据位为0时熄灭。
CH451工作于BCD译码方式主要应用于数码管驱动,单片机只要给出二进制数的BCD码,便可由CH451将其译码并直接驱动数码管以显示对应的字符。
BCD译码方式是对数据寄存器中字节数据的位4~位0进行兼容BCD的译码,可用于控制段驱动引脚SEG6~SEG0的输出,它们对应于数码管的段G~段A,同时可用字节数据的位7控制段来驱动引脚SEG7的输出以对应数码管的小数点,字节数据的位6和位5不影响BCD译码的输出,它们可以是任意值。
将位4~位0进行BCD译码可显示以下28个字符,其中00000B~01111B分别对应于“0~F”、10000B~11010B分别对应于“” 空格、“+” +或加号、“-” 负号或减号、“=” 等于号、“ " 左方括号、“ ” 右方括号、“_” 下划线、“H”、“L”、“P”、“.” 小数点、其余值为空格。
扫描极限LIMIT控制位001B~111B和000B(默认值)可分别设定扫描极限1~7和8。
显示亮度INTENSITY控制位的0001B~1111B和0000B(默认值)则用于分别设定显示驱动占空比1/16~15/16和16/16,以实现16级显示亮度控制。
●设定闪烁控制:0110[D7S][D6S][D5S][D4S][D3S][D2S][D1S][D0S]B设定闪烁控制命令用于设定CH451的闪烁显示属性,其中D7S~D0S分别对应于8个字驱动DIG7~DIG0。
闪烁属性D7S~D0S分别通过1位数据控制,将相应的数据位置为1可使能闪烁显示,否则为正常显示,不闪烁(默认值)。
●加载字数据:1[DIG_ADDR][DIG_DATA]B加载字数据命令用于将字节数据DIG_DATA(8位)写入DIG_ADDR(3位)指定的数据寄存器中。
DIG_ADDR的000B~111B分别用于指定数据寄存器的地址0~7,并分别对应于DIG0~DIG7引脚驱动的8个数码管。
DIG_DATA为待写入的字节数据。
●读取按键代码:0111xxxxxxxxB读取按键代码命令用于获得CH451最近检测到的有效按键的按键代码。
该命令是唯一的具有数据返回的命令,CH451通常从DOUT引脚输出按键代码,按键代码总是7位数据,最高位是状态码,位5~位0是扫描码。
读取按键代码命令的位数据B7~B0可以是任意值,所以控制器可以将该操作命令缩短为4位数据B11~B8。
例如,CH451检测到有效按键并中断时,如按键代码是5EH,则先向CH451发出读取按键代码命令0111B,然后再从DOUT获得按键代码5EH。
操作步骤:接好模块电路,接通5v电源,运行模块测试功能程序,初始可以看到数码管从左到右显示0~7的数据,按对应的功能键数据有不同的显示效果。
3.方案论证:方案一:采用并行接口的键盘显示专用芯片8279。
但8279所需外围元件多(显示驱动、译码等)、占用电路板面积大、综合成本高,在中小系统中常常大材小用;方案二:采用专用显示控制器,并用CPU的I/O引脚完成键盘输入(如MC14499、PS7219、MAX7219、ICM7218、TLC5921等,大多是串行接口并有显示驱动能力,I/O占用少)。
这种接口方式省去了显示的扫描,而且电路大多也很简单,通常在系统需要的按键较少时比较适用;方案三:采用带I2C总线的键盘显示芯片(如显示用SAA1064,键盘用PCF8574),不过这种方式对于无I2C总线接口的CPU来说,编程显得有些不便;方案四:采用串行接口的键盘显示专用芯片,如BC7280/81、HD7279、CH451等。
这类芯片占用CPU的资源少,传输速度较快,外围器件要求也较少,在中小系统中都可得到广泛的应用。
综上所诉采用方案四。
4.系统设计思路系统框图:如图所示,本设计包含单片机、ch451外围芯片、8x8键盘和8位数码管。
通过单片机控制芯片来驱动键盘和数码管。
1CH451的功能与引脚介绍CH451是一个整合了数码管显示驱动和键盘扫描控制以及μP监控的多功能外围芯片。
CH451内置RC振荡电路,可以直接动态驱动8位数码管或者64位LED,具有BCD译码或不译码功能,可实现数据的左移、右移、左循环、右循环、各数字独立闪烁等控制功能。
CH451内置大电流驱动级,段电流不小于30mA,字电流不小于160mA,并有16级亮度控制功能;在键盘控制方面,该器件内置64键键盘控制器,可实现8×8矩阵键盘扫描,并内置去抖动电路,可提供按键中断与按键释放标志位等功能;在外部接口方面,CH451可选择简洁的1线串行接口或高速4线串行接口,且内置上电复位,可提供高电平有效复位和低电平有效复位两种输出,同时内置看门狗电路Watch-Dog。