数码管的秘密

环境:

Cortex-M0

LPC1114FBD48/301

数码管 7SEG-COM-ANODE

1  在数码管上显示指定的数字

将数码管的7个引脚对应连接到控制器的PIO2_0~PIO2_6引脚上

原理图:

源代码:

/* Main.c file generated by New Project wizard
 *
 * Created:   周日 2月 16 2020
 * Processor: LPC1114FBD48/301
 * Compiler:  GCC for ARM
 */

#include <LPC11xx.h>

int main (void)
 {
   // Write your code here
   LPC_SYSCON->SYSAHBCLKCTRL |=(1<<6);
   LPC_GPIO2->DIR=0x7F;
    while (1)
   {
      LPC_GPIO2->DATA=0x24;//0010 0100‬ 2,5号高点平,不亮
   }
   return 0;
 }   

仿真后结果如图

 7数码管引脚图,在网上找的图,脚的分布位置不一样,但对应关系是一样的

2  给数码管加一个开关

代码:

/* Main.c file generated by New Project wizard
 *
 * Created:   周日 2月 16 2020
 * Processor: LPC1114FBD48/301
 * Compiler:  GCC for ARM
 */

#include <LPC11xx.h>
void Delay(unsigned i)
{
   while(i!=0)
      i--;
}

int main (void)
 { 
   // Write your code here
   LPC_SYSCON->SYSAHBCLKCTRL |=(1<<6);
   LPC_GPIO2->DIR=0xFF;
   LPC_GPIO3->DIR=0x01;
   LPC_GPIO3->DATA=0x01; //数码管开关
    while (1)
   {
      LPC_GPIO2->DATA=0x40; Delay(80000);
      LPC_GPIO2->DATA=0xF9; Delay(80000);
      LPC_GPIO2->DATA=0x24; Delay(80000);
      LPC_GPIO2->DATA=0x30; Delay(80000);
      LPC_GPIO2->DATA=0x19; Delay(80000);
      LPC_GPIO2->DATA=0x12; Delay(80000);
      LPC_GPIO2->DATA=0x02; Delay(80000);
      LPC_GPIO2->DATA=0x78; Delay(80000);
      LPC_GPIO2->DATA=0x00; Delay(80000);
      LPC_GPIO2->DATA=0x10; Delay(80000);
   }
   return 0;
 }   

将NPN晶体管,连接到电源和数码管的公共电极之间 NPN晶体管的基极,通过一个上拉电阻,连接到PIO3_0引脚上

原理图

仿真结果,数码管循环出现1-9

至于那个上拉电阻,是得加的,防止短路,当PIO3_0输出0的时候,若不加,则短路,也起不到控制开关的作用。

第四步完成

猜你喜欢

转载自www.cnblogs.com/caishunzhe/p/12315752.html