当前位置:首页 > 单片机 > 单片机
[导读]用ADS1.2编辑的,注意添加target.c,IRQ.s,Startuo.s和mem.scf文件。主程序:/******************************************************************************* *File: Main.c *功能: LED数码管显示0-F字符,同

用ADS1.2编辑的,注意添加target.c,IRQ.s,Startuo.s和mem.scf文件。

主程序:

/*******************************************************************************
*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;
IO0CLR=SPI_CS; //SPI_CS=0
for (i=0;i<8;i++) //发送8位数据
{ IO0CLR=SPI_CLK; //SPI_CLK=0
/*设置SPI的DATA输出值*/
if((dat&0x80)!=0)IO0SET=SPI_DATA;
else IO0CLR=SPI_DATA;
dat<<=1;
IO0SET=SPI_CLK; //SPI_CLK=1
}
IO0SET=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;

IO0DIR=SPI_IOCON; //设置SPI控制口为输出
while(1)
{ for (i=0;i<16;i++)
{ HC595_SendDat(DISP_TAB[i]); //输出LED显示数据

IO0SET=0x00003C00;
IO0CLR=i<<10; //设置LED显示输出
DelayNS(50);

/*控制蜂鸣器报警*/

IO0SET=BEEP;
DelayNS(10); //延时
IO0CLR=BEEP;
DelayNS(10); //延时
}
}
//return(0);
}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