本来是发在新浪blog的,结果莫名其妙被关了,只好重写一遍……
前者是用AVR的io口模拟PWM,驱动8个LED闪亮。视频:http://v.youku.com/v_show/id_XNTI4Nzc4MDYw.html
分别试验了用PCF8574、74HC164和用一片ATmega48实现用串口驱动1602液晶屏。
PCF8574的方案很简单,4个IO按4线法连接LCD高4位,2个IO连接EN端和RS端。LCD RW直接接地,用一只7660产生负压。需要占用i2c口,显示速度慢、性价比也低,总之不推荐。
用ATmega48扩展的话,可以8线连接,接口用i2c、spi、uart都可以,用一个PWM口产生负压可以节省一只7660,是最灵活的方式,不过用uart时需要双方都有晶振。
用74HC164要多占用两个IO,不过用一些小技巧可以实现只占用两个GPIO:如图,用电阻和二极管形成一个与门,在串行写入数据时将最高位置1,写完8bit后再拉高DATA端,此时与门输出高电平,EN动作。之后要拉低DATA,连续八个CLK以清空164输出端,避免影响下一轮。实测写LCD快速、稳定,成本也是三种方式里最低的。
没有评论:
发表评论