找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1907|回复: 2
收起左侧

stc8a单片机ov7670 上位机

[复制链接]
ID:696368 发表于 2020-7-26 00:52 | 显示全部楼层 |阅读模式
  1. /**************************************************************************************
  2. 实验现象:        下载程序后,打开上位机软件选择正确配置,点击连续接收图像,可看到接收到的图像。
  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连接线给开发板通电下载程序,STC下载软件中内部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. 入口参数:无
  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;        //读数据                                               
  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. * 描  述 : 主函数
  110. * 入  参 : 无
  111. * 返回值 : 无
  112. **************************************************************************/
  113. int main()
  114. {
  115.         P3M1 &= 0xFE;        P3M0 &= 0xFE;                          //设置P3.0为准双向口
  116.         P3M1 &= 0xFD;        P3M0 |= 0x02;                          //设置P3.1为推挽输出
  117.         Delay100ms();
  118.         Uart1_Init();
  119.         Delay100ms();
  120.         IE0  = 0;             //将INT0中断请求标志位清"0"
  121.         EX0 = 1;             //使能INT0中断允许位
  122.         IT0 = 1;                   //选择INT0为下降沿触发方式
  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, 下载次数: 34, 下载积分: 黑币 -5

回复

使用道具 举报

ID:585455 发表于 2020-10-3 21:08 | 显示全部楼层
正好有ov7670可用,找時間測試,先謝謝你。
回复

使用道具 举报

ID:585455 发表于 2020-10-5 09:55 | 显示全部楼层
請問這個能換芯片嗎?我只有STC12xx的,剛剛換了頭文件,一堆error。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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