![f4bb598539aae183fe26572400c82d91.png](https://i-blog.csdnimg.cn/blog_migrate/16e347b247a78303367f4268f2692625.jpeg)
使用仿真软件Proteus可以实现单片机控制数码管显示的仿真。该仿真电路包括单片机的最小系统电路、数码管驱动电路,还需要进行编程。Proteus是支持程序联调的,运行后可以看到最终的仿真效果。
1 单片机的最小系统电路
所谓单片机的最小系统电路是指单片机在工作时所需要的最基本的电路,一般包括电源电路、复位电路、晶振电路和下载电路。由于是软件仿真,只需要设计电源电路、复位电路和晶振电路就可以。甚至,只放一颗单片机都可以,软件是默认具有最小系统的。单片机的最小系统如下图所示。
2 数码管驱动电路
单片机驱动数码管具有多种方案,但是一般不会通过GPIO口直接驱动的方式,一般都会通过驱动芯片来实现控制,一方面可以解决单片机驱动能力小的问题;另一方面可以实现以较少的GPIO实现多位数码管驱动的目的。可以使用373/573一类的锁存器来控制数码管,也可以使用595一类的移位寄存器来控制,还可以使用数码管专用的芯片如TM160等来实现控制。
我比较喜欢使用74HC595来驱动数码管。这是一颗移位寄存器,可以级联,只需要三个GPIO口就可以实现多片数码管驱动的目的。驱动一颗数码管的电路如下图。
![1e0d46551a54fb0b3be7d51efda0ee4d.png](https://i-blog.csdnimg.cn/blog_migrate/1252198cc9e508dcaa0ba835d1f746b9.jpeg)
只需要三个GPIO就能实现一颗数码管的控制,如果要驱动多个数码管的话,可以使用多片595级联,如下图所示:
3 数码管驱动程序的设计
使用74HC595来驱动数码管,其程序设计也非常简单。595是八位的移位寄存器,需要将数据循环八次写入,需要特别注意的是,74HC595具有锁存功能,将数据写入后,需要给CP一个脉冲后,数据才会被输出,如下所示。
![c812c7486583d658bbc8fec1f8b7b773.png](https://i-blog.csdnimg.cn/blog_migrate/79208710c3e7fae6c1c9d18e8affd8d4.jpeg)
单片机驱动数码管是非常简单的设计,是初学单片机必经的小设计,通过该设计可以联系GPIO口的配置、时序图的理解。