一、 实验目的
使用 51单片机的八位数码管顺序显示自己的学号。
掌握 C 语言、汇编语言两种编程单片机控制程序的方法。
掌握使用 Keil 4 或 Keil 5 软件编写、编译、调试程序的方法。
掌握使用 Proteus 软件绘制电路原理图、硬件仿真和程序调试。
二、实验设备
笔记本电脑
51 单片机(普中科技)
八位数码管(单片机上已集成)
应用程序:Proteus 8.0、Keil uVision5、stc-isp-v6.88E
三、实验原理
(1)数码管
数码管按段数可分为七段数码管和 8 段数码管,八段数码管比七段数码管多一
个发光二极管单元,也就是多一个小数点(DP),这个小数点可以更精确的表示数码
管想要显示的内容。按能显示多少个(8),可分为 1 位、2位、3位、4位、5 位、6
位、7 位等数码管。
按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。共阳数码管
是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管
在应用时将公共极 COM 接到+5V,当某一字段发光二极管的阴极为低电平时,相
应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指
将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应
用时应将公共极 COM 接到地线 GND上,当某一字段发光二极管的阳极为高电平
时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。
(2)51单片机
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技
术把具有数据处理能力的中央处理器 CPU、随机存储器 RAM、只读存储器
ROM、多种 I/O口和中断系统、定时器/计数器等功能集成到一块硅片上构成的一
个小而完善的微型计算机系统,在工业控制领域广泛应用。
MSC-51 单片机指以 8051为核心的单片机,由美国的 Intel 公司在 1980 年推
出,80C51 是 MCS-51系列中的一个典型品种;其它厂商以 8051为基核开发出的
CMOS 工艺单片机产品统称为 80C51 系列。
本实验中我使用普中科技的 51 单片机来点亮八位数码管并使其显示我的学号
(20198043)。
四、 实验 过程
(1)熟悉数码管
使用 Proteus 软件构建电路图,学会如何点亮数码管,熟悉如何使数码管显示
不同的数字(0-9)。
我们可以按照上面的原理图让对应的段导通,以显示数字。对于共阳数码管,
若显示数字 0,可以让标号为 A,B,C,D,E,F 的段导通,标号为 G,H 的段
不导通,然后将阳极通入高电压,即显示数字 0。
代码举例如下:
最后效果如下,成功点亮一个数码管。
经过更多尝试和学习,学会使多位数码管显示多位数字。
结果举例如下:
(2)多位数码管显示学号
为了显示我们学号,就不能只使用一位数码管,需要使用八位数码管,相较于
单位数码管,多位数码管更加复杂,驱动函数有很大区别。多位数码管使用同一组
段选,不同的位选,因此就不能够一对一地固定显示,这就需要动态扫描。
动态扫描:利用人眼视觉暂留,多位数码管每次只显示一位数字,但是切换频
率大于 200HZ(50 × 4),这样就能让人产生同时显示多个数字的错觉。具体操
作是轮流向数码管送字形码和相应的位选。
一个完整的驱动程序不只以上这些,一个完整的数码管驱动有 6部分:
1. 码表(ROM):存储段码(一般放在 ROM中,节省 RAM空间),例
如数字 0的段码就是 0xC0,码表则包含 0-9的段码
2. 显存(RAM):保存要显示的数字,取连续地址(便于查表)
3. 段选赋值:通过查表(码表)操作,将显存映射到段码
4. 位选切换:切换显示的位置
5. 延时:显示的数字短暂保持,提升亮度
6. 消影:消除切换时不同位置互相影响而产生的残影