📄 led_74hc164wr.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 + -