久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1346|回復: 0
打印 上一主題 下一主題
收起左側

對于stm32與ov7670上位機交互程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:1052992 發表于 2022-11-22 10:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
使用正點原子的stm32 Mini板實現  ov7670與電腦上位機進行通訊。
從而實現電腦上位機上看到ov7670的傳輸圖片,然后進行其他的算法處理。

單片機源程序如下:
  1. #include "sys.h"
  2. #include "usart.h"
  3. #include "delay.h"
  4. #include "led.h"
  5. #include "lcd.h"
  6. #include "usmart.h"
  7. #include "ov7670.h"
  8. #include "exti.h"
  9. #include "timer.h"

  10. int freq_mul = 15;
  11. extern u8 ov_sta;
  12. extern u32 ov_frame;
  13. u8 CanSend = 0;

  14. void pixels()
  15. {
  16.         u16 count = 0;
  17.         u16 color;
  18.         __asm
  19.         {
  20.                 mov  r6, #320
  21.                 mov  r7, #240
  22.                 mul  r7, r6
  23.                 mov  r3, 0
  24.                 mov  r5, 1
  25.                 mov  r1, #0x0c00
  26.                 movt r1, #0x4001
  27.                 mov  r2, #0x0184
  28.                 movt r2, #0x4221
  29.                 mov  r8, #0x1010
  30.                 movt r8, #0x4001
  31.                 mov  r9,  #0x88888888
  32.                 mov  r10, #0x33333333
  33.                 mov  r11, #0x100
  34.                 mov  r12, #0x200
  35.                 mov  r0, #0x280
  36.                 mov  r6, 0
  37.                 again:
  38.                 str  r9, [r1]                   //GPIOB->CRL=0X88888888;
  39.                 str  r3, [r2]                   // OV7670->RCK = 0;
  40.                 ldrb r4, [r1, 0x8]              // r4 = GPIOB->IDR;
  41.                 str  r5, [r2]                   // OV7670->RCK = 1;
  42.                 str  r3, [r2]                   // OV7670->RCK = 0;
  43.                 ldrb r6, [r1, 0x8]              // r6 = GPIOB->IDR;
  44.                 str  r5, [r2]                   // OV7670->RCK = 1;
  45.                 str  r10, [r1]                  //GPIOB->CRL=0X33333333;
  46.                 add  r6, r4, LSL #8             // r6+=(r4<<8)
  47.                 mov color,r6
  48.         }

  49.         USART1->DR = color>>8;
  50.         while((USART1->SR&0X40)==0);
  51.         USART1->DR = (color&0x00ff);
  52.         while((USART1->SR&0X40)==0);        //發送數據
  53. //        if(count < 320) count++;   
  54. //        else
  55. //        {
  56. //                count = 0;
  57. //                printf("\r\n");
  58. //        }
  59.         __asm
  60.         {
  61.                 mov  r6,color
  62.                 str  r11, [r8]                  // LCD_RS_SET
  63.                 str  r12, [r8, 4]               // LCD_CS_CLR
  64.                 str  r6, [r1, 0xc]              // GPIOB->ODR = data
  65.                 mov  r4, #0x080
  66.                 str  r4, [r8, 4]                // LCD_WR_CLR
  67.                 str  r0, [r8]                   // LCD_WR_SET, LCD_CS_SET
  68.                 sub  r7, r7, 1                  // count down
  69.                 cmp  r7, r3
  70.                 bne  again;
  71.         }
  72. }

  73. void camera_refresh(void)
  74. {

  75.         if(ov_sta >= 0)
  76.         {
  77.                 LCD_Scan_Dir(U2D_L2R);                    //從上到下,從左到右
  78.                 LCD_SetCursor(0x00,0x0000);            //設置光標位置
  79.                 LCD_WriteRAM_Prepare();         //開始寫入GRAM
  80.                 OV7670_CS=0;
  81.                 OV7670_RRST=0;                                    //開始復位讀指針
  82.                 OV7670_RCK=0;
  83.                 OV7670_RCK=1;
  84.                 OV7670_RCK=0;
  85.                 OV7670_RRST=1;                                    //復位讀指針結束
  86.                 OV7670_RCK=1;

  87.                 pixels();
  88.                 OV7670_CS=1;
  89.                 OV7670_RCK=0;
  90.                 OV7670_RCK=1;
  91.                 EXTI->PR=1<<15;                         //清除LINE8上的中斷標志位
  92.                 ov_sta=0;                                            //開始下一次采集
  93.                 ov_frame++;
  94.                 LCD_Scan_Dir(DFT_SCAN_DIR);            //恢復默認掃描方向
  95.         }
  96. }
  97. int main(void)
  98. {
  99.         u8 i;

  100.         Stm32_Clock_Init(freq_mul);                //系統時鐘設置

  101.         uart_init(72,345600 * 9 / freq_mul);//串口初始化為9600

  102.         delay_init(72);                                        //延時初始化
  103.         LED_Init();                                              //初始化與LED連接的硬件接口
  104.         LCD_Init();                                               //初始化LCD
  105.         POINT_COLOR=RED;                    //設置字體為紅色
  106.         LCD_ShowString(0,0,200,200,16,"OV7670 Init...");
  107.         while(OV7670_Init())                //初始化OV7670
  108.         {
  109.                 LCD_ShowString(0,0,200,200,16,"OV7670 Error!!");
  110.                 delay_ms(200);
  111.                 LCD_Fill(60,150,239,166,WHITE);
  112.                 delay_ms(200);
  113.         }
  114.         LCD_ShowString(0,0,200,200,16,"OV7670 Init OK");
  115.         delay_ms(1500);
  116.         TIM3_Int_Init(10000,7199);                        //TIM3,10Khz計數頻率,1秒鐘中斷
  117.         EXTI15_Init();                                                //使能定時器捕獲
  118.         OV7670_Window_Set(10,174,240,320);        //設置窗口
  119.         OV7670_CS=0;

  120.         while(1)
  121.         {
  122.         while(!CanSend)
  123.         {
  124.             delay_ms(100);
  125.             LCD_ShowString(0,0,200,200,16,"Pleas send 0x00 to me");
  126.         }
  127. //                printf("new pic\r\n");
  128.                 camera_refresh();                    //更新顯示
  129. //                printf("end pic\r\n");
  130.         
  131.         CanSend = 0;
  132.         
  133.                 if(i!=ov_frame)                            //DS0閃爍.
  134.                 {
  135.                         i=ov_frame;
  136.                         LED0=!LED0;
  137.                 }
  138.         }
  139. }


