#include<reg52.h> sbit Data=P2^0; //74HC595串行数据输入引脚 sbit Latch=P2^1; //74HC595锁存引脚 sbit Clock=P2^2; //74HC595时钟引脚 sbit Dig1=P1^0; //第一位数码管选择引脚 sbit Dig2=P1^1; //第二位数码管选择引脚 sbit Dig3=P1^2; //第三位数码管选择引脚 sbit Dig4=P1^3; //第四位数码管选择引脚 unsigned char code Tab[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳数码管段码表 void Delay(unsigned int i) //延时函数 { unsigned int j,k; for(j=0;j<i;j++) for(k=0;k<125;k++); } void SendData(unsigned char dat) //数据发送函数 { unsigned char i; for(i=0;i<8;i++) { if(dat&0x80) Data=1; //最高位为1 else Data=0; //最高位为0 Clock=1; //上升沿 dat<<=1; //数据左移一位 Clock=0; //下降沿 } } void main() { unsigned char i; //循环计数器 while(1) { for(i=0;i<4;i++) //循环显示四个数码管 { Latch=0; //锁存清零 SendData(Tab[i+6]); //数据发送 SendData(0x01<<i); //控制位发送 Latch=1; //锁存置1 if(i==0) Dig1=0; //选择第一位数码管 else Dig1=1; //不选择第一位数码管 if(i==1) Dig2=0; //选择第二位数码管 else Dig2=1; //不选择第二位数码管 if(i==2) Dig3=0; //选择第三位数码管 else Dig3=1; //不选择第三位数码管 if(i==3) Dig4=0; //选择第四位数码管 else Dig4=1; //不选择第四位数码管 Delay(2); //延时2ms } }

STC89C51RC单片机驱动74HC595四位共阳数码管程序

原文地址: https://www.cveoy.top/t/topic/oVOA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录