s3c2440 LCD及触摸屏的学习笔记(1)

【蓝桥杯——单片机学习笔记】十七.CCP/PCA/PWM的应用(STC15F2K60S2) 简介: 此模块共有3个,可用作外部中断,定时器,高速脉冲产生,PWM产生。 CCP英文为:Capture(捕获),Compare(比较),PWM(脉宽调制),总结了此模块的功能。 一.所用寄存器 1.CMOD PCA工作模式寄存器 SFR name Address bit B7 B6 B5 B4 B3 B2 B1 B0 COMD D9H name CIDL CPS2 CPS1... 阅读详情

所用的LCD为TopPoly-TD035STED4(TFT)型号,240*320的

其VCLK为6.39MHz。 根据s3c2440手册s3c2440处理LCD的时钟源是HCLK,通过寄存器LCDCON1中的CLKVAL可以调整VCLK频率大小,它的公式为:VCLK=HCLK÷[(CLKVAL+1)×2],程序的内部分频为FCLK=400MHz、HCLK=100MHz、PCLK=50MHz(MPLLCON=(92<<12)|(1<<4)|1;),因此得到CLKVAL取整为6。

注:(LCD一般需要三个时序信号:VSYNC、HSYNC和VCLK。VSYNC是垂直同步信号,在每进行一个帧(即一个屏)的扫描之前,该信号就有效一次,由该信号可以确定LCD的场频,即每秒屏幕刷新的次数(单位Hz)。HSYNC是水平同步信号,在每进行一行的扫描之前,该信号就有效一次,由该信号可以确定LCD的行频,即每秒屏幕从左到右扫描一行的次数(单位Hz)。VCLK是像素时钟信号。

其中VSYNC是帧同步信号,VSYNC每发出1个脉冲,都意味着新的1屏视频资料开始发送。而HSYNC为行同步 信号,每个HSYNC脉冲都表明新的1行视频资料开始发送。而VDEN则用来标明视频资料的有效,VCLK是用来锁存视频资料的像数时钟。网上搜到的资料来解释这几个时序信号。

可以查看s3c2440手册‘Figure 15-6. TFT LCD Timing Example’图)

 通过上图可以得到:

代码
#define LCD_WIDTH   240              //屏幕的宽
#define LCD_HEIGHT  320              //屏幕的高
 
//垂直同步信号的脉宽、后肩和前肩-----这些值是根据TopPoly-TD035STED4.pdf文件中的13页的表
#define VSPW      1 //(3-1)
#define VBPD      1 //(15-1)
#define VFPD      1 //(12-1)

//水平同步信号的脉宽、后肩和前肩-----这些值是根据TopPoly-TD035STED4.pdf文件中的13页的表
#define HSPW       (10-1)
#define HBPD       (20-1)
#define HFPD        (10-1)

//显示尺寸
#define LINEVAL  (LCD_HEIGHT-1)
#define HOZVAL   (LCD_WIDTH-1)

注:(对于一个已知尺寸的LCD屏,只要确定了VCLK值,行频和场频就应该知道了。但这样还不行的,因为在每一帧时钟信号中,还会有一些与屏显示无关的时钟出现,这就给确定行频和场频带来了一定的复杂性。如在HSYNC信号先后会有水平同步信号前肩(HFPD)和水平同步信号后肩(HBPD)出现,在VSYNC信号先后会有垂直同步信号前肩(VFPD)和垂直同步信号后肩(VBPD)出现,在这些信号时序内,不会有有效像素信号出现,另外HSYNC和VSYNC信号有效时,其电平要保持一定的时间,它们分别叫做水平同步信号脉宽HSPW和垂直同步信号脉宽VSPW,这段时间也不能有像素信号。因此计算行频和场频时,一定要包括这些信号。HBPD、HFPD和HSPW的单位是一个VCLK的时间,而VSPW、VFPD和VBPD的单位是扫描一行所用的时间。也是网上搜的。)

 这些信号(VSPW、VFPD、VBPD、LINEVAL、HBPD、HFPD、HSPW和HOZVAL)是通过寄存器LCDCON2、LCDCON3和LCDCON4来配置的,具体查看s3c2440的手册。

