【ARM】s3c2440裸机实现图片显示

简介:

功能

   LCD显示字汉字,字符和图片

说明

   汉字,字符和图片需要用相应的取模软件得到相应的c文件,然后包含到工程中



主要代码


1)绘制背景

1
2
3
4
5
6
7
8
9
10
11
void  Brush_ U32  c)
{
     int  x,y ;
     for ( y = 0 ; y < LCD_HEIGHT ; y++ )
     {
         for ( x = 0 ; x < LCD_WIDTH ; x++ )
         {
             LCD_BUFFER[y][x] = c ;
         }
     }
}



2)文字绘制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void  Draw_Text16(U32 x,U32 y,U32 color, const  unsigned  char  ch[])
{
     unsigned  short  int  i,j;
     unsigned  char  mask,buffer;
     for (i=0;i<16;i++)
     {
         mask=0x80;                        //掩码
         buffer=ch[i*2];                   //提取一行的第一个字节
         for (j=0;j<8;j++)
         {             
             if (buffer&mask)
             {
                 PutPixel(x+j,y+i,color);  //为笔画上色
             }
             mask=mask>>1;             
         }
         mask=0x80;                       //掩码
         buffer=ch[i*2+1];                 //提取一行的第二个字节
         for (j=0;j<8;j++)
         {             
             if (buffer&mask)
             {
                 PutPixel(x+j+8,y+i,color);  //为笔画上色
             }
             mask=mask>>1;             
         }
     }
}



3)字符绘制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void  Draw_ASCII(U32 x,U32 y,U32 color, const  unsigned  char  ch[])
{
     unsigned  short  int  i,j;
     unsigned  char  mask,buffer;
     for (i=0;i<16;i++)
     {
         mask=0x80;
         buffer=ch[i];
         for (j=0;j<8;j++)
         {             
             if (buffer&mask)
             {
                 PutPixel(x+j,y+i,color);
             }
             mask=mask>>1;             
         }
     }
}



4)图片绘制

<注意>用取模软件对图片进行取模后得到的c源文件中,需要自己进行define WIN32,否则图片颜色是反过来的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void  Paint_Bmp( int  x0, int  y0, int  h, int  l, const  unsigned  char  bmp[])
{
     int  x,y;
     U32 c;
     int  p = 0;
                                                      
     for ( y = y0 ; y < l ; y++ )
     {
         for ( x = x0 ; x < h ; x++ )
         {
             c = bmp[p+1] | (bmp[p]<<8) ;
             if  ( ( (x0+x) < LCD_WIDTH) && ( (y0+y) < LCD_HEIGHT) )
                  LCD_BUFFER[y0+y][x0+x] = c ;
                                                              
             p = p + 2 ;
         }
     }
}



效果

111649292.jpg




本文转自infohacker 51CTO博客,原文链接:http://blog.51cto.com/liucw/1197271

相关文章
【各种问题处理】X86架构和ARM架构的区别
【1月更文挑战第13天】【各种问题处理】X86架构和ARM架构的区别
|
1月前
|
数据处理 编译器 数据库
x64 和 arm64 处理器架构的区别
x64 和 arm64 处理器架构的区别
|
1月前
|
缓存 API Android开发
一起学点ARM的微架构二?
一起学点ARM的微架构二?
100 1
|
1月前
|
弹性计算 编解码 运维
飞天技术沙龙回顾:业务创新新选择,倚天Arm架构深入探讨
阿里云、平头哥与Arm联合举办的飞天技术沙龙在上海举行,聚焦Arm Neoverse核心优势和倚天710计算实例在大数据、视频领域的应用。活动中,专家解读了倚天710的性能提升和成本效益,强调了CIPU云原生基础设施处理器的角色,以及如何通过软件优化实现资源池化和稳定性平衡。实例展示在视频编码和大数据处理上的性能提升分别达到80%和70%的性价比优化。沙龙吸引众多企业代表参与,促进技术交流与实践解决方案的探讨。
飞天技术沙龙回顾:业务创新新选择,倚天Arm架构深入探讨
|
18天前
|
传感器 物联网 数据中心
探索ARM架构及其核心系列应用和优势
ARM架构因其高效、低功耗和灵活的设计,已成为现代电子设备的核心处理器选择。Cortex-A、Cortex-R和Cortex-M系列分别针对高性能计算、实时系统和低功耗嵌入式应用,满足了不同领域的需求。无论是智能手机、嵌入式控制系统,还是物联网设备,ARM架构都以其卓越的性能和灵活性在全球市场中占据了重要地位。
22 1
|
9天前
|
物联网
arm架构和x86架构区别
arm架构和x86架构区别
|
1月前
|
消息中间件 存储 Apache
MQ产品使用合集之有RocketMQ arm架构的镜像吗
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
224 1