STC89C52单片机驱动数码管动态显示

发布者:tmgouzi最新更新时间:2016-04-15 来源: eefocus关键字:STC89C52  单片机  驱动数码管  动态显示 手机看文章 扫描二维码
随时随地手机看文章
//////////////////////////////////////////////////////////////////////////

 实现功能:  驱动开发板上的数码管,滚动显示1、2、3、4、5、6,实现数码管的
             动态显示
 实验板型号:BS-XYD-C52
 实验名称:  动态数码管的显示
 编写人:  谢应东
 编写日期:  2012-4-26      
 //////////////////////////////////////////////////////////////////////////
#include
#include  
                    
#define uchar unsigned char  //定义unsigned char 为 uchar
#define uint  unsigned int  //定义unsigned int 为 uint

sbit Duan=P2^6;     //定义数码管的段选使能端
sbit Wei =P2^7;        //定义数码管的位选使能端

#define Digital_tube_Wei_Enable Wei=1;  //开启控制数码管的位选使能端
#define Digital_tube_Wei_Disable Wei=0;     //关闭控制数码管的位选使能端

#define Digital_tube_Duan_Enable Duan=1; //开启控制数码管的段选使能端
#define Digital_tube_Duan_Disable Duan=0; //关闭控制数码管的段选使能端

#define Digital_tube_Duan P0    //定义数码管数据端口

uchar code Dis_table[]=      //将BCD码转换成数码管扫描码的数组
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};
uchar code Dis_Position[]=  //定义数码管位选的数组
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
//////////////////////////////////////////////////////////////////////////
函数名称:毫秒延时函数
函数功能:实现毫秒级的延时
参数介绍:Delay_MS: 定义需要延时的毫秒的数值
          iNumber: 记录Delay_MS的数值,以for语句实现所要求的延时
    iValue: 要延时毫秒所要进行的循环数值,本数值为实际测得
返回值: 
注意事项:本实验是在所用晶振为12M的前提下实现的毫秒延时,本函数是通过循环的形
          式完成,所以如果改变了晶振的频率,请做相应的改变
//////////////////////////////////////////////////////////////////////////
void DelayMs(uint Delay_MS)
{
 uint iNumber,iValue;
 for(iNumber=0;iNumber   //用for语句实现单片机的延时
 {
     iValue=107;      //107这个数值是通过测定而得
     while(iValue--);
 }
}
//////////////////////////////////////////////////////////////////////////
函数名称:One_DigitalTube_display
函数功能:完成在实验板上数码管指定显示,即在特定的数码管上显示特定的数字,比
          在第一个数码管上显示0
参数介绍:uData:要显示的数字的BCD码数组
          uNumber:选择哪个数码管显示,即让某个特定数码管显示
返回值: 
注意事项:实验板上的数码管是共阴极的数码管,如果使用共阳极的数码管,请注意不
          要弄反了
//////////////////////////////////////////////////////////////////////////
void One_DigitalTube_display(uchar uData,uchar uNumber)

  Digital_tube_Duan_Enable;      //使能数码管的段选
  Digital_tube_Duan=Dis_table[uData];//输入所要显示的数值
  Digital_tube_Duan_Disable;      //关闭数码管的段选
 
  Digital_tube_Wei_Enable;      //使能数码管的位选
  Digital_tube_Duan=Dis_Position[uNumber]; //点亮特定的数码管
  Digital_tube_Wei_Disable;      //关闭数码管的位选
  DelayMs(1);         //调整时序,以实现稳定显示
}
//////////////////////////////////////////////////////////////////////////
函数名称:All_DigitalTube_display
函数功能:让6个数码管显示特定的内容
参数介绍:uData:显示内容数组地址
    uNumber:实现六个数码管的依次显示变量
返回值: 
注意事项:无
//////////////////////////////////////////////////////////////////////////
void All_DigitalTube_display(uchar *uData)
{
  uchar uNumber;
  for(uNumber=0;uNumber<6;uNumber++) //循环6次,6个数码管各亮一次
  {
   One_DigitalTube_display(uData[uNumber],uNumber);
 }
}
//////////////////////////////////////////////////////////////////////////
函数名称:Cycle_DigitalTube_display
函数功能:6个数码管从左到右依次滚动显示指定的内容(循环一次)
参数介绍:uData:显示内容数组地址
          uNumber1:实现数码管滚动的变量
    uNumber2:实现数码管扫描的变量
