一种基于51单片机利用74HC595驱动数码管的技术

发布者:JoyfulHearted最新更新时间:2023-08-16 来源: elecfans关键字: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单片机“积木式”实验板的制作
下一篇:51单片机与计算机进行通信的实现方法

推荐阅读最新更新时间:2024-10-26 17:50

一种基于51单片机利用74HC595驱动数码管的技术
基于51单片机利用八个数码管花样显示如下: xxx11xxx→xx2222xx→x333333x→44444444→x555555x→xx6666xx→x777777x→88888888 每个状态各一秒,显示反复循环,其中x表示对应的数码管熄灭 问题补充:是共阳极的数码管,利用595芯片驱动的。采用C语言。 =================================================== 最佳答案:程序设计完毕,采用PROTEUS仿真截图如下。 程序如下: //============================================= #include #define uint uns
[单片机]
一种基于<font color='red'>51单片机</font>利用<font color='red'>74HC595</font><font color='red'>驱动</font><font color='red'>数码管</font>的技术
51单片机利用74HC595驱动数码管
基于51单片机利用八个数码管花样显示如下: xxx11xxx→xx2222xx→x333333x→44444444→x555555x→xx6666xx→x777777x→88888888 每个状态各一秒,显示反复循环,其中x表示对应的数码管熄灭 问题补充:是共阳极的数码管,利用595芯片驱动的。采用C语言。 =================================================== 最佳答案:程序设计完毕,采用PROTEUS仿真截图如下。 程序如下: //============================================= #include reg52.h #define u
[单片机]
<font color='red'>51单片机</font>利用<font color='red'>74HC595</font><font color='red'>驱动</font><font color='red'>数码管</font>
51单片机+74hc595锁存器驱动一个静态数码管
实验开发板HC6800 v2.8 (淘宝可以查到) 将JP2 与JP3相连即可,注意排线要反接 代码如下: /* * 标题: 试验数码管上如何显示数字(共阳极) * * * * 连接方法:P2 与P3 用8PIN排线连接 * * * * * / #include reg51.h #include intrins.h void delay(unsigned int i); //函数声名 // 此表为 LED 的字模,0~F un
[单片机]
<font color='red'>51单片机</font>+<font color='red'>74hc595</font>锁存器<font color='red'>驱动</font>一个静态<font color='red'>数码管</font>
两片74HC595级联动态驱动8位数码管 51单片机
功能 : 用2片74HC595驱动8位数码管, 级联的最低1片595控制位选,那么第一片控制段选 时间 : 2013-3-28 21:11:59 作者 : Stone 版本 : REV1 平台 : STC89C52 11.0592MHz 现象 : 8位数码管从第一位开始从0计数,满10进位 版本说明 : 第0版本没有使用定时器中断,同时定义了一个 unsigned long int 变量计数 再把这个数的每位分离出来显示,所以导致有点闪屏,此版本使用定时器中断, 而且没有用 unsigned long int 之类的变量,而是用数组 Val 来计数,
[单片机]
51单片机+74HC595驱动数码管程序
这里是电路图: 完整的源码和图纸下载地址: http://www.51hei.com/bbs/dpj-20392-1.html 下面是51单片机驱动74hc595芯片的程序: #include reg52.h //包含51单片机的头文件 #include stdio.h #define uint unsigned int #define uchar unsigned char //sbit sin_595 =P1^0; //sbit rclk_595 =P1^1; //sbit sclk_595 =P1^2; //sbit s_clr =P1^3; sbit a_cp_595
[单片机]
<font color='red'>51单片机</font>+<font color='red'>74HC595</font><font color='red'>驱动</font><font color='red'>数码管</font>程序
#51单片机#8位数码管(74HC595芯片)的使用方法
数码管基本属性: 1.采用2片595驱动数码管,需要单片机3路IO口,根据数码管动态扫描原理进行显示; 2.宽工作电压3.3V到5V; 3.PCB板尺寸:71mm*22mm 4.数码管型号:0.36 4位共阳 商家给的基本资料: 最新八位串行595数码管资料.rar 8位数码管的连接原理图 #include AT89X51.H #include intrins.h // 函数原形定义 #define uchar unsigned char #define uint unsigned int void main (void); // 主函数 void LED_OUT (uchar X); // LED单字节串行移
[单片机]
#<font color='red'>51单片机</font>#8位<font color='red'>数码管</font>(<font color='red'>74HC595</font>芯片)的使用方法
74HC595控制8位数码管 51单片机
74HC595是8位串行移位寄存器,亦能串行输出控制下一级级联芯片。关于级联、595芯片具体我就不多介绍,大家自己查吧!下面直接贴代码 此程序已成功移植到STM32平台,敬请关注! // 注意 此代码没有什么技术含量,也没有按规范些,旨在说明595怎么控制,大家不要模仿。 // 此代码刷新速度有点慢,注意想办法优化,time变量用定时器中断处理,主函数不断地刷新显示函数,这样就不会有闪屏,当然在STM32平台毫无压力 #include sbit SCK = P3^2; // 数据输入时钟线,脉冲 sbit SI = P3^3; // 数据线 sbit RCK = P3^4; // 锁存 unsig
[单片机]
51单片机C编程(十五 74HC595控制四位数码管
#include reg51.h #include intrins.h #define uchar unsigned char #define uint unsigned int uchar code DAT ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x02,0xf8,0x00,0x10}; sbit SDATA_595=P1^0; //串行数据输入 sbit SCLK_595=P1^1; //移位时钟脉冲 sbit RCK_595=P1^2; //输出锁存器控制脉冲 sbit P20=P2^0; sbit P21=P2^1; sbit P22=P2^2; sbit P23=P2^
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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