找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2352|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

stc8a單片機(jī)ov7670 上位機(jī)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:696368 發(fā)表于 2020-7-26 00:52 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. /**************************************************************************************
  2. 實(shí)驗(yàn)現(xiàn)象:        下載程序后,打開上位機(jī)軟件選擇正確配置,點(diǎn)擊連續(xù)接收?qǐng)D像,可看到接收到的圖像。
  3.                        
  4. 接線說明:         1:STC8A單片機(jī)-->LED&交通燈模塊
  5.                             P00-->D1       
  6.                     2:STC8A單片機(jī)-->PZ-OV7670攝像頭模塊
  7.                             GND-->GND
  8.                                 3.3V-->3.3V
  9.                                 P10-->SCL
  10.                                 P11-->SDA
  11.                                 P33-->WRST
  12.                                 P36-->RRST
  13.                                 P37-->OE
  14.                                 P20-P27-->D0-D7
  15.                                 P35-->RCLK
  16.                                 P34-->WEN
  17.                                 P32-->VSYNC
  18.                        
  19. 注意事項(xiàng): USB連接線給開發(fā)板通電下載程序,STC下載軟件中內(nèi)部IRC時(shí)鐘選擇24MHZ                                                                                                                                                                  
  20. ***************************************************************************************/


  21. #include "STC8.H"
  22. #include "intrins.h"
  23. #include "uart.h"
  24. #include "SCCB.H"
  25. #include "ov7670.H"


  26. #define MAIN_Fosc                11059200L        //定義主時(shí)鐘
  27. #define  uint32   unsigned long
  28. #define  uint16   unsigned int  
  29. #define  uint8    unsigned char  


  30. /**********************
  31. 引腳別名定義
  32. ***********************/                       
  33. sbit led1=P0^0;     //用IO口P00


  34. u8 ov_sta;
  35. u8 datareadyflag=1;

  36. void Delay2us()                //@24.000MHz
  37. {
  38.         unsigned char i;

  39.         i = 14;
  40.         while (--i);
  41. }


  42. /**************************************
  43. 功能描述:外部中斷服務(wù)程序
  44. 入口參數(shù):無
  45. 返回值:無
  46. ***************************************/
  47. void INT0_int (void) interrupt 0               
  48. {
  49.           u16 i,j;
  50.           u8 t1,t2;
  51.            IE0  = 0;             //將INT0中斷請(qǐng)求標(biāo)志位清"0"
  52.            ov_sta++;
  53.             
  54.                         if(ov_sta==1)
  55.                         {
  56.                                 OV7670_WRST_H;
  57.                                 _nop_();
  58.                                 OV7670_WRST_L;                 //復(fù)位寫指針                                   
  59.                                 Delay2us();
  60.                                 OV7670_WRST_H;
  61.                                 OV7670_WEN_H;                //允許寫入FIFO
  62.                         }
  63.                         if(ov_sta==2)
  64.                         {
  65.                                 OV7670_WEN_L;                   //禁止寫入FIFO
  66.              
  67.                                 EX0 = 0;             //禁止INT0中斷允許位

  68.                                 OV7670_RCK_H;
  69.                                 OV7670_RRST_L;                                //開始復(fù)位讀指針
  70.                     OV7670_RCK_L;
  71.                                 _nop_(); _nop_();
  72.                     OV7670_RCK_H;
  73.                                 _nop_();_nop_();
  74.               OV7670_RCK_L;
  75.                                 OV7670_RRST_H;                       
  76.                                 _nop_();
  77.                                 Delay2us();
  78.                                 OV7670_CS_L;
  79.                                 _nop_();
  80.                                
  81.                                 SendDataByUart1(0xff);
  82.                                 for(i=0;i<9600;i++)
  83.                     {
  84.                       for(j=0;j<8;j++)
  85.                       {
  86.                                OV7670_RCK_L;
  87.                                                  _nop_();
  88.                                                  OV7670_RCK_H;
  89.                                                  _nop_();
  90.                                                  t1=P2;
  91.                                OV7670_RCK_L;
  92.                                                  _nop_();
  93.                                                  OV7670_RCK_H;
  94.                                                  _nop_();                                                
  95.                                                  t2=P2;        //讀數(shù)據(jù)                                               
  96.                                                  SendDataByUart1(t1);
  97.                                          }
  98.            datareadyflag=1;
  99.                                  }                                         
  100.                                  OV7670_CS_H;   
  101.                                  ov_sta=0;
  102.                                  
  103.                            EX0 = 1;             //使能INT0中斷允許位
  104.                                                                            
  105. }
  106.        
  107. }

  108. /***************************************************************************
  109. * 描  述 : 主函數(shù)
  110. * 入  參 : 無
  111. * 返回值 : 無
  112. **************************************************************************/
  113. int main()
  114. {
  115.         P3M1 &= 0xFE;        P3M0 &= 0xFE;                          //設(shè)置P3.0為準(zhǔn)雙向口
  116.         P3M1 &= 0xFD;        P3M0 |= 0x02;                          //設(shè)置P3.1為推挽輸出
  117.         Delay100ms();
  118.         Uart1_Init();
  119.         Delay100ms();
  120.         IE0  = 0;             //將INT0中斷請(qǐng)求標(biāo)志位清"0"
  121.         EX0 = 1;             //使能INT0中斷允許位
  122.         IT0 = 1;                   //選擇INT0為下降沿觸發(fā)方式
  123.         EA = 1;            // 總中斷打開
  124.         led1=0;
  125.         while(OV7670_Init())//初始化OV7670
  126.         {
  127.                   led1=1;
  128.             Delay100ms();
  129.         }
  130.        
  131.         while(1)
  132.         {
  133.        
  134.         }
  135. }  
復(fù)制代碼


實(shí)驗(yàn)2:OV7670攝像頭實(shí)驗(yàn)(串口1傳輸圖像).7z

6.75 MB, 下載次數(shù): 34

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:585455 發(fā)表于 2020-10-3 21:08 | 只看該作者
正好有ov7670可用,找時(shí)間測(cè)試,先謝謝你。
回復(fù)

使用道具 舉報(bào)

板凳
ID:585455 發(fā)表于 2020-10-5 09:55 | 只看該作者
請(qǐng)問這個(gè)能換芯片嗎?我只有STC12xx的,剛剛換了頭文件,一堆error。
回復(fù)

使用道具 舉報(bào)

地板
ID:1146816 發(fā)表于 2025-4-29 10:32 | 只看該作者
下載了,報(bào)了一堆錯(cuò)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表