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

介绍了以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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值