Linux开发板循环显示红绿蓝
Linux下的 /dev/fbx 是标准的帧缓冲设备,由于它是一个标准的接口,所以只要是Linux系统,无论什么平台,都可以使用内核里的相关函数来对屏幕进行操作。
今天我就介绍一个非常简单的例子,在屏幕上循环显示红绿蓝三基色。
话不多说,直接贴代码:
由于我所用的屏幕的颜色是32位的,所以颜色值都比24位的多了两个F。
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <linux/fb.h>
#include <sys/mman.h>int lcd_fd;
unsigned char *lcd_mem_p=NULL;
struct fb_var_screeninfo vinfo;
struct fb_fix_screeninfo finfo;
#define FB_DEV "/dev/fb0"void LCD_Write_Point(int x,int y,int color); //画点函数
void LCD_Clear(int color); //清屏函数int main()
{/*1.打开设备文件*/lcd_fd=open(FB_DEV,2);if(lcd_fd<0){printf("%s device file open failed.\n",FB_DEV);return 0;}/*2.获取可变参数*/ioctl(lcd_fd,FBIOGET_VSCREENINFO,&vinfo); //可变参数printf("screen x:%d, screen y:%d ,pixel_bit:%d\n",vinfo.xres,vinfo.yres,vinfo.bits_per_pixel);/*3.获取固定参数*/ioctl(lcd_fd,FBIOGET_FSCREENINFO,&finfo);printf("smem_len=%d Byte,line_length=%d Byte.\n",finfo.smem_len,finfo.line_length);/*4.映射LCD屏物理地址到进程空间*/lcd_mem_p=(unsigned char *)mmap(0,finfo.smem_len,PROT_READ|PROT_WRITE,MAP_SHARED,lcd_fd,0);/*5.操作LCD屏幕*/while(1){ LCD_Clear(0xFFFF0000); //红色sleep(1);LCD_Clear(0xFF008000); //绿色sleep(1);LCD_Clear(0xFF0000FF); //蓝色sleep(1);}/*6.关闭驱动*/munmap(lcd_mem_p,finfo.smem_len);close(lcd_fd);
}/*******************************画点函数* ***************************/
void LCD_Write_Point(int x,int y,int color)
{unsigned int *p=(unsigned int *)(lcd_mem_p+vinfo.xres*y*vinfo.bits_per_pixel/8+x*vinfo.bits_per_pixel/8);*p=color;
}/*****************************
*清屏函数
* ****************************/
void LCD_Clear(int color)
{int i,j;for(i=0;i<vinfo.yres;i++){for(j=0;j<vinfo.xres;j++){LCD_Write_Point(j,i,color);}}
}
代码很短,功能也很简单,但基本框架就这么多,关于显示方面的功能验证还有显示字符、图片等等,由于工作上涉及不到,以后有机会再多记录些,嘿嘿。
Linux开发板循环显示红绿蓝相关推荐
- linux开发板汉字显示,Linux Qt 及Arm开发板汉字显示
作为一个优秀的开发人员,我就不说废话了. 很多人在 使用Qt做嵌入式开发时,会遇到一个问题: 汉字显示,网上有好多方法,并且针对 Qt5 以前的版本和Qt5 的版本有不同的方法,同样,我也遇到了这个问 ...
- 嵌入式Linux开发-在6818开发板上显示图案
lcd屏幕的显示原理 我们常说开发板的屏幕是800*480的 单位是什么? 像素点! 屏幕一行有800个像素点 一列有480个像素点. 像素点? 显示颜色的点 怎么让像素点显示自己想要的颜色? OS规 ...
- JavaScript分类显示随机颜色【红绿蓝青黄紫、黑白、全彩】
JavaScript分类显示随机颜色[红绿蓝青黄紫.黑白.全彩],随机显示分类颜色,按color系列显示随机颜色. web中颜色的表达方法可以用内定的英文单词或颜色代码,其中颜色代码一般分两种形 ...
- 开发板连续显示图片 | BAD APPLE 万耦中的二次元世界
本文分享自中移OneOS微信公众号<万耦中的二次元世界!>,作者:小M哥. BAD APPLE原本是东方游戏里的一首歌曲,后来被加了一个MAD,由于MAD非常惊艳华丽,使得BAD APPL ...
- 基于正点原子Linux开发板(ALIENTEK I.MX6U ALPHA V2.2)的个人自学记录
基于正点原子Linux开发板(ALIENTEK I.MX6U ALPHA V2.2)的个人自学记录 硬件环境 正点原子Linux开发板(ALIENTEK I.MX6U ALPHA V2.2) 底板+核 ...
- 正点原子Linux开发板 spi内核驱动 0.96寸ips屏教程
正点原子Linux开发板 spi内核驱动 0.96寸ips屏教程 首先选择模块 设备树配置 spi驱动程序(用的spi_driver) app 最近做下底层SPI驱动来驱动IPS屏,本来想实现这种效果 ...
- linux开发板 pc 通讯_从51单片机到Linux 开发板运行hello world(教程4)
大家好,我是兔子. 是一个嵌入式软硬件工程师. 正在从单片机开发转岗Linux开发. 这次教大家如何在Linux开发板上运行可执行文件. 简单起见,不涉及到硬件.直接和教程2一样,能在PC虚拟机上运行 ...
- 【嵌入式Linux应用】初步移植MQTT到Ubuntu和Linux开发板
1. 概述 本篇主要是记录将MQTT移植安装到百问网STM32MP157开发板上,并且是跑一下MQTT的一个例程来验证,要完成本次移植安装,必须要保证电脑和开发板都能上网.. 2. 软件平台 ...
- 12[红+绿+蓝+Alpha]
第十二集 红+绿+蓝+Alpha 红绿蓝组成了绚烂的颜色世界, 当红绿蓝遇到Alpha后, 这个颜色世界又多了一份神秘. 神秘的Alpha, 我们可以简单的认为它和红, 绿, 蓝一样, 是组成色彩的一 ...
- 用STM32F103C8T6实现红绿蓝LED流水灯
目录 一.STM32F103C8T6简介 二.GPIOx端口的各寄存器地址和详细参数 2.1寄存器分别如下 2.2寄存器地址 2.3时钟地址 2.4GPIO寄存器描述CRL与CRH 2.5GPIO端口 ...
最新文章
- openSuse 13.1 的触摸板,回来了
- react native 的TextInput组件问题
- JSON动态解析()
- 第6章-一阶多智体系统一致性-->6.5 带有领航者系统一致性
- hdu 4268 Alice and Bob(STL版)
- aptitude安装出现依赖_oeasy 教您玩转linux 之 010210 应用管理 aptitude
- QT5.14.2基于PCL1.11.1显示点云(基于Windows VS2019开发环境)
- mysql工作中遇到的问题_MySQL工作中遇到的问题记录
- C++匿名对象生命周期静态变量函数
- quartus仿真6:74194构建线性反馈移位寄存器计数器LFSR
- win10 安装 face_recognition
- MyBatis学习(一):简单的运行
- 爬虫开发python工具包介绍 (4)
- Linux系统tomcat修改端口
- html5一个可拖动的图片大小,HTML5画布中的可拖动和可调整大小元素
- SEO优化:如何挖掘谷歌关键词-实例讲解(2022最新)
- 网页去广告服务器,使用 AdGuardHome,实现网页加速和去广告
- 51单片机-TLC5615代码
- FileZilla软件的下载、服务器站点配置与数据传输方法
- 写给自己 NOI2012流水帐
热门文章
- 为什么罗氏线圈不能测直流电流?
- Solidworks常见问题一览
- EXCEL常用函数总结
- 六款很6的电脑驱动管理器:驱动升级用什么软件好 | 国外最好的电脑驱动管理软件推荐
- 寻找春天nbsp;九宫格日记-2011.09.20
- 北京/杭州内推 | 阿里达摩院城市大脑实验室视觉团队招收CV实习生
- layui table切换html,解决Layui中切换tab时table样式错乱问题
- 陕西中医药有计算机系吗,校内制度 - 陕西中医药大学信息化建设管理处
- PHP超级外链工具源码/无后台一键批量外链源码
- 记录实验所用计算机硬件配置,《计算机硬件性能检测》实验指导书