⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 ARM仿真案例
💻 C
字号:
/*******************************************************************************
*File: Main.c
*功能: LED数码管显示0-F字符,同时控制4个LED显示对应的十六进制
*******************************************************************************/
#include  "config.h"
#define   SPI_CS    0x00000100            /*P0.8*/
#define   SPI_DATA  0x00000040            /*P0.6*/
#define   SPI_CLK   0x00000010            /*P0.4*/
#define   BEEP      0x00000080            /*P0.7为蜂鸣器控制*/
#define   SPI_IOCON 0x00003DD0            /*SPI接口的I/O设置字*/

/*******************************************************************************
*名称: DelayNS()
*功能: 长软件延时
*******************************************************************************/
void DelayNS(uint32 dly)
{  uint32  i;
   for (;dly>0;dly--)
      for(i=0;i<50000;i++);
}
/*******************************************************************************
*名称: HC595_SendDat()
*功能: 向74HC595发送一字节数据
*说明: 发送数据时,高位先发送
*******************************************************************************/
void HC595_SendDat(uint8 dat)
{ uint8 i;
  IOCLR=SPI_CS;                                  //SPI_CS=0
  for (i=0;i<8;i++)                              //发送8位数据
  { IOCLR=SPI_CLK;                               //SPI_CLK=0
  /*设置SPI的DATA输出值*/
  if((dat&0x80)!=0)IOSET=SPI_DATA;
    else IOCLR=SPI_DATA;
    dat<<=1; 
    IOSET=SPI_CLK;                                    //SPI_CLK=1
  }
  IOSET=SPI_CS;                                  //SPI_CS=1,输出显示数据
}
/*******************************************************************************
*名称: main()
*功能: 控制LED数码管显示,并控制4个LED显示
*******************************************************************************/
int main(void)
{ const uint8 DISP_TAB[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,
                            0x88,0x83,0xC6,0xA1,0x86,0x8E};
  uint8 i;
 

  PINSEL0=0x00000000;                 //设置所有引脚连接GPIO
  PINSEL1=0x00000000;
  
  IODIR=SPI_IOCON;                   //设置SPI控制口为输出
  while(1)
  { for (i=0;i<16;i++)
    { HC595_SendDat(DISP_TAB[i]);      //输出LED显示数据
       
      IOSET=0x00003C00;
      IOCLR=i<<10;                     //设置LED显示输出
      DelayNS(50);
      
      /*控制蜂鸣器报警*/
      
      IOSET=BEEP;
      DelayNS(10);                     //延时
      IOCLR=BEEP;
      DelayNS(10);                     //延时
   } 
  }
  return(0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -