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

📄 test51.c.bak

📁 弹片机与18b20通讯,显示温度,2位数码管与P0口相连.用扫描方式显示.
💻 BAK
字号:
#include <test51.h>
/**********************************************************************
函数功能:	定时器中断函数(扫描键盘)(10ms 16位定时)
入口参数:	无
出口参数:	无
***********************************************************************/
void Time0_Func() interrupt 1
{
	TH0=(0xffff-9259)/256;
	TL0=(0xffff-9259)%256;
	if (g_wTime)
	{
		g_wTime--;
	}
	Disp_Func();
}
/**********************************************************************
函数功能:	显示刷新函数
入口参数:	无
出口参数:	无
***********************************************************************/
void Disp_Func(void)
{
	P0=0xff;	/*清除显示*/
	P0=g_bpDisp[g_bCurrent_Local];/*显示段码*/
	if (g_bCurrent_Local)/*刷新DS2*/
	{
		Setb_Func(DS1_CS);
		Clr_Func(DS2_CS);
		g_bCurrent_Local=0;
	}
	else/*刷新DS1*/
	{
		Setb_Func(DS2_CS);
		Clr_Func(DS1_CS);
		g_bCurrent_Local=1;
	}
	P2=g_bP2_Io;/*更新P2口状态*/
}
/**********************************************************************
函数功能:	清相应IO口函数(仅限中断服务函数使用)
入口参数:	bPort:相应IO口
出口参数:	无
***********************************************************************/
void Clr_Func(byte bPort)
{
	bit btEa_Bak;

	btEa_Bak=EA;
	EA=0;
	bPort =~ bPort;
	g_bP2_Io &= bPort;
	EA=btEa_Bak;
}
/**********************************************************************
函数功能:	置相应IO口函数(仅限中断服务函数使用)
入口参数:	bPort:相应IO口
出口参数:	无
***********************************************************************/
void Setb_Func(byte bPort)
{
	bit btEa_Bak;

	btEa_Bak=EA;
	EA=0;
	g_bP2_Io |= bPort;
	EA=btEa_Bak;
}
/**********************************************************************
函数功能:	转换显示数据函数
入口参数:	bDisp_Data	显示数据0~99
			bDisp_Break	闪烁位数0~2
出口参数:	无
***********************************************************************/
void Hex_To_Disp(byte bDisp_Data)
{
	byte bI,bJ,bpDisp[2];

	if (bDisp_Data<100)
	{
		bI=Bin_Bcd_Func((dword)bDisp_Data,bpDisp);/*二进制转十进制*/
		for (bJ=0; bJ<bI; bJ++)/*查找显示段码*/
		{
			bpDisp[bJ]=g_bpDisp_Seg[bpDisp[bJ]];
		}
		if (bI==1)
		{	/*如果转换十进制结果为一位,则将此位移到个位*/
			Right_Move(bpDisp,1,1,g_bpDisp_Seg[0]);
		}
		while (g_bCurrent_Local);/*等待上次数据显示完*/
		ET0=0;
		Init_Array_Func(2,g_bpDisp,0xff);
		for ( bJ=0; bJ<2; bJ++)/*更新显示数据*/
			g_bpDisp[bJ]=bpDisp[bJ];
		ET0=1;
	}
}
/**********************************************************************
函数功能:	上电初始化函数
入口参数:	无
出口参数:	无
***********************************************************************/
void Power_Up(void)
{
	TMOD = 0x01;			/*Time0为16位定时器*/
	TH0=(0xffff-9259)/256;
	TL0=(0xffff-9259)%256;
	IE=0x82;				/*开启定时器0中断*/
	TR0=1;					/*运行定时器0*/
	g_bP2_Io=0xff;			/*将P2的IO口状态数据复位*/
}
/**********************************************************************
函数功能:	主函数
入口参数:	无
出口参数:	无
***********************************************************************/
void main()
{
	byte bTemp_L;/*DS18B20低8位数据*/
	byte bTemp_H;/*DS18B20高8位数据*/

	Power_Up();
	while (1)
	{
		EA=0;
		RW_TEMP();
		EA=1;
		bTemp_H=TEMPER_H;
		bTemp_L=TEMPER_L;
		bTemp_L &= 0xf0;
		bTemp_H &= 0x07;
		bTemp_L >>=4;
		bTemp_H <<=4;
		bTemp_L |= bTemp_H;
		Hex_To_Disp(bTemp_L);/*显示温度*/
		g_wTime=50;/*500毫秒延时*/
		while (g_wTime);
	}
}

⌨️ 快捷键说明

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