一.实验目的、内容、仪器
实验目的:
1.熟悉数码管的功能和使用
2.了解位选和段选,和动态显示的原理
了解74HC138的引脚功能。
实验内容:接共阴极数码管,要求动态显示(HELLOC51),动态扫描显示即轮流向各位数码管送出字形码和相应的位选。
实验仪器:7SEG-MPX8-CC:八位数码管共阴极,74HC573:锁存器,74HC138:译码器,AT89C51:51单片机,RESPACK-8:排阻
二.硬件原理
三.程序流程图
四.代码实现
#include <REGX51.H>
//数码管段码表
unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,
0x66,0x6D,0x7D,0x07,
0x7F,0x6F,0x77,0x7c,
0x39,0x5e,0x79,0x71,
0x76,0x38};
//延时子函数
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
//数码管显示子函数
void Nixie(unsigned char Location,Number)
{
switch(Location) //位码输出
{
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
case 4:P2_4=1;P2_3=0;P2_2=0;break;
case 5:P2_4=0;P2_3=1;P2_2=1;break;
case 6:P2_4=0;P2_3=1;P2_2=0;break;
case 7:P2_4=0;P2_3=0;P2_2=1;break;
case 8:P2_4=0;P2_3=0;P2_2=0;break;
}
P0=NixieTable[Number]; //段码输出
Delay(1); //显示一段时间
P0=0x00; //段码清0,消影
}
void main()
{
while(1)
{
Nixie(1,16);
Nixie(2,14);
Nixie(3,17);
Nixie(4,17);
Nixie(5,0);
Nixie(6,12);
Nixie(7,5);
Nixie(8,1);
}
}
五.实验步骤
(1)了解译码器的功能,以及动态显示原理
(2)搭建仿真电路,勾选debug,建立keil工程,选择单片机型号
(3)给工程创建源码文件,并以.c结尾,添加文件到源组里
(4)生成hex文件,点击魔术棒,在output中勾选Create HRX_File
(5)对代码进行编译,调试debug,点击USE,在下拉菜单里选中“Proteus VSM Monitor 一51 ”进行设置
(6)将程序导入到单片机中运行,双击单片机,选择生成的hex文件
(7)在keil中启动调试,开始运行,观察proteus中的电路
六.结果及讨论文章来源:https://www.toymoban.com/news/detail-713530.html
动态显示原理:1.利用发光管的余辉2.人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示,而实际上多位数码管是一位一位轮流显示的,只是轮流速度非常快,人眼已经无法分辨出来。文章来源地址https://www.toymoban.com/news/detail-713530.html
到了这里,关于实验(四)数码管动态显示实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!