72 基于单片机电烤箱控温系统设计【毕设课设】

文章详细阐述了一个以AT89C51单片机为核心的电烤箱温度控制系统的构成,包括硬件(单片机、传感器、放大器、转换器及键盘显示电路)和软件(主程序、控制算法及功能模块)两大部分。同时,文章提供了I2C通信的相关函数实现,并对系统设计进行了总结,对未来温度控制系统的改进提出建议。
摘要由CSDN通过智能技术生成

介绍了以AT89C51单片机为核心的电烤箱温度控制系统。电烤箱的温度控制系统有两个部分组成:硬件部分和软件部分。其中硬件部分包括:单片机电路、传感器电路、放大器电路、转换器电路、以及键盘和显示电路。软件部分包括:主程序、运算控制程序、以及各功能实现模块的程序。文章最后对本设计进行了总结。对温度控制系统的发展提出了几点建议。

关键词 :  单片机,温度,电烤箱,控制

 

void keysound()                 /*按键声音函数 */
{
	uchar i;
	for ( i = 0; i < 180; i++ )
	{
		delay0( 5 );
		beep = !beep;   /* BEEP取反 */
	}
}


void I2C_start( void )          /* I2C开始信号 */
{
	SDA = 1; SCL = 1;
	_nop_(); _nop_(); _nop_(); _nop_(); _nop_();
	SDA = 0;
	_nop_(); _nop_(); _nop_(); _nop_(); _nop_();
	SCL = 0; _nop_(); _nop_();
}


void I2C_stop( void ) /* I2C结束 */
{
	SDA = 0; SCL = 1;
	_nop_(); _nop_(); _nop_(); _nop_(); _nop_();
	SDA = 1;
	_nop_(); _nop_(); _nop_(); _nop_(); _nop_();
	SCL = 0;
	_nop_(); _nop_();
}


void I2C_no_ackownledge( void ) /* 发送noack信号 */
{
	SDA = 1;
	_nop_(); _nop_();
	SCL = 1;
	_nop_(); _nop_(); _nop_(); _nop_(); _nop_();
	SCL = 0;
	_nop_(); _nop_(); _nop_();
}


void I2C_sendB( uchar byte ) /* 发送一字节数据 */
{
	uchar counter;
	for ( counter = 0; counter < 8; counter++ )
	{
		if ( byte & 0x80 )
			SDA = 1;
		else SDA = 0;
		_nop_();
		SCL = 1;
		_nop_(); _nop_(); _nop_(); _nop_(); _nop_();
		SCL = 0;
		_nop_(); _nop_();
		byte <<= 1;
	}
	_nop_(); _nop_();
	SDA = 1;
	_nop_(); _nop_(); _nop_();
	SCL = 1;
	_nop_(); _nop_(); _nop_();
	if ( SDA == 0 )
		ack = 1;
	else ack = 0;
	SCL = 0;
	_nop_(); _nop_();
}


uchar I2C_receiveB( void ) /* 接收一字节数据 */
{
	uchar	temp;
	uchar	counter;
	temp	= 0;
	SDA	= 1;
	_nop_(); _nop_();
	for ( counter = 0; counter < 8; counter++ )
	{
		_nop_(); _nop_(); _nop_();
		_nop_(); _nop_();
		SCL = 1;
		_nop_();
		_nop_();
		if ( SDA == 1 )
			temp = (temp << 1) | 0x01;
		else temp = temp << 1;
		_nop_(); _nop_();
		SCL = 0;
		_nop_(); _nop_(); _nop_();
	}
	_nop_(); _nop_();
	return(temp);
}


bit I2C_send_string( uchar *string, uchar no, uchar address )  /* 发送8位温度 */
{
	uchar counter;
	for ( counter = 0; counter < no; counter++ )
	{
		I2C_start();
		I2C_sendB( C02_write );
		if ( ack == 0 )
			return(0);
		I2C_sendB( address + counter );
		if ( ack == 0 )
			return(0);
		I2C_sendB( string[counter] );
		I2C_stop();
		delayms( 20 );
	}
	return(1);
}


bit I2C_receive_string( uchar *string, uchar no, uchar address ) /* 接收8位温度 */
{
	uchar counter;
	for ( counter = 0; counter < no; counter++ )
	{
		I2C_start();
		I2C_sendB( C02_write );
		if ( ack == 0 )
			return(0);
		I2C_sendB( address + counter );
		if ( ack == 0 )
			return(0);
		I2C_start();
		I2C_sendB( C02_read );
		if ( ack == 0 )
			return(0);
		*(string + counter) = I2C_receiveB();
		I2C_no_ackownledge();
		I2C_stop();
	}
	return(1);
}

  资料下载地址

https://pan.baidu.com/s/1Q5eAJHjx9y17H3YQtsRAdA?pwd=8888

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值