数码管的动态显示

实验板:TX-1C     ---   八段数码管采用共阴极连接

内容:显示123456

原理:动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。

#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula = P2^6;
sbit wela = P2^7;

uchar aa,num_du,num_we;

/*段选的码表*/
uchar code table_du[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};

/*位选的码表*/
uchar code table_we[]={
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf};

void main()
{
    num_du = 1;
    num_we = 0;

    TMOD = 0x01; //设置定时器/计数器的工作模式(定时)和工作方式(T0) TMOD:gate T m1 m0
    TH0 = (65536-1800)/256;
    TL0 = (65536-1800)%256;
    EA = 1;      //开总中断
    ET0 = 1;     //开T0中断
    TR0 = 1;     //启动定时器

    while(1)
    {
        if(aa == 1)    //间隔时间要足够小
        {
            aa = 0;

            dula = 1;                //打开段选寄存器
            P0 = table_du[num_du];   //往寄存器写值
            dula = 0;                //关闭段选寄存器

            wela = 1;                //打开位选寄存器
            P0 = table_we[num_we];   //往寄存器写值
            wela = 0;                //关闭位选寄存器

            num_du++;
            if(num_du == 7)
            num_du = 1;

            num_we++;
            if(num_we == 6)
            num_we = 0;
        }
    }
}

void T0_time() interrupt 1  //中断函数,方式1,即T0中断
{
    TH0 = (65536-1800)/256;
    TL0 = (65536-1800)%256;
    aa++;
}

时间: 2025-01-12 07:22:11

数码管的动态显示的相关文章

51单片机实现数码管动态显示

-------------------------------------------- 设计要求: 在8位8端的数码管上动态显示76543210,快速显示时人眼看到的效果为同时亮起 -------------------------------------------- 实现目标: -------------------------------------------- 数码管编码计算: -------------------------------------------- 实现代码: 1

AC620教程 第十五节 8位7段数码管驱动设计与验证

本章导读 电子系统中常用的显示设备有数码管.LCD液晶以及VGA显示器等.其中数码管又可分为段式显示(7段.米字型等)以及点阵显示(8*8.16*16等),LCD液晶的应用可以分为字符式液晶(1602.12864等)以及真彩液晶屏,VGA显示器一般是现在的电脑显示器.芯航线开发板对以上三种设备均提供了硬件接口. 本章将实现FPGA驱动数码管动态显示并提取出实现的电路结构,从电路结构入手编写代码,仿真对设计进行验证.最终板级调试时使用In system sources and probes edi

10-8位7段数码管驱动实验——小梅哥FPGA设计思想与验证方法视频教程配套文档

芯航线--普利斯队长精心奉献 ? 实验目的: 1.实现FPGA驱动数码管动态显示: 2.使用In system sources and probes editor工具,输入需要显示在数码管上的的数据,数码管显示对应数值. 实验平台:芯航线FPGA核心板.数码管_VGA_PS2模块 实验原理: ????电子设计系统中常用的显示设备有数码管.LCD液晶以及VGA显示器等.其中数码管又可分为段式显示(7段.米字型等)以及点阵显示(8*8.16*16等),LCD液晶的应用可以分为字符式液晶(1602.1

基于FPGA的数字频率计(设计全过程)

小序: 前几天看全国大学生电子设计竞赛历年试题,无意间发现了一道题目<简易数字频率计>,跟之前我用verilog写的一个频率计差不多,于是想尝试做一下,题目具体要求如下图中所示,我所用的开发板为 xilinx spartan 3ES, 最后结果还算理想,在要求的范围内的频率测量精度比较高,但是由于板子的限制没能实现脉冲宽度测量等功能,但是其原理比较简单,下文中将会给出设计过程,结果展示图片以及整个工程代码的下载链接. 数字频率计总体设计采用分块的思想,自底向上设计方向,三个子模块包括频率测量模

云龙51单片机视频教程全套包含案例课件及资料

课程简介: 视频教程从开发的角度来讲述单片机开发的整个流程:原理部分从最基本的电子元器件的认识进行讲解,讲述电路工作原理及如何进行电路设计:编程部分从零开始讲解,讲述C语言的基础知识.C 语言如何同实际电路发生联系,每一条语句坚持现场在电脑逐字输入.现场编写代码.现场调式程序.把相关知识点及时讲解:让大家在这一过程中,慢慢积累.转化为自身发现问题和解决问题的能力 .无论你基础如何,只要你认真看.认真听,保证让你学会单片机和C语言. 课程目录: 第一课 如何学好单片机 单片机能做什么,学习单片机需

单片机 之 基于原板的 数码管动态显示

题目要求: 数码管动态显示:已采集的数据存放在数据缓冲器内data[0]-data[3],每个数据为一个字节的长度(0-255),对应外部物理量为0-100度,要求利用动态显示对data的多个数据进行动态循环显示,精度为2位小数. 编码工具:keil 代码暂时不开源! /**/ #include<reg51.h> //头文件 另一种解决办法:(未使用中断和定时器机制,而是直接采用循环来延时), 功能是循环输出256个数,如果想要按要求存到 数据缓冲器,只需要声明一个数组,只存4个数即可 #in

Verilog实现4位数码北京快乐8平台出租管动态显示(FPGA)

本文北京快乐8平台出租haozbbs.comQ1446595067 提供了在Basys2开发板上实现4位数码管动态显示的代码,并在ISE13.4_1上调试通过,下载到开发板后可实现将8个SW输入的两位十六进制数对应的8421BCD码,显示在数码管上. 首先,是以十六进制数显示.比如,在8个开关SW上输入2FH,四个数码管从左到右显示0215. 以下为代码: module x7seg_1( input wire [3:0] high_data, input wire [3:0] low_data,

FPGA六位共阳极数码管动态显示

1 `timescale 1ns/1ps 2 module adc_dis( 3 clk , 4 rst_n , 5 sm_seg , 6 sm_bit 7 ); 8 9 input clk;//50HZ 10 input rst_n; 11 output[7:0] sm_seg;//段选 12 output[5:0] sm_bit;//位选 13 14 reg [7:0] sm_seg; 15 reg [5:0] sm_bit; 16 reg [31:0] count; 17 reg [31:

单片机第4课:共阴极数码管动态显示之定时器

上面是电路图,J16和J15相连,J6的321对应P2^0--P2^2,这样连有利于节省单片机的资源.其中P1^0和LE相连,段选(决定数码管显示什么东东),位选(哪一个数码管亮)由138译码器决定.我们先写程序吧: #include<reg51.h> #define uint unsigned int #define uchar unsigned char //加上code表示将这个存放在ROM当中,否则存放在RAM当中 //RAM存储空间很小,51的只有128Byte uchar code