如何将两个单片机程序整合在一起,求大佬指导!!!!!!

求大佬能把两个程序整合成一个,十分感谢!!!!!!

LED程序如下:
#include <reg51.h>
#include<intrins.h>
/*  数据端接口定义 */
sbit  LSH = P1^0;     //列数时钟
sbit  LDS = P1^1;     //输入
sbit  LST = P1^2;     //列寄存器
 
sbit  HSH = P1^3;     //行数时钟
sbit  HDS = P1^4;     //输入
sbit  HST = P1^5;     //行寄存器时钟
 
unsigned int sel[17]={0x7fff,0xbfff,0xdfff,0xefff,0xf7ff,0xfbff,0xfdff,0xfeff,
											0xff7f,0xffbf,0xffdf,0xffef,0xfff7,0xfffb,0xfffd,0xfffe,
	                    0xffff,
										 };
 
char code hanzi[170] =
{
0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,
0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x0A,0x01,0x02,0x01,0x02,0x00,0xFE,//
0x00,0x00,
0x10,0x00,0x10,0x00,0x3F,0xFC,0x20,0x00,0x4F,0xF0,0x80,0x00,0x3F,0xF0,0x00,0x10,
0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x0A,0x00,0x0A,0x00,0x06,0x00,0x02,//
0x00,0x00,
0x01,0x08,0x42,0x08,0x27,0x88,0x24,0x88,0x07,0xBE,0x04,0x88,0xE7,0x88,0x24,0xC8,
0x24,0xA8,0x2F,0xA8,0x21,0x88,0x2A,0x88,0x34,0x88,0x28,0x88,0x02,0xA8,0x01,0x10,//
0x00,0x00,
0x08,0x80,0x08,0x80,0x08,0x80,0x10,0x80,0x17,0xFE,0x30,0x80,0x31,0x00,0x51,0x00,
0x91,0xFC,0x12,0x20,0x12,0x20,0x14,0x20,0x14,0x20,0x18,0x20,0x13,0xFE,0x10,0x00,//
0x00,0x00,
0x01,0x00,0x00,0x80,0x3F,0xFE,0x20,0x80,0x2F,0xF8,0x20,0x88,0x3F,0xFE,0x20,0x88,
0x2F,0xF8,0x28,0x80,0x24,0xC4,0x22,0xA8,0x44,0x90,0x48,0x88,0x92,0x86,0x01,0x00,//
0x00,0x00,
};
 
void send_data_H(unsigned int dat);  /*  发送行数据端数据函数  */
void send_data_L(unsigned int dat);  /*  发送列选通端数据函数  */
void display(int a);                 //每一次显示什么东西
void delay(unsigned int m);
  
void main()
{
  unsigned int j=0,num;
	while(1)
	{
		num=6;
		while(num--)
		{
				display(j);
			  delay(10);
	  }
		j=j+2;
		//if(j>150)
			//j=0;
	}
}
	  //unsigned int a,b;	
		//a=sel[i]%256;//后八位
	  //b=sel[i]/256;//前八位
    //send_data_H(b);
void send_data_L(unsigned int dat)
{
    unsigned char i;
    
    for(i=0;i<8;i++)
    {
        LSH = 0;
        LDS = dat&0x80;       //temp<<=1;
        dat = dat<<1;               //ds = CY;
        LSH = 1;
    }
		LST = 0;
    _nop_();
    _nop_();
    LST = 1;
}
 
void send_data_H(unsigned int dat)
{
    int i; 
    for(i=0;i<16;i++)
    {
			  
        HSH = 0;
        HDS = dat&0x8000;
        dat =dat<<1;
        HSH = 1;
    }	
		HST = 0;
    _nop_();
    HST = 1;
}
void delay(unsigned int m)
{
    unsigned char i;
    for(;m>0;m--)
    {
        for(i=0;i<124;i++)
			{}
    }
}
 
void display( int a)
{
    unsigned char i;
	  unsigned int x;
    for(i=0;i<16;i++)
    {
        send_data_H(sel[i]);
			  x=a+2*i;//展示第几个字符
			  if(a+2*i>168)
					x=(a+2*i)%170;
			  send_data_L(hanzi[x]);
			  send_data_L(hanzi[x+1]);
			  delay(1);	  
    }
}





LCD程序如下:
#include <reg51.h>
#include <intrins.h>			//包含_nop_( )空函数指令的头文件
#define uchar unsigned char
#define uint unsigned int
#define out P0
sbit RS=P2^0; 					//位变量开发板6 平时0
sbit RW=P2^1;					//位变量开发板5	平时1
sbit E=P2^2; 					//位变量开发板7	平时2
void lcd_initial(void);			//LCD初始化函数
void check_busy(void); 				//检查忙标志函数
void write_command(uchar com); 			//写命令函数
void write_data(uchar dat);			//写数据函数
void string(uchar ad ,uchar *s);
void lcd_test(void);
void delay(uint);
 
void main(void) 			//主函数
{
   lcd_initial( );			//调用对LCD初始化函数
   while(1)
   {
		string(0x80,"2021 04 12");		//显示的第1行字符串,从左边第5个字符开始显示 
		string(0xC2," 14:00 ");	//显示的第2行字符串,,从左边第2个字符开始显示	
		delay(300); 			//延时
		write_command(0x01);		//写入清屏命令
		delay(300);			//延时
	}
}
void delay(uint j)			//1ms延时子程序
{
	uchar i=250;
	for(;j>0;j--)
   {
		while(--i);
		i=249;
		while(--i);
		i=250;
	}
}

void check_busy(void)	    //检查忙标志函数
{
	uchar dt;
	do
	{
		dt=0xff;
		E=0;
		RS=0;	
		RW=1;
        E=1;
        dt=out;
    }while(dt&0x80);
    E=0;
}
void write_command(uchar com) 	//写命令函数
{
check_busy();
E=0;
RS=0;
RW=0;
out=com;
E=1;
_nop_( );
E=0;
delay(1);
}

void write_data(uchar dat)		 //写数据函数
{       check_busy();
	E=0;
	RS=1;
	RW=0;
	out=dat;
	E=1;
	_nop_();
	E=0;
	delay(1);	
}

void lcd_initial(void)          //液晶显示器初始化函数
{
    write_command(0x38);	       //写入命令0x38:8位两行显示,5×7点阵字符
    write_command(0x0C);	       //写入命令0x0C:开整体显示,光标关,无黑块
    write_command(0x06);	       //写入命令0x06:光标右移
    write_command(0x01); 	       //写入命令0x01:清屏
    delay(1);
}

void string(uchar ad,uchar *s)	//输出显示字符串的函数
{
    write_command(ad);
    while(*s>0)
   {
       write_data(*s++);		//输出字符串,且指针增1
       delay(100);
   }
} 

 

建议先把2个程序的功能逻辑及流程搞清楚,再根据新需求分析进行加工整合。

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632