⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led_74hc164wr.c

📁 模拟串口发送数据并结合74LS164或74HC164进行显示,达到使用2根引脚显示4个或更多的LED
💻 C
字号:
/*功能说明://///////////////////////////////////////////////////////
/////此为模拟串口发送数据并结合74LS164或74HC164进行显示/////////////
/////LED_WR.c 是一个在 51 单片机上运行的 C语言程序代码./////////////
/////运行结果为在LED数码管上写入"1234"./////////////////////////////
////////////////////////////////////////////////////////////////////
运行方法:
  在Keil 环境下,进行编译,注意应选择生成 .HEX 文件,通过在系统编程下载电缆,将 .HEX 文件下载到 89c52 单片机中,运行后,
  在LED数码管上显示上述数字.*/
#include <reg52.h>

sbit LED_CLK=P3^1;   //LED时钟线
sbit LED_DAT=P3^0;   //LED数据线(可用任务一个I/O引脚代替)

const char code LED_FONT[11]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF}; 
           //共阳七段码字库:   0	1 	  2    3    4    5    6    7    8    9    -
/*
const char code LED_FONT[11]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X40}; 
           //共阴七段码字库:   0	1 	  2    3    4    5    6    7    8    9    -
*/
void display_char(char ch)
{
    char i,mask=0x01;
    for(i=0;i<8;i++)
    {
        LED_CLK=0;
        LED_DAT=(ch & mask);
        mask=mask<<1;
        LED_CLK=1;
    }
}

void display_clear()  //清除显示 
{  
    char i,ch;
	ch=0xff;
    for(i=0;i<4;i++)
    {
         display_char(ch);
    } 
}

void display_init()
{
    char i,j;
    for(i=0;i<4;i++)
    {
        for(j=0;j<=7;j++)
        {
            LED_CLK=0;
            LED_DAT=0;
            LED_CLK=1;
        }
    }
}
void delay_ms(unsigned char ms )     // 延时毫秒
{
	unsigned short i;
	while (ms--) {
		for(i=0;i!=125;i++);
	}
}
void main()
{
    
    char i,j,mask;
    display_init();//显示初始化
	delay_ms(2000);
	display_clear();//清除所有显示
	delay_ms(2000);
	for(i=1;i<5;i++){
		mask=0x01;
		for(j=0;j<8;j++){
			LED_CLK=0;
			LED_DAT=( (LED_FONT[i]) & mask);
			mask<<=1;
			LED_CLK=1;   //上升沿移位
		}
	}
	while(1);

}	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -