首页 > 系统相关 >通过内存映射的方式向lcd屏幕输出几个圆

通过内存映射的方式向lcd屏幕输出几个圆

时间:2024-05-11 19:08:58浏览次数:25  
标签:800 映射 int lcd fd 内存 include

/*************************************************
 *
 *   file name:color.c
 *   author   :[email protected]
 *   date     :2024/05/11
 *   brief    :通过内存映射的方式向lcd屏幕输出几个圆
 *   note     :None
 *
 *   CopyRight (c) 2024    [email protected]    All Right Reseverd
 *
 **************************************************/

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/mman.h>
int main(void)
{
    int lcd_fd = open("/dev/fb0", O_RDWR);
    if (-1 == lcd_fd)
    {
        printf("open lcd faild\n");
        return -1;
    }
    int *lcd_mmap = (int *)mmap(
        NULL,
        800 * 480 * 4,
        PROT_READ | PROT_WRITE,
        MAP_SHARED,
        lcd_fd,
        0);
    int x = 350, y = 300, r = 50;
    int x1 = 100, y1 = 100, r1 = 20;
    int x2 = 600, y2 = 260, r2 = 70;
    for (int i = 0; i < 800 * 480; i++)
    {

        if (((i / 800) - y) * ((i / 800) - y) + ((i % 800) - x) * ((i % 800) - x) <= r * r)
        {
            lcd_mmap[i] = 0x00CCFFFF;
        }
        else if (((i / 800) - y1) * ((i / 800) - y1) + ((i % 800) - x1) * ((i % 800) - x1) <= r1 * r1)
        {
            lcd_mmap[i] = 0x00FFCCE5;
        }
        else if (((i / 800) - y2) * ((i / 800) - y2) + ((i % 800) - x2) * ((i % 800) - x2) <= r2 * r2)
        {
            lcd_mmap[i] = 0x00CCCCFF;
        }
        else
            lcd_mmap[i] = 0x00ffffff;
    }

    write(lcd_fd, lcd_mmap, 800 * 480 * 4);
    return 0;
}

运行结果
image

标签:800,映射,int,lcd,fd,内存,include
From: https://www.cnblogs.com/bell-c/p/18187060

相关文章

  • 9-内存评估工具
    9.内存评估工具9.内存评估工具freelinux中内存使用分5部分usedfreesharedbuffercache在linux中打开的任何文件都会被缓存(放到cache),即使文件被关闭也不会释放内存,目的是为了提供更快的访问速度,这一点有别于windows。缓存的原则是:缓存最近最经常使用的文件,例如一个文件被打......
  • EDAC工具助力检测服务器内存故障
    介绍EDAC工具前我们先知道什么是EDACEDAC(ErrorDetectionAndCorrection错误检测与纠正),是Linux系统的错误检测和纠正的框架,它的目的是在linux系统运行过程中,当错误发生时能够发现并且报告出硬件错误。内存有两种错误类型分别是CE和UE,CE是CorrectableError的简称,UE是Uncor......
  • Copilot - OpenAI与GitHub联合出品的自动代码生成AI+VirtualLCD - 可用于 GUI 移植的
    1、AntOS-适用8051的超轻量级实时操作系统AntOS是一款超轻量级实时操作系统,抢占式调度极简内核,专门为小型家电及轻量型物联网终端设计,适合在8051为内核的MCU上运行。项目主页: https://gitee.com/zeweni/ant-osAntOS提供层级服务,可以进行任意裁剪。内核层包含两个子系......
  • VKL060/076 SSOP24/28 超低功耗LCD液晶段码屏驱动芯片适用水电表/温湿度计,FAE技术支持
    VKL060概述: VKL060是一个点阵式存储映射的LCD驱动器,可支持最大60点(15SEGx4COM)的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,可配置4种功耗模式,也可通过关显示和关振荡器进入省电模式。其高抗干扰,低功耗的特性适用于水电气表以及工控仪表类产品。功能特点:•  工......
  • jvm内存模型、垃圾回收机制
    JVM内存模型JVM内存模型包括:线程计数器、本地方法栈、栈、堆、方法区(元空间),类装载子系统,字节码执行引擎。线程计数器线程启动时,程序技术会分配一小块空间分配给当前线程,每个线程都会独享一块程序计数器空间,用于存储下条指令的单元地址程序计数器是一块较小的内存空间,用于......
  • (EDAC) 内存错误检测与纠正
    EDAC即errordetectionandcorrection(错误检测与纠正),是Linux系统内部的机制。在上面的日志中,可以清楚地看出是内存读错误。MC即memorycontroller(内存控制器)。CE则代表correctableerror,是ECC内存中可以纠正的错误,相对地还有UE(uncorrectableerror)。为了摸清是哪些内存出了问题,找......
  • 调用lcd屏输出德国国旗
    /***************************************************filename:color.c*author:[email protected]*date:2024/05/10*brief:向lcd屏幕输出德国国旗*note:None**CopyRight(c)[email protected]......
  • ResultMap结果集映射
    为什么需要用到ResultMap?它可以将查询到的复杂数据(比如查询到几个表中数据)映射到一个结果集当中,设置灵活,应用广泛。应用在数据库字段信息与对象属性不一致或者需要做复杂的联合查询以便自由控制映射结果。简单的映射(建立SQL查询结果字段与实体属性的映射关系)publicclass......
  • synchronized原理-字节码分析、对象内存结构、锁升级过程、Monitor
    本文分析的问题:synchronized字节码文件分析之monitorenter、monitorexit指令为什么任何一个Java对象都可以成为一把锁?对象的内存结构锁升级过程Monitor是什么、源码查看字节码分析synchronized的3种使用方式作用于实例方法,对对象加锁作用于静态方法,......
  • 探讨:ARC(Automatic Reference Counting)与手动内存管理的区别及工作原理
    在iOS和macOS开发中,内存管理是一个至关重要的话题。在过去,手动内存管理是一项繁琐且容易出错的任务,而引入了ARC(AutomaticReferenceCounting,自动引用计数)之后,内存管理变得更加简单和安全。本文将详细讨论ARC和手动内存管理之间的区别,并解释ARC的工作原理。1.ARC与手......