📄 text1.c
字号:
#include <reg52.h>
#include <string.h>
code unsigned char CodeLed[16]={
0x3f, //'0'的7段编码
0x06, //'1'的7段编码
0x5b, //'2'的7段编码
0x4f, //'3'的7段编码
0x66, //'4'的7段编码
0x6d, //'5'的7段编码
0x7d, //'6'的7段编码
0x07, //'7'的7段编码
0x7f, //'8'的7段编码
0x6f, //'9'的7段编码
0x77,
0x7c,
0x39,
0x5e,
0x79,
0x71
};
sbit k0=P2^0;
sbit k1=P2^1;
sbit k2=P2^2;
sbit k3=P2^3;
sbit k4=P3^4;
//串口发送程序;
#define INBUF_LEN 4 //file://数据长度
unsigned char inbuf='a';
unsigned char inbuf2[4];
unsigned char checksum,m=0,count3=0;
bit read_flag=0;
void delay(void)
{
unsigned int i, j;
for( i=0; i<10; i++ ) for( j=0; j<10; j++ );
}
/*void show2()
{
P0=(CodeLed[inbuf2[0]/10]);
k0=0;
delay();
k0=1;
P0=(CodeLed[inbuf2[0]%10])|0x80;
k1=0;
delay();
k1=1;
P0=CodeLed[inbuf2[1]/10];
k2=0;
delay();
k2=1;
P0=CodeLed[inbuf2[1]%10];
k3=0;
delay();
k3=1;
}*/
void show()
{
unsigned int i, j;
unsigned char seg;
seg = 0xfe;
{
//P2 = 0xff; //全部LED都不亮,消隐
//P0 = CodeLed[ inbuf2[ count3]-48];//将K数值通过影射方式变为7段编码后驱动LED段极
for (count3=0;count3<4;count3++)
{ P2 = 0xff; //全部LED都不亮,消隐
P0 = CodeLed[inbuf2[ count3]-48]; //将K数值通过影射方式变为7段编码后驱动LED段极
P2 = seg; //让相应的LED显示
for( i=0; i<20; i++ ) for( j=0; j<20; j++ ); //延时一段时间,以便能看到相应数码管显示
seg <<= 1; //准备下支LED显示
seg |= 0x01;
if(count3==4)count3=0;
if(seg==0xef) seg=0xfe;
}
}
}
//数码管显示程序完;
//数码管显示子程序;
void show1(unsigned char reshu )
{
unsigned int t, l;
// for (k=0;k<=10;k++)
{
//P2 = 0xff; //全部LED都不亮,消隐
P0 = CodeLed[ reshu ];//将K数值通过影射方式变为7段编码后驱动LED段极
k0=0;
for( t=0; t<250; t++ ) for( l=0; l<250; l++ );
k0=1;
//延时一段时间,以便能看到相应数码管显示
}
}
//数码管显示程序完;
void init_serialcomm(void)
{
EA=0;
SCON = 0x50; //file://SCON: serail mode 1, 8-bit UART, enable ucvr
TMOD |= 0x20; //file://TMOD: timer 1, mode 2, 8-bit reload
PCON |= 0x80; //file://SMOD=1;
TH1 = 0xFA; //file://Baud:4800 fosc=11.0592MHz
IE |= 0x90; //file://Enable Serial Interrupt
TR1 = 1;
EA=1;
// timer 1 run
// TI=1;
}
//file://向串口发送一个字符
void send_char_com(unsigned char ch)
{
SBUF=ch;
while(TI==0);
TI=0;
}
//串口发送程序完;
//串口接收程序;
void serial () interrupt 4 using 3
{
// unsigned char ch;
RI=0;
inbuf2[m]=SBUF;
m+=1;
if(m==4)m=0;
}
//串口接收程序完;
//中断程序
void startt0()
{
IT0=1;
EX0=1;
EA=1;
}
void startt1()
{
IT1=1;
EX1=1;
EA=1;
}
void service0() interrupt 2
{
send_char_com(inbuf);
if(++inbuf=='z')
inbuf='a';
}
void service1() interrupt 0
{
send_char_com(inbuf);
}
//中断程序
void main(void)
{
unsigned char j,i=0;
for(j=0;j<=10;j++)
{
init_serialcomm();
send_char_com(inbuf);
show1(10+i);
i+=1;
if(i>=4) i=0;
delay();
}
TI=0;
startt0();
startt1();
while(1)show();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -