OpenEdv-开源电子网

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

求教原子哥,怎样用stm32编程实现在液晶屏上显示录像的同时显示时间,而且让日期时间不随刷屏闪烁

[复制链接]

1

主题

8

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2014-5-17
在线时间
0 小时
发表于 2014-5-17 18:17:41 | 显示全部楼层 |阅读模式
5金钱
用的战舰开发板,摄像头为ov7670,谢谢原子哥

最佳答案

查看完整内容[请看2#楼]

先在外部SRAM,建立一个320*240的LCD显存区域,并实现对显存区域的任意点访问操作函数(参考我们战舰板的综合实验SPB实现原理). 然后,将OV7670的数据,写外部SRAM里面,写完以后,再写时间信息上去(叠加时间). 最好,利用DMA,直接将显存,DMA到LCD,实现LCD显示录像和时间(此时已经叠加时间了). 方法就是这样了.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-17 18:17:42 | 显示全部楼层
先在外部SRAM,建立一个320*240的LCD显存区域,并实现对显存区域的任意点访问操作函数(参考我们战舰板的综合实验SPB实现原理).
然后,将OV7670的数据,写外部SRAM里面,写完以后,再写时间信息上去(叠加时间).
最好,利用DMA,直接将显存,DMA到LCD,实现LCD显示录像和时间(此时已经叠加时间了).

方法就是这样了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2014-5-17
在线时间
0 小时
 楼主| 发表于 2014-5-17 20:32:26 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢谢原子哥
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2014-5-17
在线时间
0 小时
 楼主| 发表于 2014-5-19 18:14:02 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
LCD液晶不是就应用的外部SRAM吗?直接刷屏以后再刷时间显示的区域怎么不行呀?它们不都是写到SRAM里了吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-19 22:59:27 | 显示全部楼层
回复【4楼】郭帅磊:
---------------------------------
LCD不一定用到外部SRAM,要看你的代码呢...
LCD自带的那个叫GRAM,不是外扩的SRAM....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2014-5-17
在线时间
0 小时
 楼主| 发表于 2014-5-20 11:05:57 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
嗯如果用外部SRAM它的最大存储数据不是65536吗而一帧的数据不是76800吗这样就会出现覆盖怎么办呀
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-20 23:36:39 | 显示全部楼层
回复【6楼】郭帅磊:
---------------------------------
外部SRAM它的最大存储数据不是65536吗??
这个你哪里学来的?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2014-5-17
在线时间
0 小时
 楼主| 发表于 2014-5-21 08:27:13 | 显示全部楼层
回复【7楼】正点原子:
----------------------------
那怎么才能把数据写到外部SRAM里呢,我还是不太懂
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2014-5-17
在线时间
0 小时
 楼主| 发表于 2014-5-21 17:00:34 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
我想先把摄像头的数据利用DMA方式给LCD下边是相关的程序,可是液晶上不显示图像,麻烦你啦给我看一下吧
这样把数据放SRAM里行吗?
void camera_refresh1(void)
{
u8 *temp;
u32 j;
  u8 color;
u16 color1;
        if(ov_sta==2)
 {
OV7670_RRST=0;
OV7670_RCK=0;         
OV7670_RCK=1;
OV7670_RCK=0;
OV7670_RRST=1;
OV7670_RCK=1;
         for(j=0;j<320*240*2;j++)
{
        OV7670_RCK=0;
color1=GPIOC->IDR;
OV7670_RCK=1;
color=color1&0XFF;
temp=&color;
                        FSMC_SRAM_WriteBuffer(temp,j,1);
j++;
color1=color1>>8;
color=color1&0XFF;
temp=&color;
FSMC_SRAM_WriteBuffer(temp,j,1);
  }
  EXTI_ClearITPendingBit(EXTI_Line8);
  ov_sta=0;
    ov_frame++; 
}
}
这是利用DMA方式把数据给LCD
void camera_refresh2()
{
LCD_Scan_Dir(U2D_L2R);
LCD_SetCursor(0x00,0x0000);  
LCD_WriteRAM_Prepare(); 
MYDMA_Enable(DMA1_Channel4);
}
这是主函数
 int main(void)
 {

u8 lightmode=0,saturation=2,brightness=2,contrast=2;
u8 effect=0;  
 

delay_init();          
NVIC_Configuration(); 
uart_init(9600);  
  LED_Init();    
LCD_Init();
FSMC_SRAM_Init();
       MYDMA_Config(DMA1_Channel4,(u32)LCD_BASE,(u32)Bank1_SRAM3_ADDR ,76800);
RTC_Init();   
if(lcddev.id==0X6804) 
{
lcddev.width=240;
lcddev.height=320; 
}
usmart_dev.init(72);     
while(OV7670_Init())
{
LCD_ShowString(60,230,200,16,16,"OV7670 Error!!");
delay_ms(200);
  LCD_Fill(60,230,239,246,WHITE);
delay_ms(200);
}
 
delay_ms(1500);      
OV7670_Light_Mode(lightmode);
OV7670_Color_Saturation(saturation);
OV7670_Brightness(brightness);
OV7670_Contrast(contrast);
  OV7670_Special_Effects(effect);  

TIM6_Int_Init(10000,7199);   
EXTI8_Init();
OV7670_Window_Set(10,174,240,320);   
  OV7670_CS=0;
  while(1)
{
  camera_refresh1();
  camera_refresh2();
}; 
  
}
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-21 22:36:15 | 显示全部楼层
参考下战舰板的综合实验.
另外,你的DMA设置有误.
DMA最大传输长度是u16类型,你居然给76800...
u16最大是65535...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2014-5-17
在线时间
0 小时
 楼主| 发表于 2014-5-22 15:09:04 | 显示全部楼层
回复【10楼】正点原子:
---------------------------------
我自己写的老是不显示,DMA改成两次传输还是不行,原子哥帮帮我吧,把程序具体帮我改一下吧,毕设着急用呢谢谢了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-22 20:14:47 | 显示全部楼层
回复【11楼】郭帅磊:
---------------------------------
这我也没办法,暂时没时间帮你写代码...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2014-5-17
在线时间
0 小时
 楼主| 发表于 2014-5-23 08:40:48 | 显示全部楼层
回复【12楼】正点原子:
---------------------------------
恩恩还是谢谢你呀
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-7 22:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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