標題: stc8a單片機ov7670 上位機 [打印本頁]

作者: CJT224224    時間: 2020-7-26 00:52
標題: stc8a單片機ov7670 上位機
  1. /**************************************************************************************
  2. 實驗現(xiàn)象:        下載程序后,打開上位機軟件選擇正確配置,點擊連續(xù)接收圖像,可看到接收到的圖像。
  3.                        
  4. 接線說明:         1:STC8A單片機-->LED&交通燈模塊
  5.                             P00-->D1       
  6.                     2:STC8A單片機-->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. 注意事項: USB連接線給開發(fā)板通電下載程序,STC下載軟件中內(nèi)部IRC時鐘選擇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        //定義主時鐘
  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. 功能描述:外部中斷服務程序
  44. 入口參數(shù):無
  45. 返回值:無
  46. ***************************************/
  47. void INT0_int (void) interrupt 0               
  48. {
  49.           u16 i,j;
  50.           u8 t1,t2;
  51.            IE0  = 0;             //將INT0中斷請求標志位清"0"
  52.            ov_sta++;
  53.             
  54.                         if(ov_sta==1)
  55.                         {
  56.                                 OV7670_WRST_H;
  57.                                 _nop_();
  58.                                 OV7670_WRST_L;                 //復位寫指針                                   
  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;                                //開始復位讀指針
  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為準雙向口
  116.         P3M1 &= 0xFD;        P3M0 |= 0x02;                          //設(shè)置P3.1為推挽輸出
  117.         Delay100ms();
  118.         Uart1_Init();
  119.         Delay100ms();
  120.         IE0  = 0;             //將INT0中斷請求標志位清"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. }  
復制代碼


實驗2:OV7670攝像頭實驗(串口1傳輸圖像).7z

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


作者: jemery1030    時間: 2020-10-3 21:08
正好有ov7670可用,找時間測試,先謝謝你。
作者: jemery1030    時間: 2020-10-5 09:55
請問這個能換芯片嗎?我只有STC12xx的,剛剛換了頭文件,一堆error。
作者: SillentWall    時間: 2025-4-29 10:32
下載了,報了一堆錯




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1