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

📄 wled0.c

📁 C8051F系列单片机外围电路功能模块程序
💻 C
字号:
//参考程序B:WLED0.C程序功能: 数码管将轮流点亮,显示从"0"到"F"
#include <c8051f020.h>                    
#define SYSCLK 2000000                    //系统工作频率
#define PORTA		0x8000      // 8255  A口地址
#define	PORTB		0x8001      // 8255  B口地址
#define	PORTC		0x8002      // 8255  C口地址
#define	PORTCON		0x8003      // 8255  控制口地址
void PORT_Init (void);
void main (void) 
{
unsigned int i;
unsigned char  k;
char j;
unsigned char xdata * Pointm;
unsigned char code F7SEG[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
   	WDTCN = 0xde;          //禁止看门狗定时器
   	WDTCN = 0xad;
   	PORT_Init ();
	Pointm=PORTCON;
	*Pointm=0x80;		//8255初始化,设定B口输出,C口输出,A口不用
while(1)                //循环显示
    {
	for(j=0;j<16;j++)    //依次显示"0"-----"F",共16个数字
{
	k=F7SEG[j];	         // 查表,得到字形码数值存放在变量K中
    //k=0x3f;
									  
	Pointm=PORTB;          // B口存放字位码
	*Pointm=0x01;          //从左边第一位数码管开始显示数字
	Pointm=PORTC;          //C口存放字形码
    *Pointm=k;                 //显示K中存放的字形码
	for(i=0;i<=32000;i++);      //延时
    Pointm=PORTB;     
	*Pointm=0x02;                //左边第二位数码管开始显示数字
	for(i=0;i<=32000;i++);
	Pointm=PORTB;
	*Pointm=0x04;              //左边第三位数码管开始显示数字
	for(i=0;i<=32000;i++);
	Pointm=PORTB;
	*Pointm=0x08;               //左边第四位数码管开始显示数字
	for(i=0;i<=32000;i++);
	Pointm=PORTB;
	*Pointm=0x10;               //左边第五位数码管开始显示数字
	for(i=0;i<=32000;i++);
	Pointm=PORTB;
	*Pointm=0x20;                //左边第六位数码管开始显示数字
	for(i=0;i<=32000;i++);
	}
  }
}
void PORT_Init (void)
{
   EMI0CF |= 0x2c;	/*EMIF工作在地址/数据复用方式,只用外部存储器,ALE高*/
/*低脉宽占1个SYSCLK周期*/
   EMI0TC |= 0x6d;		/*地址建立/保持时间占1个SYSCLK周期,/WR和/RD占12个SYSCLK周期*/
   P74OUT=0x3f;         /*P7为漏极开路,P4,P5,P6为推拉方式*/
}

⌨️ 快捷键说明

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