📄 leddisp.c
字号:
{
type_data[5][i]=UART_DATA[34+i];
}
FRAME_DATA[1].disp_font=CHAR_16; //显示字体
P_CURRENT_FRAME_DATA=&FRAME_DATA[1]; //指定的帧
Slib_FillScr(0);
Slib_SetCursor(0,0);
Slib_PutStr(&type_data[0][0]);
Slib_SetCursor(1,0);
Slib_PutStr(&type_data[1][0]);
Slib_SetCursor(2,0);
Slib_PutStr(&type_data[2][0]);
Slib_SetCursor(3,0);
Slib_PutStr(&type_data[3][0]);
Slib_SetCursor(4,0);
Slib_PutStr(&type_data[4][0]);
Slib_SetCursor(5,0);
Slib_PutStr(&type_data[5][0]);
LED_Full(&FRAME_DATA[1]);
}
/****************************************************************************
* 名称:Location_Disp_Data()
* 功能:显示数据
* 入口参数:
* 出口参数:无
****************************************************************************/
void Location_Disp_Data(void)
{
INT8U x,y;
y=(UART_DATA[2]-48)*10+(UART_DATA[3]-48);
if(y>(LED_YSIZE/16)) y=0; //显示行位置校验
x=(UART_DATA[4]-48)*10+(UART_DATA[5]-48);
if(x>(LED_XSIZE/8)) x=0; //显示列位置校验
FRAME_DATA[1].disp_font=CHAR_16; //显示字体
P_CURRENT_FRAME_DATA=&FRAME_DATA[1]; //指定的帧
Slib_SetCursor(x,y);
Slib_PutStr(&UART_DATA[6]);
LED_Full(&FRAME_DATA[1]);
}
/****************************************************************************
* 名称:Disp_Null()
* 功能:清屏
* 入口参数:
* 出口参数:无
****************************************************************************/
void Disp_Null()
{
P_CURRENT_FRAME_DATA=&DISP_BUFFER_DATA; //指定的帧
Slib_FillScr(0);
P_CURRENT_FRAME_DATA=&FRAME_DATA[1]; //指定的帧
Slib_FillScr(0);
}
/****************************************************************************
* 名称:Disp_Light()
* 功能:显示亮度控制
* 入口参数:
* 出口参数:无
****************************************************************************/
void Disp_Light()
{
FRAME_DATA[1].disp_light=(UART_DATA[2]-48)*100+(UART_DATA[3]-48)*10+(UART_DATA[4]-48); //亮度计算,
if(FRAME_DATA[1].disp_light==0||FRAME_DATA[0].disp_light>0xff) FRAME_DATA[0].disp_light=0xbf;
}
/****************************************************************************
* 名称:Disp_Stat()
* 功能: 切换显示内容
* 入口参数:
* 出口参数:无
* 说明:
****************************************************************************/
void Disp_Stat(char State)
{
switch(State)
{
case '0':
if((IO1PIN&BIT_19)!=0)
{
FRAME_DATA[1].disp_en='1';
Disp_X();
}
break;
case '1':
FRAME_DATA[1].disp_en='1';
TYPE_Disp_Data();
break;
case '2':
FRAME_DATA[1].disp_en='1';
Location_Disp_Data();
break;
case '3':
if((IO1PIN&BIT_19)!=0)
{
FRAME_DATA[1].disp_en='1';
Disp_Y();
}
break;
case '4':
FRAME_DATA[1].disp_en='1';
Disp_Null();
break;
case '5':
FRAME_DATA[1].disp_en='1';
Disp_Light();
break;
case '8':
Open_Alarm();
break;
case '9':
Close_Alarm();
break;
case 'A':
Num_Disp_Data();
break;
case 'B':
Num_Disp_Ctrl();
break;
case 'C':
Disp_Null_Close();
break;
case 'D':
Immediately_Disp_Data();
break;
case 'E':
Immediately_Disp_Data();
break;
case 'F':
Num_Disp_Null();
break;
case 'G':
Disp_Open();
break;
case 'g':
Disp_Close();
break;
case 'H':
Open_Alarm();
break;
case 'h':
Close_Alarm();
break;
case 'S':
SaveDispData();
break;
case 'T':
RTC_Disp_Ctrl();
break;
}
}
/****************************************************************************
* 名称:IRQ_RTCReflash()
* 功能: 时间内容更新
* 入口参数:
* 出口参数:无
* 说明:
****************************************************************************/
void __irq IRQ_RTCReflash(void)
{
ReadTimeRtc();
P_CURRENT_FRAME_DATA=&FRAME_DATA[0]; //把数据存放在指定的帧里面
Slib_SetCursor(0,2);//按行号存储数据
Slib_Printf("%2d时%02d分%02d秒",TIME2220.hour,TIME2220.min,TIME2220.sec);
Slib_SetCursor(1,6);//按行号存储数据
Slib_Printf("星期%s",weekday[TIME2220.weekday]);
Slib_SetCursor(2,2);//按行号存储数据
Slib_Printf("%04d年%2d月%02d日",TIME2220.year,TIME2220.month,TIME2220.day);
VICVectAddr = 0x00; // 中断处理结束
}
/****************************************************************************
* 名称:IRQ_UART0_Receive()
* 功能: 串口中断服务
* 入口参数:
* 出口参数:无
* 说明:
****************************************************************************/
void __irq IRQ_UART0_Receive(void)
{
static unsigned char i;
if(i>250) i=0;
UART_DATA[i]=UART0_Receive(); //接收串口数据
switch(UART_DATA[0])
{
case '<':
if(UART_DATA[i]=='>') //接收结束符校验,一帧数据接收完成进入处理
{
UART_DATA[i]=0x00;
UART_DATA[0]=0x00;
if(UART_DATA[1]=='A'||UART_DATA[1]=='T')
{
UART_DATA_COUNT=i;
}
else
{
Disp_Stat(UART_DATA[1]);
UART_DATA_COUNT=0;
}
i=0;
}
if(UART_DATA[0]=='<') i++; //接收起始符校验,帧有效标志
break;
case 'C':
Disp_Stat('C'); //清除显示缓冲区并关闭显示
break;
case 'D':
if(UART_DATA[2]=='0')
{
if(i==66)
{
if(UART_DATA[1]==0){ Num_Disp_Null(); break;}
DISP_BUFFER_DATA.disp_light=UART_DATA[1];
UART_DATA[1]=UART_DATA[0];
UART_DATA[i+1]=0x00; //字符结束标志
UART_DATA[0]=0x00;
UART_DATA_COUNT=i;
i=0;
}
}
else
{
if(i==18)
{
if(UART_DATA[1]==0){ Num_Disp_Null(); break;}
DISP_BUFFER_DATA.disp_light=UART_DATA[1];
UART_DATA[1]=UART_DATA[0];
UART_DATA[i+1]=0x00;
UART_DATA[0]=0x00;
UART_DATA_COUNT=i;
i=0;
}
}
if(UART_DATA[0]=='D') i++; //接收起始符校验,帧有效标志
break;
case 'E':
DISP_BUFFER_DATA.disp_font=CHAR_12; //显示字体
if(UART_DATA[2]=='0')
{
if(i==102)
{
if(UART_DATA[1]==0){ Num_Disp_Null(); break;}
DISP_BUFFER_DATA.disp_light=UART_DATA[1];
UART_DATA[1]=UART_DATA[0];
UART_DATA[i+1]=0x00; //字符结束标志
UART_DATA[0]=0x00;
UART_DATA_COUNT=i;
i=0;
}
}
else
{
if(i==22)
{
if(UART_DATA[1]==0){ Num_Disp_Null(); break;}
DISP_BUFFER_DATA.disp_light=UART_DATA[1];
UART_DATA[1]=UART_DATA[0];
UART_DATA[i+1]=0x00;
UART_DATA[0]=0x00;
UART_DATA_COUNT=i;
i=0;
}
}
if(UART_DATA[0]=='E') i++; //接收起始符校验,帧有效标志
break;
case 'H':
Open_Alarm(); //开报警
break;
case 'I':
Close_Alarm(); //关报警
break;
}
VICVectAddr = 0x00; // 中断处理结束
}
/****************************************************************************
* 名称:main()
* 功能:控制LED数码管显示。
****************************************************************************/
int main(void)
{
Reset();
ARMEnableInt();
LEDInit();
I2C_Init(100000);
RTCIni();
while(1)
{
LED_Disp();
UART_DATA_COUNT=0;
Disp_Stat(UART_DATA[1]);
}
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -