📄 display.c
字号:
#include "global.h"
#include "display.h"
//**********************显示的开始***************************
//显示函数,先显示万位,最后就是个位,是用共阳数码管的
void Led_Display(void)
{
Wan=1;
Qan=1;
Bai=1;
Shi=1;
Ge=1; //显示控制口全为高电平时,关显示
switch(Mode)//显示切换
{
case 0:{
// if(Auto_Search_Flag==1)//如果在自动搜频模式下时
// {
// if(Flag_500ms==1)//计时大于0.5ms了
// LED=0xff;//不显示
// else
// LED = Dis_Frequency[Dis_Index];//显示
// }
// else
LED = Dis_Frequency[Dis_Index];
}
break;
case 1: LED = Dis_Volume[Dis_Index]; break;
case 2: LED = Dis_Delays[Dis_Index]; break;
case 3: LED = Dis_District[Dis_Index]; break;
case 4: LED = Dis_Node[Dis_Index]; break;
default: break;
}
switch(Dis_Index) //各数码显示控制
{
case 0: { Wan=0;Qan=1; Bai=1; Shi=1; Ge=1;} break;
case 1: { Wan=1;Qan=0; Bai=1; Shi=1; Ge=1;} break;
case 2: { Wan=1;Qan=1; Bai=0; Shi=1; Ge=1;} break;
case 3: { Wan=1;Qan=1; Bai=1;
if(Auto_Search_Flag==1)//如果在自动搜频模式下时
{
if(Flag_500ms==1)//计时大于0.5ms了,不显示后两位
{
Shi=1; Ge=1;
}
else
{
Shi=0; Ge=1;
}
}
else
{
Shi=0; Ge=1;
}
}
break;
case 4: { Wan=1;Qan=1; Bai=1;
if(Auto_Search_Flag==1)//如果在自动搜频模式下时
{
if(Flag_500ms==1)//计时大于0.5ms了,不显示后两位
{
Shi=1; Ge=1;
}
else
{
Shi=1; Ge=0;
}
}
else
{
Shi=1; Ge=0;
}
}
break;
default: break;
}
Dis_Index++;
if(Dis_Index>4) Dis_Index=0;//回到最高位
}
//************************频率值转换函数*********************************************
void Frequency_Change(unsigned long i)
{
Frequency_BCD[0]=i/100000; //万
Frequency_BCD[1]=i%100000/10000; //千
Frequency_BCD[2]=i%100000%10000/1000; //百
Frequency_BCD[3]=i%100000%10000%1000/100; //十
Frequency_BCD[4]=i%100000%10000%1000%100/10;//个
if(Frequency_BCD[0])
Dis_Frequency[0]=Tab[Frequency_BCD[0]]; //求万位
else
Dis_Frequency[0]=0xff; //关显示万位
Dis_Frequency[1]=Tab[Frequency_BCD[1]];//求个千位
Dis_Frequency[2]=Tab[Frequency_BCD[2]]&0x7f; //求得百位,加少数点了
Dis_Frequency[3]=Tab[Frequency_BCD[3]]; //得得十位
// Dis_Frequency[4]=0xc0; //显示0
Dis_Frequency[4]=Tab[Frequency_BCD[4]]; //显示个位
}
//波段切换时程序
void Band_Change(unsigned char i)
{
if(i==0)
{
gdwPresetVCO=Ini_FreqH;//赋值高波段初值
HighestFM=Max_FreqH;
LowestFM=Min_FreqH;
}
else
{
gdwPresetVCO=Ini_FreqL;//赋值高波段初值
HighestFM=Max_FreqL;
LowestFM=Min_FreqL;
}
Mode=0;////显示频率
Frequency_Change(gdwPresetVCO);//频率值转换
Tuner_Preset (False,True,Low,gdwPresetVCO); // Preset to searched station 0301 mao
}
//音量值转换
void Volume_Change(unsigned char i)
{
// if(i/10)
Dis_Volume[0]=Tab[i/10];//十位
// else Dis_Volume[0]=0xff; //不显示十位
Dis_Volume[1]=Tab[i%10];//个位
}
//延时值转换
void Delays_change(unsigned char i)
{
if(i/100)
Dis_Delays[0]=Tab[i/100]; //显示百位
else Dis_Delays[0]=0xff; //关显示百位
Dis_Delays[1]=Tab[(i%100)/10]; //十位
Dis_Delays[2]=Tab[(i%100)%10]; //个位
}
//区位值转换
void District_Change(unsigned char i)
{
unsigned char temp;
temp=i%100;
if(i/100)
{
Dis_District[0]=Tab[i/100]; //百位
Dis_District[1]=Tab[temp/10]; //十位
Dis_District[2]=Tab[temp%10]; //个位
}
else
{
Dis_District[0]=0xff; //关显示百位
//if(temp/10)
Dis_District[1]=Tab[temp/10]; //十位
//else
// Dis_District[1]=0xff; //关显示十位
}
Dis_District[2]=Tab[temp%10]; //个位
}
//结点值转换
void Node_Change(unsigned char i)
{
unsigned char temp;
temp=i%100;
if(i/100)
{
Dis_Node[0]=Tab[i/100]; //百位
Dis_Node[1]=Tab[temp/10]; //十位
Dis_Node[2]=Tab[temp%10]; //个位
}
else
{
Dis_Node[0]=0xff; //关显示百位
//if(temp/10)
Dis_Node[1]=Tab[temp/10]; //十位
//else
// Dis_Node[1]=0xff; //关显示十位
Dis_Node[2]=Tab[temp%10]; //个位
}
}
void Ini_Data(void)
{
//***************
VolSet(0);
Frequency_Change(gdwPresetVCO);
WatchDog;//喂狗
Volume_Change(Volume);
Dis_Volume[2]=0xff; //关
Dis_Volume[3]=0xa1; //d
Dis_Volume[4]=0x83; //b
Delays_change(Delay_s);
Dis_Delays[3]=0xff; //关
Dis_Delays[4]=0x92; //S
District_Change(District);
Dis_District[3]=0xc6; //C
Dis_District[4]=0x89; //H
Node_Change(Node);
Dis_Node[3]=0xab; //n
Dis_Node[4]=0xa1; //d
Start_Process();
WatchDog;//喂狗
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -