历史上的今天
今天是:2024年10月18日(星期五)
2019年10月18日 | 51单片机自动凉衣服源程序电路图与实物图
2019-10-18 来源:eefocus
电路原理图如下:
制作出来的实物图如下:
单片机源程序如下:
#include #include #include #include #define uchar unsigned char #define uint unsigned int sbit DATA=P1^0; sbit MOTOR_A_1=P2^5; //电机控制脚 sbit MOTOR_A_2=P2^6; //电机控制脚 sbit EN_MOTOR_A =P2^7; //电机控制脚 sbit k1=P3^2; //按键 sbit k2=P3^3; //按键 sbit k3=P3^4; //按键 sbit k4=P3^5; //按键 sbit k5=P3^6; sbit CS = P1^2; sbit Clk = P1^3; sbit DATI = P1^4; sbit DATO = P1^4; unsigned char dat = 0x00; unsigned char count = 0x00; unsigned char CH; uchar mode=0; sbit LED0=P2^3; sbit LED1=P2^4; uchar temp,humi; uchar error; //用于检验是否出现错误 uchar checksum,nn; //CRC uchar nn; //蜂鸣器 uchar TEMP_data[6]; //用于记录实测的温度 uchar CO2_data[6]; //用于记录实测的温度 uchar U8FLAG,k; uchar U8count,U8temp; uchar U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata; uchar U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp; uchar U8comdata; uchar count, count_r=0; /*************************************************************************/ void Delay1(uint ); void Delay_10us(void); void COM(void); uchar RH(void); unsigned char adc0832(unsigned char CH) { unsigned char i,test,adval; adval = 0x00; test = 0x00; Clk = 0; DATI = 1; _nop_(); CS = 0; _nop_(); Clk = 1; _nop_(); if ( CH == 0x00 ) { Clk = 0; DATI = 1; _nop_(); Clk = 1; _nop_(); Clk = 0; DATI = 0; _nop_(); Clk = 1; _nop_(); } else { Clk = 0; DATI = 1; _nop_(); Clk = 1; _nop_(); Clk = 0; DATI = 1; _nop_(); Clk = 1; _nop_(); } Clk = 0; DATI = 1; for( i = 0;i < 8;i++ ) { _nop_(); adval <<= 1; Clk = 1; _nop_(); Clk = 0; if (DATO) adval |= 0x01; else adval |= 0x00; } for (i = 0; i < 8; i++) { test >>= 1; if (DATO) test |= 0x80; else test |= 0x00; _nop_(); Clk = 1; _nop_(); Clk = 0; } if (adval == test) dat = test; _nop_(); CS = 1; DATO = 1; Clk = 1; return dat; } void Delay1(uint j) { uchar i; for(;j>0;j--) { for(i=0;i<27;i++); } } void Delay_10us(void) { uchar i; i--; i--; i--; i--; i--; i--; } void COM(void) { uchar i; for(i=0;i<8;i++) { U8FLAG=2; while((!DATA)&&U8FLAG++); Delay_10us(); Delay_10us(); Delay_10us(); U8temp=0; if(DATA)U8temp=1; U8FLAG=2; while((DATA)&&U8FLAG++); if(U8FLAG==1)break; } } //-------------------------------- //-----温湿度读取子程序 ------------ //-------------------------------- //----以下变量均为全局变量-------- //----温度高8位== U8T_data_H------ //----温度低8位== U8T_data_L------ //----湿度高8位== U8RH_data_H----- //----湿度低8位== U8RH_data_L----- //----校验 8位 == U8checkdata----- //----调用相关子程序如下---------- //---- Delay();, Delay_10us();,COM(); //-------------------------------- uchar RH(void) { DATA=0; //主机拉低18ms Delay1(180); //原来为5 DATA=1; //总线由上拉电阻拉高 主机延时20us Delay_10us(); Delay_10us(); Delay_10us(); Delay_10us(); DATA=1; //主机设为输入 判断从机响应信号 if(!DATA) //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行 { U8FLAG=2; while((!DATA)&&U8FLAG++); //判断从机是否发出 80us 的低电平响应信号是否结束 U8FLAG=2; while((DATA)&&U8FLAG++); //判断从机是否发出 80us 的高电平,如发出则进入数据接收状态 COM(); //数据接收状态 U8RH_data_H_temp=U8comdata; COM(); U8RH_data_L_temp=U8comdata; COM(); U8T_data_H_temp=U8comdata; COM(); U8T_data_L_temp=U8comdata; COM(); U8checkdata_temp=U8comdata; DATA=1; U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp); //数据校验 if(U8temp==U8checkdata_temp) { U8RH_data_H=U8RH_data_H_temp; U8RH_data_L=U8RH_data_L_temp; U8T_data_H=U8T_data_H_temp; U8T_data_L=U8T_data_L_temp; U8checkdata=U8checkdata_temp; } return 1; } else //传感器不响应 { return 0; } } void delay(uint z) //延时函数z为毫秒数 { int a,b; for(a=z;a>0;a--) for(b=120;b>0;b--); } void key() { if (k1==0) //调整按键检测 { delay(10); if (k1==0) { mode=!mode; EN_MOTOR_A=0; //电机启动,等于0停止 while(k1==0); } } if (k2==0) //调整按键检测 { delay(10); if (k2==0) { if(mode==0) { EN_MOTOR_A=1; //电机启动,等于0停止 MOTOR_A_2 =0; //正转 MOTOR_A_1 =1; //反转停止 } while(k2==0); } } if (k3==0) //调整按键检测 { delay(10); if (k3==0) { if(mode==0) { EN_MOTOR_A=1; //电机停止 MOTOR_A_1 =0; //反转 MOTOR_A_2 =1; //正转停止 } while(k3==0); } } if(k4==0) { delay(10); if(k4==0) { if(MOTOR_A_2==0) EN_MOTOR_A=0; //电机停止 } } if(k5==0) { delay(10);
史海拾趣
|
从2006.8.1开始正式接触DSP到现在也已经一个多月了,从开始的在自己的开发板上调试熟悉DSP到现在要自己设计DSP,真的是很不容易.我想把在设计中遇到的问题和常用的电路芯片选择归纳如下: 1.电源部分使用了AC-DC5V的变压器,在引入板子 ...… 查看全部问答> |
|
不知道大家用LM3S系列的多不,目前有不没有移植ucos的吗?不过在移植 时可以参考sTM32的移植例子! 我发个文档供大家参考: 1:文档 2:iAR工程: 以上内容仅供参考! 建议大家自己移植!… 查看全部问答> |
|
现在用c8051f020的片子,使用的是外部振荡器产生时钟。可是我看datasheet上说串口使用系统时钟,是串口必须使用片内的时钟产生所需的波特率吗?同一个片子能既使用外部时钟有使用片内的时钟吗,谢谢!… 查看全部问答> |
|
需要选择一款数字I/O卡,主要是用来进行信号的延时,输入的是光电开关转换的数字量,经过I/O卡的延时处理,输出触发信号去驱动摄像机进行数据采集,延迟大约0.5秒,速度不需要很快,希望用过类似性价比比较高的高手推荐一款,价格在1000元以内。… 查看全部问答> |
|
本报讯:近日,瑞海软件公司技术负责人李成坐在北大青鸟APTECH培训中心内设立的招聘现场,正根据笔试和面试结果宣读招聘的学员名单。这一次,李成在北大青鸟APTECH培训中心又招聘到3名java方向的技术开发人员。为满足像瑞海公司这样的IT人才需求, ...… 查看全部问答> |




