JZ2440点亮LED电路图设计案例

发布时间:2023-01-09  

在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<#define GPF5_out (1<#define GPF6_out (1<#define GPF4_msk (3<#define GPF5_msk (3<#define GPF6_msk (3</*

* S2,S3,S4对应GPF0、GPF2、GPG3

*/

#define GPF0_msk (3<#define GPF2_msk (3<#define GPG3_msk (3<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;

}


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    220V/200W的闪光灯电路图分享;这是220V/200W的闪光灯电路图。灯闪烁的频率/速度可以在1Hz到5Hz的范围内调节。您可以使用 PR1 可变电阻器(微调器)来调整闪烁速度。灯闪......
    51单片机流水灯电路图大全;  51单片机流水灯电路图(一)   本原理图采用STC89S52单片机控制8个LED灯,其中8个LED灯的负极接单片机的P1端口,正极通过1KΩ排阻连接到电源上。原理......
    5款电子diy制作电路图;电路1:简易声控闪光灯的制作 电路2:音乐门铃的制作 电路3:多功能报警器的制作 电路4: :节拍器的制作 电路5:汽车转向灯电路的制作 ......
    为绝大多数负载除阻性外,多数为感性负载,因此补偿的时候多数就用电容来补偿,所以,纯容性负载用得比纯感性负载多。如电动机,变压器等等,通常为感性负载。部分日光灯为容性负载。举例:纯感性负载就是一组电感。通常用来补偿电路......
    一个便携式的230V大功率白炽灯闪光器电路图;这是一个便携式的230V大功率白炽灯闪光器电路图。它实际上基本上是一个双闪光灯(交替闪光灯),可以管理两个不同的230V交流负载(灯泡L1和L2......
    MAX8834Z数据手册和产品信息;MAX8834Y/MAX8834Z闪光灯驱动器集成了1.5A PWM DC-DC升压转换器和三路可编程、低边、低压差LED电流调节器。升压......
    LTC3218数据手册和产品信息;IN DSC (数码相机) /蜂窝电话的 LED 手电筒/闪光灯电源 LTC3218 是一款低噪声、高电流充电泵 DC/DC 转换器,能够从一个 2.9V 至......
    不间断照明系统的成本很高,同时,经过多次变换。功耗也较大。 近年来由直流电源供电的半导体照明灯(LED)得到迅速发展,这种照明灯比白炽灯节电90% ,在同等功率下LED比普通日光灯和高压钠灯的发光强度高40%以上。而且......
    电流进行编程。为了使整个闪光灯亮度较大,ADP1653提供输入可以在50 μs内降低闪光灯电流,即Tx mask。在RF传输过程中,Tx masking可以通过降低LED电流......
    封装。 Applications 用于蜂窝电话、PDA 和数码相机的 LED 电筒 / 相机照明灯电源 普通照明和 / 或闪光灯 / 频闪灯应用......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>