返回值: 
注意事项:无
//////////////////////////////////////////////////////////////////////////

void Cycle_DigitalTube_display(uchar *uData)
{
  uchar uNumber1,uNumber2;
  for(uNumber1=0;uNumber1<240;uNumber1++)   //滚动6次,每次内容显示40个循环
  {
    for(uNumber2=0;uNumber2<6;uNumber2++) //扫描6个数码管
   {
    One_DigitalTube_display(uData[(uNumber1/40+uNumber2)%6],uNumber2);
    DelayMs(3);   
                         
  }
  }
}
//////////////////////////////////////////////////////////////////////////
函数名称:main
函数功能:实现6个数码管循环滚动显示指定的内容
参数介绍:无
返回值: 
注意事项:无
//////////////////////////////////////////////////////////////////////////
void main()
{
    uchar uData[6]={1,2,3,4,5,6};//六个数码管滚动显示1,2,3,4,5,6
 while(1)
 {
  Cycle_DigitalTube_display(uData);  //调用循环显示函数
 }
}

关键字:STC89C52  单片机  驱动数码管  动态显示 引用地址:STC89C52单片机驱动数码管动态显示

上一篇:STC89C52单片机红外遥控器解码
下一篇:STC89C52单片机的定时器使用

推荐阅读最新更新时间:2024-03-16 14:50

什么是单片机,什么叫单片机
单片机的英文称为:Single-Chip Microcomputer 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。 可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称PC机。它由主机、键盘、显示器等组成(如图1所示)。还有一类计算机,大多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。顾名思义,这种计算机的最小系统只用了一片集成电
[单片机]
什么是<font color='red'>单片机</font>,什么叫<font color='red'>单片机</font>?
单片机基础(七):串行通信概念及其工作原理
通信的基本概念 按照信息的传递方向,通信分为:单工、半双工、全双工三种 单工:一端发送,一端接收 半双工:通信双方都可以发送与接收,但同一时刻,数据传递方向是单一的 全双工:通信双方都可以发送与接收,可以同时进行发送与接收   并行通信和串行通信 并行通信:多个二进制位同时发送/同时接收,传输速度快,适合近距离传输 串行通信:数据排队接收/发送,占用线路少,远距离传输有成本优势   同步通信和异步通信 串行异步通信:根据通信双方各自的时钟基准,按照约定好的速率传输串行数据,实际上若通信双方的时钟基准有偏差,就有可能产生错误 串行同步通信:通信双方按照同一个时钟信号为基准,根据时钟信号传输串行数据。串行同步通信可靠性
[单片机]
<font color='red'>单片机</font>基础(七):串行通信概念及其工作原理
基于51单片机的交通灯设计
一.硬件方案 本设计能模拟基本的交通控制系统,用红绿黄灯表示禁行,通行和等待的信号发生,还能进行倒计时显示。按键可以控制禁行、深夜模式、复位、东西通行、南北通行、时间加、时间减、切换等功能。共四个二位阴极数码管,东南西北各一个显示时间,四个数码管的阴极都接到STC89C51的P1口,阳极接到74HC245芯片上,通过P0口控制74HC245芯片,起到驱动放大作用。 主要硬件:51单片机+最小系统+数码管显示模块+LED指示灯模块+按键模块; 二.设计功能 (1)本设计采用四方向数码管显示时间的设计,更加符合真实的交通信号灯设计; (2)7个按键:复位、夜间模式、紧急模式、设定时间、时间加、时间减、调试确定键; (3)夜间模
[单片机]
基于51<font color='red'>单片机</font>的交通灯设计
PIC单片机模拟读写24C01 EEPROM
//************************************************** //实验目的: //熟悉使用单片机模拟读写24C01 EEPROM //1、首先向24C01 EEPROM写入数据 //2、在从24C01 EEPROM中读取数据,并用LED显示 //************************************************** //************************************************** //硬件设置: //1、SW4开关全部闭合 //2、SW2开关1闭合,其它断开 //3、SW3开关7和8闭合,其它断开 //*******
[单片机]
mcs-51单片机是由哪些部分组成的
学习单片机的内部结构之前,我们先了解下我们现在正在使用的计算机的几大组成部份: 计算机的五个组成部份: 运算器:用于实现算术和逻辑运算。计算机的运算和处理都在这里进行; 控制器:是计算机的控制指挥部件,使计算机各部份能自动协调的工作; 存储器:用于存放程序和数据;(又分为内存储器和外存储器,内存储器就如我们电脑的硬盘,外存储器就如我们的U盘) 输入设备:用于将程序和数据输入到计算机(例如我们电脑的键盘、扫描仪); 输出设备:输出设备用于把计算机数据计算或加工的结果以用户需要的形式显示或保存(例如我们的打印机)。 注:1、通常把运算器和控制器合在一起称为中央处理器(Central Processing Unit),简称CPU。 2
[单片机]
mcs-51<font color='red'>单片机</font>是由哪些部分组成的
基于HR6P62单片机控制的汽车HID 灯控制系统
  单片机控制技术已经在汽车电子中得到广泛应用,它显著提高了汽车的智能控制水平和安全性能。本文将系统地介绍一款高性价比的海尔HR6P62单片机以及该单片机在HID灯控制器上的应用。 一、汽车前照灯的发展历程   据说第一个汽车前大灯是家用手提灯。汽车刚发明时是没有前照灯的,一个驾驶员在黑暗的旷野上迷路时,一位农民用手提灯把他引回家。1898年,哥伦比亚号电动汽车把电用于前灯和尾灯,这样车灯就产生了。最初的前大灯不能调光,所以在会车时有些晃眼。   第一代汽车前照灯是乙炔气前照灯   乙炔气火焰的亮度比当时的电光源所能达到的亮度高出一倍,因而,在1925年以前使用的汽车前照灯几乎全是乙炔前照灯。   第二代汽车前照灯是电光
