《单片微型计算机原理与接口技术课程设计报告——温度测量.doc》由会员分享,可在线阅读,更多相关《单片微型计算机原理与接口技术课程设计报告——温度测量.doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 单片微型计算机原理 与接口技术课程设计报告题目: 温度测量 班级:学号: 姓名: 指导老师: 实习日期: 6.277.1 1、课程设计要求(1)通过按键设置温度上、下限(2)读入A/D转换数据:若数据上限,则显示温度并显示H、报警并使步进电机反转;若下限数据0;t-);/*scan*/void scan()int j;for(j=0;j4;j+)switch (j)case 0: dm=table_dmdisplay0;w0=0;delay(50);w0=1;case 1: dm=table_dmdisplay1;w1=0;delay(50);w1=1;case 2: dm=table_dm
2、display2;w2=0;delay(50);w2=1;case 3: dm=table_dmdisplay3;w3=0;delay(50);w3=1;/*初始化函数*/void init()TMOD=0x20;TH1=0xfd;TL1=0xfd;PCON=0x00;TR1=1;SCON=0x50;/*keyscan*/void keyscan()if (aa=0)SBUF=0x06;do while(TI=0);TI=0;else if (bb=0)SBUF=0xaa;do while(TI=0);TI=0;else if(cc=0)SBUF=0x55;display3=0x0d;disp
3、lay2=0x0d;display1=0x0d;display0=0x0d;do while(TI=0);TI=0;else ;/*main*/void main()init();dm=0x00; /初始化端口w0=0;w1=0;w2=0;w3=0;for(h=0;h0;t-);/*扫描显示函数*/void scan()int j;for(j=0;j0;i-)DQ=1;_nop_();_nop_(); /从高拉倒低DQ=0;_nop_();_nop_();_nop_();_nop_(); /5 usDQ=val&0x01; /最低位移出delay(6); /66 usval=val/2; /右
4、移1 位DQ=1;delay(1);/*S18B20 读1 字节函数*/从总线上取1 个字节uchar read_byte(void)uchar i;uchar value=0;for(i=8;i0;i-)DQ=1;_nop_();_nop_();value=1;DQ=0;_nop_();_nop_();_nop_();_nop_(); /4 usDQ=1;_nop_();_nop_();_nop_();_nop_(); /4 usif(DQ)value|=0x80;delay(6); /66 usDQ=1;return(value);/*读出温度函数*/read_temp()ow_reset
5、(); /总线复位delay(200);write_byte(0xcc); /发命令write_byte(0x44); /发转换命令ow_reset();delay(1);write_byte(0xcc); /发命令write_byte(0xbe);temp_data0=read_byte(); /读温度值的第字节temp_data1=read_byte(); /读温度值的高字节temp=temp_data1;temp4; / 取中间八位,即整数部分的值display3=display4/100; / 取百位数据暂存display1=display4%100; / 取后两位数据暂存displa
6、y2=display1/10; / 取十位数据暂存display1=display1%10; /个位数据r=display1+display2*10+display3*100;/符号位显示判断/if(rlow)display3=0x0e;elsedisplay3=0x0c;elsedisplay3=0x0d;if(!display2)display2=0x0a; /次高位为0 时不显示/*报警函数*/void BEEP()if(rhigh&r129)|rhigh)TR0=1;if(num18)dowhile(!TF0);num1+;TH0=0x06;TL0=0x06;else num1=0;P
7、1=Tablenum;num+;if(num=4) num=0;else if(rlow)TR0=1;if(num1=3)temp1=0;break;/*初始化*/void init (void)TMOD=0x22;TH0=0x06;TL0=0x06;TH1=0xfd;TL1=0xfd;PCON=0x00;TR1=1;SCON=0x50;SBUF=0x55;/*接收函数*/void receive ()buf0=SBUF;if(buf0=0x06)lig=1;SBUF=0x06;do while(TI=0);TI=0;else if(buf0=0xaa)lig=1;SBUF=r;do whil
8、e(TI=0);TI=0;else if(buf0=0x55)lig=0x00;SBUF=0x55;do while(TI=0);TI=0;else ;/*主函数*/void main()init();dm=0x00; /初始化端口w0=0;w1=0;w2=0;w3=0;for(h=0;h4;h+) /开机显示0000displayh=0;ow_reset(); /开机先转换一次write_byte(0xcc); /Skip ROMwrite_byte(0x44); /发转换命令for(h=0;h100;h+) /开机显示0000scan();while(1)if(RI=1)RI=0;rece
9、ive ();if (temp1=0)work_temp(read_temp(); /处理温度数据stepper();scan(); /显示温度值BEEP();keyscan();elsekeyscan();5、实验仿真5.1从机进入 protuse 后,连接好电路,并将程序下载进去。数码管显示温度与传感器的温度相同。当前温度高于上限值时,步进电机倒转并蜂鸣器报警;当前温低于下限值时,步进电机正转并蜂鸣器报警。当按下 SET 键一次时,进入温度上限调节,此时显示软件设置的温度上限,按 AD D或 DEC 分别对上限温度进行加一或减一。当再次按下 SET 键时,进入温度下限调节,此时显示软件设置
10、的温度下限,按 AD D或 DEC 分别对下限温度进行加一或减一。当第三次按下 SET 键时,退出温度报警线设置。显示当前温度。图5.1从机仿真图5.2主机图5.2主机仿真图5.3双机通信上电时主机显示“0000”。按下左键向从机发送“06h”,从机回发“06h”,主机显示“06”;按下中键向从机发送“0aah”,从机将当前温度回发给主机,主机显示当前温度值;按下右键,向从机发送“055h”,从机发光二极管亮,并重新设定温度上下限,主机显示“HHHH”。图5.3双机通信仿真图6、实验心得体会 通过本次单片机接口设计实习,本组成员在软件及硬件上均设计并实现了实习要求的功能。在软件功能的实现方面,成员们结合单片机原理图,经过反复推敲,最终统一思路以中断的方式进行程序的编译,同时熟悉并掌握了proteus软件的使用,用该软件进行了一些功能的初步演示仿真。这次实验中,我主要负责硬件部分,在完成步进电机的时候受到了一些阻碍,在硬件接线上和程序那里出了一些问题后来经过查找资料和咨询最终得到了解决。本次实习虽然有许多不足之处,但是每个成员都很努力去完成本次暑期单片机实习,在单片机知识的深入理解和团结协作上都有较大收获,为今后更深入的学习做了很好的铺垫。