数码管表白(投稿用)

数码管表白

现在我们设想一个程序:
首先,我们让流水灯一个一个流,然后双向奔赴,到一定程度,全闪。就像感情,只有经过细水长流,双向奔赴,才能开花结果。
接下来,我们让数码管显示520 1314.YU,I CAN By YOUR SIDE FOREVER ,I LOVE YOU 。
我们先让它们一个一个显示出来,最终一句话就全体闪烁一下,最终到I LOVE YOU 的部分,我们就一直闪烁,和LED一起闪烁。

那么,我们开始逐步分析吧:
数字部分是肯定能显示出来的,所以我们研究字母部分就行了
数码管表白(投稿用)_第1张图片
数码管表白(投稿用)_第2张图片
数码管表白(投稿用)_第3张图片
数码管表白(投稿用)_第4张图片

这是大概的情况,虽然我们是沉迷于技术学习的孩子,但是,我们心里时时刻刻都想着对象,你们说是吧!赶紧自己设计一段话,设计好排版,考虑在目前这只有8个数码管的小板子上,表达对你女朋友的爱意吧!当然,你还可以考虑加入蜂鸣器的版本,就是让蜂鸣器唱歌,众所周知,振动是发声的来源,所以,蜂鸣器不同的振动频率和延时效果可以让单片机唱歌,阴乐不分高低!我不会

好嘞,开始编想程序吧!
我们可以考虑把字母的码子,先搞出来:
数码管表白(投稿用)_第5张图片
在这里插入图片描述
数码管表白(投稿用)_第6张图片
好嘞!字母搞出来了!
现在开始把需要的2个定时器都设定好,主程序框架也设定好:
在这里插入图片描述
在这里插入图片描述
这是我们用到的中断
先 主框架:

#include 
#define uchar unsigned char
#define uint unsigned int
uchar t0,t1;
unsigned int code list[]={
     0xc0,0xf9,0x24,0x30,
0x19,0x12,0x02,0xf8,
0x00,0x10,0x08,0x03,
0x46,0x21,0x06,0x0e};

void time0() interrupt 1
{
     
		TH0 = (65536-50000)/256;
		TL0 = (65536-50000)%256;
		t0 +=1;
}
void time1() interrupt 3
{
     
		TH0 = (65536-50000)/256;
		TL0 = (65536-50000)%256;
		t1 +=1;
}
void delay(uint k)
{
     
		uint i = 0;
		uint j = 0;
		for(i=700;i>0;i--)
		{
     
				for(j=0;j<k;j++)
			{
     
					;
			}
		}
}

void initAll()
{
     
	TMOD = 0x00;
	TH0 = (65536 - 50000)/256;
	TL0	= (65536 - 50000)%256;
	TH1 = (65536 - 50000)/256;
	TL1	= (65536 - 50000)%256;
	EA = 1;
	ET0 = 1;
	ET1 = 1;
	TR0 = 1;
	TR1	= 1; 
}
void display()
{
     
	
}
void main(void)
{
     
	
	initAll();
	while(1)
	{
     
	}
}

接下来我们完善整个函数,根据自己想要的情形
我觉得520 1314 太土了,就没用了,加了别的

#include 
#include
#define uchar unsigned char
#define uint unsigned int
uchar t0,t1,wei,duan,flag1;
uchar oled1 = 0xfe;
uchar oled2 = 0x7f;

unsigned int code list[]={
     0xc0,0xf9,0x24,0x30,
0x19,0x12,0x02,0xf8,
0x00,0x10,0x08,0x03,
0x46,0x21,0x06,0x0e};

void time0() interrupt 1
{
     
		TH0 = (65536-50000)/256;
		TL0 = (65536-50000)%256;
		t0 +=1;
}
void time1() interrupt 3
{
     
		TH0 = (65536-50000)/256;
		TL0 = (65536-50000)%256;
		t1 +=1;
}
void delay(uint k)
{
     
		uint i = 0;
		uint j = 0;
		for(i=700;i>0;i--)
		{
     
				for(j=0;j<k;j++)
			{
     
					;
			}
		}
}

void InitAll()
{
     
	TMOD = 0x00;
	TH0 = (65536 - 50000)/256;
	TL0	= (65536 - 50000)%256;
	TH1 = (65536 - 50000)/256;
	TL1	= (65536 - 50000)%256;
	EA = 1;
	ET0 = 1;
	ET1 = 1;
	TR0 = 1;
	TR1	= 1; 
}
//void DisplayLed1()
//{
     
//	again:	
//		if(flag1 != 8)
//		{
     
//			flag1 += 1;
//			P2=((P2&0x1f)|0x80);
//			P0=oled1;
//			P2 &= 0x1f;
//			oled1 = _crol_(oled1,1);
//			t0 = 0;
//			goto again;
//		}
//		else
//			{
     
//				P2=((P2&0x1f)|0x80);
//				P0=0x00;
//				P2 &= 0x1f;
//				delay(100);
//				P2=((P2&0x1f)|0x80);
//				P0=0xff;
//				P2 &= 0x1f;
//				delay(100);
//				P2=((P2&0x1f)|0x80);
//				P0=0x00;
//				P2 &= 0x1f;
//			}

//}
//void DisplayLed2()
//{
     
//		oled2 = 0x7f;
//		P2=((P2&0x1f)|0x80);
//		P0=oled2;
//		P2 &= 0x1f;
//		oled2 = _cror_(oled2,1);
continue....	
//}
//void DisplaySmg1()
//{
     
