您的位置 首页 芯闻

74ls164单片机编程汇总(跑马灯/驱动数码管)

74ls164单片机编程汇总(跑马灯/驱动数码管)-本文主要介绍了74ls164单片机编程汇总(跑马灯/驱动数码管)。用单片机驱动LED数码管有很多方法,按显示方式分,有静态显示和动态(扫描)显示,按译码方式可分硬件译码和软件译码之分。使用数码管时,要注意区分这两种不同的接法:共阴极和共阳极。共阴极时,为1则亮;共阳极时,为0则亮。比如共阴极的方式接数码管,显示“1”,则编码为0x3f,即00111111(dp g f e d c b a )。

74ls164单片机编程(一):选用74LS164驱动LED数码管

单片机驱动LED数码管有许多方法,按显现方法分,有静态显现和动态(扫描)显现,按译码方法可分硬件译码和软件译码之分。本实例用两片74LS164选用动态扫描的方法驱动两个7段数码管显现,如下图所示。由于74LS164没有数据锁存端,所以数据在传送过程中,数码管上有闪烁现象,驱动的位数越多,闪烁现象越显着。为了消除这种现象,能够在电路中添加一个PNP型的三极管来操控数码管的接地端,这样在数据传送过程中,封闭三极管使数码管断电而不显现,数据传送完后马上使三极管导通。这种方法可驱动十几个74LS164显现而没有闪烁现象。

74ls164单片机编程汇总(跑马灯/驱动数码管)

本实例选用动态改写方法在两个7段数码管上显现数字,P3.4用来操控741s164的清零端,用两个PNP三极管来操控数码管的通电,然后消除在传输数据的过程中数码管的显现颤动问题。

程序代码:

74ls164单片机编程汇总(跑马灯/驱动数码管)

74ls164单片机编程汇总(跑马灯/驱动数码管)

74ls164单片机编程(二)

单片机操控74LS164驱动数码管

运用74LS164驱动数码管,咱们首先来澄清74LS164的工作方法,然后学习如安在自己板子上衔接线路。

74ls164单片机编程汇总(跑马灯/驱动数码管)

74ls164单片机编程汇总(跑马灯/驱动数码管)

74ls164单片机编程汇总(跑马灯/驱动数码管)

运用数码管时,要注意区别这两种不同的接法:共阴极和共阳极。共阴极时,为1则亮;共阳极时,为0则亮。

为了显现数字或字符,有必要对数字或字符进行编码。七段数码管加上一个小数点,合计8段。这些段分别由字母a,b,c,d,e,f,g,dp来表明。当数码管特定的段加上电压后,这些特定的段就会发亮,以构成咱们眼睛看到的字样了。

比方共阴极的方法接数码管,显现“1”,则编码为0x3f,即00111111(dp g f e d c b a )。

静态显现程序如下:

/*———————————–

功用:数码管 静态显现0-F

单片机:AT89S52

————————————*/

#include “reg52.h”

#define uint unsigned int

#define uchar unsigned char

sbit DAT=P0^3;

sbit CLK=P0^2;

void sendbyte(uchar byte);

void delay(uint z);

uchar code tab[]={

0xed,0x09,0xbc,0x9d,0x59,0xd5,

0xf5,0x0d,0xfd,0xdd,0x7d,0xf1,

0xe4,0xb9,0xf4,0x74,0x00} ; //0-F, 全灭

/*========================

主函数

=========================*/

void main()

{

unsigned char h;

while(1)

{

for(h=0;h《17;h++)

{

delay(500); //延时大约是0.5s

sendbyte(h);

delay(500);

}

h=0;

}

}

/*====================================

用74LS164来输出一个8位的数据,

点亮数码管相应的管脚,以显现数字

=====================================*/

void sendbyte(uchar byte)

{

uchar num,c;

num=tab[byte];

for(c++=0;c《8;c++)

{

CLK=0;

DAT=num&0x01; //每一位的输出

CLK=1; //每一次上升沿,输出一位数据

num》》=1; //右移位赋值 ,以供下一位的输出

}

}

/*==============================

延时子程序

===============================*/

void delay(uint z)

{

uint x,y;

for(x=z;x》0;x–)

for(y=110;y》0;y–);

}

74ls164单片机编程(三)

51单片机驱动74ls164跑马灯,优点是只用了2个端口即可完成,电路如下图所示:

74ls164单片机编程汇总(跑马灯/驱动数码管)

#include

#include

#define uint unsigned int

#define uchar unsigned char

sbit dat=P2^6;

sbit clk=P2^7;

uchar ii;

uchar code seg7code[]=

{0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0xff};//0-9,-,全灭

void sendbyte(uchar seg)

{

uchar num,c;

num=seg7code[seg];

for(c=0;c《8;c++)

{

dat=num&0x80;

num=_crol_(num,1);

clk=0;

clk=1;

}

}

void delayms(int ms)

{

uchar mi,mj;

for(;ms》0;ms–)

for(mi=6;mi》0;mi–)

for(mj=82;mj》0;mj–);

}

void main()

{

for(ii=0;ii《10;ii++)

{

sendbyte(ii);

delayms(200);

}

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/xinwen/347803.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部