📄 led_test.c
字号:
//74123的第1脚A1接地
//74123的第3脚/CLR接+5V
//74123的第4脚/Q1接138第4脚G2A
//CK=P2^3;5026的第3脚CLK及123的第2脚B1
/*#include "reg52.h"
sbit A_data=P2^0;
sbit B_data=P2^1;
sbit C_data=P2^2;
sbit CK=P2^3; //5026的第3脚CLK及123的第2脚B1
sbit ST=P2^4; //5026的第4脚LE
sbit OE=P2^5; //138的第5脚/G2B、E接+5V、G2A接触发器
sbit R1=P1^2;
sbit G1=P1^3;
sbit B1=P1^4;
sbit R2=P1^5;
sbit G2=P1^6;
sbit B2=P1^7;
sbit KEY=P2^6;*/
#include "reg52.h"
sbit A_data=P2^0;
sbit B_data=P2^1;
sbit C_data=P2^2;
sbit CK=P2^3;
sbit ST=P2^4;
sbit OE=P2^5;
sbit R1=P1^2;
sbit G1=P1^3;
sbit B1=P1^4;
sbit R2=P1^5;
sbit G2=P1^6;
sbit B2=P1^7;
sbit KEY=P2^6;
sfr AUXR =0x8e;
void Delay(unsigned char mS);
void Delay_Sec(unsigned char mS);
void key(void);
void init(void); //开始
void dis1_R(unsigned char n);
void dis2_G(unsigned char n);
void dis3_B(unsigned char n);
void dis4_RG(unsigned char n);
void dis5_RB(unsigned char n);
void dis6_GB(unsigned char n);
void dis7_RGB(unsigned char n);
//void POWER_control();
//------------系统变量---------------//
unsigned char data Timer_Out,Fdata,SPdata,Fcount;
unsigned char data R_Grey_G,G_Grey_G,B_Grey_G,i3, //全局调值
rhy_Console;
unsigned char data POWER_data,con_data;
bit data isrhy_Timer;
void Delay(unsigned char mS)
{unsigned char i;
for(i=0;i<mS;i++){;}
}
void Delay_Sec(unsigned char mS)
{unsigned int i;
unsigned char j;
for(j=0;j<mS;j++)
for(i=0;i<5000;i++){;}
}
//************定时为了检测按键*******//
void timer0(void) interrupt 1
{
// TH0 = 254;
// TL0 = 192;
++POWER_data;
//if(++POWER_data>8) POWER_data=1;
switch(POWER_data){
case 0x01:{OE=0;A_data=B_data=C_data=0;CK=0;CK=1;CK=0;} break;
case 0x02:{OE=0;A_data=1;B_data=C_data=0;CK=0;CK=1;CK=0;} break;
case 0x03:{OE=0;B_data=1;A_data=C_data=0;CK=0;CK=1;CK=0;} break;
case 0x04:{OE=0;A_data=B_data=0;C_data=1;CK=0;CK=1;CK=0;} break;
case 0x05:{OE=0;A_data=B_data=1;C_data=0;CK=0;CK=1;CK=0;} break;
case 0x06:{OE=0;A_data=C_data=1;B_data=0;CK=0;CK=1;CK=0;} break;
case 0x07:{OE=0;A_data=0;B_data=C_data=1;CK=0;CK=1;CK=0;} break;
case 0x08:{OE=0;A_data=B_data=C_data=1;CK=0;CK=1;CK=0;} break;
default: OE=1; break;
}
}
//**********主程序*************//
void init(void)
{//***初始化引脚电压***//
AUXR=0x40;
P1=0x00;P2=0xc0;P3=0xff;
POWER_data=0;OE=0;
con_data=1;
//***开定时计数器0***//
TMOD|=2;
TH0=136;
TL0=136;
//TR0=1;
//----中断管理----//
EA=1;
IT1=1;
ES=1; //开串口中断
ET0=1; //开定时器中断
IP=2 ;
//PS=0; //设置串口中断高优先级
}
//*************主程序**************//
void main(void)
{//unsigned char tt;
//tt=1;
init(); //---装载初始化---//
dis1_R(28);
TR0=1;
OE=0 ;
while(1){ if(!KEY)
{Delay_Sec(20);
if(!KEY)
{TR0=0;
if(++con_data>7) con_data=1;
switch(con_data)
{
case 0x01:dis1_R(28); break;
case 0x02:dis2_G(30); break;
case 0x03:dis3_B(30); break;
case 0x04:dis4_RG(30); break;
case 0x05:dis5_RB(30); break;
case 0x06:dis6_GB(30); break;
case 0x07:dis7_RGB(30); break;
}while(!KEY) ;
TR0=1;
}
}
}
}
//*******************************************
//*******************************************
void dis1_R(unsigned char n) //数码管显示
{ unsigned char bitcnt;
ST=0; //ST=1串行数据会传入至输出栓锁器
//ST=0串行资料会被栓锁住
for(bitcnt=0;bitcnt<4;bitcnt++)
{R1=R2=G1=G2=B1=B2=0;
CK=0;
// Delay(1);
CK=1;
CK=0;
// Delay(5);
}
ST=1; ST=0;
G1=G2=B1=B2=0;
for(bitcnt=0;bitcnt<n;bitcnt++)
{R1=R2=1;
CK=0;
// Delay(1);
CK=1;
CK=0;
// Delay(5);
}
ST=1; ST=0;
}
void dis2_G(unsigned char n) //数码管显示
{ unsigned char bitcnt;
ST=0; //ST=1串行数据会传入至输出栓锁器
//ST=0串行资料会被栓锁住
for(bitcnt=0;bitcnt<2;bitcnt++)
{R1=R2=G1=G2=B1=B2=0;
CK=0;
// Delay(1);
CK=1;
CK=0;
// Delay(5);
}
ST=1; ST=0;
R1=R2=B1=B2=0;
for(bitcnt=0;bitcnt<n;bitcnt++)
{G1=G2=1;
CK=0;
Delay(200);
CK=1;
//Delay(5);
}
ST=1;ST=0;
}
//******************************//
void dis3_B(unsigned char n)
{ unsigned char bitcnt;
ST=1; //ST=1串行数据会传入至输出栓锁器
//ST=0串行资料会被栓锁住
R1=R2=G1=G2=0;
for(bitcnt=0;bitcnt<n;bitcnt++)
{B1=B2=1;
CK=0;
//Delay(1);
CK=1;
// Delay(5);
}
// ST=0;
}
//*******************************//
void dis4_RG(unsigned char n)
{ unsigned char bitcnt;
ST=1; //ST=1串行数据会传入至输出栓锁器
//ST=0串行资料会被栓锁住
B1=B2=0;
for(bitcnt=0;bitcnt<n;bitcnt++)
{R1=R2=G1=G2=1;
CK=0;
//Delay(1);
CK=1;
//Delay(5);
}
//ST=0;
}
//*****************************//
void dis5_RB(unsigned char n)
{ unsigned char bitcnt;
ST=1; //ST=1串行数据会传入至输出栓锁器
//ST=0串行资料会被栓锁住
G1=G2=0;
for(bitcnt=0;bitcnt<n;bitcnt++)
{R1=R2=B1=B2=1;
CK=0;
//Delay(1);
CK=1;
//Delay(5);
}
// ST=0;
}
//*****************************//
void dis6_GB(unsigned char n)
{ unsigned char bitcnt;
ST=1; //ST=1串行数据会传入至输出栓锁器
//ST=0串行资料会被栓锁住
R1=R2=0;
for(bitcnt=0;bitcnt<n;bitcnt++)
{G1=G2=B1=B2=1;
CK=0;
//Delay(1);
CK=1;
//Delay(5);
}
//ST=0;
}
//****************************//
void dis7_RGB(unsigned char n)
{ unsigned char bitcnt;
ST=1; //ST=1串行数据会传入至输出栓锁器
//ST=0串行资料会被栓锁住
for(bitcnt=0;bitcnt<n;bitcnt++)
{R1=R2=G1=G2=B1=B2=1;
CK=0;
//Delay(1);
CK=1;
//Delay(5);
}
//ST=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -