写一个基于STC89C51RC单片机的74HC595驱动四位数码管程序
下面是一个基于STC89C51RC单片机和74HC595芯片的四位数码管驱动程序。该程序使用SPI协议将数据发送到74HC595芯片上,以控制四个共阴数码管的显示。
程序中,使用了一个显示函数display(),该函数接受一个整数参数,将该整数的四位数码显示在数码管上。主函数中,通过不断地调用display()函数,可以实现数码管的循环显示。
需要注意的是,程序中使用到的引脚和端口需要根据具体的硬件连接进行修改。
#include <reg52.h>
sbit LATCH=P2^0; // 74HC595芯片的锁存引脚
sbit SCLK=P2^1; // SPI时钟引脚
sbit MOSI=P2^2; // SPI数据输出引脚
unsigned char segCode[]={ // 数码管段码表
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
};
void delay(unsigned int ms) // 延时函数
{
unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<114;j++);
}
void sendByte(unsigned char byte) // SPI发送一个字节数据
{
unsigned char i;
for(i=0;i<8;i++)
{
MOSI=byte&0x80;
byte<<=1;
SCLK=1;
SCLK=0;
}
}
void display(unsigned int num) // 数码管显示函数
{
unsigned char i;
for(i=0;i<4;i++)
{
LATCH=0;
sendByte(segCode[num%10]);
sendByte(0x80>>i);
LATCH=1;
num/=10;
}
}
void main()
{
while(1)
{
unsigned int i;
for(i=0;i<10000;i++)
{
display(i);
delay(5);
}
}
}
``
原文地址: http://www.cveoy.top/t/topic/hsWe 著作权归作者所有。请勿转载和采集!