LCDCON1寄存器:

               LINECNT :当前行扫描计数器值,标明当前扫描到了多少行。
               CLKVAL :决定VCLK的分频 比(上面已经提到过)。LCD控制器输出的VCLK是直接由系统总线(AHB)
                             的工作频率HCLK(一般为100MHZ)直接分频得到的。做为240*320的TFT屏,应保证得
                             出的VCLK在5~10MHz之间。
                MMODE :VM信号的触发模式(仅对STN屏有效,对TFT屏无意义。)PNRMODE :选择当前的显示模式,
                             对于TFT屏而言,应选择[11],即TFT LCD panel。

                BPPMODE :选择色彩模式,对于真彩显示而言,选择16bpp(64K色)即可满足要求。

                ENVID :使能LCD信号输出

 LCDCON5寄存器:

                 VSTATUS :当前VSYNC信号扫描状态,指明当前VSYNC同步信号处于何种扫描阶段。

                 HSTATUS :当前HSYNC信号扫描状态,指明当前HSYNC同步信号处于何种扫描阶段。
                 BPP24BL :设定24bpp显示模式时,视频资料在显示缓冲区中的排列顺序(即低位有效还是高位有效)。
                                 对于16bpp的 64K色显示模式,该设置位无意义。
                 FRM565 :对于16bpp显示模式,有2中形式,一种是RGB=5:5:5:1,另一种是5:6:5。后一 种模式最为
                                常用,它的含义是表示64K种色彩的16bit RGB资料中,红色(R)占了5bit,绿色(G)占了
                                6bit,兰色(B)占了5bit。
                 INVVCLK 、INVLINE 、INVFRAME 、INVVD :通过前面提到的‘Figure 15-6’的时序图,我们知
                                 道,CPU的LCD控制器输出的时序默认是正脉冲,而LCD需要VSYNC(VFRAME)、
                                 VLINE(HSYNC)均为负脉冲,因此 INVLINE 和 INVFRAME 必须设为“1 ”,即选择反相输
                                  出。 INVVDEN , INVPWREN , INVLEND 的功能同前面的类似。
                 PWREN :LCD电源使能控制。在CPU LCD控制器的输出信号中,有一个电源使能管脚LCD_PWREN,用
                               来做为LCD屏电源的开关信号。
                 ENLEND :对普通的TFT屏无效,可以不考虑。

                 INVVDEN、INVPWREN、INVLEND:是否翻转这些信号,一般为正常,不需要翻转。

                  BSWP 、HWSWP : 为字节(Byte)或半字(Half-Word)交换使能。由于不同的GUI对
                                             FrameBuffer(显示缓冲区)的管理不同,必要时需要通过调整 BSWP 和 HWSWP
                                             来适应GUI。
因此:

代码
//for LCDCON1
#define CLKVAL_TFT          4            //设置时钟信号
#define MVAL_USED          0            //
#define PNRMODE_TFT      3            //TFT型LCD
#define BPPMODE_TFT      13           //24位TFT型LCD

//for LCDCON5  
#define BPP24BL        0       //32位数据表示24位颜色值时,低位数据有效,高8位无效
#define INVVCLK        0       //像素值在VCLK下降沿有效
#define INVVLINE       1       //翻转HSYNC信号
#define INVVFRAME      1       //翻转VSYNC信号
#define INVVD          0       //正常VD信号极性
#define INVVDEN        0       //正常VDEN信号极性
#define PWREN          1       //使能PWREN信号
#define BSWP           0       //颜色数据字节不交换
#define HWSWP          0       //颜色数据半字不交换

rLCDCON1=(CLKVAL_TFT<<8)|(MVAL_USED<<7)|(PNRMODE_TFT<<5)|(BPPMODE_TFT<<1)|0;
rLCDCON2=(VBPD<<24)|(LINEVAL<<14)|(VFPD<<6)|(VSPW);
rLCDCON3=(HBPD<<19)|(HOZVAL<<8)|(HFPD);
rLCDCON4=(HSPW);//

rLCDCON5 = (BPP24BL<<12) | (INVVCLK<<10) | (INVVLINE<<9) | (INVVFRAME<<8) | (0<<7) | (INVVDEN<<6) | (PWREN<<3)  |(BSWP<<1) | (HWSWP);

LCDSADDR1和LCDSADDR2:
              LCDBASEL=LCDBASEU+(PAGEWITH+OFFSIZE)×(LINEVAL+1)
LCDSADDR3寄存器:
                  OFFSIZE:用于虚拟屏幕的偏移长度,如果我们不使用虚拟屏幕,就把它置为0 。
                   PAGEWIDTH:定义了视口的宽,单位是半字,如在上面的例子中,PAGEWIDTH应该为320×32÷16。

代码
#define M5D(n)  ((n) & 0x1fffff)     //用于设置显示缓存区时,取低21位地址
//定义显示缓存区
volatile U32 LCD_BUFFER[LCD_HEIGHT][LCD_WIDTH];
rLCDSADDR1=(((U32)LCD_BUFFER>>22)<<21)|M5D((U32)LCD_BUFFER>>1);
rLCDSADDR2=M5D((M5D((U32)LCD_BUFFER>>1)+((LCD_WIDTH*32/16+0)*320)));
rLCDSADDR3=(LCD_WIDTH*32/16)&0x7ff;//参考s3c2440的手册

简单程序实现:

代码
//***************************************************
#include "def.h"
#include "option.h"
#include "2440addr.h"     
#include "2440lib.h"
#include "2440slib.h"      
//================================

#define M5D(n)  ((n) & 0x1fffff)     //用于设置显示缓存区时,取低21位地址

#define LCD_WIDTH   240              //屏幕的宽
#define LCD_HEIGHT  320              //屏幕的高
 
//垂直同步信号的脉宽、后肩和前肩-----这些值是根据TopPoly-TD035STED4.pdf文件中的13页的表
#define VSPW      1 //(3-1)
#define VBPD      1 //(15-1)
#define VFPD      1 //(12-1)

//水平同步信号的脉宽、后肩和前肩-----这些值是根据TopPoly-TD035STED4.pdf文件中的13页的表
#define HSPW       (10-1)
#define HBPD       (20-1)
#define HFPD        (10-1)

//显示尺寸
#define LINEVAL  (LCD_HEIGHT-1)
#define HOZVAL   (LCD_WIDTH-1)

//for LCDCON1
#define CLKVAL_TFT          4            //设置时钟信号
#define MVAL_USED          0            //
#define PNRMODE_TFT      3            //TFT型LCD
#define BPPMODE_TFT      13           //24位TFT型LCD

//for LCDCON5  
#define BPP24BL        0       //32位数据表示24位颜色值时,低位数据有效,高8位无效
#define INVVCLK        0       //像素值在VCLK下降沿有效
#define INVVLINE       1       //翻转HSYNC信号
#define INVVFRAME      1       //翻转VSYNC信号
#define INVVD          0       //正常VD信号极性
#define INVVDEN        0       //正常VDEN信号极性
#define PWREN          1       //使能PWREN信号
#define BSWP           0       //颜色数据字节不交换
#define HWSWP          0       //颜色数据半字不交换

//定义显示缓存区
volatile U32 LCD_BUFFER[LCD_HEIGHT][LCD_WIDTH];
//**********************************************************

//延时程序
void delay(int a)
{
       int k;
       for(k=0;k<a;k++)              ;
}
   
