📄 main.c
字号:
#include <LPC21XX.H>
#include "uart0.h"
#define HC595_CS 0x00000100 /*P0.8口为第一个74HC595的片选*/
#define HC595_CS2 0x00000200 /*P0.9口为第二个74HC595的片选*/
#define HC595_CS3 0x00000400 /*P0.10口为第三个74HC595的片选*/
typedef unsigned int uint32;
typedef unsigned char uint8;
char status[] = "Everytnig is fine.";
uint8 const DISP_TAB[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
uint8 rcv_data;
void delay(void) {
unsigned volatile long i,j;
for(i=0;i<10000;i++)
for(j=0;j<30;j++)
;
}
void spiInit(void){
S0SPCCR=0x52; /*设置SPI时钟分频*/
S0SPCR=0x30; /*设置SPI接口模式*/
}
uint8 spiChar(uint8 data){
IO0CLR=HC595_CS; /*SPI1片选*/
S0SPDR=data;
while(0==(S0SPSR&0x80)); /*等待SPIF置位,即等待数据发送完毕*/
IO0SET=HC595_CS;
return(S0SPDR);
}
uint8 spi2Char(uint8 data){
IO0CLR=HC595_CS2; /*SPI2片选*/
S0SPDR=data;
while(0==(S0SPSR&0x80));
IO0SET=HC595_CS2;
return(S0SPDR);
}
uint8 spi3Char(uint8 data){
IO0CLR=HC595_CS3; /*SPI3片选*/
S0SPDR=data;
while(0==(S0SPSR&0x80));
IO0SET=HC595_CS3;
return(S0SPDR);
}
int main(void){
uint8 i;
PINSEL0 = 0x00005505; /*引脚开SPI、UART0*/
IO0DIR=HC595_CS|HC595_CS2|HC595_CS3;
spiInit(); /*初始化SPI接口*/
uart0Init();
while(1){
for (i=0;i<16;i++) {
if(i<10){putchar(i+'0');}
else{putchar(i+7+'0');}
rcv_data=spiChar(DISP_TAB[i]); /*发送显示数据到数码显示管1*/
rcv_data=spi2Char(DISP_TAB[15-i]); /*数码显示管2*/
rcv_data=spi3Char(DISP_TAB[0]); /*数码显示管2*/
delay();
}
serialPuts(status);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -