OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2727|回复: 2

STM32F103+OV7725+串口发送数据PC显示

[复制链接]

3

主题

11

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2018-10-13
在线时间
4 小时
发表于 2018-11-5 13:33:16 | 显示全部楼层 |阅读模式
1金钱
32板子驱动OV7725是成功的,用串口将数据传送到PC端,用Python写的串口读取一帧的代码并显示该帧,即显示一张图片,不知为什么显示的老是错误的,下面部分代码,求各路大神指点错误,在下我不胜感激。读出来的图片也是全花的
Python代码:
import serial
from time import sleep
from PIL import Image

def parsergb565(byte1):
    byte12 = int.from_bytes(byte1, byteorder='big', signed=False)
    red =byte12 >> 11
    green = (byte12 >> 5) & 0x3f
    blue = byte12 & 0x1f
    red *= 8
    green *= 4
    blue *= 8

    return (red, green, blue)

def recv(serial):
    data = serial.read(4)
    '''while True:
        data = serial.read(2)
        if data == '':
            continue
        else:
            break'''
#sleep(0.02)
return data

def read():
    serial.write('1'.encode())
    i=0
    for x in range(0, 240):
        for y in range(0, 320):
            data = recv(serial)
            print(data)
            i = i+1
            print(i)
            color = parsergb565(data)
            image.putpixel((x,y),color)
    print("finsh")
    image.show()
    image.save("00.jpg")


if __name__ == '__main__':
    image_width = 240
    image_height = 320
    serial = serial.Serial(
        port='COM6',
        baudrate=115200,
        parity=serial.PARITY_NONE,#奇偶校验位
stopbits=serial.STOPBITS_ONE,
        bytesize=serial.EIGHTBITS,
        timeout=0.000000001)
    if serial.isOpen() :
        print("open success")
    else :
        print("open failed")

    image = Image.new("RGB",(240,320))
    read()


STM32F103部分代码if(ov_sta)//有帧中断更新

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2018-10-13
在线时间
4 小时
 楼主| 发表于 2018-11-5 13:33:47 | 显示全部楼层
if(ov_sta)//有帧中断更新         {                 LCD_Scan_Dir(U2D_L2R);                //从上到下,从左到右                 LCD_Set_Window((lcddev.width-OV7725_WINDOW_WIDTH)/2,(lcddev.height-OV7725_WINDOW_HEIGHT)/2,OV7725_WINDOW_WIDTH,OV7725_WINDOW_HEIGHT);//将显示区域设置到屏幕中央                 if(lcddev.id==0X1963)                         LCD_Set_Window((lcddev.width-OV7725_WINDOW_WIDTH)/2,(lcddev.height-OV7725_WINDOW_HEIGHT)/2,OV7725_WINDOW_HEIGHT,OV7725_WINDOW_WIDTH);//将显示区域设置到屏幕中央                 LCD_WriteRAM_Prepare();     //开始写入GRAM                         OV7725_RRST=0;                                //开始复位读指针                  OV7725_RCK_L;                 OV7725_RCK_H;                 OV7725_RCK_L;                 OV7725_RRST=1;                                //复位读指针结束                  OV7725_RCK_H;                  for(i=0;i<OV7725_WINDOW_HEIGHT;i++)                 {                         for(j=0;j<OV7725_WINDOW_WIDTH;j++)                         {                                 OV7725_RCK_L;                                 color=GPIOC->IDR&0XFF;        //读数据                                 OV7725_RCK_H;                                  color<<=8;                                   OV7725_RCK_L;                                 c=GPIOC->IDR&0XFF;        //读数据                                 color = color|c;                                 OV7725_RCK_H;                                  printf("%X",color);                                 LCD->LCD_RAM=color;                           }                 }                  ov_sta=0;                                        //清零帧中断标记                 ov_frame++;                  LCD_Scan_Dir(DFT_SCAN_DIR);        //恢复默认扫描方向          }
回复

使用道具 举报

13

主题

633

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1331
金钱
1331
注册时间
2016-8-1
在线时间
229 小时
发表于 2018-11-5 13:39:40 | 显示全部楼层
发帖子 里面有发程序的 一个选项
Loto虚拟示波器 官方qq群: 706769836 https://shop296209296.taobao.com/shop/view_shop.htm?tracelog=t
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-5 21:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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