📄 main.c
字号:
/*===========================================================================
CopyLeft(CL) FORVERE Late Lee
All rights NOT reserved
版权所无,翻版不究,但请保留此处信息。
http://blog.ednchina.com/guiltcool
any problem or suggestion
mail to: latelee@163.com
*文件名:
*文件说明:
*版本: v1.0
*芯片: lpc2103
*晶振: (外)内部10MHz晶振
*作者: Late Lee
*日期: 2009年4月5日 noon
*编译环境: keil3+proteus7
*tab Width:
*结果: 仿真通过
*说明: 四位数码管依次显示0~F,分四次
=============================================================================*/
#include<lpc210x.h>
#define SPI_CLK 0x00000001 /*P0.0*/
#define SPI_DATA 0x00000002 /*P0.1*/
#define SPI_CS 0x00000004 /*P0.2*/
void DelayNS(int dly)
{ int i;
for (;dly>0;dly--)
for(i=0;i<1000;i++);
}
void HC595_SendDat(unsigned char dat,unsigned char position)
{ int i;
IOCLR=SPI_CS; //SPI_CS=0
IOCLR = 0x00000f00;
// 注意:这里的算术运算优先级高于移位运算!
// 此处是将第position+8的那一位置1,即选择这一位
IOSET = 1 << position + 8;
for (i=0;i<8;i++) //发送8位数据
{
IOCLR=SPI_CLK; //SPI_CLK=0
/*设置SPI的DATA输出值*/
if((dat&0x80)!=0) IOSET=SPI_DATA;
else IOCLR=SPI_DATA;
dat<<=1;
IOSET=SPI_CLK; //SPI_CLK=1
}
IOSET=SPI_CS; //SPI_CS=1,输出显示数据
}
int main()
{
const unsigned char DISP_TAB[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,
0x88,0x83,0xC6,0xA1,0x86,0x8E};
int i = 0,position = 0,num =4;
unsigned long time = 0;
IODIR=0x00000f07;
while(1)
{
// 0~3
while(1)
{
for (i= 0;i<num;i++)
{
HC595_SendDat(DISP_TAB[i],position++);
DelayNS(5);
if(position == 4) position=0;
}
time++;
if(time == 50) break;
}
position = 0;
num = 8;
time=0;
// 4~7
while(1)
{
for (i=4;i<num;i++)
{
HC595_SendDat(DISP_TAB[i],position++);
DelayNS(5);
if(position == 4) position=0;
}
time++;
if(time == 50) break;
}
position = 0;
num = 12;
time=0;
// 8~B
while(1)
{
for (i=8;i<num;i++)
{
HC595_SendDat(DISP_TAB[i],position++);
DelayNS(5);
if(position == 4) position=0;
}
time++;
if(time == 50) break;
}
num = 16;
time=0;
// C~F
while(1)
{
for (i=12;i<num;i++)
{
HC595_SendDat(DISP_TAB[i],position++);
DelayNS(5);
if(position == 4) position=0;
}
time++;
if(time == 50) break;
}
num = 4;
time=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -