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

📄 lcd1602.c

📁 自己的平时一些制作 现在整理一下 与大家一起分享
💻 C
字号:
#include "lcd1602.h"
#include "ds18b20.h"
#include <stdio.h>

void interrupt_init(void);
void serial_init(void);
void time0_init(void);
//unsigned char temp[5];
extern char xiaoshu_temp[5],zhen_temp[4];
extern bit flag;
extern bit dot_dis;
uchar data serial1=0;
uchar data serial2=0;
bit intval1=0;
bit intval2=0;
bit int_pro1=0;
bit int_pro2=0;
bit clr_screen=0;
uchar adc_val=0;
sbit P1_7 = P1^7;

	
void main(void)
{ 
 	uchar *str="temperature is ";
	uchar *str1="serial1 !";
	uchar *str2="serial2 !";
	serial_set();
 	Lcd_Init();
	interrupt_init();
	time0_init();
 	ClrScreen();
	GotoXY(0,0);
 	Print(str);
	dot_dis=1;
	P1_7=0;
 	while(1)
 	{	
		if(intval1&&int_pro1)			//如果触发中断0,即采集从机1的值
		{	clr_screen=1;
			
			serial_init();				//初始化串口
			SBUF=0x7f;					//发送从机1地址0x7f
			while(!TI);					//等待发送完成
			TI=0;
			intval1=0;//0 
			
			while(int_pro1)				//如果没触发第二次中断0,循环
			{ 
				if(serial1)				//从机1响应是否正确
				{  
					if(serial1==1)	  	//如果从机正确接收到地址
					{	SCON=0xd0;		//TB8=0
						
						serial1=0;
						SBUF=0xaa;	  	//发送A/D转换命令0xaa
						while(!TI);
						TI=0;
					}
					if(serial1==2)	   	//如果从机正确接受到转化命令0xaa
					{	
						serial1=0;		//
						SBUF=0xbb;	  	//发送把从机转化结果送主机的命令0xbb
						while(!TI);
						TI=0;
					}
					if(serial1==3)	   //如果从机发送结果完成
					{  	
						ClrScreen();
						serial1=0;
						
						Print("adc_success1!");//显示结果
			 		}	 
				}	
			}
		}
		if(intval2&&int_pro2)
		{	clr_screen=1;
			serial_init();				//初始化串口
			SBUF=0x8f;					//发送从机2地址0x8f
			while(!TI);					//等待发送完成
			TI=0;
			intval2=0;//0
			while(int_pro2)				//如果没触发第二次中断1,循环
			{
				if(serial2)				//从机2响应是否正确
				{
					if(serial2==1)	  	//如果从机正确接收到地址
					{
						SCON=0xd0;
						serial2=0;
						SBUF=0xaa;	  	//发送A/D转换命令0xaa
						//while(!TI);
						//TI=0;
					}
					if(serial2==2)	   	//如果从机正确接受到转化命令0xaa
					{
						serial2=0;		//
						SBUF=0xbb;	  	//发送把从机转化结果送主机的命令0xbb
						//while(!TI);
						//TI=0;
					}
					if(serial2==3)	   //如果从机发送结果完成
					{  
						serial2=0;
						ClrScreen();
						Print("adc_success2!");//显示结果	
						//P1_7=~P1_7;
			 		}	 
				}	
			}
		}
		if(clr_screen)
		{
			clr_screen=0;
			ClrScreen();
			Print(str);
		}
		ds18b20_process(); //温度处理函数
	}	
}
void interrupt_init(void)
{
	EA=1;
	EX0=1;
	EX1=1;
	IT0=1;
	IT1=1;
	
}
void serial_init(void)
{	
	SCON=0xd8;
	TMOD=0x20;
	TH1=0xfd;
	TL0=0xfd;
	TR1=1; 
	ES=1;
}
void interrupt0(void) interrupt 0 using 1
{
	 intval1=1;
	 int_pro1=~int_pro1;
}
void interrupt4(void) interrupt 4 using 2
{
	ES=0;
	if(TI)
	{
		TI=0;
	}
	if(RI)
	{
		RI=0;
		if(SBUF==0x11)		//如果接收到从机1发送的地址响应码0x11
		{
			serial1=1;		//置serial1=1
			
		}
		if(SBUF==0x22)	  	//如果接收到从机1发送的A/D转换命令的响应码0x22
		{
			serial1=2;		//置serial1=2 
			
		}
		if(SBUF==0x33)		//如果接收到从机1发送把从机转化结果送主机的命令响应码0x33
		{	
			serial1=3;		//置serial1=3 
			
			SBUF=0xcc;
			while(!TI);
			TI=0; 
			while(!RI)		//等待接收
			; 
			
			RI=0;
			adc_val=SBUF;	 //接收转换值
				
		}
		if(SBUF==0x44)		//如果接收到从机1发送的地址响应码0x44
		{	
			serial2=1;		//置serial2=1
		}
		if(SBUF==0x55)	  	//如果接收到从机1发送的A/D转换命令的响应码0x55
		{	//P1_7=1;
			serial2=2;		//置serial2=2
		}
		if(SBUF==0x66)		//如果接收到从机1发送把从机转化结果送主机的命令响应码0x66
		{	
			serial2=3;		//置serial2=3
			SBUF=0xcc;
			while(!TI);
			TI=0;P1_7=~P1_7;
			while(!RI)
			;
			RI=0;
			
			adc_val=SBUF;	 //接收转换值
			//ClrScreen();
			//Print("adc_success2  !");
			
			//int_pro2=0;
		}	
	}
	ES=1;
}
void interrupt2(void) interrupt 2 using 3
{
	intval2=1; //1
	int_pro2=~int_pro2;
}
void time0_init(void)
{
	TMOD=TMOD&0xf0;
	TMOD=TMOD|0x01;
	TH0=0x0;
	TL0=0x0;
	ET0=1;
	EA=1;
	
}	

⌨️ 快捷键说明

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