復制代碼
下載(此代碼年代久遠,采用的老版本的庫和老版本Keil編寫的):
(2017.09.16)串口圖像上位機.7z (178.9 KB, 下載次數: 17)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产高清美女一级a毛片久久w | 久久精品免费观看 | 国产999精品久久久久久 | 亚洲一区av| 久久剧场 | 日韩成人专区 | 黄色网址av | 欧美亚洲视频在线观看 | 国内精品久久久久 | 精品久久久久一区二区国产 | 国产人成精品一区二区三 | 国产精品资源在线观看 | 精品一级电影 | 91一区二区在线观看 | 国产一区二区精品在线观看 | 一级做a爰片性色毛片视频停止 | 日韩成年人视频在线 | 日韩a| 久久久久久久久久久一区二区 | www.成人在线视频 | 九九免费在线视频 | 色婷婷激情| 亚洲精品粉嫩美女一区 | 婷婷久久网 | 久草.com| 精品一区二区三区在线视频 | 精品欧美一区二区在线观看 | 日韩国产在线 | 国产精品久久久久久久久久久久冷 | www国产成人免费观看视频,深夜成人网 | 午夜在线观看视频 | 国产免费一区二区 | 成年人精品视频在线观看 | 午夜精品久久久久久久久久久久久 | 免费看a | 一级大片网站 | 亚洲综合天堂网 | 91精品国产综合久久久亚洲 | 国产精品一区二区三区在线播放 | 欧美精品一区二区三区在线 | 亚洲免费在线观看 |