📄 ledm3.c
字号:
#include <reg51.h>
#include <intrins.h>
#define time (65536-10000)
typedef unsigned int uint;
typedef unsigned char uchar;
sbit A_138=P1^0;
sbit B_138=P1^1;
sbit C_138=P1^2;
sbit D_138=P1^3;
sbit G1_SD=P1^4;
sbit G2_SD=P1^5;
sbit ST_CP=P1^6; //595的锁存脉冲,上升沿有效。
sbit SH_CP=P1^7; //595的移位时钟,在上升沿发生移位。
sbit EN_138=P3^5; //138组成4线16线译码器的使能端,低电平有效。
sbit R1_SD=P3^6; //595的数据端
sbit R2_SD=P3^7;
uchar to_second_cnd=50; //50ms*second_cnd,所以大概2.5s
uchar second_flag=0;
uchar up_down_flag=1; //为1,down;为0,up。
uchar i=0;
uchar cnt =0;
uchar hc138_inport=0;
uchar const ziku[][32]=
{
{0xF7,0xFF,0xF7,0xFF,0xF7,0xFF,0x80,0x83,0xF6,0xBB,0xF6,0xBB,0xF6,0xBB,0xF6,0xBB,0xEE,0xBB,0xEE,0xBB,0xEE,0xBB,0xDE,0xBB,0xDE,0x83,0xBA,0xBB,0x7D,0xBF,0xFF,0xFF},/*"加",0*/
{0xBF,0xBF,0xDF,0xBF,0xDF,0xBF,0xFF,0xBF,0x68,0x03,0xAB,0xBB,0xAB,0xBB,0xEB,0xBB,0xDB,0xBB,0xD8,0x03,0x1B,0xBB,0xDB,0xBB,0xDB,0xBB,0xDB,0xBB,0xD8,0x03,0xDB,0xFB},/*"油",1*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x7F,0xFF,0xFF,0xFF,0xFF,0xFE,0x3F,0xFE,0x3F,0xFF,0xFF,0xFF,0xFF},/*"!",0*/
//{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0xFD,0xBF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFD,0xBF,0xFE,0x7F,0xFF,0xFF,0xFF,0xFF},/*"0",0*/
//{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0xFD,0xBF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFD,0xBF,0xFE,0x7F,0xFF,0xFF,0xFF,0xFF},/*"0",1*/
//{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0xFD,0xBF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFD,0xBF,0xFE,0x7F,0xFF,0xFF,0xFF,0xFF},/*"0",2*/
//{0xF9,0xBF,0xC7,0xAF,0xF7,0xB7,0xF7,0xB7,0xF7,0xBF,0x00,0x01,0xF7,0xBF,0xF7,0xB7,0xF1,0xD7,0xC7,0xCF,0x37,0xDF,0xF7,0xAF,0xF6,0x6D,0xF7,0xF5,0xD7,0xF9,0xEF,0xFD},/*"我",0*/
//{0xFF,0xFF,0xF8,0xFF,0x87,0xFF,0xF7,0x83,0xF7,0xBB,0x80,0xBB,0xF7,0xBB,0xE7,0xBB,0xE3,0xBB,0xD5,0xBB,0xD4,0xBB,0xB5,0xBB,0x77,0x83,0xF7,0xBB,0xF7,0xFF,0xF7,0xFF},/*"和",1*/
//{0xF6,0xFF,0xF6,0x7F,0xEE,0xFB,0xEC,0x01,0xDD,0xFB,0xCB,0xB7,0x97,0xBF,0x5D,0xAF,0xDC,0xB7,0xDD,0xB7,0xDB,0xBB,0xDB,0xB9,0xD7,0xBB,0xDE,0xBF,0xDF,0x7F,0xFF,0xFF},/*"你",2*/
//{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},
//{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},
//{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},
//{0xAA,0xA0,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
//{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
//{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
//{0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe},
//{0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe},
//{0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe},
//{0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa},
//{0x00,0x00,0x00,0x00,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa},
//{0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa},
};
void delay_s(uint x)
{
while(x--);
}
void hc595( uchar temp)
{
uchar count=0;
for(; count<8; count++)
{
SH_CP=0;
R1_SD=temp&0x80;
temp<<=1;
SH_CP=1;
_nop_();
SH_CP=0;
}
}
void timer0(void) interrupt 1
{
EA=0;
TH0=time>>8;
TL0=time&0xff;
if(!(to_second_cnd--))
{
second_flag=1;
to_second_cnd=50;
}
EA=1;
}
void up_down(void)
{
if(second_flag)
{
if (up_down_flag)
hc138_inport++; //down
else //up
{
if(hc138_inport==0)
hc138_inport=15;
else
hc138_inport--;
}
second_flag=0;
}
}
void intrrupt_t0_ini()
{
TH0=time>>8;
TL0=time&0xff;
TMOD=0X01;
TR0=1;
ET0=1;
EA=1;
}
void led_m_dis()
{
for(;i<16;i++,hc138_inport++)
{
for(;cnt<3;cnt++)
{
hc595(ziku[cnt][2*i]);
hc595(ziku[cnt][2*i+1]);
}
ST_CP=0;
_nop_();
ST_CP=1;
ST_CP=0;
delay_s(10);
if(hc138_inport==16)
hc138_inport=0;
EN_138=1;
A_138=hc138_inport&0x01;
B_138=hc138_inport&0x02;
C_138=hc138_inport&0x04;
D_138=hc138_inport&0x08;
EN_138=0;
delay_s(100);
EN_138=1;
cnt=0;
}
i=0;
}
void main()
{
intrrupt_t0_ini();
for(;;)
{
up_down();
led_m_dis();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -