📄 main.c.bak
字号:
#include "display.h"
void delay(unsigned int count)
{
unsigned int a,b;
for(a=0;a<count;a++)
{
for(b=0;b<100;b++);
}
}
void delay_m(unsigned int t)
{
unsigned int a=100;
while(t!=0){
while(a!=0){
a--;
}
t--;
}
}
void panel_led_open(void)
{
PORTK_BIT0=1;
}
void panel_led_close(void)
{
PORTK_BIT0=0;
}
void Port_Init(void)
{
//Lcd PORT direction set
//DDRA = 0xc0;
PORTA = 0x37;
PORTB = 0xff;
DDRA = 0xff;
DDRB = 0xff;
//PORTA = 0xc0;
//DS1302 PORT direction set
DDRM_DDRM3 = 1; //DS1302 RST port direction is output
DDRM_DDRM4 = 1; //DS1302 SDA direction is output
DDRM_DDRM5 = 1; //DS1302 SCL direction is output
PTM_PTM3 = 0;
PTM_PTM4 = 0;
PTM_PTM5 = 0;
//SPI CS output PORT direction set
DDRS_DDRS1 = 1; //M_CS0
DDRK_DDK3 = 1; //M_CS2
DDRS_DDRS0 = 1; //M_CS1
DDRP_DDRP4 = 1; //L_CS0
DDRK_DDK2 = 1; //L_CS1
DDRK_DDK1 = 1; //L_CS2
DDRK_DDK0=1;
PORTK_BIT0=0;
PTS_PTS1 = 1; //port is high output
PORTK_BIT3 = 1;
PTS_PTS0 = 1;
PTP_PTP4 = 1;
PORTK_BIT2 = 1;
PORTK_BIT1 = 1;
PTT_PTT5 = 1;
PTT_PTT6 = 1;
PTT_PTT7 = 1;
DDRT_DDRT5 = 1; //N_RST0
DDRT_DDRT6 = 1; //N_RST1
DDRT_DDRT7 = 1; //N_RST2
DDRK_DDK4 = 1; //F_WP(eeprom)
PORTK_BIT4 = 1; //F_WP is high,eeprom protected.
//BG light PORT set(仪表背光灯驱动)
DDRK_DDK0 = 1; //BGCON
DDRH_DDRH4 = 0;
DDRH_DDRH3 = 0;
DDRJ_DDRJ0 = 0;
PIEH_PIEH4 = 1; //clear key interrupt enable(CLEAR)
PPSH_PPSH4 = 0; //fall edge trig
PIEJ_PIEJ0 = 1; //hour key interrupt enable (HOUR)
PPSJ_PPSJ0 = 0;
PIEH_PIEH3 = 1; //minute key interrupt enable(MINU)
PPSH_PPSH3 = 0;
}
void main(void)
{
char m_i=0;
unsigned int count=0;
char flag_temp=0;
unsigned char failure_count=0;
unsigned char flag_failure_scan=1;
unsigned char m_j=0;
char m_n=0;
char flag_m_clr=0;
char flag_m_k=0;
unsigned char failure_temp[20];
unsigned char fail_num=1;
unsigned char flag_system_failure=0;
//unsigned int led_data=0x0001;
DDRB=0XFF;
DDRA=0xff;
PORTA=0xff;
Port_Init();
flag_time=0;
lcd_INIT();//lcd初始化
key_init();//按键初始化
timer_init();//定时器初始化
NOP();
SPI0_Init(); //SPI0、SPI1初始化
SPI0_Enable();
SPI1_Init();
SPI1_Enable();
for(m_n=1;m_n<13;m_n++){
system_failure[m_n]=1;
}
for(m_n=13;m_n<20;m_n++){
system_failure[m_n]=0;
}
cli();
LED_Drive1(0xffff); //仪表板指示灯亮
LED_Drive2(0xffff);
LED_Drive3(0xffff);
variable_init();
//lcd_display_OFF(0x56);
lcd_open_display();
//lcd_display_ON(0x56);
delay(20000);
LED_Drive1(0x0000); //仪表板指示灯灭
LED_Drive2(0x0000);
LED_Drive3(0x0000);
//lcd_bmp(0,0,40,200,1,back,0,zimode_left,zimode_right,first_page);
delay(20000);
delay(20000);
delay(20000);
lcd_display_OFF(0x56);
lcd_clr_row(0,0,40,200,first_page);
lcd_clr_row(0,0,40,200,secon_page);
//sei();
lcd_back();
//for(;;);
lcd_display_ON(0x56);
/*LED_Drive1(0xffff); //仪表板指示灯灭
delay(20000);
delay(20000);
delay(20000);
LED_Drive2(0xffff);
delay(20000);
delay(20000);
delay(20000);
LED_Drive3(0xffff);*/
for(;;)
{
if(led_flash==1){
if(led_flash_mode==0){
if((led_count+1)/16==0){
LED_Drive1(0x0001<<(led_count%16));
}
else if((led_count+1)/16==1){
LED_Drive2(0x0001<<((led_count-16)%16));
}
else if((led_count+1)/16==2){
LED_Drive3(0x0001<<((led_count-32)%16));
}
}
else if(led_flash_mode==1){
if(led_count%16==0)led_data=0x0001;
if((led_count+1)/16==0){
LED_Drive1((0x0001<<(led_count%16))|led_data);
led_data|=(0x0001<<(led_count%16));
}
else if((led_count+1)/16==1){
LED_Drive2((0x0001<<((led_count-16)%16))|led_data);
led_data|=(0x0001<<((led_count-16)%16));
}
else if((led_count+1)/16==2){
LED_Drive3((0x0001<<((led_count-32)%16))|led_data);
led_data|=(0x0001<<((led_count-32)%16));
}
//led_data|=(0x0001<<(led_count%16));
}
else if(led_flash_mode==2){
if((led_count+1)/16==0){
LED_Drive1(0xffff>>(led_count%16));
}
else if((led_count+1)/16==1){
LED_Drive2(0xffff>>((led_count-16)%16));
}
else if((led_count+1)/16==2){
LED_Drive3(0x00ff>>((led_count-32)%16));
}
//led_data=0x0001;
}
led_flash=0;
}
if(flag_key_scan==1)
{
LCD_LED_set();
count=0;
if(key_code==key_left){
flag_m_clr=1;
lcd_screen_state++;
key_code=0;
if(lcd_screen_state>=3)lcd_screen_state=0;
if((lcd_screen_state==1)||(lcd_screen_state==2))flag_data_scan=1;
}
else if((key_code==key_right)&&(lcd_screen_state==lcd_general)){
/*lcd_lich[0]=0x20;//分裏程清零;
lcd_lich[1]=0x20;
lcd_lich[2]=0x30;
lcd_lich[3]=0x2e;
lcd_lich[4]=0x30;
lcd_lich[5]=0x00;
lcd_km_lich[0]=0;
gloat_m=lcd_km_lich[0]*100;
lcd_lich_to_ascii(gloat_m,lcd_lich);
flag_failure=1;*/
system_failure[fail_num--]=0;
if(fail_num==0)fail_num=12;
panel_led_open();
LCD_LED_set();
}
else if(key_code==key_enter){
system_failure[fail_num++]=1;
if(fail_num>=13)fail_num=1;
panel_led_close();
LCD_LED_set();
}
flag_key_scan=0;
}
for(m_j=0;m_j<20;m_j++){
if(system_failure[m_j]!=failure_temp[m_j]){
failure_temp[m_j]=system_failure[m_j];
flag_system_failure=1;
}
}
switch (lcd_screen_state)
{
case lcd_general:
if(flag_m_clr==1)
{
lcd_display_OFF(0x56);
lcd_clr_row(0,0,40,200,first_page);
lcd_clr_row(0,0,40,200,secon_page);
lcd_back();
lcd_vol_indi(2,140,0,vol_num[1],secon_page);
lcd_oil_indi(34,140,0,oil_num[1],first_page);
lcd_display_ON(0x56);
}
if((lcd_km_rev[1]!=lcd_km_rev[0])||(flag_m_clr==1)){
lcd_rev_to_ascii(lcd_km_rev[0],lcd_rev);
lcd_ascii_string(20,172,lcd_rev,0,0,first_page);
lcd_km_rev[1]=lcd_km_rev[0];
}
if((lcd_km_lich[1]!=lcd_km_lich[0])||(flag_m_clr==1)){
gloat_m=lcd_km_lich[0]*100;
lcd_lich_to_ascii(gloat_m,lcd_lich);
lcd_ascii_string(24,148,lcd_lich,0,0,first_page);
lcd_km_lich[1]=lcd_km_lich[0];
}
if((vol_num[1]!=vol_num[0])||(flag_m_clr==1)){
lcd_vol_indi(2,140,vol_num[1],vol_num[0],secon_page);
vol_num[1]=vol_num[0];
}
if((oil_num[1]!=oil_num[0])||(flag_m_clr==1)){
lcd_oil_indi(34,140,oil_num[1],oil_num[0],first_page);
oil_num[1]=oil_num[0];
}
if((flag_failure==1)||(flag_system_failure==1))
{
for(m_j=0;m_j<20;m_j++){
if(system_failure[m_j]==1)failure_count++;
}
if(failure_count>4){
failure_num=lcd_failure_cyc(failure_num+1,system_failure);
if(failure_num==0)failure_num=failure_num=lcd_failure_cyc(failure_num+1,system_failure);
lcd_failure_scroll(failure_num,scroll_enable);
}
else if((failure_count<=4)&&(flag_system_failure==1)){
failure_num=lcd_failure_cyc(0,system_failure);
lcd_failure_scroll(failure_num,scroll_disable);
}
flag_system_failure=0;
failure_count=0;
flag_failure=0;
}
flag_m_clr=0;
break;
case lcd_input_display:
if(flag_m_clr==1){
//lcd_display_OFF(0x56);
lcd_clr_row(0,0,40,200,first_page);
lcd_clr_row(0,0,40,200,secon_page);
flag_m_clr=0;
//lcd_display_ON(0x56);
}
if(flag_data_scan==1){
//lcd_display_OFF(0x56);
lcd_input_data(shuru,input_data);
//lcd_display_ON(0x56);
}
lcd_inout_change(input_data,input_data_temp,in_mode);
//flag_m_k=1;
break;
case lcd_output_display:
if(flag_m_clr==1){
//lcd_display_OFF(0x56);
lcd_clr_row(0,0,40,200,first_page);
lcd_clr_row(0,0,40,200,secon_page);
//lcd_display_ON(0x56);
flag_m_clr=0;
}
if(flag_data_scan==1){
//lcd_display_OFF(0x56);
lcd_output_data(shucu,output_data);
//lcd_display_ON(0x56);
}
lcd_inout_change(output_data,output_data_temp,out_mode);
//flag_m_clr=1;
flag_failure=1;
flag_system_failure=1;
break;
default:break;
}
flag_data_scan=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -