⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 leddisp.c

📁 使用ads1.2编译器
💻 C
📖 第 1 页 / 共 2 页
字号:
	{
		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 + -