|
51.png (110.43 KB, 下載次數(shù): 59)
下載附件
2020-5-20 21:42 上傳
寫的一個標(biāo)準(zhǔn)08接口的廣告屏驅(qū)動,實現(xiàn)了簡單的文字字符顯示和位移,使用的是STM32F103單片;
- /**
- ******************************************************************************
- * @file : main.c
- * @brief : Main program body
- ******************************************************************************
- * @attention
- *
- * author: A free fish
- * If you have any questions, please contact:1961178217
- ******************************************************************************
- */
- #include "main.h"
- #include "font.h"
- unsigned char Word_Code_Buf[32*10] = {0}; //10個字的緩存空間
- uint8_t Word_num = 0; //顯示字?jǐn)?shù)(ASCII數(shù),1個漢字2個)
- uint8_t Fresh_Flag = 0; //更新顯示標(biāo)志位
- uint8_t ConncetFlag = 0;
- /* 漢字GB2312和字模關(guān)聯(lián)表 */
- WORD_CODE font_word[24] = {
- {0xB9E3,Word_Font[0]},
- {0xB8E6,Word_Font[2]},
- {0xC6C1,Word_Font[4]},
- {0xCFD4,Word_Font[6]},
- {0xCABE,Word_Font[8]},
- {0xB2E2,Word_Font[10]},
- {0xCAD4,Word_Font[12]},
- {0xD6A7,Word_Font[14]},
- {0xB3D6,Word_Font[16]},
- {0xD2C6,Word_Font[18]},
- {0xB6AF,Word_Font[20]},
- {0xB9A6,Word_Font[22]},
- {0xC4DC,Word_Font[24]},
- {0xBFC9,Word_Font[26]},
- {0xD2D4,Word_Font[28]},
- {0xD4B6,Word_Font[30]},
- {0xB3CC,Word_Font[32]},
- {0xBFD8,Word_Font[34]},
- {0xD6C6,Word_Font[36]},
- {0xB6A8,Word_Font[38]},
- {0xCAB1,Word_Font[40]},
- {0xBFAA,Word_Font[42]},
- {0xB9D8,Word_Font[44]},
- {0xB5C8,Word_Font[46]},
- };
- USER User;
- /* 初始化顯示的漢字“廣告屏顯示測試” */
- void dis_init(void)
- {
- /* 初始化顯示的數(shù)字“1961178217” */
- uint8_t dis[] = "1961178217";
- uint8_t i,j;
- uint16_t index = 0;
- memset(Word_Code_Buf,0xff,10*32);
- for(i = 0; i < 10; i ++ )
- {
- for(j = 0; j < 16; j ++)
- {
- Word_Code_Buf[index++] = Ascii_Font[dis[i] - 0x20][j];
- }
- }
- Word_num = 10;
- Fresh_Flag = 1;
- /* 初始化顯示的漢字“廣告屏顯示測試” */
- // uint8_t i,j;
- // uint16_t index = 0;
- // memset(Word_Code_Buf,0xff,10*32);
- // for(i = 0; i < 7; i ++ )
- // {
- // for(j = 0; j < 32; j ++)
- // {
- // Word_Code_Buf[index++] = font_word[i].pdata[j];
- // }
- // }
- // Word_num = 14;
- // Fresh_Flag = 1;
- }
- /* 接收到指令后處理顯示,開關(guān)屏等 */
- void Recive_Task( void )
- {
- uint32_t Seconds_Now = 0;
- uint32_t Seconds_Temp = 0;
- uint8_t i,j,l,k;
- uint8_t char_num = 0;
- uint16_t index;
-
- Seconds_Now = RTC_GetCounter();
-
-
- if( User.OFF_Flag == 1 )
- {
- Fresh_Flag = 0;
- //User.OFF_Flag = 0;
- LED08_Off();
- }
- else if(User.ON_Flag == 1 )
- {
- Fresh_Flag = 1;
- }
- if( User.OFF_Time_Flag == 1 )
- {
- User.OFF_Time.Year = user_time.Year;
- User.OFF_Time.Mon = user_time.Mon;
- User.OFF_Time.Day = user_time.Day;
-
- Seconds_Temp = GetTimeSec(User.OFF_Time);
- if( Seconds_Now >= Seconds_Temp )
- {
- User.OFF_Time_Flag = 0;
- User.OFF_Flag = 1;
- User.ON_Flag = 0;
- }
- }
- if( User.On_Time_Flag == 1 )
- {
- User.On_Time.Year = user_time.Year;
- User.On_Time.Mon = user_time.Mon;
- User.On_Time.Day = user_time.Day;
-
- Seconds_Temp = GetTimeSec(User.On_Time);
- if( Seconds_Now >= Seconds_Temp )
- {
- User.On_Time_Flag = 0;
- User.OFF_Flag = 0;
- User.ON_Flag = 1;
- }
- }
- for(i = 0; i < 4; i ++)
- {
- User.Dis_Data[i].End_Time.Year = user_time.Year;
- User.Dis_Data[i].End_Time.Mon = user_time.Mon;
- User.Dis_Data[i].End_Time.Day = user_time.Day;
-
- Seconds_Temp = GetTimeSec(User.Dis_Data[i].End_Time);
- char_num = 0;
- if( Seconds_Now >= Seconds_Temp && User.Dis_Data[i].Dis_Flag == 1 && User.Dis_Data[i].En_Flag == 1 )
- {
- User.Dis_Data[i].En_Flag = 0;
- User.Dis_Data[i].Dis_Flag = 0;
- User.OFF_Flag = 1;
- User.ON_Flag = 0;
- }
- User.Dis_Data[i].Start_Time.Year = user_time.Year;
- User.Dis_Data[i].Start_Time.Mon = user_time.Mon;
- User.Dis_Data[i].Start_Time.Day = user_time.Day;
-
- Seconds_Temp = GetTimeSec(User.Dis_Data[i].Start_Time);
- char_num = 0;
- if( Seconds_Now >= Seconds_Temp && User.Dis_Data[i].Dis_Flag == 0 && User.Dis_Data[i].En_Flag == 1)
- {
- Fresh_Flag = 0;
- index = 0;
- memset(Word_Code_Buf,0xff,10*32);
- for(j = 0; j < 20; j ++)
- {
- if( User.Dis_Data[i].Data[j] >= ' ' && User.Dis_Data[i].Data[j] <= '~') //ASCII碼
- {
- for(l = 0; l < 16; l ++)
- {
- Word_Code_Buf[index++] = Ascii_Font[User.Dis_Data[i].Data[j] - 0x20][l];
-
- }
- char_num += 1;
-
- }
- else if( j <= 18 ) //漢字
- {
- for(l = 0; l < 24; l ++)
- {
- if( ( User.Dis_Data[i].Data[j] << 8 | User.Dis_Data[i].Data[j + 1]) == font_word[l].gb2312_code )
- {
- for(k = 0; k < 32; k ++)
- {
- Word_Code_Buf[index++] = font_word[l].pdata[k];
-
- }
- char_num += 2;
- }
- }
-
- }
- }
- User.Dis_Data[i].Dis_Flag = 1;
- Word_num = char_num;
- Fresh_Flag = 1;
- User.OFF_Flag = 0;
- User.ON_Flag = 1;
- }
- }
-
- }
- int main( void )
- {
- static u32 Buz_Time = 0;
- u8 i,j;
- u32 RandSum;
- u16 Cnt = 0;
- Bsp_Init();
- printf("start!\r\n");
- delay_ms(T_20S);
-
- Sim900a_Init();
- delay_ms(T_5S);
-
- dis_init();
-
- while(1)
- {
- if( ConncetFlag == 0 )
- Connect_TCP();
- if( ( OsDelayCCnt % 1000 ) == 0)
- {
- printf("RTC:%d:%d:%d %d:%d:%d\r\n",user_time.Year,\
- user_time.Mon,user_time.Day,user_time.Hour,user_time.Min,user_time.Sec);
- DbgLed_Turn();
- Bsp_Rtc_GetTime(&user_time);
- }
- Cnt ++;
- Display_Task();
- Recive_Task();
- Display();
- if( ( OsDelayCCnt % 5*1000 ) == 0)
- {
- //Send_Data();
- }
-
- }
- }
- //len1 長度 InitValue 默認(rèn)值
- u32 Pub_DecAscToU32_Vice( const u8 *Src, u8 Len, u8 InitValue )
- {
- u8 i;
- u32 Result;
- if( 0 == Len )
- {
- return InitValue;
- }
- Result = 0;
- for( i = 0; i < Len; i++ )
- {
- if( *( Src + i ) >= '0' && *( Src + i ) <= '9' )
- {
- Result = 10 * Result + ( *( Src + i ) - '0' );
- }
- else
- {
- break;
- }
- }
- return Result;
- }
復(fù)制代碼
|
-
-
STM32_Master.7z
2020-5-20 21:43 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
224.78 KB, 下載次數(shù): 107, 下載積分: 黑幣 -5
|