历史上的今天
返回首页

历史上的今天

今天是:2025年01月23日(星期四)

正在发生

2020年01月23日 | 51单片机串口通信Bad Apple视频播放源程序(LCD12864显示)

2020-01-23 来源:51hei

程序源自我的团队的一个参赛项目,项目文件是一个大工程有很多内容由其他队员编写我也不好直接发上来,所以我只好截取了其中我写的一个小模块放上来供大家分享。

这个程序主要可以实现“任意图片显示”以及“任意视频播放”两个功能,数据都通过串口进行传输(波特率4800,蓝牙或USB均可),当然发送的数据只能是处理好的图像取模数据。(LCD驱动是st7920)

上电后直接显示以下图像:
此时发送53 FF(十六进制发送)即可使用显示单张图片的预设,这时再通过串口发送取模数据就可以实时显示图像。
 

 
显示完图片后发送 01 0E即可跳回就绪状态(如果无法退出就定时循环发送01 0E)。

如果在就绪状态下发送53 53就可以进行视频流播放,此时只要将视频流的逐帧取模代码通过串口发过来就行了。


附件压缩包里有我制作的Bad Apple 烂苹果取模BIN文件供大家参考。
 
由于我的晶振是12MHz的,所以波特率设置为4800,实测播放速度有1帧/秒,大家也可以更改定时器参数来提高波特率。


视频播放完毕后同样循环发送01 0E就可以回到就绪状态了。

下面放出main函数代码,其他代码放在附件中。
#include
typedef unsigned int u16;          //对数据类型进行声明定义
typedef unsigned char u8;
#define tbuf 25
u8 RX_buffer[tbuf]={0};  //全局字符串数组,串口接收缓存,用于记录蓝牙串口发来的信息
u8 RX_num=0;               //蓝牙接收的字符个数
u8 RX_value=0;                              //蓝牙函数处理后返回的值
#include "delay service.h"
#include "driver of LCD12864.h"        
#include "bluetooth.h"
#include "resource.h"

void init()
{
        SCON=0X50;                        //设置为工作方式1
        TMOD=0X20;                        //设置计数器工作方式2
        PCON=0X80;                        //波特率加倍
        TH1=0XF3;                                //计数器初始值设置,注意波特率是4800的
        TL1=0XF3;
        ES=1;                                                //打开接收中断
        EA=1;                                                //打开总中断
        TR1=1;                                        //打开计数器



void main()
{
   init();                 //红外、蓝牙初始化
   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) //发送0x53 0xXX(XX表示任意,除01,FF外)默认视频播放模式,发送0x53 0xFF则为图片显示模式
        {
           m_flag=1;
        }
        RX_num=1;
        while((RX_buffer[1] != 0x01) || (RX_buffer[2] != 0x0E))//发送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;//接收数组下标指向指令位

        RX_buffer[0]=0;
        while(RX_buffer[0]==0);
        Screen_Clear(); 
}
}

推荐阅读

史海拾趣

ERP Power公司的发展小趣事

在这个故事中,我们将关注ERP Power在国际市场的拓展情况。通过与国际知名企业的合作和交流,ERP Power系统成功打入国际市场并获得了广泛认可。这一过程中,ERP Power不仅提升了自身的技术实力和服务水平还积累了丰富的国际化经验。

Abbatron公司的发展小趣事

Abbatron公司深知合作的重要性,积极寻求与业内其他企业的合作机会。通过与某知名电子制造商的合作,Abbatron公司成功将其创新技术应用于实际产品中,进一步扩大了市场份额。这种合作模式不仅促进了双方的发展,也为整个电子行业带来了更多的可能性。

FDI [Future Designs , Inc.]公司的发展小趣事

随着环保意识的提高,电子产品的绿色环保问题日益受到关注。FDI公司积极响应这一趋势,投入大量资源研发绿色电子产品。公司采用环保材料和生产工艺,推出了一系列符合国际环保标准的电子产品。这些产品不仅具有优良的性能和品质,而且对环境友好,深受消费者的喜爱。

