关键词:
/****************************************** 实验步骤 1.配置引脚功能,将其GPI、GPJ引脚设置为VD数据输出模式,及GPJ后几位设置成LCD时钟输出; 2.设置LCD时序值,初始化时序值。 (1)需要初始化时序:VSPW、VBPD、LINEVAL、VFPD、HSPW、HBPB、HOZVAL、HFPD、 CLKVAL(在LCD芯片手册中找到初始化时序图,然后找到对应的时序参数) (2)找到初始化这些时序信号相应的寄存器(在芯片手册中找到相应的寄存器,并对其初始化) (3)结合LCD芯片手册和时序图将对应参数的是设置出来 3.帧缓存初始化(帧缓冲指的是在内存中开辟出来的用来存储图像数据空间,并告知给LCD的CMA。) (1)设置窗口大小对应的寄存器 (2)告诉ADM寄存器内存起始地址和大小 4.杂项初始化() 5.画点 6.画线 7.绘制QQ图 8.单色显示 **********************************************************/ #define GPICON (*(volatile unsigned long *)0x7F008100) #define GPJCON (*(volatile unsigned long *)0x7F008120) #define MOFPCON (*(volatile unsigned long *)0x7410800C) #define SPCON (*(volatile unsigned long *)0x7F0081A0) #define VIDCON0 (*(volatile unsigned long *)0x77100000) #define VIDCON1 (*(volatile unsigned long *)0x77100004) #define VIDTCON0 (*(volatile unsigned long *)0x77100010) #define VIDTCON1 (*(volatile unsigned long *)0x77100014) #define VIDTCON2 (*(volatile unsigned long *)0x77100018) #define WINCON0 (*(volatile unsigned long *)0x77100020) #define VIDOSD0A (*(volatile unsigned long *)0x77100040) #define VIDOSD0B (*(volatile unsigned long *)0x77100044) #define VIDOSD0C (*(volatile unsigned long *)0x77100048) #define VIDW00ADD0B0 (*(volatile unsigned long *)0x771000A0) #define VIDW00ADD1B0 (*(volatile unsigned long *)0x771000D0) #define VSPW 9 #define VBPD 1 #define LINEVAL 271 #define VFPD 1 //#define CLKVAL 4 //10 = 100/((CLKVAL+1)*2) #define HSPW 40 #define HBPD 1 #define HOZVAL 479 #define HFPD 1 #define LeftTopX 0 #define LeftTopY 0 #define RightBotX 479 #define RightBotY 271 #define FRAME_BUFFER 0x54000000 extern unsigned char bmp[135300];/* 导出的时候切记不要包含图像头数据!!!!!! */ void lcd_port_init() { GPICON = 0xaaaaaaaa; GPJCON = 0xaaaaaaaa; } void lcd_contral_init() { MOFPCON = 0<<3; /* 这一位必须设置为0 */ SPCON = 0x01; /* RGB模式下必须设置为1 */ VIDCON0 = (14<<6)|(1<<4)|(3<<0); /* 禁止视频输出和控制信号 选择视频时钟源 确定VCLK和CLKVAL[7:0]的值[VCLK=视频时钟源/(CLKVAL+1)] */ VIDCON1 = (1<<5)|(1<<6); VIDTCON0 = (VBPD<<16)|(VFPD<<8)|(VSPW<<0); /* 时钟初始化 */ VIDTCON1 = (HBPD<<16)|(HFPD<<8)|(HSPW<<0); VIDTCON2 = (LINEVAL<<11)|(HOZVAL<<0); WINCON0 = (1<<16)|(0xb<<2)|(1<<0); /* 禁止视频输出和视频控制信号 选择BPP图像窗口模式(24bpp) 打开半字交换控制位 */ VIDOSD0A = (LeftTopX<<11)|(LeftTopY<<0); /* 设置视频窗口0的位置 */ VIDOSD0B = (RightBotX<<11)|(RightBotY<<0); VIDOSD0C = (LINEVAL+1)|(HOZVAL+1); /* 设置视频窗口0的尺寸 */ VIDW00ADD0B0 = FRAME_BUFFER; /* 设置缓存区开始地址 */ VIDW00ADD1B0 = ((FRAME_BUFFER+(HOZVAL+1)*4*(LINEVAL+1)))&(0xffffff); /* 设置缓存区结束地址 ????*/ } void lcd_init() { lcd_port_init(); lcd_contral_init(); //打开LCD电源 } void point(int row, int col, int color) { int red, green, blue; unsigned long *point = (unsigned long*)FRAME_BUFFER; red = (color>>16) & 0xff; green = (color>>8) & 0xff; blue = (color>>0) & 0xff; *(point + row*480 + col) = (green<<24) | (blue<<16) | red; /* 具体不知原因 试出来的 */ } void paint_bmp(const unsigned char bmp[]) { int i,j; unsigned char *p = (unsigned char *)bmp; int blue, green,red; int color; for(i=0;i<205;i++) /* 必须和导出的尺寸一致!!! */ { for(j=0;j<220;j++) { red = *p++; /* 必须和导出的颜色顺序一模一样!!!!!! */ blue = *p++; green = *p++; color = (red<<16)|(green<<8)|(blue<<0); point(i,j,color); } } } void lcd_test() { int y; for(y=1;y<470;y++) point(110,y,0xFF0000); paint_bmp(bmp); }
ok6410裸机驱动学习c语言内嵌汇编
1.C语言内嵌汇编使用方法C内嵌汇编以关键字”_asm_或asm开始,下辖4个部分,各部分之间用“:”分开,第一部分是必须写的,后面3个部分可以省略,但是分号:不能省略优化后的代码 2.汇编程序框架.section.data<初始... 查看详情
ok6410[000]搭建裸机开发环境
1、安装交叉工具链arm-linux-gcc-4.3.2先把这个工具复制到rhat系统中【rhel-server-6.3-i386-dvd.iso】解压arm-linux-gcc-4.3.2到一个目录中,然后,配置环境变量 2、编译示例程序编译arm-linux-gcc-g-cled.S链接arm-linux-ld-Tled.lds-oled.elfled.o格式转换... 查看详情
修改飞凌ok6410的默认lcd显示设备(代码片段)
我用的飞凌OK6410开发板在烧入系统(Wince6.0系统)后,默认是采用4.3寸触摸屏显示,而我的项目中采用的是HDMI高清显示,因此每次烧完系统后,都要重新用DNW来配置为高清显示驱动,比较麻... 查看详情
tiny6410之按键裸机驱动
...到LED和按键的管脚所对应的寄存器 LED:(见Tiny6410之LED裸机驱动) nLED_1-GPK4 nLED_2-GPK5 nLED_3-GPK6 nLED_4-GPK7 Buttons: K1 GPN0 K2 GPN1 K3 GPN2 查看详情
tiny6410之uart裸机驱动
UART简介: UART(UniversalAsynchronousReceiverandTransmitter)通用异步收发器(异步串行通信口),是一种通用的数据通信协议,它包括了RS232、RS499、RS423、RS422和RS485等接口标准规范和总线标准规范,即UART是异步串行通信口的总称。而RS... 查看详情
tiny6410之led裸机驱动
操作步骤:第一步:查看开发板电路原理图 找到LED的管脚所对应的寄存器 nLED_1-GPK4 nLED_2-GPK5 nLED_3-GPK6 nLED_4-GPK7 由原理图可知LED对应的寄存器为GPK寄存器,由二极管的特性可知当LED_n为低电平时LED灯亮第二... 查看详情
ds-5.11建立tiny6410裸机工程建立与编译
1.新建工程 点击File选择New->CProject,出现Cprojec窗口后,在projectname填写自己的工程名,在Projecttype下选择Bare-metalExecutable(可执行裸机)文件夹下的EmptyProject,Toolchains选择ARMCompiler,点击finish, 查看详情
e-book-tiny6410-lcd的使用
电子书需要通过屏幕显示出来,首先写了LCD模块。代码上传到了github https://github.com/qq2216691777/E-book本次完善了lcd模块的程序。可以适用在其他地方。代码:fb.c fb.h#include<sys/types.h>#include<sys/stat.h>#include<sys/mman.h&g... 查看详情
jz2440裸机驱动第13章lcd控制器
本章目标 了解LCD显示器的接口及时序;掌握S3C2410/S3C2440LCD控制器的使用方法;了解帧缓冲区的概念,掌握如何设置帧缓冲区来显示图像;13.1LCD和LCD控制器13.1.1LCD显示器1.LCD的种类2.LCD的接口 CPU或显卡发出的图像数据... 查看详情
s5pv210-arm裸机-lcd
LCD :LCD是一种液晶晶体显示器,他本身是不发光的,属于被动发光,而LED显示器,CRT显示器(老式的砖头电脑)是主动发光的。 LCD是被动发光的,自己本身不会发光,我们在液晶面板上给他一个白光,背光。之后在电信号的驱... 查看详情
s3c2440裸机-lcd编程(lcd控制器)
1.LCD控制器主要功能取:从内存(FrameBuffer)取出某个像素的数据;之后需要把FrameBuffer地址、BPP、分辨率告诉LCD控制器;发:配合其它信号把FrameBuffer数据发给LCD;那么需要设置LCD控制器时序、设置引脚极性;2.LCD控制器框图 查看详情
ok6410内存初始化--未完待续
•DRAM:它的基本原件是小电容,电容可以在两个极板上保留电荷,但是需要定期的充电(刷新),否则数据会丢失。缺点:由于要定期刷新存储介质,存取速度较慢。•SRAM:它是一种具有静止存取功能的内存,不需要定期... 查看详情
jz2440裸机驱动第13章lcd控制器
13.2TFTLCD显示实例13.2.1程序设计 本实例的目的是从串口输出一个菜单,从中选择各种方法进行测试,比如画线、画圆、显示单色、使用调色板等。13.2.2代码详解 本实例源码在/work/hardware/lcd目录下,与LCD相关的代... 查看详情
51单片机+驱动lcd1602模板范例+proteus仿真(代码片段)
51单片机+驱动LCD1602模板范例+Proteus仿真本示例可以作为驱动LCD1602屏幕模板来调用或使用,方便移植到其他需要使用到LCD1602显示上的工程项目当中。所以示例不涉及过多其他的代码内容。主程序和驱动代码分离。工程项目目录架... 查看详情
ok6410[000]ubuntu1604_64bit下安装wps
虽说Ubuntu下有自动的office工具,不过使用上体验很差。而国内最好的office软件也就是金山的wps。----------------------------------------------------------------从官网下载wps-office_10.1.0.5672~a21_amd64.deb安装程序 使用命令安装sudodpkg-i wps-off 查看详情
s3c2440裸机-lcd编程(实现显示功能)(代码片段)
1.让LCD显示满屏红色我们想要在LCD上显示出数据,所需步骤如下:a.初始化LCDb.使能LCDc.获取LCD参数:fb_base,xres,yres,bppd.往framebuffer中写数据所需步骤如下:1.初始化LCD工作我们在前面一节框架准备和LCD初始化已经详细介绍了。2.使能L... 查看详情
ok6410上移植uboot出现nand:nonanddevicefound!!!打印信息如下:
U-Boot2010.03(8月262013-09:43:51)forSMDK6410CPU:S3C6400@533MHzFclk=533MHz,Hclk=133MHz,Pclk=66MHz(ASYNCMode)Board:SMDK6410By青天DRAM:256MBFlash:0kBNAND:NoNANDdevicefound!!!0MiB***Warning-badCRC,usingdefaultenvironmentIn:serialOut:serialErr:serialNet:CS8900-0Hitanykeytostopautoboot:0参考技术A... 查看详情
linuxlcd驱动实验(代码片段)
...节从LCD自动关闭解决方法LCD是很常用的一个外设,在裸机篇中我们讲解了如何编写LCD裸机驱动,在Linux下LCD的使用更加广泛,在搭配QT这样的GUI库下可以制作出非常精美的UI界面。本章 查看详情