//绘制屏幕背景颜色,颜色为c
void Brush_Background( U32 c)
{
   int x,y ;
    for( y = 0 ; y < LCD_HEIGHT ; y++ )
    {
        for( x = 0 ; x < LCD_WIDTH ; x++ )
        {
            LCD_BUFFER[y][x] = c ;
        }
    }
}

 void init_port_lcd()
 {
    rGPCCON = 0xaaaaaaaa;       
        rGPCUP  = 0xffff;     // The pull up function is disabled GPC[15:0] 

        //*** PORT D GROUP
        //Ports  : GPD15 GPD14 GPD13 GPD12 GPD11 GPD10 GPD9 GPD8 GPD7 GPD6 GPD5 GPD4 GPD3 GPD2 GPD1 GPD0
        //Signal : VD23  VD22  VD21  VD20  VD19  VD18  VD17 VD16 VD15 VD14 VD13 VD12 VD11 VD10 VD9  VD8
        //Binary : 10    10  , 10    10  , 10    10  , 10   10 , 10   10 , 10   10 , 10   10 ,10   10
        rGPDCON = 0xaaaaaaaa;       
        rGPDUP  = 0xffff; 

    rLCDCON1=(CLKVAL_TFT<<8)|(MVAL_USED<<7)|(PNRMODE_TFT<<5)|(BPPMODE_TFT<<1)|0;
    rLCDCON2=(VBPD<<24)|(LINEVAL<<14)|(VFPD<<6)|(VSPW);
    rLCDCON3=(HBPD<<19)|(HOZVAL<<8)|(HFPD);
    rLCDCON4=(HSPW);
    //rLCDCON4 =  (5<< 0);
    rLCDCON5 = (BPP24BL<<12) | (INVVCLK<<10) | (INVVLINE<<9) | (INVVFRAME<<8) | (0<<7) | (INVVDEN<<6) | (PWREN<<3)  |(BSWP<<1) | (HWSWP);

    rLCDSADDR1=(((U32)LCD_BUFFER>>22)<<21)|M5D((U32)LCD_BUFFER>>1);
    rLCDSADDR2=M5D( (M5D((U32)LCD_BUFFER>>1)+((LCD_WIDTH*32/16+0)*320))  );//LCD_WIDTH*LCD_HEIGHT*4
    rLCDSADDR3=(LCD_WIDTH*32/16)&0x7ff;//参考s3c2440的手册
    rLCDINTMSK|=(3);      // 屏蔽LCD中断
    //rTCONSEL = 0;            //无效LPC3480
        rTCONSEL   &= (~7);
 

        rTPAL     = 0x0;
        rTCONSEL &= ~((1<<4) | 1);

    rGPGUP=rGPGUP&(~(1<<4))|(1<<4);      //GPG4上拉电阻无效
    rGPGCON=rGPGCON&(~(3<<8))|(3<<8); //设置GPG4为LCD_PWREN
    rGPGDAT = rGPGDAT | (1<<4) ;               //GPG4置1

    rLCDCON5=rLCDCON5&(~(1<<3))|(1<<3);   //有效PWREN信号
    rLCDCON5=rLCDCON5&(~(1<<5))|(0<<5);   //PWREN信号极性不翻转

    rLCDCON1|=1;                   //LCD开启
 }


int Main(int argc, char **argv)
{
    int i;
    U8 key;
    U32 mpll_val=0;
    int data;
  
    mpll_val = (92<<12)|(1<<4)|(1);
    
    //init FCLK=400M, so change MPLL first
    ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);
    ChangeClockDivider(key, 12);    

    //ChangeClockDivider(1,1);    // 1:2:4    FCLK:HCLK:PCLK
        // rCLKDIVN=0x4;    //  1:4:4
        //ChangeMPllValue(82,2,1);     //FCLK=135.0Mhz     
    //ChangeMPllValue(82,1,1);     //FCLK=180.0Mhz     
        //ChangeMPllValue(161,3,1);    //FCLK=202.8Mhz 
        //ChangeMPllValue(117,1,1);    //FCLK=250.0Mhz 
        //ChangeMPllValue(122,1,1);    //FCLK=260.0Mhz 
        //ChangeMPllValue(125,1,1);    //FCLK=266.0Mhz 
        //ChangeMPllValue(127,1,1);    //FCLK=270.0Mhz  
    
        //MMU_EnableICache();
        //MMU_EnableDCache();
    
        MMU_DisableICache();
        MMU_DisableDCache();

    init_port_lcd();
    while(1)
    {
        //黑色背景
        Brush_Background(0x0000);
        delay(5000000);
        //白色背景
        Brush_Background(0xffffff);
        delay(5000000);
        //蓝色背景
        Brush_Background(0x00ff);
        delay(5000000);
        //绿色背景
        Brush_Background(0xff00);
        delay(5000000);
        //黄色背景
        Brush_Background(0xffff00);
        delay(5000000);
    }
   return 0;
}

s3c2440的触摸屏应用与校正  触摸屏是当今最流行的一种人机交互接口,它被广泛地应用于手机等消费类电子产品中,目前这种技术有向PC机方向发展的趋势。基于原理的不同,触摸屏可以分为电阻式、电容式、表面声波式等。电阻式是应用较广的一种触摸屏,它的原理是通过测量横向和纵向的电阻值来获得触点的坐标。 s3c2440集成了4线制电阻式的触摸屏接口,触点坐标的检测是通过A/D转换来实现的。s3c2440一共有4种触摸屏接口模式 阅读详情

相关推荐

裸机系列——s3c2440之触摸屏

平台         mini2440 触摸屏     索尼x-35 3.5寸触摸屏 1.0、触摸屏与lcd 触摸屏与lcd是俩个独立的屏在lcd中已经讲过了,但是这里在提一下,主要是涉及到一个触摸屏校正的问题,我以前一直很是不解我手指点的什么东西电脑是怎么知道的,直到我弄

yimu13的专栏 2272

深入解析80C51单片机UART、SPI与PCA外设原理与实战配置

在嵌入式系统开发中,串行通信接口和定时/计数器是连接外部设备、实现精确控制的核心基础技术。UART(通用异步收发器)作为一种经典的异步串行通信协议,其工作原理基于起始位、数据位和停止位的帧格式,通过波特率实现设备间的数据同步,广泛应用于调试终端、传感器数据读取等场景。SPI(串行外设接口)则是一种高速同步串行总线,采用主从架构和全双工通信,通过时钟极性与相位(CPOL/CPHA)的配置确保数据稳定传输,常见于Flash、显示屏等高速外设的连接。PCA(可编程计数器阵列)作为增强型定时器,集成了捕获、比较、P

csdndownload11123的博客 437

S3C2440 触摸屏应用

s3c2440集成了4线制电阻式的触摸屏接口,触点坐标的检测是通过A/D转换来实现的。s3c2440一共有4种触摸屏接口模式,其中,自动(连续)XY坐标转换模式和等待中断模式应用地比较常见。等待中断模式是在触笔落下时产生一个中断,在这种模式下,A/D触摸屏控制寄存器ADCTSC的值应为0xD3,在系统响应中断后,XY坐标的测量模式必须为无操作模式,即寄存器ADCTSC的低两位必须清零。自动(连续)

Tester_Pete 2133

【HDU 3848 CC On The Tree】+ 递归

CC On The Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others) Total Submission(s): 1949 Accepted Submission(s): 681Problem Description CC lives on the tree w

楚江枫 1008

【ARM学习笔记】一、S3C2440A官方简介

S3C2440A 是三星公司推出的16/32位精简指令集(RISC)微型处理器,它基于ARM v9系列的ARM920T核心,主要为手持设备和普通应用提供了低功耗的高性能的小型芯片微型控制器的解决方案。 S3C2440A 基于ARM920T 核心,0.13μm 的CMOS 标准宏单元和存储器单元。低功耗,简单,精致,且全静态设计特别适合于对成本和功率敏感型的应用。它采用了新的总线架构如先进微控制总

Elitah的专栏 1万+

S3C2440A驱动RGB接口TFT LCD的研究(转载)

S3C2440A驱动RGB接口TFT LCD的研究(转载)

hfdghjh的博客 554

mini2440裸机程序 统宝3.5 LCD驱动 TopPoly-TD035STED4

<br />关于MDK配置,请看前面的文章<br />mini2440裸机程序 如何点亮led灯 基于MDK4.11版<br />http://hi.baidu.com/如来大悲/blog/item/c6150233be4692a45edf0e02.html<br />/**************************************************************<br />The initial and control for 640×480 16Bpp TFT LCD---

zmq5411的专栏 2005

S3c2440触摸屏驱动开发指南

电阻式触摸屏是一种较为传统的触摸技术,其基本原理是通过触摸对两层导电层进行接触来实现。这一类型的触摸屏通常由两层透明的导电材料组成,它们之间保持着一定的间隔。当用户用手指或其他物体按压触摸屏时,两层导电材料会在按压点接触,从而改变电导率,通过电路检测到这一变化即可得到触碰的位置。电阻触摸屏的优点在于其结构简单、成本较低,且可以支持多点触控。然而,电阻触摸屏也有缺点,比如响应速度相对较慢,透光率较低,并且屏幕表面的硬度较低,容易划伤。

weixin_42591908的博客 930

s3c2440的LCD应用

 人机交互是嵌入式系统必须具有的功能。比较简单的人机交互有按键、LED、蜂鸣器,稍微复杂的有7段数码管和点阵。但如今这些都不能满足人们的需求了,所以又出现了LCD和触摸屏技术。s3c2440具有LCD和触摸屏接口,可以很好的连接LCD和触摸屏。这篇文章主要介绍TFT型LCD的用法。        要想正确使用LCD,必须注意两点:1、时序;2、显示缓存区。 1、时序LCD一

赵春江的专栏 2万+

Unix/Linux环境下的S3C2410/S3C2440触摸屏驱动编程

本文还有配套的精品资源,点击获取 简介:本资源包提供了针对三星S3C2410处理器(可能包括S3C2440升级版)的触摸屏驱动程序,适用于Unix或Linux操作系统。S3C2410/S3C2440是基于ARM920T内核的微处理器,广泛应用于嵌入式系统,如智能手机和平板电脑。驱动程序负责处理触摸屏信号,将其转换为屏幕坐标,并与用户空间应用程序交互。学习这个驱动程序的实现可...

weixin_32869687的博客 945

MATLAB Appdesigner开发独立桌面App全流程(一):以打开串口功能为例介绍Appdesigner的基本使用

本文详细介绍了Appdesigner的基本使用,以串口功能为例介绍按钮回调函数的实现以及控件之间通信的问题

Zhuwany的博客 3万+

S3C2440之触摸屏驱动

