本帖最后由 zenyin 于 2010-2-3 12:37 编辑
今天多引脚的单片机大行其道,是否有足够甚至用不完的口线供我们挥洒,所以斤斤计较的口线“低碳”已经是上世纪的事情了!大谬!!!大谬,如果你的显示和键盘需要两片扁平带才能连接,说明你的的设计还是“教科书学院风范的”!尽量的减少连线,是系统可靠的重要前提,线排类远传和扭动使用,基本属于垃圾设计,也是电子行业的难点,最爱坏的手机就是开盖手机的液晶屏连线哈:))))手机电子电路可以硬扎得当榔头使用(摩托罗拉电视广告)。。。。。。。。。。。。!MAX7219和MAX7279类采用串行接口可以有很少的连线5根(VCC VSS DA CLK EN)连线大大减少。
下面是笔者的产品设计,只用4线实现了4位(也可八位)8位键盘,其间有很多细节和技巧需要宣泄!
两片595串行移位寄存器串接起来实现位选和段选,上面是位下面是段,驱动是高亮纯绿四连动态数码管(黄绿色价低,请将限流电阻减为47欧)595比164更讨人喜欢,等效于164+373锁存,这样的移位和锁存分流是流水线作业互不干扰,这样做出的显示才清爽不“泛红”595是需要三线工作的,第三线是锁存容许!这也就是7279 8279类货色需要那个使能线的“为什么”!(同步)串口可以用方式0,也可用SPI(SPI是方式0的数据“对倒移动”,如果把我这里U17的输出SQH在结连输出又接到另一个串口输入(叫MISO就是SPI方式了:)没什么神秘的)R35和C5实现上电复位拒绝“上电乱字”!5V电源上可加去偶电容,但一定不能加电阻,否则因为这电阻限流会导致电压随当前显示段数波动,如显示1888 第一个18就会很亮看起不舒服!
口线是这样节约的:锁存容许线LCLOK(LOAD CLOCK)(上挑有效,用发送时钟线CLK延迟后代替
由于二极管使放电快充电慢,所以幁个移位器件积分电容冲不满所有不锁存,当数据移完后,只充不放早完能充满!这样就节约了一条口线,还节约了软件(不需要拉低延迟再拉高再拉低软件了!)双赢哈:))
键盘是这样工作的,由于是动态扫描显示,当且仅当在当前位显示且在当前位按下时,三极管9014才饱和把数据线DA拉低。这就是无形的编码键盘(很显然这是没有重键处理而且是默认的优先编码哈:)用户不放键!
有个重大问题,用户不放键盘,DA被始终拉低,那我们下面怎么动态显示呢,那不只有一位显示其他全灭了!
没关系,你此时登记好,是扫描到那(显示缓冲区知道当前在那啊)有按键,随后你讲自己DA本身是0,你再清0,送8次空时钟(用软件CLR P1.7 NOP NOP SETB P1.7 NOP NOP)8次时钟以后送进去下一位将移入全部的00H00H,U2输出全部为0,用户按键被你无形解锁,你可以继续送下位显示了。。。。。。8次以后你讲再次检测到用户按键,你记个数连续有4次(单位扫描频率100HZ)在当前位置扫到有键,确认不是键盘偶然抖动,键码请在当前缓冲区指针上读出!
显然这是一个没有重复键不需要软件找键不需要复杂的消抖程序的“N赢显示键盘”!
但即使是高年级的单片机软件老手,未必能把程序编写得出来!!!!!!
打个擂怎么样? |