[汽车电子]
基于HR6P62<font color='red'>单片机</font>控制的汽车HID 灯控制系统
用CPLD实现单片机与ISA总线并行通信
     ISA总线 并行通信      CPLD(Complex Programmable Logic DEVICE)是一种复杂的用户可编程逻辑器件,由于采用连续连接结构。这种结构易于预测延时,从而电路仿真更加准确。CPLD是标准的大规模集成电路产品,可用于各种数字逻辑系统的设计。近年来,由于采用先进的集成工艺和大批量生产,CPLD器件成本不断下降,集成密度、速度和性能大幅度提高,一个芯片就可以实现一个复杂的数字电路系统;再加上使用方便的开发工具,使用CPLD器件可以极大地缩短产品开发周期,给设计、修改带来很大方便 。本文以ALteRA公司的MAX7000系列为例,实现MCS51单片机与PC104 ISA总线的并行通信。采用
[单片机]
用CPLD实现<font color='red'>单片机</font>与ISA总线并行通信
基于M—BUS的趣低功耗数据采集系统
引 言   随着社会的迅速发展,智能小区逐渐进人人们的生活,而自动抄表系统是智能小区的重要功能之一。在水、电、气管理方面,采用自动抄表技术,不仅能节约人力资源,更重要的是可提高抄表的准确性,减少因估计或誊写而造成帐单出错的现象,使水、电、气管理部门能及时准确获得数据信息。另外用户不再需要与抄表者预约上门抄表时间,还能迅速查询帐单,所以这种技术越来越受到用户欢迎。   针对目前市场上自动抄表系统价格不菲的现状,设计一种由零功耗磁敏传感器产生脉冲信号,利用MSP430系列超低功耗单片机的捕获功能捕获信号的数据采集系统。该采集系统价格相对低廉,性能可靠,适用于水、煤气、电表的远传采集;数据传输总线选用M-BUS,传输速度快、距离远、可
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved