51单片机利用74HC595驱动数码管

发布者:紫色小猫最新更新时间:2018-05-08 来源: eefocus关键字:51单片机  74HC595  驱动数码管 手机看文章 扫描二维码
随时随地手机看文章

基于51单片机利用八个数码管花样显示如下:
xxx11xxx→xx2222xx→x333333x→44444444→x555555x→xx6666xx→x777777x→88888888
每个状态各一秒,显示反复循环,其中x表示对应的数码管熄灭
问题补充:是共阳极的数码管,利用595芯片驱动的。采用C语言。

===================================================
最佳答案:程序设计完毕,采用PROTEUS仿真截图如下。

51单片机利用74HC595驱动数码管 - 非著名博主 - 电子信息角落

程序如下:
//=============================================
#include
#define uint unsigned int
#define uchar unsigned char

//HC595芯片
sbit H_ds    = P2^0;
sbit H_shcp  = P2^1;
sbit H_stcp  = P2^2;

char code DISP_8[] = {
    0x00, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f};
char code TAB_64[] = {
    0,0,0,1,1,0,0,0,  0,0,2,2,2,2,0,0,
    0,3,3,3,3,3,3,0,  4,4,4,4,4,4,4,4,
    0,5,5,5,5,5,5,0,  0,0,6,6,6,6,0,0,
    0,7,7,7,7,7,7,0,  8,8,8,8,8,8,8,8};
char  i = 1,  j = 0;
char DISP_B[] = {0,0,0,0,0,0,0,0};
//------------------------------------------------------------------
void sendbyte_H(uchar aa)      //利用HC595输出

    char z;
    aa = ~aa;
    for(z = 0; z < 8; z++)  {  //循环8次移入数据
      H_shcp = 0;
      H_ds = aa & 128;         //数据位送到HC595数据线
      H_shcp = 1;              //上升沿输入数据
      aa <<= 1;
    }
}
//------------------------------------------------------------------
void display()
{
    char  z;
    for(z = 0; z < 8; z++)  DISP_B[z] = TAB_64[j * 8 + z];
    j++;  j %= 8;
    for(z = 0; z < 8; z++)  sendbyte_H(DISP_8[DISP_B[z]]);
    H_stcp = 0;   H_stcp = 1;     //上升沿使数据并行输出
}
//------------------------------------------------------------------
void main()
{
    TMOD = 0x01;
    TH0 = (65536 - 46080) / 256;  //50ms@11.0592MHz
    TL0 = (65536 - 46080) % 256;
    TR0 = 1;
    ET0 = 1;
    EA = 1;
    while (1);
}
//------------------------------------------------------------------
void T0_time()interrupt 1
{
    TL0 = (65536 - 46080) % 256;  //重新设置初始值
    TH0 = (65536 - 46080) / 256;  //50ms@11.0592MHz
    i--;
    if (i == 0)  {
      i = 40;
      display();        //花样显示
    }
}
//------------------------------------------------------------------


关键字:51单片机  74HC595  驱动数码管 引用地址:51单片机利用74HC595驱动数码管

上一篇:按键控制移位显示
下一篇:51单片机的中断控制

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

51单片机快热式热水器程序
/*-------------------------------------- 快热式热水器程序 MCU AT89C51 XAL 12MHz --------------------------------------*/ //#pragma SRC #include reg51.h #include intrins.h #include math.h void delay(unsigned int); //延时函数 void display(void); //显示函数 unsigned char keysCAN(void); //按键扫描处理函数 void heatCTRl(void); /
[单片机]
89C51单片机中断知识要点
(图为89C51引脚图) 1、 89C51单片机中共有5 个中断源:两个外部中断,两个定时/计数器中断(溢出),一个串行口中断。 2、 单片机中断系统中有两种不同类型的中断:一种称为非屏蔽中断,用户不能用软件方法加以禁止;另一种称为屏蔽中断,本文描述的都是这种类型。 二、控制字 1、 外部中断。单片机的12、13(P3.2、P3.3)脚引入,名称为INT0、INT1。以上的TCON寄存器用于控制外部中断。 IT0:INT0的触发方式。0表示低电平触发;1表示负跳变触发。 IE0:有外部中断进入时,该位置1。CPU响应后自动清0。 2、 内部中断。TCON寄存器,定时器中已描述。 3、 串行口中断。 4、 中断允许寄存器
[单片机]
89C<font color='red'>51单片机</font>中断知识要点
51单片机是如何存储程序和数据的
简介:(单片机基础知识之单片机存储器)在学校很少用到外扩ROM/RAM的情况,都是用C语言编程,不差空间,代码太大了,买个大ROM的芯片就行了。现在工作了,单位是做SoC的,采用了51的IP核,才算对51的代码/数据空间有了清晰的认识。 在学校很少用到外扩ROM/RAM的情况,都是用C语言编程,不差空间,代码太大了,买个大ROM的芯片就行了。现在工作了,单位是做SoC的,采用了51的IP核,才算对51的代码/数据空间有了清晰的认识。 MCS-51使用哈弗结构,它的程序空间和数据空间是分开编址的,即各自有各自的地址空间,互不重叠。所以即使地址一样,但因为分开编址,所以依然要说哪一个空间内的某地址。而ARM(甚至是x86)这种
[单片机]
c51单片机中断函数
以串口中断为例: 如: void serial() interrupt 4 { } 和 void serial_uart() interrupt 4 { } 两个函数的功能都是定义串口中断函数。函数名字不一样不重要,重要的是函数名字后面的interrupt 4(中断向量表地址)要正确。
[单片机]
基于51单片机的车用数字仪表设计与实现
摘 要:介绍了一种以MCS 51单片机为主控器,以ADC0809为核心,以气压、油压、温度、霍尔元件等传感器为主要外围元件的车用数字仪表(VDI)的设计与实现。该仪表系统具有显示直观、准确,使用方便可靠等优点,代表了车用仪表的最新发展趋势。 关键词: MCS 51单片机;传感器;车用数字仪表 引言 ---车辆仪表是驾驶员与汽车进行信息交流的重要接口和界面,是车辆安全行驶的重要保证。随着电子技术的广泛应用,传统汽车仪表逐渐被微处理器为核心的电子控制数字仪表取代已成为必然趋势。然而,目前国内车辆仪表数字化水平还不高,绝大部分仪表还是模拟式的,而大多数模拟仪表表头的体积较大、数量多,使得显示系统拥挤不堪,影响美观;另外一些模拟
[单片机]
51单片机学习:LED点阵实验(显示数字)
实验名称:LED点阵实验(显示数字) 接线说明: 实验现象:下载程序后,8*8LED点阵显示数字0 注意事项:LED点阵旁的J24黄色跳线帽短接到GND一端 ***************************************************************************************/ #include reg51.h typedef unsigned int u16; //对系统默认数据类型进行重定义 typedef unsigned char u8; //定义74HC595控制管脚 sbit SRCLK=P3^6; //移位寄存器时钟输入 sbit RCLK=P3^5; //存
[单片机]
利用51单片机实现简单射频无线识别装置系统
1 引言 射频识别是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据。射频识别工作无须人工干预,非接触,阅读速度快,无磨损,不受环境影响,寿命长,便于使用。目前,射频识别技术在国外发展非常迅速,射频识别产品种类繁多,已广泛用于工业自动化、商业自动化、交通运输控制管理等众多领域,如汽车、火车等交通监控;高速公路自动收费系统;停车场管理系统;物品管理;仓储管理;车辆防盗等。由于我国射频识别技术起步较晚,除用于中国铁路的车号自动识别系统外,仅限于射频公交卡的应用。 在此,给出一种实现简单射频识别系统的方式。阅读器和应答器均包含在单片机控制系统中,利用2ASK调制与解调电路以及匹配网络电路,使整个系统的可识别有
[单片机]
利用<font color='red'>51单片机</font>实现简单射频无线识别装置系统
MCS-51单片机的硬件结构
MCS-51单片机的基本组成 MCS-51是Intel公司生产的一个单片机系列的总称.在功能上,该系列单片机有基本型和增强型两大类,通常以芯片型号的末位数字来区别。末位数字位“1”的型号是基本型,为“2”的信号是增强型。 MCS-51单片机的内部结构如图所示,基本结构包括: 一个8位的CPU及片内振荡器; 4KB掩膜ROM(8051),4KB EPROM(8751),无ROM(8031); 128B RAM,21个特殊功能寄存器SFK; 4个(P0~P3)8位并行I/O接口,一个可编程全双工通用异步串行接口(UART); 具有5个中断源,2个优先级; 可寻址64KB 的片外ROM和64KB的片外RAM; 两个16位的
[单片机]
MCS-<font color='red'>51单片机</font>的硬件结构
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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