|
程序源自我的團(tuán)隊(duì)的一個(gè)參賽項(xiàng)目,項(xiàng)目文件是一個(gè)大工程有很多內(nèi)容由其他隊(duì)員編寫(xiě)我也不好直接發(fā)上來(lái),所以我只好截取了其中我寫(xiě)的一個(gè)小模塊放上來(lái)供大家分享。
這個(gè)程序主要可以實(shí)現(xiàn)“任意圖片顯示”以及“任意視頻播放”兩個(gè)功能,數(shù)據(jù)都通過(guò)串口進(jìn)行傳輸(波特率4800,藍(lán)牙或USB均可),當(dāng)然發(fā)送的數(shù)據(jù)只能是處理好的圖像取模數(shù)據(jù)。(LCD驅(qū)動(dòng)是st7920)
上電后直接顯示以下圖像:
IMG_5009.JPG (2.39 MB, 下載次數(shù): 60)
下載附件
2018-12-16 19:09 上傳
此時(shí)發(fā)送53 FF(十六進(jìn)制發(fā)送)即可使用顯示單張圖片的預(yù)設(shè),這時(shí)再通過(guò)串口發(fā)送取模數(shù)據(jù)就可以實(shí)時(shí)顯示圖像。
新建位圖圖像.jpg (85.38 KB, 下載次數(shù): 60)
下載附件
2018-12-16 19:14 上傳
IMG_5010.JPG (2.12 MB, 下載次數(shù): 64)
下載附件
2018-12-16 19:14 上傳
顯示完圖片后發(fā)送 01 0E即可跳回就緒狀態(tài)(如果無(wú)法退出就定時(shí)循環(huán)發(fā)送01 0E)。
如果在就緒狀態(tài)下發(fā)送53 53就可以進(jìn)行視頻流播放,此時(shí)只要將視頻流的逐幀取模代碼通過(guò)串口發(fā)過(guò)來(lái)就行了。
附件壓縮包里有我制作的Bad Apple 爛蘋(píng)果取模BIN文件供大家參考。
IMG_5012.JPG (1.68 MB, 下載次數(shù): 65)
下載附件
2018-12-16 19:21 上傳
IMG_5011.JPG (1.08 MB, 下載次數(shù): 54)
下載附件
2018-12-16 19:21 上傳
由于我的晶振是12MHz的,所以波特率設(shè)置為4800,實(shí)測(cè)播放速度有1幀/秒,大家也可以更改定時(shí)器參數(shù)來(lái)提高波特率。
視頻播放完畢后同樣循環(huán)發(fā)送01 0E就可以回到就緒狀態(tài)了。
下面放出main函數(shù)代碼,其他代碼放在附件中。
#include <reg51.h>
typedef unsigned int u16; //對(duì)數(shù)據(jù)類(lèi)型進(jìn)行聲明定義
typedef unsigned char u8;
#define tbuf 25
u8 RX_buffer[tbuf]={0}; //全局字符串?dāng)?shù)組,串口接收緩存,用于記錄藍(lán)牙串口發(fā)來(lái)的信息
u8 RX_num=0; //藍(lán)牙接收的字符個(gè)數(shù)
u8 RX_value=0; //藍(lán)牙函數(shù)處理后返回的值
#include "delay service.h"
#include "driver of LCD12864.h"
#include "bluetooth.h"
#include "resource.h"
void init()
{
SCON=0X50; //設(shè)置為工作方式1
TMOD=0X20; //設(shè)置計(jì)數(shù)器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //計(jì)數(shù)器初始值設(shè)置,注意波特率是4800的
TL1=0XF3;
ES=1; //打開(kāi)接收中斷
EA=1; //打開(kāi)總中斷
TR1=1; //打開(kāi)計(jì)數(shù)器
}
void main()
{
init(); //紅外、藍(lán)牙初始化
Initialization(); //LCD初始化
Screen_Clear();
while(1)
{
unsigned char j=0,k=0,l=0,m_flag=0;
RX_buffer[1]=0;
Write_Instruction(0x01);
Display_Text(0x80,text16);
Display_Text(0x98,text15);
while(RX_buffer[1]==0);//跳出此模式的條件
Write_Instruction(0x01);
if(RX_buffer[1]==0xFF) //發(fā)送0x53 0xXX(XX表示任意,除01,FF外)默認(rèn)視頻播放模式,發(fā)送0x53 0xFF則為圖片顯示模式
{
m_flag=1;
}
RX_num=1;
while((RX_buffer[1] != 0x01) || (RX_buffer[2] != 0x0E))//發(fā)送0x01 0x0E退出
{
while((j != 32) || (l != 1))
{
Write_Instruction(0x36);
while(RX_num != 17);
if((RX_buffer[1]==0x01) && (RX_buffer[2])==0x0E) break;
if((l==0) && (j==32))
{
l=1;
j=0;
}
Write_Instruction(0x80+j);
if(l==0)
{
Write_Instruction(0x80);
}
else
{
Write_Instruction(0x88);
}
for(k=1;k<17;k++)
{
Write_Data(RX_buffer[k]);
}
j++;
RX_num=1;
}
if(m_flag==1)
{
RX_buffer[1]=0x01;
RX_buffer[2]=0x0E;
}
j=0;
l=0;
}
RX_num=0;//接收數(shù)組下標(biāo)指向指令位
RX_buffer[0]=0;
while(RX_buffer[0]==0);
Screen_Clear();
}
}
附件壓縮包內(nèi)容:
新建位圖圖像 (2).jpg (200.08 KB, 下載次數(shù): 69)
下載附件
2018-12-16 19:27 上傳
圖像取模軟件我推薦Image2Lcd,新版本支持批量取模。
0.png (39.57 KB, 下載次數(shù): 70)
下載附件
2018-12-16 22:46 上傳
全部資料51hei下載地址:
多媒體功能演示.zip
(262.09 KB, 下載次數(shù): 181)
2018-12-16 19:30 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|