📄 main.c
字号:
else
{
Write12C887RAM( SECOND_COUNT_RANGE, second_count ); // 存入一秒钟所计数数目
second_count = 0;
flag_s = 1; // 秒标志置位
}
time_old1 = time_now;
// 半秒钟标志处理
if( flag_s )
{
halfsecond_count++;
if( halfsecond_count == Read12C887RAM( SECOND_COUNT_RANGE )/2 )
{
flag_s = 0;
halfsecond_count = 0;
}
}
}
//=================================================================================================
// 显示 子程序
//=================================================================================================
//
void Display( void )
{
unsigned char i;
Read12C887 ( time_buf ); // 读取系统时间
TEMPER = GetTemperature ( ); // 取得片内温度
//-----------------------------------------------------
// LED glitter
if( LED_Glitter_Enable && !LED_Glitter_Disable )
{
if( flag_s ) LED_OUT_ACT( );
if( !flag_s ) LED_OUT_INACT( );
}
else if( !LED_Glitter_Enable && LED_Glitter_Disable )
{
LED_Glitter_Enable = LED_Glitter_Disable = 0;
LED_OUT_INACT( );
}
//-------------------------------------------
// 前方的光电传感器取值, 因白炽灯有 50Hz 的公频, 所以需要滤波
// 相应操作: 取 8 次平均值
// 左边光电传感器
tempshort = 0;
for( i=0; i<16; i++ )
{
LightLeft = ADConvert0( 1 , 0 );
tempshort += LightLeft;
}
LightLeft = tempshort/16; // LightLeft = _iror_( tempshort, 3 );
// 中央光电传感器
tempshort = 0;
for( i=0; i<16; i++ )
{
LightCenter = ADConvert0( 0 , 0 );
tempshort += LightCenter;
}
LightCenter = tempshort/16; // LightCenter = _iror_( tempshort, 3 );
// 右边光电传感器
tempshort = 0;
for( i=0; i<16; i++ )
{
LightRight = ADConvert0( 2 , 0 );
tempshort += LightRight;
}
LightRight = tempshort/16; // LightRight = _iror_( tempshort, 3 );
//-------------------------------------------
//
Voltage = ADConvert0( 6 , 0 ); // 5V
DriverVoltage = ADConvert0( 7 , 0 ); // 10V
DriverVoltage /= 9; // 校正
Flag_Center = Center; // 检测中央光电状态: "0" -- 中央, "1" -- 偏离
//-----------------------------------------------------
// LCD
if( SCREEN )
{
DisplayNumber( 0, 8*0, time_buf[5]/10 ); // 月/日
DisplayNumber( 0, 8*1, time_buf[5]%10 );
DisplayNumber( 0, 8*2, 16 );
DisplayNumber( 0, 8*3, time_buf[4]/10 );
DisplayNumber( 0, 8*4, time_buf[4]%10 );
DisplayNumber( 0, 8*5, 78 ); // (星期 )
DisplayNumber( 0, 8*6, time_buf[3] );
DisplayNumber( 0, 8*7, 79 );
DisplayNumber( 0, 8*8, time_buf[2]/10 ); // 时:分:秒 ( 带闪烁 )
DisplayNumber( 0, 8*9, time_buf[2]%10 );
if( flag_s )DisplayNumber( 0, 8*10,17 );
else DisplayNumber( 0, 8*10,77 );
DisplayNumber( 0, 8*11,time_buf[1]/10 );
DisplayNumber( 0, 8*12,time_buf[1]%10 );
if( flag_s )DisplayNumber( 0, 8*13,17 );
else DisplayNumber( 0, 8*13,77 );
DisplayNumber( 0, 8*14,time_buf[0]/10 );
DisplayNumber( 0, 8*15,time_buf[0]%10 );
};
if( confirm_down ) // 清屏
{
confirm_down = 0;
LCDInit ( );
LCDClear ( );
}
switch( SCREEN )
{
case 0: //*************************************************************
//*************************************************************
// 初始屏:显示时间,温度
//*************************************************************
//*************************************************************
/* DisplayNumber( 2,8*0,Voltage/100 ); // x.xxV
DisplayNumber( 2,8*1,18 );
DisplayNumber( 2,8*2,Voltage%100/10 );
DisplayNumber( 2,8*3,Voltage%10 );
DisplayNumber( 2,8*4,42 );
//-------------------------------
DisplayNumber( 2,8*6,DriverVoltage/100 ); // xx.xV
DisplayNumber( 2,8*7,DriverVoltage%100/10 );
DisplayNumber( 2,8*8,18 );
DisplayNumber( 2,8*9,DriverVoltage%10 );
DisplayNumber( 2,8*10,42 );
DisplayRevChinese( 4,16*3,kai ); // 开始
DisplayRevChinese( 4,16*4,shi2 );
//-----------------------------------------------------
// Light0-2
DisplayNumber(6,8*0,LightLeft/1000);
DisplayNumber(6,8*1,LightLeft%1000/100);
DisplayNumber(6,8*2,LightLeft%100/10);
DisplayNumber(6,8*4,LightCenter/1000);
DisplayNumber(6,8*5,LightCenter%1000/100);
DisplayNumber(6,8*6,LightCenter%100/10);
DisplayNumber(6,8*8 ,LightRight/1000);
DisplayNumber(6,8*9 ,LightRight%1000/100);
DisplayNumber(6,8*10,LightRight%100/10);
//-----------------------------------------------------
// DISTANCE
DisplayNumber(2,8*13,JourneyTime/100);
DisplayNumber(2,8*14,JourneyTime%100/10);
DisplayNumber(2,8*15,JourneyTime%10);
DisplayNumber(4,8*0,DISTANCE/10000);
DisplayNumber(4,8*1,DISTANCE%10000/1000);
DisplayNumber(4,8*2,DISTANCE%1000/100);
DisplayNumber(4,8*3,DISTANCE%100/10);
DisplayNumber(4,8*4,DISTANCE%10);
DisplayNumber( 4,8*11, SECTION_BPoint/10000 );
DisplayNumber( 4,8*12, SECTION_BPoint%10000/1000 );
DisplayNumber( 4,8*13, SECTION_BPoint%1000/100 );
DisplayNumber( 4,8*14, SECTION_BPoint%100/10 );
DisplayNumber( 4,8*15, SECTION_BPoint%10 );
DisplayNumber( 6,8*12, DISTANCE_C%10000/1000 );
DisplayNumber( 6,8*13, DISTANCE_C%1000/100 );
DisplayNumber( 6,8*14, DISTANCE_C%100/10 );
DisplayNumber( 6,8*15, DISTANCE_C%10 );
*/
//-----------------------------------------------------
// Start , Stop
/* DisplayNumber(6,8*14,Start );
DisplayNumber(6,8*15,Stop );
DisplayNumber(2,8*12,SECTION - 55 ); // 去掉 ASCII 码
*/
DisplayChinese( 0,16*0,shi ); // 时间:xxs
DisplayChinese( 0,16*1,jian );
DisplayNumber ( 0,8*4, 17 );
DisplayNumber ( 0,8*5, JourneyTime/10 );
DisplayNumber ( 0,8*6, JourneyTime%10 );
DisplayNumber ( 0,8*7, 39 );
DisplayChinese( 0,16*4,tie3 ); // 铁片数:x
DisplayChinese( 0,16*5,pian4 );
DisplayChinese( 0,16*6,shu4 );
DisplayNumber ( 0,8*14,17 );
DisplayNumber ( 0,8*15,MetalNumber );
DisplayChinese( 2,16*0,di4 ); // 第一铁位置:x.xxm
DisplayChinese( 2,16*1,yi );
DisplayChinese( 2,16*2,tie3 );
DisplayChinese( 2,16*3,wei4 );
DisplayChinese( 2,16*4,zhi );
DisplayNumber ( 2,8*10,17 );
DisplayNumber ( 2,8*11,MetalDistance1/1000 );
DisplayNumber ( 2,8*12,18 );
DisplayNumber ( 2,8*13,MetalDistance1%1000/100 );
DisplayNumber ( 2,8*14,MetalDistance1%100/10 );
DisplayNumber ( 2,8*15,59 );
DisplayChinese( 4,16*0,di4 ); // 第二铁位置:x.xxm
DisplayChinese( 4,16*1,er );
DisplayChinese( 4,16*2,tie3 );
DisplayChinese( 4,16*3,wei4 );
DisplayChinese( 4,16*4,zhi );
DisplayNumber ( 4,8*10,17 );
DisplayNumber ( 4,8*11,MetalDistance2/1000 );
DisplayNumber ( 4,8*12,18 );
DisplayNumber ( 4,8*13,MetalDistance2%1000/100 );
DisplayNumber ( 4,8*14,MetalDistance2%100/10 );
DisplayNumber ( 4,8*15,59 );
DisplayChinese( 6,16*0,quan ); // 全程路程 :x.xxm
DisplayChinese( 6,16*1,cheng );
DisplayChinese( 6,16*2,lu4 );
DisplayChinese( 6,16*3,cheng );
DisplayNumber ( 6,8*10,17 );
DisplayNumber ( 6,8*11,DISTANCE/1000 );
DisplayNumber ( 6,8*12,18 );
DisplayNumber ( 6,8*13,DISTANCE%1000/100 );
DisplayNumber ( 6,8*14,DISTANCE%100/10 );
DisplayNumber ( 6,8*15,59 );
break;
case 1: //*************************************************************
//*************************************************************
// 第一屏:主选择菜单
//*************************************************************
//*************************************************************
//
if( vertical == 1 )
{
DisplayNumber( 2,8*0, 1 ); // 1.时间(反显)
DisplayNumber( 2,8*1, 18 );
DisplayRevChinese( 2,16*1,shi );
DisplayRevChinese( 2,16*2,jian );
}
else
{
DisplayNumber( 2,8*0, 1 ); // 1.时间
DisplayNumber( 2,8*1, 18 );
DisplayChinese( 2,16*1,shi );
DisplayChinese( 2,16*2,jian );
}
if( vertical == 2 )
{
DisplayNumber( 4,8*0, 2 ); // 2.报警(反显)
DisplayNumber( 4,8*1, 18 );
DisplayRevChinese( 4,16*1,bao4 );
DisplayRevChinese( 4,16*2,jing3 );
}
else
{
DisplayNumber( 4,8*0, 2 ); // 2.报警
DisplayNumber( 4,8*1, 18 );
DisplayChinese( 4,16*1,bao4 );
DisplayChinese( 4,16*2,jing3 );
}
if( vertical == 3 )
{
DisplayNumber( 6,8*0, 3 ); // 3.DAC(反显)
DisplayNumber( 6,8*1, 18 );
DisplayRevNumber( 6,8*2, 13 );
DisplayRevNumber( 6,8*3, 10 );
DisplayRevNumber( 6,8*4, 12 );
}
else
{
DisplayNumber( 6,8*0, 3 ); // 3.DAC
DisplayNumber( 6,8*1, 18 );
DisplayNumber( 6,8*2, 13 );
DisplayNumber( 6,8*3, 10 );
DisplayNumber( 6,8*4, 12 );
}
if( vertical == 4 )
{
DisplayNumber( 2,8*8, 4 ); // 4.设置(反显)
DisplayNumber( 2,8*9, 18 );
DisplayRevChinese( 2,16*5,she );
DisplayRevChinese( 2,16*6,zhi );
}
else
{
DisplayNumber( 2,8*8, 4 ); // 4.设置
DisplayNumber( 2,8*9, 18 );
DisplayChinese( 2,16*5,she );
DisplayChinese( 2,16*6,zhi );
}
if( vertical == 5 )
{
DisplayNumber( 4,8*8, 5 ); // 5.USB(反显)
DisplayNumber( 4,8*9, 18 );
DisplayRevNumber( 4,8*10,41 );
DisplayRevNumber( 4,8*11,39 );
DisplayRevNumber( 4,8*12,22 );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -