社区导航

 
查看: 1274|回复: 1

【PSoC4心得】简单实现LED全彩显示屏

[复制链接]

83

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2013-11-30 16:57:19 | 显示全部楼层 |阅读模式
入手PSOC4已经有一段时间了,虽然拿到的有点晚,但是还是很感谢Cypress的支持和SOSO姐的帮助。

看到论坛上有其他兄弟已经写过一些心得,让我感到了PSOC4用起来很简单,之所以没有再写心得,是因为,大部分大家学到了东西基本一样,没必要重复写。花了两天时间把PSOC Creator熟悉了一下和收集了一些资料,感觉PSOC4真正有意思的不是他能让我们更简单的开发一个东西,而是“灵活”的开发我们的作品。至于灵活的地方就是它里面的可编程资源,包括数字的和模拟的。

由于刚接触而且资料比较少(中文资料,自己英语水平有限啊),所以只能自己一点一点的摸索前进。要是能延长比赛的时间该多好啊,明显时间不够用啊。不过不以比赛为目的的话,希望和大家一起交流一下这个PSOC 器件。

我们公司专门生产8通道24M的逻辑分析仪,查看控制卡的输出信号。也是生平自己第一次使用逻辑分析仪。逻辑分析仪这的是作为一个电子技术人员的好工具,建议大家也都有一个吧。
上个从控制器上扑捉的信号时序图:

控制器时序图

控制器时序图

有时序图我们可以看到信号线的基本功能:
CLK 时钟输出
OE  输出使能
STB 所存使能
ABCD  行信号选择  可以通过ABCD的值确定扫描那一行
G0和没有采集的G1、R1、R0、B1、B0都是数据输出信号
刚开始写一个小的程序,通过软件模拟一个控制这个时序,刚开始入手,从简单开始嘛。
首先就是放端口:
端口.png

然后就是编译硬件电路和生成软件文件,编写的程序有点简单:
#include <device.h>

int main()
{
    unsigned char i=0,j=0,b=0;
    GREEN_2_Write(0);RED_2_Write(0);BLUE_2_Write(0);//最好在这里初始化一下   要不然会花屏的。
    RED_1_Write(0);GREEN_1_Write(0);BLUE_1_Write(0);
        for(;;)
    {  
       for(i=0;i<16u;i++)//16行扫描
           {  
                  for(j=0;j<32;j++)//行数据
                  {
                        b=j%3;//在这里实现的功能就是每一列只显示一种颜色顺序分别是红、绿、蓝
                        if(b==0)
                        {
                                RED_1_Write(1);GREEN_1_Write(0);BLUE_1_Write(0);
                                RED_2_Write(1);GREEN_2_Write(0);BLUE_2_Write(0);
                        }
                        else
                          if(b==1)
                          {
                                RED_1_Write(0);GREEN_1_Write(1);BLUE_1_Write(0);
                                RED_2_Write(0);GREEN_2_Write(1);BLUE_2_Write(0);
                          }
                        else
                        {
                                RED_1_Write(0);GREEN_1_Write(0);BLUE_1_Write(1);
                                RED_2_Write(0);GREEN_2_Write(0);BLUE_2_Write(1);
                        }
                        CLK_Write(1);
                        CLK_Write(0);
                  }
                  OE_Write(1);
                  Sec_Write(i);//选择那一行
                  STB_Write(1);//锁存数据信号
                  STB_Write(0);
                  OE_Write(0); //输出使能
        }
  }
}
最后就是编译、下载、看结果:
最后编译信息如下:
Flash used: 2430 of 32768 bytes (7.4%).
SRAM used: 1532 of 4096 bytes (37.4%).
--------------- Build Succeeded: 11/30/2013 16:53:42 ---------------
虽然编译成功了,但是SRAM用的太多了,不知道都用到什么地方了。
图片待会儿传上,在老婆带有800万摄像头的手机里。
LEDA.jpg

FullColourLED_Simple.rar (1012.9 KB, 下载次数: 11)


回复

使用道具 举报

83

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2013-11-30 22:52:49 | 显示全部楼层
IMG_20131108_010146.jpg


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2018-8-20 20:52 , Processed in 0.077230 second(s), 18 queries , Gzip On, Redis On.

快速回复 返回顶部 返回列表