国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee
ELEOK
標題:
led顯示屏32*64 標準hub08接口STM32驅動程序源碼
[打印本頁]
作者:
山海致遠
時間:
2020-5-22 00:59
標題:
led顯示屏32*64 標準hub08接口STM32驅動程序源碼
一個標準08接口的廣告屏驅動,實現了簡單的文字字符顯示和位移,使用的是STM32F103單片;
STM32_led_Master源碼.zip
(412.19 KB, 售價: 1 E幣)
2023-6-5 13:00 上傳
點擊文件名下載附件
售價: 1 E幣
[記錄]
[
購買
]
214258zealnj0hee7y6044.png
(88.04 KB)
下載附件
2020-5-22 00:56 上傳
部分代碼
/**
******************************************************************************
* @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; //顯示字數(ASCII數,1個漢字2個)
uint8_t Fresh_Flag = 0; //更新顯示標志位
uint8_t ConncetFlag = 0;
/* 漢字GB2312和字模關聯表 */
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)
{
/* 初始化顯示的數字“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;
}
/* 接收到指令后處理顯示,開關屏等 */
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 默認值
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;
}
復制代碼
歡迎光臨 ELEOK (http://m.afoofa.cn/)
Powered by Discuz! X5.0