tag 标签: 51mcu

相关博文
  • 热度 2
    2024-6-26 18:24
    451 次阅读|
    0 个评论
    项目摘要 通过视频帧图片提取,图片批量裁剪,转换为BMP文件并取模,获得显示屏代码,基于STC32单片机,在8x8点阵LED模块上实现动画播放。 项目内容 动态图片显示 将目标动图或视频提取为帧图片,可通过 MATLAB 程序实现; 将帧图片裁剪为目标显示屏的像素比例,如 0.96 英寸 OLED 显示屏的像素为 128x64, 则需将帧图片按照 2:1 的宽高比进行裁剪、对于单个 8x8 点阵则需按照 1:1 进行裁剪,注意选择目标裁剪区域; 将裁剪过的帧图片转化为灰度图像(以便后面进行二值化),之后进行像素缩小操作,将图片调整至目标显示屏的像素分辨率,最后进行二值化处理,并将处理结果存储为 *.bmp 格式文件; 将批量保存的 BMP 文件按照帧顺序重命名为 1,2,3... ,之后使用 批量取模工具 生成相应的 16 进制代码,复制到程序中即可。 详见: 哔哩哔哩 bilibili . 或者将帧图片像素缩小至目标显示屏像素,保持彩色状态,存储为 BMP 格式,使用批量取模工具,勾选 转换彩图 ,调整阈值至适当值(如66%),即可直接生成对应代码。 详见附录。该项目的STC代码见 附件 。 附录 图片取模 提取视频或 GIF 动图的帧为图片,可使用 MATLAB 或 GIF Movie Gear 软件 使用 Image2Lcd 软件批量处理目标帧图片,并生成 BMP 格式图片,以便后面读取二值化数据; 这里推荐使用 广州灵派科技 的 OledTools 软件对图片进行处理,可调整灰度阈值,对于像素点较少的情况,转换效果最佳;缺点是不能进行批量处理。 对于 128x64 像素的转换,各软件均可。批量转换推荐 PictureReader 软件,可批量生成 BMP 文件。 将BMP图片转化为数模,可使用 CopyLeft By Horse2000 (字模提取)或 PCtoLCD2018 软件. 详见: CSDN博客 . www.52pojie.cn . 一些有趣的资源: Wokwi OLED Animation Maker for Arduino 动态图标显示在 128x64 显示屏利用 Arduino 代码。 视频帧提取 clear; video_file='test.mp4'; video=VideoReader(video_file); frame_number=video.NumFrames; fori = 1:5:frame_number image_name=strcat('test',num2str((i-1)/5+1)); % 每5帧取一张图 image_name=strcat(image_name,'.jpg'); I=read(video,i); %读出图片 imwrite(I,image_name,'jpg'); %写入图片 I= );%图片路径 img_num = length(img_path_list); sort_nat_name=sort_nat({img_path_list.name}); fork = 1:img_num image_name = sort_nat_name{k};%获取图片名称 image = imread(strcat(file_path,image_name));%读取图片 imwrite(image,strcat(Tpath,int2str(k),'.bmp'),'bmp'); end 详见: CSDN博客 . File Exchange - MATLAB . 图像裁剪 clear;clc; file_path = ''; % 设定你存放图片的目录 img_path_list = dir(strcat(file_path, '*.jpg')); % 选后缀为 .jpg 的图片 img_num = length(img_path_list); %获得图片数量 forn = 1:img_num image_name = img_path_list(n).name; image = imread(strcat(file_path, image_name)); crop_image = imcrop(image, ); imwrite(crop_image, strcat('Cut/Cut', image_name)); % 保存文件 end 图片像素调整 clear;clc; numrows = 8; numcols = 8; file_path = ''; % 设定你存放图片的目录 - 当前文件夹 img_path_list = dir(strcat(file_path, '*.jpg')); % 选后缀为 .jpg 的图片 img_num = length(img_path_list); %获得图片数量 forn = 1:img_num image_name = img_path_list(n).name; image_n = image_name(1:end-4); % 删除文件后缀 image = imread(strcat(file_path, image_name)); RtG_image = rgb2gray(image); % rgb to gray RS_image = imresize(RtG_image, ); BNR_image = imbinarize(RS_image); imwrite(BNR_image,strcat('Resize8x8\RS',image_n,'.bmp'),'bmp'); end 转载请注明来源,谢谢!如有任何问题请于本贴留言或联系作者,邮箱 lijinlei0907@163.com
  • 热度 4
    2024-6-26 12:28
    589 次阅读|
    0 个评论
    之前通过 STC 单片机和 DS18B20 实现了环境温度采集并串口显示,后面进一步想要实现温度的实时监测和数据记录保存,因此编写了 LabVIEW 程序,修改了部分单片机程序代码。经过实验验证,该项目可以实现 LabVIEW 上位机对 MCU 发送指令,MCU 通过 DS18B20 温度传感器获取环境温度,并通过串口将数据反馈给上位机,上位机实时记录数据,并将日期和各个时刻的温度数据保存至文件。 LabVIEW上位机前面板设置如图所示 程序面板如下图所示 需要注意的是单片机发送字符串给上位机、上位机接收均是一位一位传递,因此需要考虑判定截止符号,并将字符串转化为一定精度的数值才能显示到LabVIEW图表。 实物连接如下图所示 LabVIEW和程序代码见 。
相关资源
  • 所需E币: 0
    时间: 2020-6-13 11:55
    大小: 27.53KB
    上传者: samewell
    51MCU下载线.rar
  • 所需E币: 3
    时间: 2019-12-25 06:18
    大小: 82.33KB
    上传者: givh79_163.com
    51读写U盘源程序和原理图.……
  • 所需E币: 5
    时间: 2020-1-9 16:00
    大小: 575.5KB
    上传者: quw431979_163.com
    51MCU入門教程平凡的单片机教程自学单片机第1页共60页http://www.jselec.net江苏电子网root@jselec.net原作:平凡的单片机1平凡的单片机教程自学单片机第2页共60页单片机教程第一课:单片机概述1、何谓单片机一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如A/D,D/A等。天!PC中的CPU一块就要卖几千块钱,这么多东西做在一起,还不得买个天价!再说这块芯片也得非常大了。不,价格并不高,从几元人民币到几十元人民币,体积也不大,一般用40脚封装,当然功能多一些单片机也有引脚比较多的,如68引脚,功能少的只有10多个或20多个引脚,有的甚至只8只引脚。为什么会这样呢?功能有强弱,打个比方,市场上面有的组合音响一套才卖几百块钱,可是有的一台功放机就要卖好几千。另外这种芯片的生产量很大,技术也很成熟,51系列的单片机已经做了十几年,所以价格就低了。既然如此,单片机的功能肯定不强,干吗要学它呢?话不能这样说,实际工作中并不是任何需要计算机的场合都要求计算机有很高的性能,一个控制电冰箱温度的计算机难道要用PIII?应用的关键是看是否够用,是否有很好的性能价格比。所以8051出来十多年,依然没有被淘汰,还在不断的发展中。2、MCS51单片机和8051、8031、89C51等的关系我们平常老是讲8051,又有什么80……