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

📄 led1.c

📁 基于51单片机的点阵显示设计源代码加仿真
💻 C
字号:
#include<at89x51.h>
#include "led.h"
#include <stdio.h>
sbit sck0=P0^5;
sbit ds0=P0^6;
sbit res0=P0^7;
sbit oe=P0^4;
extern unsigned int x,y,second[],min[],hour[];

unsigned char code tab[272]={0xff,0xff,0xc3,0xc3,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0xc3,0xc3,0xff,0xff,  //0
							0xff,0xff,0xe7,0xc7,0xc7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xc3,0xc3,0xff,0xff,	//1
							0xff,0xff,0xc1,0xc1,0xf9,0xf9,0xf9,0xc1,0xc1,0x9f,0x9f,0x9f,0xc1,0xc1,0xff,0xff,	//2
							0xff,0xff,0x81,0x81,0xf9,0xf9,0xf9,0x81,0x81,0xf9,0xf9,0xf9,0x81,0x81,0xff,0xff,	//3
							0xff,0xff,0xf1,0xe1,0xc1,0x89,0x19,0x39,0x01,0x01,0x01,0xf9,0xf9,0xf9,0xff,0xff,	//4
							0xff,0xff,0x01,0x01,0x01,0x1f,0x1f,0x01,0x01,0x01,0xf9,0xf9,0x01,0x01,0xff,0xff,	//5
							0xff,0xff,0x01,0x01,0x01,0x1c,0x1f,0x1f,0x00,0x00,0x18,0x18,0x00,0x00,0xff,0xff,	//6
							0xff,0xff,0x01,0x01,0x01,0xf1,0xe3,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xff,0xff,	//7
							0xff,0xff,0x01,0x01,0x01,0x39,0x39,0x39,0x01,0x01,0x39,0x39,0x01,0x01,0xff,0xff,	//8
							0xff,0xff,0x01,0x01,0x01,0x19,0x19,0x01,0x01,0xf9,0xf9,0xf9,0x01,0x01,0xff,0xff,	//9
							0xff,0xff,0xe7,0xc3,0x81,0x18,0x18,0x3c,0x00,0x00,0x3c,0x3c,0x3c,0x18,0xff,0xff,	//a	10
							0xff,0xff,0x01,0x01,0x38,0x3c,0x38,0x01,0x01,0x38,0x3c,0x38,0x00,0x01,0xff,0xff,	//b	11
							0xff,0xff,0xc3,0x81,0x01,0x1d,0x1f,0x1f,0x1f,0x1f,0x1d,0x01,0x81,0xc3,0xff,0xff,	//c	12
							0xff,0xff,0x03,0x01,0x01,0x18,0x18,0x18,0x18,0x18,0x18,0x01,0x03,0x03,0xff,0xff,	//d	13
							0xff,0xff,0xf9,0xf6,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,	//度14
							0xff,0xff,0xe7,0x81,0x00,0x18,0x1c,0x1f,0x1f,0x10,0x10,0x18,0x01,0x83,0xff,0xff,	//g	15
							0xff,0xff,0xc3,0x81,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x81,0xc3,0xff,0xff};	//o	16

