>

萤火虫瓶子&LCD1602串口转换板

2013-03-19 by Stavros

前者是用AVR的io口模拟PWM, 驱动8个LED闪亮.

视频链接

装到大玻璃瓶里, 关了灯看, 效果不错.

分别试验了用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快速、稳定, 成本也是三种方式里最低的.

后记: 后来还是觉得4线接法驱动LCD1602不太稳定. 继续改进, 改为用HC164的八个输出驱动LCD1602的全部8位数据接口, 输入端同时驱动RS脚, 同时再用一个IO来驱动EN脚. 总共用了三个IO, 不过稳定性好多了.