Lesson03:四位数码管操作(旧博客迁移) - wuq

时间:2024-02-22 12:11:46

Lesson03:四位数码管操作(旧博客迁移)

 数码管是由若干个LED发光二极管按照一定的图形组合构成的,最常见的是八段数码管(含小数点)。数码管的应用非常普遍,从日常生活中各种家用电器的数字显示到比赛场馆的计分装置再到十字路口的交通信号灯系统等等。常见的八段数码管的外形和管脚定义如图3.1所示:

Lesson03:四位数码管操作 - Cody - Mr. W的博客
左边的是单个数码管和引脚定义,右边是四联数码管和引脚定义。为了减少封装引脚,多联数码管的每一个单元的字段(a~dp)是复用的。同时根据数码管公共端(COM)的连接方式又可分为共阳和共阴两种。数码管的内部结构如图3.2所示:
Lesson03:四位数码管操作 - Cody - Mr. W的博客
从它的内部结构可知,共阳数码管的每个字段是低电平点亮的,共阴反之。对单个数码管用静态显示的方法,数字显示只要给对应的字段赋值就行。当数码管数量较多时,就需要N*8个数据线,这种时候更多的采用动态扫描实现的方法。比如四位数码管要显示“1234”,先选中第一个数码管(可通过控制公共端COM的开关状态实现)输出‘1’的字段编码,再选中第二个数码管输出‘2’的字段编码,依次类推。当扫描刷新速度足够快,由于人眼的视觉暂留特性,看起来就是四个数码管同时显示的效果。扫描刷新速度一般整体取>25Hz,如果要实现N位显示,那么刷新速度就是N*25Hz。当然也不宜太快,否则会造成显示不清楚。
 一、电路分析
实验板上的数码管部分的电路如图3.3所示:
Lesson03:四位数码管操作 - Cody - Mr. W的博客
四个三极管Q3~Q6控制每一位数码管的开关对应单片机的P1.0~P1.3。各数码管的显示字段都是连在一起的,对应单片机的P0口。四联数码管是共阳方式动态扫描连接,要打开某一位数码管只要给对应的PNP三极管的基极赋低电平,同时给对应的字段赋低电平即可。
二、软件编程
1、在用户库文件WA51.h中添加数码管接口定义(#include之后,#endif之前
Lesson03:四位数码管操作 - Cody - Mr. W的博客
 2、在外设驱动源文件WA51.C中添加数码管驱动子函数
Lesson03:四位数码管操作 - Cody - Mr. W的博客
  将八段数码管所能显示的16进制数‘0’~‘F\'做成查找表,数组下标为对应的数字,数组值就是该数字对应的字段编码。数码管的位选可以通过查表(数组TubeBit[])也可以直接通过移位运算。整个子函数首先选中第一位数码管,然后输出字段编码,最后调用延时函数延时5ms以满足显示时序要求。
3、在主函数中进行数码管驱动函数调用
Lesson03:四位数码管操作 - Cody - Mr. W的博客
 
显示一组数据和显示两组数据时不能同时使用,使用一种时需把另一种用/*  */进行注释。
4、最后留一个课后作业给大家,模仿显示两组数据的写法,实现8位学号信息的滚动显示。