找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1203|回复: 1
打印 上一主题 下一主题
收起左侧

请问51单片机串口pc传输bin文件的问题

[复制链接]
跳转到指定楼层
楼主
ID:608920 发表于 2020-2-4 22:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题主做了一个练习题材,使用pc作为上位机来串口通信数据,数据为二值化的图像,用单色oled做到显示logo的动画,但是遇到一个瓶颈,想不出是什么问题,就是用stc-isp自带的串口助手来传输单一图片的取模(bin文件或直接在输入窗口写入图片的取模00、ff这类数据),oled能正常显示,但是改成传输这一小段logo动画的bin文件就开始显示完全的乱码,看不出截取图片的任何特征,想不明白是哪方面的问题,buf【i】以unsigned char存入xdata中,已经验证可以正常传输静态图片的取模并显示,bin文件的图片大小没问题,可以正常导入oled的显示功能,就是没法动态显示,另外请教一下有什么方法可以显示传输的数据位,满xx个位就停止一次,等待单片机返回应答信号,然后继续传输数据位

  1. #include<stc.h>
  2. #include "oled.h"
  3. #include "time.h"


  4. #define uch unsigned char
  5. #define uin unsigned int

  6. uin flag;
  7. uin i=0;
  8. char returnb='1';
  9. void send(void);

  10. void main()
  11. {
  12.        

  13.         SCON=0X50;//115200 bps
  14.         PCON=0X80;
  15.         TMOD=0X20;       
  16.         TL1=0XE8;
  17.         TH1=0XFF;
  18.         ET1=0;
  19.         TR1=1;          
  20.         EA=1;
  21.         ES=1;

  22.         Initial_M096128x64_ssd1306();oled初始化
  23.         Delay_1ms(5);
  24.         fill_picture(0);//清屏
  25.         while(1)
  26.         {
  27.            if(flag)
  28.            {       
  29.                            RI=1;
  30.                            ES=0;       
  31.                         Picture();显示oled
  32.                         ES=1;
  33.                        
  34.                         Delay_1ms(50);
  35.                         fill_picture(0);//清屏
  36. //                        send();
  37.                         flag=0;
  38.                         RI=0;
  39. //                        ES=1;
  40. //                        TI=0;
  41.            }

  42.         }
  43. }

  44. void serial() interrupt 4
  45. {
  46. //        ES=0;
  47.        
  48.         if(RI)
  49.         {
  50.                 P2=SBUF;
  51.                 buf[i]=SBUF;
  52.                 i++;
  53.                 if(i==704)
  54.                 {
  55.                         flag=1;
  56.                         send();
  57.                         i=0;
  58.                         ES=0;
  59. //                        RI=1;
  60.                 }

  61.         }
  62. //        ES=1;
  63.         RI=0;
  64. }
  65. void send(void)
  66. {

  67.                 SBUF=returnb;
  68.                 while(!TI);
  69.                 TI=0;
  70.        
  71. }
复制代码




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:290373 发表于 2020-2-16 15:02 | 只看该作者
单片机方面可以先设置一个计数变量,当字节数到达设定值时OLED指针归位,至于显示传输数据位,等待单片机返回应答这个要做上位机控制。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表