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

📄 main.c

📁 ARM7(LPC2124)学习的一些例程
💻 C
字号:
#include<LPC21xx.h>

#define UART0 0x00000005;
#define SPI0 0x00005500		//P0.4(SCK),P0.6(MOSI),P0.7(SSEL),UART0(P0.0,P0.1)
#define HC595_CS1 0x00000100	//595片选P0.8
#define HC595_CS2 0x00000200	//595片选P0.9
#define HC595_CS3 0x00000400	//595片选P0.10

#define CR 0x0D				//回车键

typedef unsigned char uint8;
typedef unsigned int uint32;
typedef char int8;

uint8 const DISP_TAB[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
char *msg = "Everything is OK!\n";

void delay(void)  {                         
  unsigned volatile long i,j;
  for(i=0;i<10000;i++)
	for(j=0;j<30;j++);
}


void spi0_init(void)
{
	S0SPCCR = 0x52;		//设置SPI时钟分频比
	S0SPCR = 0x30;		//主机模式,MSB先发送,无中断
	PINSEL0 |= SPI0;	//设置端口工作模式
	IO0DIR |= HC595_CS1 + HC595_CS2 + HC595_CS3;	//P0.8输出
}

uint8 spi01_send_data(uint8 sdat)
{
	IO0CLR = HC595_CS1;	//拉低片选
	S0SPDR = sdat;
	while(!(S0SPSR & 0x80));	//等待发送完成
	IO0SET = HC595_CS1;	//拉高片选
	return sdat;
}

uint8 spi02_send_data(uint8 sdat)
{
	IO0CLR = HC595_CS2;	//拉低片选
	S0SPDR = sdat;
	while(!(S0SPSR & 0x80));	//等待发送完成
	IO0SET = HC595_CS2;	//拉高片选
	return sdat;
}

uint8 spi03_send_data(uint8 sdat)
{
	IO0CLR = HC595_CS3;	//拉低片选
	S0SPDR = sdat;
	while(!(S0SPSR & 0x80));	//等待发送完成
	IO0SET = HC595_CS3;	//拉高片选
	return sdat;
}

void uart0_init(void)
{
	PINSEL0 |= UART0;
	U0LCR = 0x83;		//DLAB=1,8 bit, 1 stop, no parity
	U0DLL = 122;		//15MHz晶振,9600
	U0LCR = 0x03;		//DLAB = 0;
}

int8 putchar (int8 ch)  {                //向串口输出一个字符
  if (ch == '\n')  {                     //发送回车符
    while (!(U0LSR & 0x20));             //等待发送完成
    U0THR = CR;	        
  }
  while (!(U0LSR & 0x20));
  return (U0THR = ch);
}

void puts(char *p){                 	//向串口输出字符串
  while (*p != '\0'){
  	putchar(*p++);
  }
}

int main(void)
{
	int i = 0;
	uart0_init();
	spi0_init();
	while(1)
	{
		for(i = 0;i<16;i++)
		{
			if(i<10)
				putchar(i+'0');
			else
				putchar(i+7+'0');
			spi01_send_data(DISP_TAB[i]);   //发送显示数据
			spi02_send_data(DISP_TAB[16-i]);
			spi03_send_data(DISP_TAB[1]);
			delay();
		}
		puts(msg);
	}
}

⌨️ 快捷键说明

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