//		wei = 0x01, 
5
//	  P2=((P2&0x1f)|0xc0);
//		P0=wei;
//		P2 &= 0x1f;
//		P2=((P2&0x1f)|0xe0);
//		P0=list[5];
//		P2 &= 0x1f;
//		delay(500);
2
//		wei<<=1;
//	  P2=((P2&0x1f)|0xc0);
//		P0=wei;
//		P2 &= 0x1f;
//		P2=((P2&0x1f)|0xe0);
//		P0=list[2];
//		P2 &= 0x1f;
//		delay(500);
0
//		wei<<=1;
//	  P2=((P2&0x1f)|0xc0);
//		P0=wei;
//		P2 &= 0x1f;
//		P2=((P2&0x1f)|0xe0);
//		P0=list[0];
//		P2 &= 0x1f;
//		delay(500);
1
//		wei<<=2;
//	  P2=((P2&0x1f)|0xc0);
//		P0=wei;
//		P2 &= 0x1f;
//		P2=((P2&0x1f)|0xe0);
//		P0=list[1];
//		P2 &= 0x1f;
//		delay(500);
3
//		wei<<=1;
//	  P2=((P2&0x1f)|0xc0);
//		P0=wei;
//		P2 &= 0x1f;
//		P2=((P2&0x1f)|0xe0);
//		P0=list[3];
//		P2 &= 0x1f;
//		delay(500);
1
//		wei<<=1;
//	  P2=((P2&0x1f)|0xc0);
//		P0=wei;
//		P2 &= 0x1f;
//		P2=((P2&0x1f)|0xe0);
//		P0=list[1];
//		P2 &= 0x1f;
//		delay(500);
4	
//		wei<<=1;
//	  P2=((P2&0x1f)|0xc0);
//		P0=wei;
//		P2 &= 0x1f;
//		P2=((P2&0x1f)|0xe0);
//		P0=list[4];
//		P2 &= 0x1f;
//		delay(500);
//}
void DisplaySmg2()
{
     
		wei = 0x01, 
//y
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0x91;
		P2 &= 0x1f;
		delay(500);
//u
		wei<<=1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0xc1;
		P2 &= 0x1f;
		delay(500);
//i
		wei<<=2;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0xcf;
		P2 &= 0x1f;
		delay(500);
//c
		wei<<=2;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0x46;
		P2 &= 0x1f;
		delay(500);
//a
		wei<<=1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0x08;
		P2 &= 0x1f;
		delay(500);
//n
		wei<<=1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0xc8;
		P2 &= 0x1f;
		delay(500);
}

void DisplaySmg3()
{
     
		wei = 0x02, 
//b
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0x03;
		P2 &= 0x1f;
		delay(500);
//e
		wei<<=1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0x06;
		P2 &= 0x1f;
		delay(500);
//b
		wei<<=2;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0x03;
		P2 &= 0x1f;
		delay(500);
//y
		wei<<=1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0x91;
		P2 &= 0x1f;
		delay(500);

}
void DisplaySmg4()
{
     
		wei = 0x01, 
//y
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0x91;
		P2 &= 0x1f;
		delay(500);
//0
		wei<<=1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0xc0;
		P2 &= 0x1f;
		delay(500);
//u
		wei<<=1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0xc1;
		P2 &= 0x1f;
		delay(500);
//r
		wei<<=1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0xce;
		P2 &= 0x1f;
		delay(500);
//s
		wei<<=1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0x12;
		P2 &= 0x1f;
		delay(500);
//i
		wei<<=1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0xcf;
		P2 &= 0x1f;
		delay(500);
//d
		wei<<=1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0x21;
		P2 &= 0x1f;
		delay(500);
//e
		wei<<=1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0x06;
		P2 &= 0x1f;
		delay(500);
}
	void DisplaySmg5()
{
     
		wei = 0x01;
//i
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0xcf;
		P2 &= 0x1f;
		delay(500);
//l
		wei<<=1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0xc7;
		P2 &= 0x1f;
		delay(500);
//0
		wei<<=1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0xc0;
		P2 &= 0x1f;
		delay(500);
//v
		wei<<=1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0xc1;
		P2 &= 0x1f;
		delay(500);
//e
		wei<<=1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0x06;
		P2 &= 0x1f;
		delay(500);
//y
    wei <<= 1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0x91;
		P2 &= 0x1f;
		delay(500);
//0
		wei<<=1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0xc0;
		P2 &= 0x1f;
		delay(500);
//u
		wei<<=1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0xc1;
		P2 &= 0x1f;
		delay(500);
}
void DisplaySmg6()
{
     
		wei = 0x01, 
//b
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0x03;
		P2 &= 0x1f;
		delay(500);
//e
		wei<<=1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0x06;
		P2 &= 0x1f;
		delay(500);
//H	
		wei<<=2;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0x89;
		P2 &= 0x1f;
		delay(500);
//A	
		wei<<=1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0x08;
		P2 &= 0x1f;
		delay(500);
//P	
		wei<<=1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0x8C;
		P2 &= 0x1f;
		delay(500);
//P	
		wei<<=1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0x8C;
		P2 &= 0x1f;
		delay(500);
//y
    wei <<= 1;
	  P2=((P2&0x1f)|0xc0);
		P0=wei;
		P2 &= 0x1f;
		P2=((P2&0x1f)|0xe0);
		P0=0x91;
		P2 &= 0x1f;
		delay(500);
}
void main(void)
{
     
	P2=((P2&0x1f)|0xa0);
	P0=0;
	P2 &= 0x1f;
	InitAll();
	DisplaySmg2();
	delay(500);
	DisplaySmg3();
	delay(500);
	DisplaySmg4();
	delay(500);
	DisplaySmg5();
	delay(500);
	DisplaySmg6();
}

你们可以改我的代码。可以考虑一下时间的管理,因为我失败了,直接就上了,没用定时器了。
视频是我对象一个人的私有浪漫,就不放在博客里面了。
大家可以自己弄出来,发给对象。

你可能感兴趣的:(单片机,单片机)