unsigned char code hz[1120]={0xFE,0xFF,0xFF,0x7B,0xC0,0x01,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,	//广
							0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xBF,0xFF,0xBF,0xFF,0x7F,0xFF,0xFF,0xFF,
							0xFF,0xFF,0xFF,0xFB,0x00,0x01,0xFB,0xBF,0xFB,0xBF,0xFB,0xBB,0x80,0x01,0xBB,0xBB,	//西
							0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xB7,0xCB,0xAF,0xFB,0xBF,0xFB,0x80,0x03,0xBF,0xFB,
							0xFF,0xF7,0xC0,0x03,0xDF,0xFF,0xD7,0xF7,0xDB,0xE7,0xDD,0xDF,0xDE,0xBF,0xDF,0x7F,	//区
							0xDE,0xBF,0xDD,0xCF,0xDB,0xE7,0xD7,0xF7,0xDF,0xFF,0xDF,0xFB,0xC0,0x01,0xFF,0xFF,
							0xFD,0xFF,0xFD,0xFF,0xFD,0xEF,0x80,0x07,0xBD,0xEF,0xBD,0xEF,0x80,0x0F,0xBD,0xEF,	//电
							0xBD,0xEF,0x80,0x0F,0xBD,0xEF,0xFD,0xFF,0xFD,0xFB,0xFD,0xFB,0xFE,0x03,0xFF,0xFF,
							0xFF,0xFF,0xC0,0x0F,0xFF,0xEF,0xFF,0xDF,0xFF,0xBF,0xFE,0x7F,0xFE,0xFB,0x00,0x01,	//子
							0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFA,0xFF,0xFD,0xFF,
							0xFE,0x0F,0xDE,0xEF,0xEE,0xEF,0xEE,0xEF,0xFE,0xEF,0xFD,0xF1,0x0B,0xFF,0xEC,0x07,	//设
							0xEE,0xF7,0xEE,0xEF,0xEF,0x6F,0xEF,0x5F,0xEB,0xBF,0xE7,0x4F,0xEC,0xF1,0xF3,0xFB,
							0xFF,0xBF,0xDF,0xBF,0xEF,0xBF,0xEF,0xBF,0xFF,0xBF,0xFF,0xBB,0x08,0x01,0xEF,0xBF,	//计
							0xEF,0xBF,0xEF,0xBF,0xEF,0xBF,0xED,0xBF,0xEB,0xBF,0xE7,0xBF,0xEF,0xBF,0xFF,0xBF,
							0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFB,0x00,0x01,0xFE,0xFF,0xFD,0x7F,	//大
							0xFD,0x7F,0xFD,0xBF,0xFB,0xBF,0xFB,0xDF,0xF7,0xEF,0xEF,0xF1,0x9F,0xFB,0xFF,0xFF,
							0xFE,0xFF,0x80,0x01,0xBB,0xBD,0x60,0x0B,0xFB,0xBF,0xE0,0x0F,0xFB,0xBF,0x80,0x03,	//赛
							0xF7,0xDF,0xE0,0x0F,0xD7,0xD1,0x36,0xDB,0xF6,0xDF,0xFE,0xFF,0xF9,0x3F,0xE7,0xCF,
							0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,	//,
							0xF3,0xFF,0xE1,0xFF,0xE1,0xFF,0xF3,0xFF,0xFB,0xFF,0xF7,0xFF,0xEF,0xFF,0xFF,0xFF,
							0xFE,0xFF,0xFF,0x7B,0xC0,0x01,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,	//广
							0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xBF,0xFF,0xBF,0xFF,0x7F,0xFF,0xFF,0xFF,
							0xFF,0xFF,0xFF,0xFB,0x00,0x01,0xFB,0xBF,0xFB,0xBF,0xFB,0xBB,0x80,0x01,0xBB,0xBB,	//西
							0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xB7,0xCB,0xAF,0xFB,0xBF,0xFB,0x80,0x03,0xBF,0xFB,
							0xFF,0xFF,0xFF,0xF7,0x80,0x03,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,	//工
							0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFB,0x00,0x01,0xFF,0xFF,0xFF,0xFF,
							0xDD,0xF7,0xEE,0xF7,0xEE,0xEF,0xFF,0xDF,0x80,0x01,0xBF,0xFD,0x7F,0xFB,0xE0,0x1F,	//学
							0xFF,0xBF,0xFE,0x7B,0x00,0x01,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFA,0xFF,0xFD,0xFF,
							0xFF,0x7F,0x87,0xBF,0xB0,0x01,0xAB,0xFD,0xA7,0xEB,0x9C,0x07,0xAF,0xFF,0xB7,0xF7,	//院
							0xB0,0x03,0xB7,0x5F,0x97,0x5F,0xAF,0x5F,0xBE,0xDD,0xBE,0xDD,0xBD,0xE1,0xB3,0xFF,
							0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x0F,0xC7,0xC7,0xC7,0xE3,0xFF,0xC7,0xFC,0x0F,	//3
							0xFC,0x0F,0xFF,0xE3,0xFF,0xF1,0xC7,0xE3,0xC7,0xE3,0xF0,0x0F,0xFF,0xFF,0xFF,0xFF,
							0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x0F,0xE3,0xE7,0xC7,0xE3,0xC7,0xF1,0xC7,0xF1,	//0
							0x87,0xF1,0xC7,0xF1,0xC7,0xF1,0xC7,0xE3,0xE3,0xE7,0xF8,0x0F,0xFF,0xFF,0xFF,0xFF,
							0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x0F,0xC7,0xE7,0xCF,0xF3,0x8F,0xF1,0xCF,0xF1,	//9
							0xC7,0xC1,0xE0,0x11,0xFF,0xE3,0xE7,0xE7,0xC3,0xCF,0xE0,0x1F,0xFF,0xFF,0xFF,0xFF,
							0xFF,0xEF,0xE0,0x07,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xE0,0x0F,0xFF,0xFB,0x00,0x01,	//号
							0xFB,0xFF,0xF7,0xEF,0xE0,0x07,0xFF,0xEF,0xFF,0xEF,0xFF,0xEF,0xFF,0x5F,0xFF,0xBF,
							0xFD,0xFF,0xFD,0xBF,0xFB,0xDF,0xE0,0x0F,0xFD,0xFB,0x00,0x01,0xFB,0xBF,0xF7,0x5F,	//参
							0xEC,0xEF,0xD3,0xB1,0x3E,0x7B,0xF1,0xEF,0xFF,0x9F,0xFE,0x7F,0xF1,0xFF,0x8F,0xFF,
							0xFE,0xFF,0x80,0x01,0xBB,0xBD,0x60,0x0B,0xFB,0xBF,0xE0,0x0F,0xFB,0xBF,0x80,0x03,	//赛
							0xF7,0xDF,0xE0,0x0F,0xD7,0xD1,0x36,0xDB,0xF6,0xDF,0xFE,0xFF,0xF9,0x3F,0xE7,0xCF,
							0xFF,0xBF,0x83,0xBF,0xBB,0xBF,0xB7,0xBF,0xB7,0xBF,0xAF,0xBF,0xB7,0xBF,0xB7,0xBF,	//队
							0xBB,0x5F,0xBB,0x5F,0xBB,0x5F,0x96,0xEF,0xAE,0xEF,0xBD,0xF7,0xBB,0xF9,0xB7,0xFB,
							0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x0F,0xE3,0xE7,0xC7,0xE3,0xC7,0xF1,0xC7,0xF1,	//.
							0x87,0xF1,0xC7,0xF1,0xC7,0xF1,0xC7,0xE3,0xE3,0xE7,0xF8,0x0F,0xFF,0xFF,0xFF,0xFF,
							0xFE,0xFF,0xFE,0xF7,0x80,0x03,0xFE,0xFF,0xFA,0xBF,0xF6,0xCF,0xCE,0xF1,0x3E,0xFB,	//李
							0xF0,0x1F,0xFF,0xBF,0xFE,0x77,0x80,0x03,0xFE,0xFF,0xFE,0xFF,0xFA,0xFF,0xFD,0xFF,
							0xEF,0xBF,0xEF,0x5F,0xEF,0x77,0x02,0x03,0xEE,0xDF,0xEC,0xD7,0xDA,0x03,0xDE,0xDF,	//雄
							0xAE,0xD7,0xAE,0x03,0x6E,0xDF,0xDA,0xDF,0xBA,0xDB,0x82,0x01,0xFE,0xFF,0xFE,0xFF,
							0xFE,0xFF,0xFF,0x7B,0xC0,0x01,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,	//广
							0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xBF,0xFF,0xBF,0xFF,0x7F,0xFF,0xFF,0xFF,
							0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,	//.
							0xFF,0xFF,0xFF,0xFF,0xC3,0xFF,0x99,0xFF,0x99,0xFF,0x99,0xFF,0xC3,0xFF,0xFF,0xFF,
							0xFF,0x7F,0xBF,0x7F,0xCF,0x7F,0xE8,0x03,0x7B,0x7B,0x97,0x77,0xDF,0x3F,0xF6,0xBF,	//沈
							0xEE,0xBF,0xDE,0xBF,0x1E,0xBF,0xDD,0xBF,0xDD,0xBD,0xDB,0xBD,0xD7,0xC1,0xCF,0xFF,
							0xEF,0xDF,0xEF,0xDF,0xEB,0xAF,0x01,0x77,0xEE,0xF9,0x81,0xFB,0xBA,0x23,0x83,0xBB,	//翰
							0xBA,0xAB,0x83,0x33,0xEF,0xBB,0x01,0x33,0xEE,0xAB,0xEF,0xBB,0xEE,0xAB,0xEF,0x77,
							0xFD,0xFF,0xFE,0xFF,0x80,0x01,0xBF,0xFD,0x7F,0xFB,0xFF,0xFF,0x00,0x01,0xFE,0xFF,	//宁
							0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFA,0xFF,0xFD,0xFF,
							0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,	//.
							0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC3,0xFF,0xE3,0xFF,0xFF,0xFF,0xFF,0xFF,
							0xFF,0xEF,0xB8,0x07,0xCF,0xEF,0xED,0xEF,0xFD,0xEF,0xF5,0xEF,0xED,0xEF,0xED,0xEB,	//冯
							0xDC,0x01,0x1F,0xFB,0xDF,0xDB,0xD0,0x0B,0xDF,0xFB,0xDF,0xFB,0xDF,0xD7,0xDF,0xEF,
							0xFF,0xF7,0x82,0x03,0xBB,0xFF,0xB7,0xFF,0xB7,0xFF,0xAF,0xFB,0xB4,0x01,0xB7,0xDF,	//际
							0xBB,0xDF,0xBB,0x57,0xBB,0x5B,0x96,0xDD,0xAD,0xDD,0xBF,0xDF,0xBF,0x5F,0xBF,0xBF,
							0xFF,0x7F,0xBF,0x77,0xC8,0x03,0xEF,0x7F,0x7C,0x07,0x9F,0x7F,0xD0,0x01,0xF6,0xF7,	//涛
							0xEE,0xF7,0xDC,0x01,0x1D,0xF7,0xDA,0xF7,0xD7,0x77,0xCF,0x77,0xDF,0xD7,0xDF,0xEF,
							0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,	//空
							0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};	
