0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

JZ2440点亮LED电路图设计案例

454398 来源:博客园 作者:LOSER Z 2020-10-07 15:21 次阅读

在JZ2440中,点亮LED就是给LED的控制位设置为输出,数据位设置为低电平,而通过按键点亮LED,就需要将按键对应的控制位设置为输出。

下面是JZ2440的3个LED电路图:

下面是JZ2440的3个按键的电路图

通过查找nLED_1,nLED_2,nLED_4对应的引脚,发现它们分别对应GPF4,GPF5,GPF6,如图:

通过查找EINT0,EINT2,EINT11对应的引脚,发现它们分别对应GPF0,GPF2,GPG3,如图:

由此,我们再去看2440的Datasheet,查看它们的控制位和数据位的信息,首先是GPF4,GPF5,GPF6的控制位信息,如图:

我们发现,当GPFCON寄存器的GPF4,GPF5,GPF6的控制位设置为01时,表示控制输出,这正是我们想要的。在看看它们的数据位是怎么设置的,如图:

由表格可知,当端口被配置为输出端口时,它的引脚状态和相应的位相同。也就是说,如果我想让LED1亮,那么我就要把它对应的GPF4配置为输出,然后将GPFDAT的第4位设置为0.

再看看按键对应的寄存器怎么配置,上面说到S2,S3,S4对应的控制寄存器相应的位是GPF0,GPF2和GPG3

由于按键是个输入设备,所以我们需要将GPF0,GPF2,GPG3的位设置为00。到此,LED和按键寄存器我们已经配置好了,下面看一下代码:

首先是一段汇编代码,由这段汇编代码引导到main函数,同时进行相应的硬件配置


下面主程序:

#define GPFCON (*(volatile unsigned long *)0x56000050)
#define GPFDAT (*(volatile unsigned long *)0x56000054)
#define GPGCON (*(volatile unsigned long *)0x56000060)
#define GPGDAT (*(volatile unsigned long *)0x56000064)
/*
* LED1,LED2,LED4对应GPF4、GPF5、GPF6
*/
#define GPF4_out (1<<(4*2))
#define GPF5_out (1<<(5*2))
#define GPF6_out (1<<(6*2))
#define GPF4_msk (3<<(4*2))
#define GPF5_msk (3<<(5*2))
#define GPF6_msk (3<<(6*2))
/*
* S2,S3,S4对应GPF0、GPF2、GPG3
*/
#define GPF0_msk (3<<(0*2))
#define GPF2_msk (3<<(2*2))
#define GPG3_msk (3<<(3*2))
int main()
{
unsigned long dwDat;
// LED1,LED2,LED4对应的3根引脚设为输出,将这些位清零
//先把9,、9、10、11、12、13位清零,然后或操作设为输出01
GPFCON &= ~(GPF4_msk | GPF5_msk | GPF6_msk);
GPFCON |= GPF4_out | GPF5_out | GPF6_out;
// S2,S3对应的2根引脚设为输入
GPFCON &= ~(GPF0_msk | GPF2_msk);
// S4对应的引脚设为输入
GPGCON &= ~GPG3_msk;
while(1){
//若Kn为0(表示按下),则令LEDn为0(表示点亮)
dwDat = GPFDAT; // 读取GPF管脚电平状态
if (dwDat & (1<<0))        // S2没有按下
GPFDAT |= (1<<4);       // LED1熄灭
else
GPFDAT &= ~(1<<4);      // LED1点亮
if (dwDat & (1<<2))         // S3没有按下
GPFDAT |= (1<<5);       // LED2熄灭
else
GPFDAT &= ~(1<<5);      // LED2点亮
dwDat = GPGDAT; // 读取GPG管脚电平状态
if (dwDat & (1<<3))         // S4没有按下
GPFDAT |= (1<<6);       // LED3熄灭
else
GPFDAT &= ~(1<<6);      // LED3点亮
}
return 0;
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    237

    文章

    22413

    浏览量

    645746
  • 电路图
    +关注

    关注

    10207

    文章

    10644

    浏览量

    509667
  • 控制寄存器
    +关注

    关注

    0

    文章

    34

    浏览量

    11432
  • jz2440
    +关注

    关注

    0

    文章

    2

    浏览量

    4528
收藏 人收藏

    评论

    相关推荐

    简单实用的3种led恒流驱动电路图

    简单实用的3种led恒流驱动电路图
    的头像 发表于 01-24 17:51 3320次阅读
    简单实用的3种<b class='flag-5'>led</b>恒流驱动<b class='flag-5'>电路图</b>

    单片机如何点亮LED

    现在LED接好了,那么要怎样点亮LED呢?
    的头像 发表于 11-01 11:36 1326次阅读
    单片机如何<b class='flag-5'>点亮</b><b class='flag-5'>LED</b>灯

    天花板嵌入式led电路图

    天花板嵌入式led电路图  天花板嵌入式LED灯是一种现代家居装饰中常见的一种照明灯具。它不仅可以起到照明作用,还可以增加空间的美感和整体的装饰效果。本文将详细介绍天花板嵌入式LED
    的头像 发表于 10-16 16:29 1951次阅读
    天花板嵌入式<b class='flag-5'>led</b>灯<b class='flag-5'>电路图</b>

    RA-RTT体验零代码点亮LED

    介绍如何零代码体验点亮LED灯。
    发表于 10-12 12:43 169次阅读
    RA-RTT体验零代码<b class='flag-5'>点亮</b><b class='flag-5'>LED</b>灯

    S3C2440开发板上实现按键点亮LED驱动开发的详细过程

    电子发烧友网站提供《S3C2440开发板上实现按键点亮LED驱动开发的详细过程.pdf》资料免费下载
    发表于 10-11 09:36 0次下载
    S3C<b class='flag-5'>2440</b>开发板上实现按键<b class='flag-5'>点亮</b><b class='flag-5'>LED</b>驱动开发的详细过程

    STC89C52RC点亮LED

    请问这块板子如何点亮LED?我的程序和烧录都弄好了就是不会
    发表于 10-06 17:44

    为什么有的万用表led

    为什么有的万用表led
    发表于 09-20 07:37

    1.5伏点亮led电路图

    LED的压降通常都在2V/3V之上,一节干电池无法点亮。这个电路采用变通方法,将电解电容充电后串接于LED和电源回路中,相当于提高电压使得LED
    的头像 发表于 07-26 17:03 1908次阅读
    1.5伏<b class='flag-5'>点亮</b><b class='flag-5'>led</b>灯<b class='flag-5'>电路图</b>

    用中继实现启保停电路图,转梯形到软件里

    电路图
    YS YYDS
    发布于 :2023年07月06日 21:53:50

    基于树莓派点亮RGB三基色LED

    上一篇实现了树莓派的第一个基础实验——点亮双色LED灯,并了解了树莓派GPIO的基本用法。如果你已经成功完成过树莓派双色LED灯实验,并且对深入树莓派玩法有更多的兴趣的话,那么我们进一步尝试
    的头像 发表于 07-04 11:34 1240次阅读
    基于树莓派<b class='flag-5'>点亮</b>RGB三基色<b class='flag-5'>LED</b>灯

    N76E003需要点亮LED灯,可是烧了几次LED灯就是不的原因?

    准备学下新唐的N76E003的单片机,买 了个小板,先从学习点亮一个LED灯开始。这几行程序应该没问题,没有错误也没有警告。可是烧了几次LED灯就是不。那问题肯定是出在头文件上了,已
    发表于 06-21 06:47

    #电路图 #数码科技 圆屏 esp32

    电路图
    学习电子知识
    发布于 :2023年05月28日 20:48:43

    基于单片机点亮LED

    用单片机来点亮LED灯就像用C语言输出“hello world”一样,是入门的第一课。
    的头像 发表于 05-24 14:25 1494次阅读
    基于单片机<b class='flag-5'>点亮</b><b class='flag-5'>LED</b>灯

    汇编点亮LED灯——极简的魅力

    介绍4句汇编语言点亮LED
    的头像 发表于 04-27 08:58 78.7w次阅读
    汇编<b class='flag-5'>点亮</b><b class='flag-5'>LED</b>灯——极简的魅力

    如何设计一个助听器的电路图呢?

      要设计一个助听器的电路图,你需要遵循以下步骤:  确定助听器的电路类型:根据助听器的类型(如盒式助听器、耳背式助听器等),选择合适的电路类型。  确定电路中的元器件:根据助听器的需
    发表于 04-20 11:49