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

📄 main.c

📁 基于凌阳61单片机技术编写的LCD显示程序
💻 C
字号:
//******************************************************************
//   使用2块74HC595构成2位数码管显示器  2008年8月2日
//   显示板输入信号说明:J1
//                  1:VCC   2:SDAT   3:SCLK  4:LOAD  5:GND  
//   使用A口:              IOA8     IOA9    IOA10
//
//   数据对应:D7  D6  D5  D4  D3  D2  D1  D0   hex    数字 
//             dp  b   a   c   f   g   d   e
//             0   1   1   1   1   0   1   1    0x7b    0
//             0   1   0   1   0   0   0   0    0x50    1
//             0   1   1   0   0   1   1   1    0x67    2
//             0   1   1   1   0   1   1   0    0x76    3
//             0   1   0   1   1   1   0   0    0x5c    4
//             0   0   1   1   1   1   1   0    0x3e    5
//             0   0   1   1   1   1   1   1    0x3f    6
//             0   1   1   1   0   0   0   0    0x70    7
//             0   1   1   1   1   1   1   1    0x7f    8
//             0   1   1   1   1   1   1   0    0x7e    9
//             0   1   1   1   1   1   0   1    0x7d    A
//             0   0   0   1   1   1   1   1    0x1f    B
//             0   0   1   0   1   0   1   1    0x2b    C
//             0   1   0   1   0   1   1   1    0x57    D
//             0   0   1   0   1   1   1   1    0x2f    E
//             0   0   1   0   1   1   0   1    0x2d    F
//
//******************************************************************
#define	P_IOA_Data 				(volatile unsigned int *)0x7000   
#define P_IOA_Buffer 			(volatile unsigned int *)0x7001
#define P_IOA_Dir 				(volatile unsigned int *)0x7002
#define P_IOA_Attrib 			(volatile unsigned int *)0x7003
#define P_IOA_Latch 			(volatile unsigned int *)0x7004
//............................................
#define P_IOB_Data				(volatile unsigned int *)0x7005  
#define P_IOB_Buffer			(volatile unsigned int *)0x7006   
#define P_IOB_Dir				(volatile unsigned int *)0x7007   
#define P_IOB_Attrib			(volatile unsigned int *)0x7008   

#define P_Watchdog_Clear		(volatile unsigned int *)0x7012   
#define P_SystemClock			(volatile unsigned int *)0x7013   

int u=0x0000;
int count=25;
int funt=0;
int funt_time[]={30,5,20};
int led_7seg[]={0x7b,0x50,0x67,0x76,0x5c,0x3e,0x3f,0x70,0x7f,0x7e,0x7d,0x1f,0x2b,0x57,0x2f,0x2d,0x00};
int hour=0,min=56,sec=50;

int main()
{
	*P_IOA_Dir=0xffff;
	*P_IOA_Attrib=0xffff;
	*P_IOA_Data =0x0000;
	
	*P_IOB_Dir=0xffff;
	*P_IOB_Attrib=0xffff;
	*P_IOB_Data=0x0;
/*
	sdat_low();
	sdat_high();
	sdat_low();
	sclk_low();
	sclk_high();
	sclk_low();
	load_low();
	load_high();
	load_low();
*/
    while(1)
    {
    	clock();
    	clock_disp();
    	delay(100);

    }

    while(1)
    {
    	test_seg();
    	test_led();
    }

	while(1)
	{
       disp_data(count);
	   count=count+1;
	   delay(100);
	   if (count>9999)
	   {
	   	   count=0;
	   }
		
	}
}

int delay(int dly)
{
	int i,j;
	for(i=0;i<dly;i++)
	{
		for(j=0;j<10;j++)
		{
			*P_Watchdog_Clear=1;
		}
	}
}

int sdat_low()
{
	*P_IOA_Data=*P_IOA_Data & 0xfeff;
}	

int sdat_high()
{
	*P_IOA_Data=*P_IOA_Data | 0x0100;
}	

int sclk_low()
{
	*P_IOA_Data=*P_IOA_Data & 0xfdff;
}	

int sclk_high()
{
	*P_IOA_Data=*P_IOA_Data | 0x0200;
}

int load_low()
{
	*P_IOA_Data=*P_IOA_Data & 0xfbff;
}	

int load_high()
{
	*P_IOA_Data=*P_IOA_Data | 0x0400;
}

int sclk_puls()
{
	sclk_low();
	sclk_high();
	sclk_low();
}		

int load_puls()
{
	load_low();
	load_high();
	load_low();
}

int send_byte(int data)
{
	int i,x,y;
	x=data;
	for (i=0;i<8;i++)
	{
		y=x/128;
		if(y==0)
		{
			sdat_low();
		}
        else
        {
        	sdat_high();
        }
        sclk_puls();
        x=x %128;
        x=x<<1;		
	}
}

int disp_data(int data)
{
	int i,x1,x2,x3,x4,y;
	y=data %10000;
	x4=y/1000;
	y=y%1000;
	x3=y/100;
	y=y%100;
	x2=y/10;
	x1=y%10;
	send_byte(led_7seg[x1]);
	send_byte(led_7seg[x2]);
	send_byte(led_7seg[x3]);
	send_byte(led_7seg[x4]);
	load_puls();
}

int test_seg()
{
	int i,x,y;
	x=1;
	for(i=0;i<8;i++)
	{
	    send_byte(x);
	    send_byte(x);
	    load_puls();
	    delay(3000);
	    x=x<<1;	
	}
}

int test_led()
{
	int i,x,y;
	for(i=0;i<17;i++)
	{
	    send_byte(led_7seg[i]);
	    send_byte(led_7seg[i]);
	    load_puls();
	    delay(3000);
	}
}							

int clock()
{
	//sec++;
	//if(sec>59)
	//{
	//	sec=0;
	//	min++;
	//	if(min>59)
	//	{
		//	min=0;
			hour++;
			delay(1000);
			if(hour>99)
			{
				hour=0;
			}
	//	}
//	}
}

int clock_disp()
{
	send_byte(led_7seg[sec%10]);
	send_byte(led_7seg[sec/10]);
	send_byte(led_7seg[min%10]+0x80);
	send_byte(led_7seg[min/10]);
	send_byte(led_7seg[hour%10]+0x80);
	send_byte(led_7seg[hour/10]);

	load_puls();
}

⌨️ 快捷键说明

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