📄 led_display.c
字号:
#include <STC12C5412.H>
#include <intrins.h>
#include <port.h>
//共阳段码表,按顺序接A-QA,B-QB
//字节的高位对应数码管的H段,依次类推
static unsigned char code Duan_Tab[19]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90//0-9共阳段码表
,0x88,0x82,0xc6,0xa1,0x84,0x8e //a-f共阳段码表
,0x89,0xc7,0xB7}; //H L = 共阳段码表*/
//共阴数码管段码表
/* static unsigned char code Duan_Tab[19] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,//同上0-9
0x77,0x7c,0x39,0x5e,0x79,0x71, //字母
0x00,0xf3,0x76,0x80,0x40 //特殊的
} */
/* //小数点
static unsigned char code Dian_Tab[]={ 0x80,0x7f} //前面共阴小数点,后面共阳的 小数 点 */
//共阳位控
static unsigned char code Wei_Tab[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
/* //共阴位控
static unsigned char code Wei_Tab[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; */
void delay ()
{
unsigned char i=0xff;
while(i--);
}
/*-------------------------------------------------------------------------------
向74595输出一字节数据子程序
---------------------------------------------------------------------------------*/
void WR_595(unsigned char data num2 )
{
unsigned char data count1;
for(count1=0;count1<=7;count1++){
if((num2&0x80)==0x80) //最高位为1,则向SDATA_595发送1
SDATA_595=1; //发出数据的最高位
else
SDATA_595=0;
num2<<=1; //右移位
SCLK_595=0; //产生上生沿
_nop_();
_nop_();
SCLK_595=1;
}
}
/*-------------------------------------------------------------------------------
打开锁存,更新74595输出子程序
---------------------------------------------------------------------------------*/
void Out_595(void)
{
RCK_595=0;
_nop_();
_nop_();
RCK_595=1; /*上升沿锁存数据*/
}
/*--------------------------------------------------------------------------------------
显示函数
----------------------------------------------------------------------------------------*/
void Led_Display(void)
{ unsigned char i;
for(i=0;i<8;i++)//以显示12345678为例子
{
WR_595(Wei_Tab[i]) ;
WR_595(Duan_Tab[i]) ;
Out_595();
delay();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -