欢迎来到天天文库
浏览记录
ID:8463133
大小:576.12 KB
页数:17页
时间:2018-03-28
《机电系统测控装置设计制作实践报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、机电系统测控装置设计制作实践报告设计项目:单片机:自动散热器PLC:机械吊臂班级:09机械1班设计小组组员:序号姓名学号分工备注1苏汉生单片机编程,电路的检测,元件的购买2江子毅PLC编程,电路焊接3李国俊电路焊接,PLC模型制作设计人姓名:苏汉生,江子毅,李国俊提交日期:2012年3月9日一、设计任务(1)单片机自动监控系统(2)PLC系统二、设计过程1、单片机系统(1)单片机自动控制系统:自动散热器(2)功能说明:自动检测发热体(用电灯泡代替),当温度超过25℃,蜂鸣器响,LED灯亮,表示警告,风扇
2、启动对发热体进行散热;当温度不超过25℃,蜂鸣器不响,LED灯熄灭,表示正常状态。发热体(电灯泡)的开与关是用红外控制的。(3)电路原理图:(4)流程图:红外控制发热体的开与关温度检测温度>25是否蜂鸣器响LED灯亮风扇启动对发热体进行散热蜂鸣器不响LED灯熄灭风扇关闭停止对发热体进行散热(5)程序及每个函数的说明:constunsignedcharSeg7_Data[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,
3、0x5E,0x79,0x71,0x00};用于在数码管上显示数字的数组,对应的是0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,Fvoidtime0_init(void){OCR0A=10;TCCR0A
4、=(1<5、=((1<6、(1<7、=(1<8、=0x1E;DDRD9、=0xD8;PORT10、C&=0xE1;PORTD11、=(1<<3);SEI();}设备初始化,对单片机上的I/O口进行初始化。voiddisplay_num(unsignedcharnum){staticunsignedcharwei=0;unsignedcharnum_l,num_r,i;num_r=num%10;num/=10;num_l=num%10;if(wei)num_r=Seg7_Data[num_r];elsenum_r=Seg7_Data[num_l];for(i=0;i<8;i++){if(num_r&0x812、0)PORTC13、=0x04;elsePORTC&=0x0FB;num_r=num_r<<1;PORTC14、=0x02;PORTC&=0x0FD;}if(!wei){PORTC15、=(1<<3);PORTC&=~(1<<4);}else{PORTC&=~(1<<3);PORTC16、=(1<<4);}wei=!wei;}采用74LS1648位移位寄存器(串行输入,并行输出)的显示函数,用于把要显示的数字送到数码管上,并显示出来。voidinit_1820(void){TEM_DDR&=~(1<17、SET_TEM_DDR;SET_TEM_SDT;CLR_TEM_SDT;delay_nus(180);SET_TEM_SDT;CLR_TEM_DDR;delay_nus(5);while(CHECK_TEM_SDT);SET_TEM_DDR;SET_TEM_SDT;delay_nus(80);}该程序是DS18B20的初始化,主机总线t0时刻发送一复位脉冲(最短为480us,最长为960us的低电平信号),接着在t1时刻释放总线并进入接受状态,DS18B20在检测到总线的上升沿之后,等待15-60us,18、接着DS18B20在t2时刻发出存在脉冲(低电平,持续60-240us)。voidwrite_1820(unsignedchardata){unsignedchari;for(i=0;i<8;i++){CLR_TEM_SDT;if(data&(1<19、送到总线上,DS18B20在t0后15-60us间对总线采样。若低电平,写入的位是0,见图1;若高电平,写入的位是1,见图2。连续写2位间的间隙大于1us。图1DS18B20写0时序图2DS18B20写1时序unsignedcharread_1820(void){unsignedchartemp,k,n;temp=0;for(n=0;n<8;n++){CLR_TEM_SDT;SET_TEM_SDT;CLR_TEM_DDR;k=CHECK_T
5、=((1<6、(1<7、=(1<8、=0x1E;DDRD9、=0xD8;PORT10、C&=0xE1;PORTD11、=(1<<3);SEI();}设备初始化,对单片机上的I/O口进行初始化。voiddisplay_num(unsignedcharnum){staticunsignedcharwei=0;unsignedcharnum_l,num_r,i;num_r=num%10;num/=10;num_l=num%10;if(wei)num_r=Seg7_Data[num_r];elsenum_r=Seg7_Data[num_l];for(i=0;i<8;i++){if(num_r&0x812、0)PORTC13、=0x04;elsePORTC&=0x0FB;num_r=num_r<<1;PORTC14、=0x02;PORTC&=0x0FD;}if(!wei){PORTC15、=(1<<3);PORTC&=~(1<<4);}else{PORTC&=~(1<<3);PORTC16、=(1<<4);}wei=!wei;}采用74LS1648位移位寄存器(串行输入,并行输出)的显示函数,用于把要显示的数字送到数码管上,并显示出来。voidinit_1820(void){TEM_DDR&=~(1<17、SET_TEM_DDR;SET_TEM_SDT;CLR_TEM_SDT;delay_nus(180);SET_TEM_SDT;CLR_TEM_DDR;delay_nus(5);while(CHECK_TEM_SDT);SET_TEM_DDR;SET_TEM_SDT;delay_nus(80);}该程序是DS18B20的初始化,主机总线t0时刻发送一复位脉冲(最短为480us,最长为960us的低电平信号),接着在t1时刻释放总线并进入接受状态,DS18B20在检测到总线的上升沿之后,等待15-60us,18、接着DS18B20在t2时刻发出存在脉冲(低电平,持续60-240us)。voidwrite_1820(unsignedchardata){unsignedchari;for(i=0;i<8;i++){CLR_TEM_SDT;if(data&(1<19、送到总线上,DS18B20在t0后15-60us间对总线采样。若低电平,写入的位是0,见图1;若高电平,写入的位是1,见图2。连续写2位间的间隙大于1us。图1DS18B20写0时序图2DS18B20写1时序unsignedcharread_1820(void){unsignedchartemp,k,n;temp=0;for(n=0;n<8;n++){CLR_TEM_SDT;SET_TEM_SDT;CLR_TEM_DDR;k=CHECK_T
6、(1<7、=(1<8、=0x1E;DDRD9、=0xD8;PORT10、C&=0xE1;PORTD11、=(1<<3);SEI();}设备初始化,对单片机上的I/O口进行初始化。voiddisplay_num(unsignedcharnum){staticunsignedcharwei=0;unsignedcharnum_l,num_r,i;num_r=num%10;num/=10;num_l=num%10;if(wei)num_r=Seg7_Data[num_r];elsenum_r=Seg7_Data[num_l];for(i=0;i<8;i++){if(num_r&0x812、0)PORTC13、=0x04;elsePORTC&=0x0FB;num_r=num_r<<1;PORTC14、=0x02;PORTC&=0x0FD;}if(!wei){PORTC15、=(1<<3);PORTC&=~(1<<4);}else{PORTC&=~(1<<3);PORTC16、=(1<<4);}wei=!wei;}采用74LS1648位移位寄存器(串行输入,并行输出)的显示函数,用于把要显示的数字送到数码管上,并显示出来。voidinit_1820(void){TEM_DDR&=~(1<17、SET_TEM_DDR;SET_TEM_SDT;CLR_TEM_SDT;delay_nus(180);SET_TEM_SDT;CLR_TEM_DDR;delay_nus(5);while(CHECK_TEM_SDT);SET_TEM_DDR;SET_TEM_SDT;delay_nus(80);}该程序是DS18B20的初始化,主机总线t0时刻发送一复位脉冲(最短为480us,最长为960us的低电平信号),接着在t1时刻释放总线并进入接受状态,DS18B20在检测到总线的上升沿之后,等待15-60us,18、接着DS18B20在t2时刻发出存在脉冲(低电平,持续60-240us)。voidwrite_1820(unsignedchardata){unsignedchari;for(i=0;i<8;i++){CLR_TEM_SDT;if(data&(1<19、送到总线上,DS18B20在t0后15-60us间对总线采样。若低电平,写入的位是0,见图1;若高电平,写入的位是1,见图2。连续写2位间的间隙大于1us。图1DS18B20写0时序图2DS18B20写1时序unsignedcharread_1820(void){unsignedchartemp,k,n;temp=0;for(n=0;n<8;n++){CLR_TEM_SDT;SET_TEM_SDT;CLR_TEM_DDR;k=CHECK_T
7、=(1<8、=0x1E;DDRD9、=0xD8;PORT10、C&=0xE1;PORTD11、=(1<<3);SEI();}设备初始化,对单片机上的I/O口进行初始化。voiddisplay_num(unsignedcharnum){staticunsignedcharwei=0;unsignedcharnum_l,num_r,i;num_r=num%10;num/=10;num_l=num%10;if(wei)num_r=Seg7_Data[num_r];elsenum_r=Seg7_Data[num_l];for(i=0;i<8;i++){if(num_r&0x812、0)PORTC13、=0x04;elsePORTC&=0x0FB;num_r=num_r<<1;PORTC14、=0x02;PORTC&=0x0FD;}if(!wei){PORTC15、=(1<<3);PORTC&=~(1<<4);}else{PORTC&=~(1<<3);PORTC16、=(1<<4);}wei=!wei;}采用74LS1648位移位寄存器(串行输入,并行输出)的显示函数,用于把要显示的数字送到数码管上,并显示出来。voidinit_1820(void){TEM_DDR&=~(1<17、SET_TEM_DDR;SET_TEM_SDT;CLR_TEM_SDT;delay_nus(180);SET_TEM_SDT;CLR_TEM_DDR;delay_nus(5);while(CHECK_TEM_SDT);SET_TEM_DDR;SET_TEM_SDT;delay_nus(80);}该程序是DS18B20的初始化,主机总线t0时刻发送一复位脉冲(最短为480us,最长为960us的低电平信号),接着在t1时刻释放总线并进入接受状态,DS18B20在检测到总线的上升沿之后,等待15-60us,18、接着DS18B20在t2时刻发出存在脉冲(低电平,持续60-240us)。voidwrite_1820(unsignedchardata){unsignedchari;for(i=0;i<8;i++){CLR_TEM_SDT;if(data&(1<19、送到总线上,DS18B20在t0后15-60us间对总线采样。若低电平,写入的位是0,见图1;若高电平,写入的位是1,见图2。连续写2位间的间隙大于1us。图1DS18B20写0时序图2DS18B20写1时序unsignedcharread_1820(void){unsignedchartemp,k,n;temp=0;for(n=0;n<8;n++){CLR_TEM_SDT;SET_TEM_SDT;CLR_TEM_DDR;k=CHECK_T
8、=0x1E;DDRD
9、=0xD8;PORT
10、C&=0xE1;PORTD
11、=(1<<3);SEI();}设备初始化,对单片机上的I/O口进行初始化。voiddisplay_num(unsignedcharnum){staticunsignedcharwei=0;unsignedcharnum_l,num_r,i;num_r=num%10;num/=10;num_l=num%10;if(wei)num_r=Seg7_Data[num_r];elsenum_r=Seg7_Data[num_l];for(i=0;i<8;i++){if(num_r&0x8
12、0)PORTC
13、=0x04;elsePORTC&=0x0FB;num_r=num_r<<1;PORTC
14、=0x02;PORTC&=0x0FD;}if(!wei){PORTC
15、=(1<<3);PORTC&=~(1<<4);}else{PORTC&=~(1<<3);PORTC
16、=(1<<4);}wei=!wei;}采用74LS1648位移位寄存器(串行输入,并行输出)的显示函数,用于把要显示的数字送到数码管上,并显示出来。voidinit_1820(void){TEM_DDR&=~(1<17、SET_TEM_DDR;SET_TEM_SDT;CLR_TEM_SDT;delay_nus(180);SET_TEM_SDT;CLR_TEM_DDR;delay_nus(5);while(CHECK_TEM_SDT);SET_TEM_DDR;SET_TEM_SDT;delay_nus(80);}该程序是DS18B20的初始化,主机总线t0时刻发送一复位脉冲(最短为480us,最长为960us的低电平信号),接着在t1时刻释放总线并进入接受状态,DS18B20在检测到总线的上升沿之后,等待15-60us,18、接着DS18B20在t2时刻发出存在脉冲(低电平,持续60-240us)。voidwrite_1820(unsignedchardata){unsignedchari;for(i=0;i<8;i++){CLR_TEM_SDT;if(data&(1<19、送到总线上,DS18B20在t0后15-60us间对总线采样。若低电平,写入的位是0,见图1;若高电平,写入的位是1,见图2。连续写2位间的间隙大于1us。图1DS18B20写0时序图2DS18B20写1时序unsignedcharread_1820(void){unsignedchartemp,k,n;temp=0;for(n=0;n<8;n++){CLR_TEM_SDT;SET_TEM_SDT;CLR_TEM_DDR;k=CHECK_T
17、SET_TEM_DDR;SET_TEM_SDT;CLR_TEM_SDT;delay_nus(180);SET_TEM_SDT;CLR_TEM_DDR;delay_nus(5);while(CHECK_TEM_SDT);SET_TEM_DDR;SET_TEM_SDT;delay_nus(80);}该程序是DS18B20的初始化,主机总线t0时刻发送一复位脉冲(最短为480us,最长为960us的低电平信号),接着在t1时刻释放总线并进入接受状态,DS18B20在检测到总线的上升沿之后,等待15-60us,
18、接着DS18B20在t2时刻发出存在脉冲(低电平,持续60-240us)。voidwrite_1820(unsignedchardata){unsignedchari;for(i=0;i<8;i++){CLR_TEM_SDT;if(data&(1<
19、送到总线上,DS18B20在t0后15-60us间对总线采样。若低电平,写入的位是0,见图1;若高电平,写入的位是1,见图2。连续写2位间的间隙大于1us。图1DS18B20写0时序图2DS18B20写1时序unsignedcharread_1820(void){unsignedchartemp,k,n;temp=0;for(n=0;n<8;n++){CLR_TEM_SDT;SET_TEM_SDT;CLR_TEM_DDR;k=CHECK_T
此文档下载收益归作者所有