一、触摸屏驱动简介 触摸屏驱动是以用输入子系统写的:输入子系统 所有触摸屏驱动程序都是以下框架: 1.分配一个input_dev结构体;2.设置input_dev结构体;3.注册input_dev结构体;4.硬件相关的操作 static int s3c_ts_init(void) { /* 1. 分配一个input_dev结构体 */ s3c_ts_dev = input_allocate_device(); /* 2. 设置 */ /* 2.1 能产生哪类事件 */ set_bit(E

月月鸟呀的博客 912

VS2019+EasyX图形库实战:手把手教你用C语言打造消消乐小游戏(附完整源码)

本文详细介绍了如何使用VS2019和EasyX图形库从零开始构建一个C语言消消乐小游戏。通过环境配置、数据结构设计、界面绘制、交互实现到游戏逻辑完善的完整流程,帮助开发者掌握图形编程和游戏开发的核心技巧,并附有完整源码供参考。

bush的博客 186

s3c2440裸奔之结束语

想了好久,最终还是决定结束该系列的内容。对照s3c2440数据手册,能讲解的内容我基本上都介绍了一遍。其中,限于手头没有相关硬件资源,SPI、UART的红外模式、AC97没有涉及,而USB设备控制器部分,由于还要用到上位机的驱动以及应用程序的开发,涉及的内容较多,已超出了“裸奔”的范围,因此也没有予以介绍,还请大家谅解。       为了便于大家的查找,我给出一个目录: 1、s3c2440启

赵春江的专栏 2万+

Globus数据下载全攻略:从零配置到批量下载大文件(附常见问题解决)

本文详细介绍了Globus数据下载的全流程,从零配置到批量下载大文件的实用技巧,包括环境准备、高级传输策略、性能优化及常见问题解决方案。Globus作为科研数据的高效传输工具,通过并行流传输和自动校验技术,显著提升大规模数据传输的效率和可靠性。

u9v0w的博客 663

MTK平台LCD驱动开发实战:从零开始点亮你的Android屏幕

本文详细介绍了在MTK平台进行Android LCD驱动开发的完整流程。从理解LK与Kernel双核驱动框架入手,手把手讲解驱动结构体、屏幕参数配置、初始化序列编写以及PLL_CLOCK计算等核心步骤,并提供了系统集成配置与实用的调试避坑指南,帮助开发者高效点亮新屏幕。

terraform7cloud的博客 293

s3c2440 LCD驱动,USB驱动,触摸屏以及ADC驱动移植

这篇驱动移植文章,目的是实现相应的功能,并分享我在做移植过程中所碰到的一些问题及解决的方法。 贴上代码: --- mach-smdk2440_o.c 2015-04-24 11:39:20.492017397 +0800 +++ mach-smdk2440.c 2015-05-17 16:27:25.250018401 +0800 @@ -46,6 +46,33 @@ #include

2568

unity shader 后处理实现水墨风格渲染「Low Poly 」变「水墨画 」

水墨风格渲染 这次学校的比赛打算做一个中国古代背景的游戏,所以尝试做了水墨风格的渲染。 主要按以下四步来实现的效果: 根据色调和饱和度调整饱和度。 对图像进行模糊 水墨风格的物体边缘 物体内画笔笔触的模拟 接下来我分别就这四步依次展开说明: 调整饱和度 这里我使用Post-Processing Stack 的Color Grading 来调节饱和度,通过使用Grading Curv...

九级铁甲蛹的博客 1万+

S3C2440A驱动RGB接口TFT LCD的研究

S3C2440A驱动RGB接口TFT LCD的研究 2009-01-13      嵌入式在线      收藏 | 打印 1 引言     随着科技的进步,TFT LCD作为显示器件在各种嵌入式系统中得到越来越广泛的应用。带触摸屏的TFT LCD模组在系统应用中不仅能为人机界面提供高质量的画面显示,而且能提供更直观、方便的交互性输入。TMT035DNAFWU1是深圳天马微电子股份有限公

story1987的专栏 2289

DeepSeek如何构建可扩展的 AI 驱动交易系统,基于 MetaTrader 5 与 Python 利用先进的数据处理、机器学习和容器化部署来优化算法交易。

MT5 Python API 架构设计分为三层:通信层:利用异步消息传递(例如 ZeroMQ 或标准套接字编程)支持每秒数万个数据请求。转换层: C++ 动态库有效地将 MT5 命令转换为 Python 对象(反之亦然),从而优化速度和内存使用率。接口层:提供Pythonic API,封装了所有终端功能,包括:1)实时价格订阅(滴答或秒级更新)2)历史数据检索(从M1到更高的时间范围)3)订单流监控(交易详情和市场深度)4)策略执行引擎(用于算法交易)

iCloudEnd的博客 1383

31、航空软件标准DO - 178C/ED - 12C的实践解读

本文深入解读了航空软件标准DO-178C/ED-12C相较于DO-178B的主要变化,涵盖核心文本更新、各章节关键改进及新技术补充文件的影响。重点分析了目标与活动关系、需求层级定义、验证独立性、MC/DC覆盖、停用代码处理等关键变更,并提供了应对策略,包括流程调整、文档更新、工具选择和与认证机构沟通等建议,旨在帮助航空软件开发者确保合规性,提升软件安全性与可靠性。

tech5的博客 246
上一篇: S3C2440 TFT LCD驱动程序编程要点 by noodies
下一篇: APCS,ARM 过程调用标准(ARM Procedure Call Standard)
atomicfox
博客等级 码龄18年 16粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值