void delay(void)
{
	unsigned int j=0;
	for(j=0;j<60;j++);
}
void write_595(unsigned char dat)
{
	unsigned char i=0;
	res0=0;
	for(i=0;i<8;i++)
	{
		ds0=dat&0x01;
		sck0=0;
		sck0=1;
		dat>>=1;
	}
	res0=1;
	res0=0;
}
void main(void)
{
	unsigned char n=0,l=0,k=0,m=0,h=0,sp=10;
	bit num=0,wd=0,time=0,open=1;
	//ds1302();
	pc_init();
	oe=0;
	do
	{				
		if(P1_0==0)			   //左移,右移
		{
			num=~num;
			wd=0;
			time=0;
			open=1;
			while(!P1_0);
		}
		if(P1_1==0)			   //温度显示
		{
			wd=1;
			time=0;
			open=0;
			while(!P1_1);
		}
		if(P1_2==0)			   //时钟显示
		{
			time=1;
			wd=0;
			open=0;
			while(!P1_2);
		}
		if(P1_3==0)			   //串口通行
		{
			printf("现在温度是%d%d度\n现在时刻是%d%d%时d%d%分%d%d秒\n",x,y,hour[1],hour[0],min[1],min[0],second[1],second[0]);
			open=0;
			while(!P1_3);
		 }
			if(time)							 //显示时钟
			{
				dsplay_ds1302();				 //读取时钟
				for(l=0;l<30;l++)
				{
					for(n=0;n<16;n++)	//扫16行
					{					
						oe=1;
						P0=(P0&0xf0)|n;	
						write_595(tab[n+16*min[1]]);
						write_595(tab[n+16*min[0]]);
						write_595(tab[n+16*second[1]]);
						write_595(tab[n+16*second[0]]);
						oe=0;
						delay();		
					}
				}
			}
					if(wd==0&&time==0&&open==0)		  //主界面good
					{
						for(l=0;l<30;l++)
						{
							for(n=0;n<16;n++)	//扫16行
							{					
								oe=1;
								P0=(P0&0xf0)|n;	
								write_595(tab[n+16*15]);
								write_595(tab[n+16*16]);
								write_595(tab[n+16*16]);
								write_595(tab[n+16*13]);
								oe=0;
								delay();	
							}	
						}
					}
					if(wd)						//温度显示
					{
					 	wd_t();
						for(l=0;l<30;l++)
						{
							for(n=0;n<16;n++)	//扫16行
							{					
								oe=1;
								P0=(P0&0xf0)|n;	
								write_595(tab[n+16*x]);
								write_595(tab[n+16*y]);
								write_595(tab[n+16*14]);
								write_595(tab[n+16*12]);
								oe=0;
								delay();	
							}	
						}
					}			
					if(num&&wd==0&&time==0&&open==1)		  //左移数字字母
					{
					 	for(m=0;m<10;m++)
						{
							for(k=0;k<8;k++)
							{
								for(l=0;l<sp;l++)
								{
									for(n=0;n<16;n++)	//扫16行
									{					
										oe=1;
										P0=(P0&0xf0)|n;	 
										write_595((tab[n+16*m]<<k)|(tab[n+16*(m+1)]>>(8-k)));
										write_595((tab[n+16*(m+1)]<<k)|(tab[n+16*(m+2)]>>(8-k)));
										write_595((tab[n+16*(m+2)]<<k)|(tab[n+16*(m+3)]>>(8-k)));
										write_595((tab[n+16*(m+3)]<<k)|(tab[n+16*(m+4)]>>(8-k)));
										oe=0;
										delay();
										if(P1_0==0) 
										{
											num=1;
											wd=0;
											time=0;
											open=0;
											break;
										}
										if(P1_3==0)
										{
											sp=sp+5;
											if(sp==40) sp=5;
											while(!P1_3);
										}
									}
									if(P1_0==0) break;
								}
								if(P1_0==0) break;
							}
							if(P1_0==0) 
							{
								while(!P1_0);
								break;
							}					
						}
						for(m=0;m<10;m++)			   //右移数字字母
						{
							for(k=0;k<8;k++)
							{
								for(l=0;l<sp;l++)
								{
									for(n=0;n<16;n++)	//扫16行
									{					
										oe=1;
										P0=(P0&0xf0)|n;	 
										write_595((tab[n+16*(m+3)]>>k)|(tab[n+16*(m+4)]<<(8-k)));
										write_595((tab[n+16*(m+2)]>>k)|(tab[n+16*(m+3)]<<(8-k)));
										write_595((tab[n+16*(m+1)]>>k)|(tab[n+16*(m+2)]<<(8-k)));
										write_595((tab[n+16*m]>>k)|(tab[n+16*(m+1)]<<(8-k)));
										oe=0;
										delay();
										if(P1_0==0) 
										{
											num=1;
											wd=0;
											time=0;
											open=0;
											break;
										}
										if(P1_3==0)
										{
											sp=sp+5;
											if(sp==40) sp=5;
											while(!P1_3);
										}
									}
									if(P1_0==0) break;
								}
								if(P1_0==0) break;
							}
							if(P1_0==0) 
							{
								while(!P1_0);
								break;
							}					
						}
					}
					if(num==0&&wd==0&&time==0&&open==1)		//左移汉字
					{
					 	for(m=0;m<33;m++)
						{
							for(h=0;h<2;h++)
							{
								for(k=0;k<8;k++)
								{
									for(l=0;l<sp;l++)
									{
										for(n=0;n<16;n++)	//扫16行
										{					
											oe=1;
											P0=(P0&0xf0)|n;	 
											write_595((hz[n*2+h+m*32]<<k)|(hz[(n*2+(1-h)+32*h+m*32)]>>(8-k)));
											write_595((hz[(n*2+(1-h)+32*h+m*32)]<<k)|(hz[n*2+32+m*32+h]>>(8-k)));
											write_595((hz[n*2+32+m*32+h]<<k)|(hz[n*2+(1-h)+32*h+32+m*32]>>(8-k)));
											write_595((hz[n*2+(1-h)+32*h+32+m*32]<<k)|(hz[n*2+32*2+m*32+h]>>(8-k)));
											oe=0;
											delay();
											if(P1_0==0) 
											{
												num=0;
												wd=0;
												time=0;
												open=0;
												break;
											}
											if(P1_3==0)
											{
												sp=sp+5;
												if(sp==40) sp=5;
												while(!P1_3);
											}
										}
										if(P1_0==0) break;	
									}
								 if(P1_0==0) break;
								}
								if(P1_0==0) break;
							}
						   	if(P1_0==0) 
							{
								while(!P1_0);
								break;
							}
						}
											
					}
					
	}while(1);
}

⌨️ 快捷键说明

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