Arduino + Proteus 仿真(二)
经过上一篇文章的设置之后(如果还没进行设置的,请看上一篇文章进行设置)这一篇文章就进行实际的操作,使用两款软件来进行仿真。
本次的实验是使用 Arduino UNO 开发板上的 ATmega328p 芯片,以及一个 IO 口拓展芯片来驱动 LCD1602 显示。
首先介绍使用到的这些器件:
- ATmega328p:这个就是单片机,作为电路中的主控芯片
- PCF8574:一个 IO 口拓展芯片,使用 IIC 控制,有八个通用端口和一个中断口,使用这个芯片可以将原本八个端口控制缩小到两个端口控制(不算 VCC 和 GND),具体使用方法可以查看官方文档
- LCD1602:这是一个液晶屏,买的时候都会带有控制芯片,除非你是只买显示屏的,要控制这个液晶屏显示要对控制芯片发送指令,这个芯片分辨率是 16x2,每一位可以显示一个 ASCII 码
之后直接编写单片机的控制代码,代码的作用看注释:
1 |
|
然后贴出 Proteus 的仿真电路图
画好电路图之后要给单片机写入程序,在 Proteus 电路图中双击 ATmega328p 芯片,会看到有很多的设置项,其中要设置 Program File ,填入你的程序编译后的 hex 文件路径;然后设置 CKSEL Fuses,点击右边的下拉列表,选中 (1111)Ext. Crystal 8.0-MHz 选项,最后在 Advanced Properties 设置项里面的输入框填入 16MHz,然后就可以运行仿真查看结果了。
仿真效果
图中每个引脚旁边的有色小方块代表了该引脚的电平状态,红色是高电平,蓝色是低电平,灰色是高阻态。