因为前面的裸机程序非常的简单,就不写博了。

程序的流程:

1,初始化C SP

2,关看门狗

3,初始化SDRAM

4,读出 NAND FLASH 中的 包含图片的程式放到SDRAM里面

5,跳转到SDRAM 执行

因为 2440 自动只读取4K 到 SRAM ,在里面放了图片,自然就不够用了。 就多了一步放到 SDRAM 里面去。

我并没有直接复制教程上面的程式,那个上面比较复杂。用到了c 的 库文件。

教程中只是画线,画圆线很简单。

刚一开始,我是使用 24BPP 开发的,这样遇到的问题还比较多。

图片要转为 C 语言的 头文件。我看网上有很多人在找软件转,还有个用 C的在LINUX 下转的。 找了一个软件吧,MFC 做的,竟然不支持 24BPP 。

只能自己做了。用 python 来编写。 链接在这里:http://www.cnblogs.com/ningci/p/5203053.html

16BPP:

//lcd 控制器
typedef struct{
unsigned long LCDCON1;
unsigned long LCDCON2;
unsigned long LCDCON3;
unsigned long LCDCON4;
unsigned long LCDCON5;
unsigned long LCDSADDR1;
unsigned long LCDSADDR2;
unsigned long LCDSADDR3;
unsigned long REDLUT;
unsigned long GREENLUT;
unsigned long BLUELUT;
unsigned long DITHMODE;
unsigned long TPAL;
} LCD; LCD * lcd = (LCD *)0x4d000000; #define GPBCON (*(volatile unsigned long *)0x56000010)
#define GPBDAT (*(volatile unsigned long *)0x56000014)
#define GPCUP (*(volatile unsigned long *)0x56000028)
#define GPCCON (*(volatile unsigned long *)0x56000020)
#define GPDUP (*(volatile unsigned long *)0x56000038)
#define GPDCON (*(volatile unsigned long *)0x56000030)
#define GPGUP (*(volatile unsigned long *)0x56000068)
#define GPGCON (*(volatile unsigned long *)0x56000060)
#define HCLK 100000000
#define LCD_WIDTH 480
#define LCD_HEIGHT 272
#define LCD_CLKVAL 4
#define LCD_TFT 3
#define LCD_24BBP 0xd
#define LCD_16BBP 0xc
#define LCD_EN_OFF 0
#define LCD_EN_ON 1
#define LCD_VBPD 1
#define LCD_LINEVAL (LCD_HEIGHT - 1)
#define LCD_VFPD 1
#define LCD_VSPW 9
#define LCD_HBPD 1
#define LCD_HOZVAL (LCD_WIDTH - 1)
#define LCD_HFPD 1
#define LCD_HSPW 40
#define LCD_INVVLINE 1
#define LCD_INVVFRAME 1
#define LCD_FRAMEBUFFER 0x30400000 //4M对齐的地址 void wait(s)
{
while(s--);
} void init_lcd()
{
//LCD_PWREN
GPGUP = 0xffffffff; // 禁止内部上拉
GPGCON = <<; GPCUP = 0xffffffff; // 禁止内部上拉
GPCCON = 0xaaaaaaaa; // GPIO管脚用于VD[7:0],LCDVF[2:0],VM,VFRAME,VLINE,VCLK,LEND
GPDUP = 0xffffffff; // 禁止内部上拉
GPDCON = 0xaaaaaaaa; // GPIO管脚用于VD[23:8]
//GPB0 KEYBOARD
//背光开
GPBCON &= ~();
GPBCON |= ;
//HCLK 100M LCD CLK 9M 100/9/2-1=4
//默认是不启用状态
lcd->LCDCON1 = LCD_CLKVAL<< | LCD_TFT<< | LCD_16BBP<< | LCD_EN_OFF;
lcd->LCDCON2 = LCD_VBPD<< | LCD_LINEVAL<< | LCD_VFPD<< | LCD_VSPW;
lcd->LCDCON3 = LCD_HBPD<< | LCD_HOZVAL<< | LCD_HFPD;
lcd->LCDCON4 = LCD_HSPW;
//8bpp BSWP 1 16bpp HWSWP 1 24bpp 0 0
lcd->LCDCON5 = << | LCD_INVVLINE<< | LCD_INVVFRAME<< | ;
//地址分开来存放 31:22位 右移即可 21:1 位 使用 & 上21个1 高位不 7 就是清空了
lcd->LCDSADDR1 = (LCD_FRAMEBUFFER>>)<< | ((LCD_FRAMEBUFFER>>) & 0x1fffff);
//24bpp 占4个长度 16bpp 2个长度 8bpp 1个长度
lcd->LCDSADDR2 = ((LCD_FRAMEBUFFER + LCD_WIDTH * LCD_HEIGHT*)>>) & 0x1fffff;
lcd->LCDSADDR3 = LCD_WIDTH ;
lcd->TPAL = ;
} void lcd_on()
{
//背光开
GPBDAT |= ;
lcd->LCDCON1 |= LCD_EN_ON;
lcd->LCDCON5 |= 0x3<<;
} void lcd_off()
{
//背光关
GPBDAT &= ;
lcd->LCDCON1 &= LCD_EN_OFF;
lcd->LCDCON5 &= ~(0x3<<);
} void show_img(unsigned short *img)
{
int i=;
//显存地址
unsigned short * frame_buf = (volatile unsigned short *)LCD_FRAMEBUFFER;
for(i=;i<(*);i++)
{
*frame_buf = *img;
frame_buf++;
img++;
}
} #include "img1.h"
int main()
{
init_lcd();
lcd_on();
show_img(&img1);
return ;
}

在内存上直接写颜色值就能在屏幕上显示了。

下面是显示效果图:

s3c2440 lcd 显示图片裸机程序的更多相关文章

  1. 七、在U-boot中让LCD显示图片

    1. 增加Nandflash读取代码 因为要显示图片,而图片明显是放在Nandflash中比较合适,因此需要有能够操作Nandflash的函数.在U-boot中已经有能操作Nandflash的函数了, ...

  2. Linux LCD 显示图片【转】

    转自:https://blog.csdn.net/niepangu/article/details/50528190 BMP和JPEG图形显示程序1)  在LCD上显示BMP或JPEG图片的主流程图首 ...

  3. u-boot下载模式LCD显示图片修改方法(基于TQ2440)

    1.明确液晶型号,这点非常重要,我手头的液晶是天嵌4.3寸屏,让人很郁闷的是液晶背面竟然写着LCD 3.5,这一点让我在上面浪费了好几个小时: 2.根据液晶型号,修改u-boot1.1.6--> ...

  4. STM32学习之路-LCD(3)&lt;显示图片&gt;

    祝大家端午和六一快乐!原本今天是想歇息歇息的,可是实在无奈没什么事干.所以就来学习学习LCD显示图片的函数 函数是照搬奋斗的样例,算是些笔记吧.只是奋斗的样例凝视的不是非常具体.今天去看了正点原子的论 ...

  5. python将图片转换为Framebuffer裸数据格式(终端显示图片)

    要在ubuntu终端显示图片或者在板子的LCD显示图片,Framebuffer是一个简单易用的接口,直接写入像素信息即可. 但普通的图片带有头部信息或者编码格式不同,直接送入Framebuffer是显 ...

  6. python将图片转换为Framebuffer裸数据格式(终端显示图片)【转】

    转自:https://www.cnblogs.com/zqb-all/p/6107905.html 要在ubuntu终端显示图片或者在板子的LCD显示图片,Framebuffer是一个简单易用的接口, ...

  7. tiny4412 裸机程序 九、串口排查驱动原因及字符图片显示【转】

    本文转载自:http://blog.csdn.net/eshing/article/details/37410571 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   一 ...

  8. tiny4412 裸机程序 八、重定位到DRAM及LCD实验【转】

    本文转载自:http://blog.csdn.net/eshing/article/details/37407423 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   一 ...

  9. 基于KEIL4开发ARM9(S3C2440)的裸机程序

    本文主要介绍如何使用Keil4开发ARM9(S3C2440)裸机程序. 说明: 一.平台: 操作系统:Windows XP系统 KEIL版本:4.73 开发板:ARM9(S3C2440) 二.建立工程 ...

随机推荐

  1. SQL语句里怎么获得当前年份(MySQL数据库)

    使用函数Year及CurDate的组合: Year(CurDate()) select date_format(min(date),'%Y-%m-%d') as mindate, date_forma ...

  2. MSP430之频率测量,误差1Hz

    #include "timerHz.h" #include "msp430g2553.h" #define _DEBUG_TIMERHZ_ unsigned ] ...

  3. Android 使用Okhttp/Retrofit持久化cookie的简便方式

    首先cookie是什么就不多说了,还是不知道的话推荐看看这篇文章 Cookie/Session机制详解 深入解析Cookie技术 为什么要持久化cookie也不多说了,你能看到这篇文章代表你有这个需求 ...

  4. 8款实用Sublime text 3插件推荐

    Sublime Text作为一个尽为人知的代码编辑器,其优点不用赘述.界面整洁美观.文本功能强大,且运行速度极快,非常适合编写代码,写文章做笔记.Sublime Text还支持Mac.Windows和 ...

  5. [BS-00] const限定常量或者变量(初次赋值后),其值不允许被改变

    CONST(C中的CONST) const是一个C语言(ANSI C)的关键字,它限定一个变量不允许被改变,产生静态作用.使用const在一定程度上可以提高程序的安全性和可靠性.另外,在观看别人代码的 ...

  6. 面向对象编程(十二)——final关键字

    final关键字 Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量. 在Java中,final关键字可以用来修饰类.方法和变量(包括成员变量和 ...

  7. Redhat linux 挂载命令mount

    命令格式: mount [-t vfstype] [-o options] device dir 其中: 1.-t vfstype 指定文件系统的类型,通常不必指定.mount 会自动选择正确的类型. ...

  8. Mac 加密软件

    1,花了127块买一个mac 加密软件 hider2,发现他只是把整个文件加密后,加入到某个包里面,然后删除了原文件,这个简单的功能竟然要收取我这么多钱 2. 然后找个开源的加密软件:PGP, 有GU ...

  9. mysql高负载的问题排查

    http://dngood.blog.51cto.com/446195/1150031 log_slow_queries = /usr/local/mysql/var/slow_queries.log ...

  10. UI-UIImageView的图片填充方式(contentMode)_图片作为控件背景图的拉伸方式(stretch)介绍

    常用图片填充方式 这里只介绍三个最常用的图片填充方式 UIViewContentModeScaleToFill模式会导致图片变形.例如: UIViewContentModeScaleAspectFit ...