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

📄 6led.c

📁 七段数码管显示,在上面显示1234567
💻 C
字号:
/*********************************************
 example program for PIC download board
 16F877A @3.6864MHz
 test 6-7seg LED
 www.mcufan.com
*********************************************/
#include	<pic.h>
#include	<pic1687x.h>
__CONFIG(WDTDIS & HS & LVPDIS & DEBUGDIS);
/*该程序用于在8个LED上依次显示1~8等8个字符*/
static volatile unsigned char table[20]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f,0xbf,0x89,0xff};
/*volatile 	unsigned 	char 	data; */
#define 	PORTAIT(adr,bit)  ((unsigned)(&adr)*8+(bit))	/*绝对寻址位操作指令*/
static	bit PORTA_4 @ PORTAIT(PORTA,4); 
/*spi初始化子程序*/
void		SPIINIT()
{
	PIR1=0;		
	SSPCON=0x32;			/* SSPEN=1;CKP=0 , FOSC/64 */
	SSPSTAT=0xC0;
	TRISC=0x03;			/*SDO引脚为输出,SCK引脚为输出*/

}
/*系统各输入输出口初始化子程序*/
void		initial()
{
TRISA=0x00;			/*A口设置为输出*/
	INTCON=0x00;			/*关闭所有中断*/
	PORTA_4=0;				/*LACK送低电平,为锁存做准备*/
}
/*SPI发送子程序*/
void 		SPILED(unsigned char byte)
{
	SSPBUF=byte;			/*启动发送*/
	do
	{
;
	}while(SSPIF==0);		/*等待发送完毕*/
SSPIF=0;				/*清除SSPIF标志*/
	byte=SSPBUF;	
}

/*主程序*/
main()
{
	unsigned 	char  i,data;
	initial();					/*系统初始化*/
	SPIINIT();				/*SPI初始化*/	
	PORTA_4=0;
 		for(i=7;i>0;i--)			/*连续发送8个数据*/
  		{
				data=table[i];			/*通过数组的转换获得待显示的段码*/	
				SPILED(data);		/*发送显示段码显示*/		
  		}
		PORTA_4=1;				/*最后给锁存信号,代表显示任务完成*/
		while(1)
	{
	    PORTA_4=0;
 		for(i=9;i>2;i--)			/*连续发送8个数据*/
  		{
				data=table[i];			/*通过数组的转换获得待显示的段码*/	
				SPILED(data);		/*发送显示段码显示*/		
  		}
		PORTA_4=1;				/*最后给锁存信号,代表显示任务完成*/
	}
}

⌨️ 快捷键说明

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