51单片机学习日志-6

下面要将的实验是通过51单片机给数码管进行驱动,其实和上一个实验是有很大关系的,因为可以将数码管看作是很多个发光二极管,就像是前面用单片机控制三个发光二极管一样,只不过这里的情况是需要控制8个发光二极管,正常来说一个数码管的发光二极管的个数为8个,所以可以使用一个寄存器来进行控制,下面就来讲一下如何实现这个功能。截屏2026-03-27 下午12.13.27
如图所示,将数码管与单片机连接好,这里需要在端口外部连接上拉电阻,这是因为将端口设置为输出模式的话,需要上拉电阻的作用才能输出高电平,而又因为这里的数码管是共阴极的,所以需要输出高电平才能驱动这个数码管。然后将电路连接好了,就可以进行代码的编写了。其实和上一个实验是很类似的,都是要先对端口进行配置,这里要配置8个端口,同时要配置为输出模式,然后是因为八个发光二极管有很多种不同的组合,其实也就对应了需要显示的数字,可以想之前那样,通过定义一个整型变量,在每一次循环都自增,然后根据这个变量的值,选择需要显示怎样的数字,上一个实验用到的是switch语句,而如果想让代码更加简洁,或者说将选择的这段代码模块化,其实可以利用数组这个工具。因为我们需要将整形变量和寄存器的赋值联系,那么就可以定义一个整型或者字符型数组,因为这样数组的每一个元素都能存储八位二进制数,也就对应了寄存器的八位,这是可以满足条件的,同时也可以通过下标来对数组的不同元素进行匹配,而不同的下标对应怎样的现实数字,则是可以通过自己对数组的设定进行修改的。而这个修改的意见就是依据所谓的共阴极八段数码管的字形码,每一个字形码都对应着一个显示效果,根据这个对应关系就能得到数组的内容,例如将数码管的现实数字和数组的下标对应在一起,就能很清晰地控制数码管的现实效果。
截屏2026-03-27 下午12.37.26
因为定义是可以放在主函数外面的,所以在主函数外面就可以对这个数组进行定义。选择的数组类型是const unsigned char,这是因为这个对应关系是固定的,为了避免被修改,所以使用了const对其进行限制,在定义的同时也可以直接将初值给到这个数组,这样就能得到这样一个数组,其数值对应着数码管的现实,可以通过数组下标进行识别。这样在主函数中,就可以直接通过给寄存器进行赋值来控制显示,而显示结果就是由下标控制的。下面就是完整的代码演示。截屏2026-03-27 下午12.52.18
截屏2026-03-27 下午12.52.29
截屏2026-03-27 下午12.53.02
截屏2026-03-27 下午12.53.11

posted @ 2026-03-27 12:54  getacat  阅读(4)  评论(0)    收藏  举报