📄 main.c
字号:
if( horizontal == 8 ) DisplayRevNumber( 4,8*8 ,DAC1datum%10 ); else DisplayNumber( 4,8*8 ,DAC1datum%10 );
//----------------------------------------------------------
if( horizontal == 9 ){ DisplayRevNumber( 6,8*0 ,13 ); // DAC0:
DisplayRevNumber( 6,8*1 ,10 );
DisplayRevNumber( 6,8*2 ,12 );
DisplayRevNumber( 6,8*3 ,0 );
DisplayRevNumber( 6,8*4 ,17 );
}
else { DisplayNumber( 6,8*0 ,13 ); // DAC0:
DisplayNumber( 6,8*1 ,10 );
DisplayNumber( 6,8*2 ,12 );
DisplayNumber( 6,8*3 ,0 );
DisplayNumber( 6,8*4 ,17 );
}
if( DAC0Enable ) { DisplayNumber( 6,8*5,25 ); DisplayNumber( 6,8*6,34 ); } // EN
else { DisplayNumber( 6,8*5,34 ); DisplayNumber( 6,8*6,35 ); } // NO
//----------------------------------------------------------
if( horizontal == 10 ){ DisplayRevNumber( 6,8*8 ,13 ); // DAC1:
DisplayRevNumber( 6,8*9 ,10 );
DisplayRevNumber( 6,8*10,12 );
DisplayRevNumber( 6,8*11,1 );
DisplayRevNumber( 6,8*12,17 );
}
else { DisplayNumber( 6,8*8 ,13 ); // DAC1:
DisplayNumber( 6,8*9 ,10 );
DisplayNumber( 6,8*10,12 );
DisplayNumber( 6,8*11,1 );
DisplayNumber( 6,8*12,17 );
}
if( DAC1Enable ) { DisplayNumber( 6,8*13,25 ); DisplayNumber( 6,8*14,34 ); } // EN
else { DisplayNumber( 6,8*13,34 ); DisplayNumber( 6,8*14,35 ); } // NO
//----------------------------------------------------------
if( up | down )
{
switch( horizontal )
{
case 0: if( up&&!down ) horizontal=10; else if(down&&!up)horizontal=1; break;
case 1: if( up&&!down ) DAC0datum += 1000 ; else if( down&&!up ) DAC0datum -= 1000 ; DAC0_modify=1; break;// 千位
case 2: if( up&&!down ) DAC0datum += 100 ; else if( down&&!up ) DAC0datum -= 100 ; DAC0_modify=1; break;// 百位
case 3: if( up&&!down ) DAC0datum += 10 ; else if( down&&!up ) DAC0datum -= 10 ; DAC0_modify=1; break;// 十位
case 4: if( up&&!down ) DAC0datum += 1 ; else if( down&&!up ) DAC0datum -= 1 ; DAC0_modify=1; break;// 个位
case 5: if( up&&!down ) DAC1datum += 1000 ; else if( down&&!up ) DAC1datum -= 1000 ; DAC1_modify=1; break;// 千位
case 6: if( up&&!down ) DAC1datum += 100 ; else if( down&&!up ) DAC1datum -= 100 ; DAC1_modify=1; break;// 百位
case 7: if( up&&!down ) DAC1datum += 10 ; else if( down&&!up ) DAC1datum -= 10 ; DAC1_modify=1; break;// 十位
case 8: if( up&&!down ) DAC1datum += 1 ; else if( down&&!up ) DAC1datum -= 1 ; DAC1_modify=1; break;// 个位
case 9: if( up&&!down ) DAC0Enable = 1; else if( down&&!up ) DAC0Enable = 0; DAC0_modify = 1; break;
case 10:if( up&&!down ) DAC1Enable = 1; else if( down&&!up ) DAC1Enable = 0; DAC1_modify = 1; break;
default:break;
}
up = down = 0;
}
//----------------------------------------------------------
// 上下限限制
if( DAC0datum >4095 )DAC0datum = 0; else if( DAC0datum <0 )DAC0datum = 4095;
if( DAC1datum >4095 )DAC1datum = 0; else if( DAC1datum <0 )DAC1datum = 4095;
break;
case 40://*************************************************************
//*************************************************************
// 第四主屏(菜单4):小车驱动参数设置
//*************************************************************
//*************************************************************
DisplayNumber( 2,8*0,39 ); // SPEED:
DisplayNumber( 2,8*1,36 );
DisplayNumber( 2,8*2,25 );
DisplayNumber( 2,8*3,25 );
DisplayNumber( 2,8*4,24 );
DisplayNumber( 2,8*6,17 );
DisplayNumber( 4,8*0,39 ); // SPEED1:
DisplayNumber( 4,8*1,36 );
DisplayNumber( 4,8*2,25 );
DisplayNumber( 4,8*3,25 );
DisplayNumber( 4,8*4,24 );
DisplayNumber( 4,8*5,1 );
DisplayNumber( 4,8*6,17 );
DisplayNumber( 6,8*0,38 ); // Rate:
DisplayNumber( 6,8*1,47 );
DisplayNumber( 6,8*2,66 );
DisplayNumber( 6,8*3,51 );
DisplayNumber( 6,8*4,17 );
//-------------------------SPEED修改-------------------------
if( horizontal == 1 ) DisplayRevNumber( 2,8*7, SPEED/100 ); else DisplayNumber( 2,8*7, SPEED/100 );
if( horizontal == 2 ) DisplayRevNumber( 2,8*8, SPEED%100/10 ); else DisplayNumber( 2,8*8, SPEED%100/10 );
if( horizontal == 3 ) DisplayRevNumber( 2,8*9, SPEED%10 ); else DisplayNumber( 2,8*9, SPEED%10 );
//-------------------------SPEED1修改------------------------
if( horizontal == 4 ) DisplayRevNumber( 4,8*7, SPEED1/100 ); else DisplayNumber( 4,8*7, SPEED1/100 );
if( horizontal == 5 ) DisplayRevNumber( 4,8*8, SPEED1%100/10 ); else DisplayNumber( 4,8*8, SPEED1%100/10 );
if( horizontal == 6 ) DisplayRevNumber( 4,8*9, SPEED1%10 ); else DisplayNumber( 4,8*9, SPEED1%10 );
//--------------------------Rate修改-------------------------
if( horizontal == 7 ) DisplayRevNumber( 6,8*7, FREQUENCY/100 ); else DisplayNumber( 6,8*7, FREQUENCY/100 );
if( horizontal == 8 ) DisplayRevNumber( 6,8*8, FREQUENCY%100/10 ); else DisplayNumber( 6,8*8, FREQUENCY%100/10 );
if( horizontal == 9 ) DisplayRevNumber( 6,8*9, FREQUENCY%10 ); else DisplayNumber( 6,8*9, FREQUENCY%10 );
//-------------------SECTION_BPoint修改----------------------
if( horizontal == 10 ) DisplayRevNumber( 2,8*11, SECTION_BPoint/10000 ); else DisplayNumber( 2,8*11, SECTION_BPoint/10000 );
if( horizontal == 11 ) DisplayRevNumber( 2,8*12, SECTION_BPoint%10000/1000 ); else DisplayNumber( 2,8*12, SECTION_BPoint%10000/1000 );
if( horizontal == 12 ) DisplayRevNumber( 2,8*13, SECTION_BPoint%1000/100 ); else DisplayNumber( 2,8*13, SECTION_BPoint%1000/100 );
if( horizontal == 13 ) DisplayRevNumber( 2,8*14, SECTION_BPoint%100/10 ); else DisplayNumber( 2,8*14, SECTION_BPoint%100/10 );
if( horizontal == 14 ) DisplayRevNumber( 2,8*15, SECTION_BPoint%10 ); else DisplayNumber( 2,8*15, SECTION_BPoint%10 );
//-------------------SECTION_BCPoint修改---------------------
if( horizontal == 15 ) DisplayRevNumber( 4,8*11, SECTION_BCPoint/10000 ); else DisplayNumber( 4,8*11, SECTION_BCPoint/10000 );
if( horizontal == 16 ) DisplayRevNumber( 4,8*12, SECTION_BCPoint%10000/1000 ); else DisplayNumber( 4,8*12, SECTION_BCPoint%10000/1000 );
if( horizontal == 17 ) DisplayRevNumber( 4,8*13, SECTION_BCPoint%1000/100 ); else DisplayNumber( 4,8*13, SECTION_BCPoint%1000/100 );
if( horizontal == 18 ) DisplayRevNumber( 4,8*14, SECTION_BCPoint%100/10 ); else DisplayNumber( 4,8*14, SECTION_BCPoint%100/10 );
if( horizontal == 19 ) DisplayRevNumber( 4,8*15, SECTION_BCPoint%10 ); else DisplayNumber( 4,8*15, SECTION_BCPoint%10 );
//----------------------INTENSITY修改------------------------
if( horizontal == 20 ) DisplayRevNumber( 6,8*11, INTENSITY/100 ); else DisplayNumber( 6,8*11, INTENSITY/100 );
if( horizontal == 21 ) DisplayRevNumber( 6,8*12, INTENSITY%100/10 ); else DisplayNumber( 6,8*12, INTENSITY%100/10 );
if( horizontal == 22 ) DisplayRevNumber( 6,8*13, INTENSITY%10 ); else DisplayNumber( 6,8*13, INTENSITY%10 );
//-----------------------------------------------------------
if( up | down )
{
switch( horizontal )
{
case 0: if( up&&!down ) horizontal = 5; else if( down&&!up ) horizontal = 1; break;
case 1: if( up&&!down ) SPEED += 100; else if( down&&!up ) SPEED -= 100; SPEED_modify=1; break;
case 2: if( up&&!down ) SPEED += 10 ; else if( down&&!up ) SPEED -= 10 ; SPEED_modify=1; break;
case 3: if( up&&!down ) SPEED += 1 ; else if( down&&!up ) SPEED -= 1 ; SPEED_modify=1; break;
case 4: if( up&&!down ) SPEED1 += 100; else if( down&&!up ) SPEED1 -= 100; SPEED_modify=1; break;
case 5: if( up&&!down ) SPEED1 += 10 ; else if( down&&!up ) SPEED1 -= 10 ; SPEED_modify=1; break;
case 6: if( up&&!down ) SPEED1 += 1 ; else if( down&&!up ) SPEED1 -= 1 ; SPEED_modify=1; break;
case 7: if( up&&!down ) FREQUENCY += 100; else if( down&&!up ) FREQUENCY -= 100; FREQUENCY_modify=1; break;
case 8: if( up&&!down ) FREQUENCY += 10 ; else if( down&&!up ) FREQUENCY -= 10 ; FREQUENCY_modify=1; break;
case 9: if( up&&!down ) FREQUENCY += 1 ; else if( down&&!up ) FREQUENCY -= 1 ; FREQUENCY_modify=1; break;
case 10: if( up&&!down ) SECTION_BPoint += 10000; else if( down&&!up ) SECTION_BPoint -= 10000; SECTION_BPoint_modify=1; break;
case 11: if( up&&!down ) SECTION_BPoint += 1000 ; else if( down&&!up ) SECTION_BPoint -= 1000 ; SECTION_BPoint_modify=1; break;
case 12: if( up&&!down ) SECTION_BPoint += 100 ; else if( down&&!up ) SECTION_BPoint -= 100 ; SECTION_BPoint_modify=1; break;
case 13: if( up&&!down ) SECTION_BPoint += 10 ; else if( down&&!up ) SECTION_BPoint -= 10 ; SECTION_BPoint_modify=1; break;
case 14: if( up&&!down ) SECTION_BPoint += 1 ; else if( down&&!up ) SECTION_BPoint -= 1 ; SECTION_BPoint_modify=1; break;
case 15: if( up&&!down ) SECTION_BCPoint += 10000; else if( down&&!up ) SECTION_BCPoint -= 10000; SECTION_BCPoint_modify=1; break;
case 16: if( up&&!down ) SECTION_BCPoint += 1000 ; else if( down&&!up ) SECTION_BCPoint -= 1000 ; SECTION_BCPoint_modify=1; break;
case 17: if( up&&!down ) SECTION_BCPoint += 100 ; else if( down&&!up ) SECTION_BCPoint -= 100 ; SECTION_BCPoint_modify=1; break;
case 18: if( up&&!down ) SECTION_BCPoint += 10 ; else if( down&&!up ) SECTION_BCPoint -= 10 ; SECTION_BCPoint_modify=1; break;
case 19: if( up&&!down ) SECTION_BCPoint += 1 ; else if( down&&!up ) SECTION_BCPoint -= 1 ; SECTION_BCPoint_modify=1; break;
case 20: if( up&&!down ) INTENSITY += 100; else if( down&&!up ) INTENSITY -= 100; INTENSITY_modify=1; break;
case 21: if( up&&!down ) INTENSITY += 10 ; else if( down&&!up ) INTENSITY -= 10 ; INTENSITY_modify=1; break;
case 22: if( up&&!down ) INTENSITY += 1 ; else if( down&&!up ) INTENSITY -= 1 ; INTENSITY_modify=1; break;
default:break;
}
up = down = 0;
}
break;
case 50://*************************************************************
//*************************************************************
// 第五主屏(菜单5):USB
//*************************************************************
//*************************************************************
DisplayRevNumber( 2,8*7,mIntStatus>>4 );
DisplayRevNumber( 2,8*8,mIntStatus&0x0F );
if ( mIntStatus == ERR_USB_CONNECT ) // U盘已连接
{
DisplayNumber ( 4,8*3,41 );
DisplayChinese( 4,16*2,pan2 );
DisplayChinese( 4,16*3,yi3 );
DisplayChinese( 4,16*4,lian2 );
DisplayChinese( 4,16*5,jie1 );
}
else // U盘已断开
{
DisplayNumber ( 4,8*3,41 );
DisplayChinese( 4,16*2,pan2 );
DisplayChinese( 4,16*3,yi3 );
DisplayChinese( 4,16*4,duan4 );
DisplayChinese( 4,16*5,kai1 );
}
break;
//-----------------------------------------------------------
// USB Display
case 51: // 第 51 屏
DisplayChinese( 4,16*2,qing3 ); // 请稍候...
DisplayChinese( 4,16*3,shao1 );
DisplayChinese( 4,16*4,hou4 );
DisplayNumber ( 4,8*10,18 );
DisplayNumber ( 4,8*11,18 );
DisplayNumber ( 4,8*12,18 );
DisplayPic( 6,16*0,schedule,GUAGE );
break;
case 52: // 第 52 屏
DisplayChinese( 4,16*2,cao1 ); // 操作故障
DisplayChinese( 4,16*3,zuo4 );
DisplayChinese( 4,16*4,gu4 );
DisplayChinese( 4,16*5,zhang4 );
break;
case 60://*************************************************************
//*************************************************************
// 第六主屏(菜单6):芯片温度显示
//*************************************************************
//*************************************************************
DisplayChinese(2,16*0,wen); // 温度:
DisplayChinese(2,16*1,du4);
DisplayNumber(2,8*4,17);
DisplayNumber(2,8*5,TEMPER/100); // 温度
DisplayNumber(2,8*6,TEMPER%100/10);
DisplayNumber(2,8*7,18); // .
DisplayNumber(2,8*8,TEMPER%10);
DisplayNumber(2,8*9,73);
DisplayNumber(2,8*10,12); // C
break;
default: break;
}
}
//=================================================================================================
void Init( void )
{
//-------------------------------------------
// System initialization
mDelaymS ( 10 );
SYSCLK_Init ( );
PORT_Init ( );
FUNCTION_Init ( );
//-------------------------------------------
// UART initialization
UART0_Init ( );
UART1_Init ( );
//-------------------------------------------
// LCD initialization
LCDInit ( );
//-------------------------------------------
// Timer 12C887 initialization
Start12C887 ( ); // 启动时钟
Read12C887 ( time_buf ); // 读取系统时间
alarm_range = Read12C887RAM ( ALARM_RANGE );
SPEED = Read12C887RAM ( SPEED_RANGE ); // 取得行驶速度
SPEED1 = Read12C887RAM ( SPEED1_RANGE ); // 取得转弯速度
FREQUENCY = Read12C887RAM ( FREQUENCY_RANGE ); // 取得 PWM 频率
temp = Read12C887RAM ( SECTION_B_RANGE_H ); // 取得B 道区的起始位置
SECTION_BPoint = ( unsigned int )_irol_( ( unsigned int )temp , 8 );
temp = Read12C887RAM ( SECTION_B_RANGE_L );
SECTION_BPoint += temp;
temp = Read12C887RAM ( SECTION_BC_RANGE_H ); // 取得BC 中道区的起始位置
SECTION_BCPoint = ( unsigned int )_irol_( ( unsigned int )temp , 8 );
temp = Read12C887RAM ( SECTION_BC_RANGE_L );
SECTION_BCPoint += temp;
INTENSITY = Read12C887RAM( INTENSITY_RANGE ); // 取得光强度参数
SetSQW ( alarm_range ); // 设置 SQW
//-------------------------------------------
// USB initialization
USBInit ( );
//-------------------------------------------
// Car initialization
CarStop ( );
Stop = 1;
SECTION = 'A';
//-------------------------------------------
// Periphery Setting
LED_OUT_INACT ( ); // Disable LED
ALARM_INACT( ); //
}
//-----------------------------------------------------------------------------
void main ( void )
{
// Disable Watchdog timer
WDTCN = 0xDE;
WDTCN = 0xAD;
Init( ); // 初始化系统时钟
UART1SendByte ( 'a' ); // Just test
while( 1 )
{
KeyProcess ( );
Display ( );
CarDriver ( );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -