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

📄 main.#3

📁 基于动态显示的LED显示驱动程序,所显示的数据由串口输入
💻 #3
字号:
//main.c
#include <E:\ProgramFiles\SiLabs\MCU\IDEfiles\C51\Inc\c8051F310.h>
#include <intrins.h>
#define NOPP _nop_();_nop_();_nop_();_nop_()
#define NOP  NOPP;NOPP;NOPP


//------------------数据定义--------------------------------------------
//显示码
#include "led_code.c"
//char code led[10] = {0x14,0xD7,0x4C,0x45,0x87,0x25,0x24,0x57,0x04,0x05};
//显示缓冲区
char data num[3][4]= {
						{'*'-32,'1'-32,'$'-32,'%'-32},
						{'('-32,'4'-32,'#'-32,'&'-32},
						{')'-32,'!'-32,'\"'-32,'\''-32}
					 };
//通信缓冲区
char data numBuff[3][4] = {0};
//74HC373使能信号
sbit cs373 = P3^4;
//数码管片选信号
char data select;
//***************


//------------------函数定义---------------------------------------------
//初始化函数
void init()
{
	
	XBR0 = 0x02;
	SPI0CFG = 0x00;
	SPIEN = 1;

	////////////////
	ESPI0 = 1;
	EA = 1;
	EA = 1;
	NOP;
	NOP;	
	XBR1 = 0x40;
	cs373 = 0;
}

//SPI中断函数
void spi_int() interrupt 6
{
	static unsigned char BuffRowCount = 0;
	static unsigned char BuffLineCount = 0;
	if(_testbit_(SPIF))
	{
		numBuff[BuffRowCount][BuffLineCount] = SPI0DAT;
		if(BuffLineCount==3)
		{
			BuffLineCount=0;
			if(BuffRowCount==2)
			{
				for(BuffRowCount=0;BuffRowCount<3;BuffRowCount++)
					for(BuffLineCount=0;BuffLineCount<4;BuffLineCount++)
						num[BuffRowCount][BuffLineCount] =
								numBuff[BuffRowCount][BuffLineCount]-32;
				BuffRowCount=0;
				BuffLineCount=0;
			}

			else BuffRowCount++;
		}
		else BuffLineCount++;

	}

}

//延时函数
void delay(unsigned int delayor)
{
	unsigned int i;
	unsigned char j;
	for(j=0;j<235;j++)
	{
		 _nop_();_nop_();
		 _nop_();_nop_();
	}
		 _nop_();
		 _nop_();
		 _nop_();
	delayor--;
	for(i=0;i<delayor;i++)
	{
		_nop_();
		for(j=0;j<235;j++) 
		{
			  _nop_();_nop_();
			  _nop_();_nop_();
			  _nop_();_nop_();
			  _nop_();_nop_();
		}
	}
}


//主函数
main()
{
	unsigned char i;
	init();
	select = 0xDD;
	while(1)
	{
		for(i=0;i<4;i++)
		{
			P2 = char_code[num[0][i]];
			cs373 = 1;
			NOP;
			cs373 = 0;
			P2 = char_code[num[1][i]];
			P1 = char_code[num[2][i]];
			delay(5);
			P0 = select;
			select = _crol_(select,1);
		}
	}
}

⌨️ 快捷键说明

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