试用12864液晶播放

试用12864液晶播放

ID:32364396

大小:3.64 MB

页数:37页

时间:2019-02-03

试用12864液晶播放_第1页
试用12864液晶播放_第2页
试用12864液晶播放_第3页
试用12864液晶播放_第4页
试用12864液晶播放_第5页
资源描述:

《试用12864液晶播放》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、试用12864液晶播放《BadApple》发表回复《BadApple》是一个很有趣的视频,配上棒棒的音乐,让我这个非二次元的人也对此深感兴趣。这是《BadApple》的观看链接:http://www.bilibili.com/video/av706/这是《BadApple》的维基百科链接:http://zh.wikipedia.org/zh/Bad_apple!!这个作品是一个影绘作品,画面仅有黑色和白色两色组成,因此被好事者弄到了各种点阵屏上播放。我最近从寝室里面翻出来一块初中的时候玩的12864液晶屏,颇为感慨,于是才萌发出一个把《BadApple》

2、放这屏幕上显示的想法。http://img.dlifep.com/2014/08/IMG_5710.mp400:0000:0000:00我现在做到的情况是,原视频帧率30,我能以平均10帧的速度回放。使用STC12C5A32S2单片机,时钟频率24Mhz,单片机串口波特率460800bps,屏幕驱动芯片为ST7920,并行形式驱动。不带声音。下位机用C写的,上位机用Python写的。(其实就是专门来学Python。)值得一提的是,看到这块屏幕的插针的时候,才觉得那个时候我的焊工真是超级烂啊。介绍一下12864液晶,这是一种点阵型的液晶,分辨率为128(宽

3、)x64(高),颜色只有黑白两种。当然有些人看了下面的图之后会问我,“这不明明是蓝黄两色吗,你色盲吧?“,对于这样的同学我也表示赞同,希望你们把这样作死的精神继续发扬下去。这是今天的主角12864屏幕屏幕一角的微距拍摄图(屏幕上面比较脏)播放《BadApple》时屏幕微距拍摄播放《BadApple》时的屏幕结构整个系统的结构和过程都很简单,下面我来大致描述一下我程序的工作过程。1.将原始的BadApple的视频转换成128x64分辨率的视频bad_apple.mp42.利用ffmpeg将bad_apple.mp4的6569帧转换为6569张bmp文件存于

4、capture文件夹3.运行compressor.py1.将6569帧bmp图像全部读入内存存到列表lFrame中,并在lFrame头添加一全黑帧2.将每一帧转换为适应12864液晶屏的双字节格式,并按lFrame中的顺序存于列表lDByteString中3.从第一帧(不要忘了第零帧)开始直到最后遍历lDByteString中的每一帧,将每一帧与上一帧的所有差异找出,并按指定的文件格式存放到文件bad_apple.jh中1.运行player.py1.按照指定的文件格式读取存放于文件bad_apple.jh的每一帧2.打开串口,连接屏幕(我们称下位机为屏幕

5、)3.遍历每一帧,并把每一帧的所有差异字节发送到屏幕,同时计算每一帧的耗时,将耗时控制在1.0(秒)/30(帧)4.播放结束将原始的BadApple的视频转换成128x64分辨率的视频bad_apple.mp4这一步我们使用Mediacoder对视频进行转码。我随意找了台跑着老掉牙的XP的虚拟机,装了个我最熟悉的Mediacoder转换视频。至于码率之类的参数都无所谓,视频也就那么点大,只要分辨率压缩正确就行了。另外我没有将音频音轨压入bad_apple.mp4,反正我也用不到。;)利用ffmpeg将bad_apple.mp4的6569帧转换为6569张

6、bmp文件存于capture文件夹得到bad_apple.mp4文件之后,利用ffmpeg就可以直接的把视频转换为图片序列,这个功能很方便~1ffmpeg-ibad_apple.mp4capture/%d.bmp转换的过程大致如下:(背景是慈母madoka喔)转换出一大堆文件:运行compressor.py程序compressor.py将会对图片序列进行预处理,生成一个bad_apple.jh的文件。提示本文并非教您使用12864液晶,下面的说明仅为后文做铺垫。我们知道,12864的屏幕可以用下列表格示意,一个格子对应一个像素。根据文档所述,屏幕可以分为

7、这16块(每一块宽16个像素,高32个像素),对应的是X方向的坐标。而这16块中的每一块,又可以分为32行(每行宽16个像素,高1个像素),这里对应的是Y方向的坐标。每一行代表中的又可以分为16个像素点,也就是8个像素点+8个像素点,也就是两个字节。如果想在屏幕上画个点,或者是删个点,最低的操作单位就是上面的一行(也就是16个像素点)。随后记录帧差异的时候,就会按一个DByte为单位进行比较,也就是按上面的一行为单位进行比较。将6569帧bmp图像全部读入内存存到列表lFrame中,并在lFrame头添加一全黑帧在这一步,我们通过PythonImagin

8、gLibrary(简称”PIL“)这个库来读取图像信息。因为视频《BadAppl

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。