0
点赞
收藏
分享

微信扫一扫

STC89C52第二练

妖妖妈 2023-10-18 阅读 44

硬件板子外观

STC89C52第二练_数码管

练习目标1

6个数码管,每个数码管依次显示0-9,循环往复

#include <REGX52.H>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char

void Delay(uint);
void main()
{
	uint index1,index2;
	//第几个数码管亮时,P0取值分别是
	uint code lcdindex[6] = {0XFE,0XFD,0XFB,0XF7,0XEF,0XDF};
	/*
	关键字code 表示定义的是编码,而非数组;但是编码定义使用与数组定义使用非常类似;
	单片机中定义数组占用内存空间;定义编码不占用内存空间,直接分配到程序空间中;
	*/
	//数码管显示0-9时,P0取值分别是
	uint code lcdval[10] = {0x3F,0x06,0x5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};
	
	while(1) 
	{
		for(index1=0;index1<6;index1++)
		{
				P2_7 = 1;											//WELA--位选	第几个数码管显示
				P0 =lcdindex[index1];
				P2_7 = 0;
			
				for(index2=0;index2<10;index2++)
				{
						P2_6 = 1;									//DULA--段选	数码管显示内容
						P0 = lcdval[index2];			
						P2_6 = 0;
						Delay(1000);
				}
		}
	}
}
	
void Delay(uint dTime)
{
	uchar data i, j;

	while(dTime--)
	{
		_nop_();
		i = 2;
		j = 199;
		do
		{
			while (--j);
		} while (--i);
	}
}

举报

相关推荐

0 条评论