ECI公司的发展小趣事

面对日益激烈的市场竞争,ECI公司积极开拓国际市场。公司成立了专门的国际市场部,负责海外市场的调研、开发和推广。通过深入了解不同国家和地区的市场需求和文化差异,ECI公司成功推出了符合当地消费者需求的电子产品。同时,公司还与多家国际知名企业建立了长期稳定的合作关系,进一步扩大了市场份额。

兆易创新(GigaDevice)公司的发展小趣事

ECI公司深知人才是企业发展的关键因素。因此,公司高度重视人才的引进、培养和激励。公司建立了完善的人才选拔机制,选拔具有潜力和才华的员工进行重点培养。同时,公司还提供了丰富的培训和发展机会,帮助员工提升自身素质和能力。此外,ECI还建立了科学合理的薪酬制度和激励机制,让员工在为公司创造价值的同时也能获得相应的回报。这种对人才的重视和投入让ECI公司汇聚了一批优秀的员工队伍,为公司的发展提供了有力的保障。

Greenwich Instruments Ltd公司的发展小趣事

面对日益激烈的市场竞争和不断变化的客户需求,Greenconn Corp积极推动智能制造转型。公司引进先进的生产设备和技术,优化生产流程和管理模式,提高生产效率和产品质量。同时,公司还加强与高校、科研机构的合作,共同研发智能制造关键技术,推动智能制造技术在连接器生产领域的应用。这些努力不仅提升了Greenconn Corp的竞争力,还为公司的可持续发展奠定了坚实基础。

问答坊 | AI 解惑

无电池的电视遥控器

用过的电池一般都可以在遥控器上继续使用,这就说明遥控器所消耗的电力非常小。既然如此,为何不让遥控器自产电力呢?既环保又省钱。这款遥控器装有磁铁滑块和线圈,用户可以通过晃动让遥控器发电。每次晃动都可以产生20~30mA的电流,足以供遥控器 ...…

查看全部问答>

有对flexray感兴趣的吗?

如果有的话,大家交流一下,我也是个初学者,…

查看全部问答>

window DDK 编译问题

error C2146: syntax error : missing \';\' before identifier \'Lock\'兄弟是新手,谁能帮我解决一下。使用的开发工具是vc++6.0.小北谢谢了。 …

查看全部问答>

EVC下 如何得到视频文件的信息?比如"MPG"、"AVI"等嵌入式常用视频格式?

EVC下 如何得到视频文件的信息? 比如\"MPG\"、\"AVI\"等嵌入式常用视频格式? 我知道MP3可以通过读ID3信息得到,但视频文件就不知道了 我希望得到该文件的如下信息 1、视频的分辨率,宽、高为多少像素?如768×576. 2、持续时间 3、帧速率 ...…

查看全部问答>

JPEG

我在用jpeg解码.jpg图片时,jpeg_read_scanlines只能够读取每一行的信息,所以解码很慢。有什么方法可以提高解码速度啊? …

查看全部问答>

wifi跳频问题

请问wifi跳频是由软件协议操作完成的还是WIFI模块自己根据外界环境自己改变频道和发射功率?…

查看全部问答>

求wince下的ffmpeg源代码

最近要写个demo,在wince下调用mpeg4网络摄像机的图像, 哪位大哥帮个忙阿。 苦死我了…

查看全部问答>

首届ARM中国合作伙伴巡回研讨会(成都/杭州/上海/南京)报名中

在线报名:http://www.realview.com.cn/wen2-list.asp?id=2912008年5-7月 北京 深圳 武汉 西安 成都 杭州 上海 南京 8个城市  缤纷多彩的ARM嵌入式应用      ...…

查看全部问答>

STM8输出PWM的问题

                                 发现一个奇怪的现象,使用STM8的TIM1产生PWM,更新TIM1_CCR时在两个特定的点有问题,更新不了。大概是在TIM1_CCR=2 ...…

查看全部问答>

电子设计测量组推荐书目

本帖最后由 paulhyde 于 2014-9-15 09:17 编辑 …

查看全部问答>