51 单片机 74HC595 驱动四位共阴数码管教程
以下是 51 单片机驱动四位共阴数码管的代码:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit LATCH = P2^2; //锁存器控制引脚
sbit DATA = P2^0; //数据引脚
sbit CLK = P2^1; //时钟引脚
uchar code seg_table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴数码管段码表
void delay(uint x) //延时函数
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<500;j++);
}
void send_byte(uchar dat) //发送一个字节
{
uchar i;
for(i=0;i<8;i++) //循环8次
{
CLK = 0; //时钟线拉低
DATA = dat&0x80; //将最高位的值写入数据线
dat <<= 1; //左移一位
CLK = 1; //时钟线拉高
}
}
void main()
{
uchar i,num;
while(1)
{
for(num=0;num<4;num++) //循环4位数码管
{
LATCH = 0; //锁存器控制线拉低
send_byte(0x01<<num); //发送1个字节,控制相应的数码管点亮
send_byte(seg_table[i]); //发送1个字节,显示相应的数字
LATCH = 1; //锁存器控制线拉高
delay(1); //延时1ms
}
}
}
其中,seg_table 数组存储了共阴数码管的段码表,send_byte 函数用于发送一个字节到 74HC595 芯片,main 函数中的 for 循环用于循环 4 位数码管,依次点亮和显示每一位数字。延时函数用于控制数码管的刷新频率。
原文地址: https://www.cveoy.top/t/topic/oVPv 著作权归作者所有。请勿转载和采集!