📄 led.c
字号:
#include <REGX51.H>
#include "type.h"
#include "config.h"
//=======================================================
// 四位共阳/阴数码管管脚图(从正面观看,第一脚为起点,管脚的顺序是逆时针方向排列)
// e 1 2 d g 3 (1~4代表显示的位,左起)
// 1 2 3 4 5 6 (引脚)
// ___ ___ ___ ___ ___
// | | | | | | | | f | a | b
// |___| |___| |___| |___| |___|
// | 1 | | 2 | | 3 | | 4 | e | g | c
// |___| |___| |___| |___| |___| . h(dp)
// d
// 12 11 10 9 8 7
// c h 4 f a b
//=======================================================
sbit DS=P1^0;
sbit ST_CP=P1^1;
sbit SH_CP=P1^2;
#define DispSel(x) (P1=((P1&0x0f)|(1<<x)))
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
void DispData(uchar x)
{
uchar i;
SH_CP = 0;
ST_CP = 0;
for(i=0;i<8;i++)
{
if(x&0x80) //一位一位数据通过DS(P1_0)输出,先输出高位
{
DS = 1;
}
else
{
DS = 0;
}
ST_CP = 1; //上升沿有效,ST对应74HC595的ST_CP,逐位移位输入,但Qn引脚不改变
ST_CP = 0;
x<<=1;
}
SH_CP = 1; //上升沿有效,SH对应74HC595的SH_CP,当8位数据均移入后,才改变Qn的引脚电平,并行输出8位数据
}
void Disp(uchar *p)
{
uchar i;
for(i=7;i>3;i--)
{
DispSel(i);
//if(i==4)delay_1ms();
DispData(dispcode[*p++]);
delay_1ms();
//DispData(0xff); //关显示
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -