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

📄 text1.c

📁 Keil 3环境下ARM7处理器LPC2131的SPI总线读写程序
💻 C
字号:

#include"config.h"

#define spi_cs 1<<2	   //8个LED	连到P1.18至P1.25


#define CMD_RESET 0xa4 //复位指令
#define DECODE1 0xc8 //方式1 译码指令,用来向HD7279 写数据以便显示
#define CMD_READ 0x15 //读键盘数据指令
#define CMD_TEST 0xbf //测试指令
#define DECODE0 0x80 //方式0译码指令,
#define UNDECODE 0x90 //下载数据但不译码
#define RTL_CYCLE 0xa3 //循环左移指令
#define RTR_CYCLE 0xa2 //循环右移指令
#define RTL_UNCYL 0xa1 //左移指令
#define RTR_UNCYL 0xa0 //右移指令
#define ACTCTL 0x98 //消隐控制指令
#define SEGON 0xe0 //段点亮指令
#define SEGOFF 0xc0 //段关闭指令
#define BLINKCTL 0x88 //闪烁控制指令

void spi_init(void)	;
void  delay(uint32 x);

void write7279(unsigned char, unsigned char);//写入HD7279
void spi_send_byte(unsigned char); //发送一个字节


main()
{

	unsigned char i;

	spi_init();

	delay(70);            //上电延时
	spi_send_byte(CMD_RESET); //复位HD7279A
	delay(10);            //上电延时

	for (i=0;i<8;i++)
	{
	
	    write7279(DECODE1+i,i+1);//数码管从左到右显示1~8
		delay(5);
	}

	delay(100); //延时

/*	for (k=0;k<64;k++)
	{
		write7279(SEGON,k); // 将64个显示段逐个点亮
		delay(100);
	}	*/

	while (1) ;
	   
}

void write7279(unsigned char cmd, unsigned char dta)//写数据函数
{ //cmd 为指令,dta 为写入的数据
	spi_send_byte (cmd);

	spi_send_byte (dta);
}

 
void spi_send_byte( unsigned char out_byte) //发送一个字节
{

	IO0CLR=spi_cs;

	SPI_SPDR=out_byte;
	while((SPI_SPSR&0x80)==0) ;

	IO0SET=spi_cs;

}


void  delay(uint32 x)
{
	uint32 y,z;
	for(y=0;y<x;y++)
	   for(z=0;z<10000;z++);
}

void spi_init(void)
{
	PINSEL0=(PINSEL0&0xffff00ff)|0x00005500;	//P1口设为GPIO
	IO0DIR=spi_cs;
	SPCCR=0xf0;//0x52;
	SPCR=(0<<3)|(1<<5)|(0<<6)|(0<<7);//	|(1<<4)
//	IO1DIR|=led8;		    //设为输出方向
}

⌨️ 快捷键说明

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