K7i ARM开发板源码之数码管显示
/****************************************************************
* 文件名:main.c
* 功 能:在开发板上的数码管上显示"LPC2148"
* 作 者:李园
* 日 期:2008年5月5号
* 博 客:blog.csdn.net/liyuanempire
****************************************************************/
#include "config.h"
#define HC595_CS (1<<24) //P1.24作为74HC595的片选
void DelayNS(uint32 dly)
{
uint32 i;
for(;dly>0;dly--)
for(i=0;i<50000;i++);
}
void MSPI_Init(void)
{
PINSEL0=(PINSEL0&0xFFFF00FF)|0x00005500;
SPCCR=0x52;
SPCR=(0<<3)|(1<<4)|(1<<5)|(0<<6)|(0<<7);
}
uint8 MSPI_SendData(uint8 data)
{
IO1CLR=HC595_CS;
SPI_SPDR=data;
while(0==(SPI_SPSR&0x80));
IO1SET=HC595_CS;
return(SPI_SPDR);
}
uint8 const DISP_TAB[]={
0xC7,0x8C,0xC6,0xA4,0xF9,0x99,0x80,
0xC0,0xF9,0xA4,0XB0,0x99,0x92,0x82,0xF8,0x80,0x90,
0x88,0x83,0xC6,0xA1,0x86,0x8E,
0xC7,0x8C,0xC6};
uint8 rcv_data;
int main(void)
{
uint8 i;
PINSEL0=0x00005500;
PINSEL1=0x00000000;
IO1DIR=HC595_CS;
MSPI_Init();
while(1)
{
for(i=0;i<7;i++)
{
rcv_data=MSPI_SendData(DISP_TAB[i]);
DelayNS(50);
}
}
return 0;
}