您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 1《单片机原理与应用》课程设计指导书2010-6-8
《单片机原理与应用》课程设计指导书一、课程设计的基本任务本课程设计的基本要求是使学生熟悉掌握MCS-51系列单片机的编程方法,学生在DP-51DPROC单片机综合仿真实验仪的平台环境下,完成一个简单的单片机温度检测系统。二、设备及器件PC机一台DP-51PROC单片机综合仿真实验仪一台导线若干三、课程设计的基本要求设计题目:数字温度计(1)编写程序,通过单片机的P3.3口控制一个DS18B20完成数字温度的采集,然后用程序处理采集到的数据结果。(2)编写程序,通过I2C总线器件ZLG7290实现温度数据的输出显示。(3)结合以上两部分程序,编程实现数字式温度计的程序设计。要求熟练掌握单总线方式器件的应用,熟悉I2C总线协议,学习I2C器件的使用方法。(上述设计完成的同学可以选做万年历时钟设计)四、课程设计的基本步骤数字温度计的设计步骤:(1)安装B4区JP12接口上的短路帽,将B4区的DQ与A2区INT1(P3.3)相连。(2)安装D5区JP1接口上的短路帽,将D5区的SDA.SCL分别与A2区的P17,P16相连。(3)将D5区的RST_L针接上高电平。(4)运行编写好的软件程序,观察D5区数码管显示的温度数据。然后改变DS18B20的表面温度,查看显示的温度数据是否有变化,并调整实验程序使测量值更准确。五、设计题目中部分单元电路1、B4区数字温度采集区B4区上面是一片DS18B20单总线数字温度传感器,可在上面进行单总线和温度采集等相关实验,电路图如下图,DQ为控制信号输入端,JP12为电源控制(使用前先短接,做完实验后断开)图1单总线数字温度采集电路2、D5区IIC实验区D5区上面是IIC实验区,有3个芯片,分别是键盘LED驱动芯ZLG7290、EEPROM(256个字节)CAT24WC02、实时时钟芯片(RTCRCF8563T,可以在上面进行各种相关的IIC实验。电路如图2所示如图2所示SCL和SDA为IIC控制信号端,RST_L和INT_KEY为ZLG7290的复位控制和键盘中断接口,CLKOUT和INT_RTC为PCF8563T的时钟输出和中断接口,JP1为电源控制(使用前先短接,做完实验后断开)。另外ZLG7290芯片同时驱动了8个数码管和16个按键(键值为0X01-OX10)。图2IIC实验电路六、设计参考程序TEMPER_LEQU36H;存放读出温度低位数据TEMPER_HEQU35H;存放读出温度高位数据TEMPER_NUMEQU37H;存放转换后的温度值FLAG1BIT00HDQBITP3.3;单总线控制端口SDABITP1.7;I2C总线定义SCLBITP1.6MTDEQU40H;发送数据缓冲器MRDEQU49H;接收数据缓冲区-3-;定义器件地址,变量ZLG7290EQU70H;ZLG7290的器件地址ACKBIT10H;应答标志位SLADATA50H;器件的从地址SUBADATA51H;器件的子地址NUMBYTEDATA52H;读/写的字节数变量ORG8000HLJMPMAINORG8100H;温度计主程序如下:MAIN:MOVSP,#70HDISP_LOOP:LCALLGET_TEMPER;从DS18B20读出温度数据LCALLTEMPER_COV;转换读出的温度数据并保存LCALLDELAYMOVMTD,#60HMOVMTD+1,TEMPER_NUM;温度值低位ANLMTD+1,#0FHMOVSLA,#ZLG7290;指定器件地址MOVSUBA,#07H;指定子地址MOVNUMBYTE,#02H;发送2字节数据LCALLIWRNBYTE;调用写2字节数据程序MOVMTD,#61HMOVA,TEMPER_NUMSWAPAANLA,#0FHMOVMTD+1,A;温度值高位MOVSLA,#ZLG7290;指定器件地址MOVSUBA,#07H;指定子地址MOVNUMBYTE,#02H;发送2字节数据LCALLIWRNBYTE;调用写2字节数据程序LCALLDELAYSJMPDISP_LOOP;温度循环采集显示;读出转换后的温度值GET_TEMPER:SETBDQ;定时入口BCD:LCALLINIT_1820JBFLAG1,S22LJMPBCD;若DS18B20不存在则返回S22:-4-LCALLDELAY1MOVA,#0CCH;跳过ROM匹配------0CCLCALLWRITE_1820MOVA,#44H;发出温度转换命令LCALLWRITE_1820NOPLCALLDELAYLCALLDELAYCBA:LCALLINIT_1820JBFLAG1,ABCLJMPCBAABC:LCALLDELAY1MOVA,#0CCH;跳过ROM匹配LCALLWRITE_1820MOVA,#0BEH;发出读温度命令LCALLWRITE_1820LCALLREAD_18200;READ_1820RET;读DS18B20的程序,从DS18B20中读出一个字节的数据READ_1820:MOVR2,#8;读取一个字节RE1:CLRCSETBDQNOPNOPCLRDQNOPNOPNOPSETBDQMOVR3,#7;延时DJNZR3,$MOVC,DQ;读取一个位MOVR3,#23;延时DJNZR3,$RRCADJNZR2,RE1RET;写DS18B20的程序WRITE_1820:MOVR2,#8;发送一个字节-5-CLRCWR1820:CLRDQMOVR3,#6;延时DJNZR3,$RRCAMOVDQ,C;发送一个位MOVR3,#23;延时DJNZR3,$SETBDQNOPDJNZR2,WR1820SETBDQRET;读DS18B20的程序,从DS18B20中读出两个字节的温度数据READ_18200:;将温度高位和低位从DS18B20中读出MOVR4,#2MOVR1,#36H;低位存入36H(TEMPER_L),高位存入35H(TEMPER_H)RE00:MOVR2,#8;读取一个字节RE01:CLRCSETBDQNOPNOPCLRDQNOPNOPNOPSETBDQMOVR3,#7;延时DJNZR3,$MOVC,DQ;读取一个位MOVR3,#23;延时DJNZR3,$RRCADJNZR2,RE01MOV@R1,ADECR1DJNZR4,RE00RET;将从DS18B20中读出的温度数据进行转换-6-TEMPER_COV:MOVA,#0F0HANLA,TEMPER_L;舍去温度低位中小数点后的四位温度数值SWAPAMOVTEMPER_NUM,AMOVA,TEMPER_LJNBACC.3,TEMPER_COV1;四舍五入去温度值INCTEMPER_NUMTEMPER_COV1:MOVA,TEMPER_HANLA,#07HSWAPAADDA,TEMPER_NUMMOVTEMPER_NUM,A;保存变换后的温度数据LCALLBIN_BCDRET;将16进制的温度数据转换成压缩BCD码BIN_BCD:MOVDPTR,#TEMP_TABMOVA,TEMPER_NUMMOVCA,@A+DPTRMOVTEMPER_NUM,ARETTEMP_TAB:DB00H,01H,02H,03H,04H,05H,06H,07HDB08H,09H,10H,11H,12H,13H,14H,15HDB16H,17H,18H,19H,20H,21H,22H,23HDB24H,25H,26H,27H,28H,29H,30H,31HDB32H,33H,34H,35H,36H,37H,38H,39HDB40H,41H,42H,43H,44H,45H,46H,47HDB48H,49H,50H,51H,52H,53H,54H,55HDB56H,57H,58H,59H,60H,61H,62H,63HDB64H,65H,66H,67H,68H,69H,70H,71HDB72H,73H,74H,75H,76H,77H,78H,79HDB80H,81H,82H,83H,84H,85H,86H,87HDB88H,89H,90H,91H,92H,93H,94H,95HDB96H,97H,98H,99H;DS18B20初始化程序INIT_1820:SETBDQNOPCLRDQMOVR0,#80H-7-TSR1:DJNZR0,TSR1;延时SETBDQMOVR0,#25H;96uSTSR2:DJNZR0,TSR2JNBDQ,TSR3LJMPTSR4;延时TSR3:SETBFLAG1;置标志位,表示DS1820存在LJMPTSR5TSR4:CLRFLAG1;清标志位,表示DS1820不存在LJMPTSR7TSR5:MOVR0,#06BH;200uSTSR6:DJNZR0,TSR6;延时TSR7:SETBDQRET;重新写DS18B20暂存存储器设定值RE_CONFIG:JBFLAG1,RE_CONFIG1;若DS18B20存在,转RE_CONFIG1RETRE_CONFIG1:MOVA,#0CCH;发SKIPROM命令LCALLWRITE_1820MOVA,#4EH;发写暂存存储器命令LCALLWRITE_1820MOVA,#00H;TH(报警上限)中写入00HLCALLWRITE_1820MOVA,#00H;TL(报警下限)中写入00HLCALLWRITE_1820MOVA,#7FH;选择12位温度分辨率LCALLWRITE_1820RET;延时子程序DELAY:MOVR7,#00HMIN:DJNZR7,YS500RETYS500:-8-LCALLYS500USLJMPMINYS500US:MOVR6,#00HDJNZR6,$RETDELAY1:MOVR7,#20HDJNZR7,$RET$INCLUDE(VI2C_ASM.INC);包含VIIC软件包END七、实验报告格式及要求报告格式按照学院课程设计报告格式统一标准,写出设计的基本步骤及方案;绘制硬件设计原理图及电路图;设计出完整的程序框图和程序清单;写出设计心得体会。预习要求:1、认真查阅课程设计相关资料(I2C总线、DS18B20单总线数字温度传感器、I2C总线器件ZLG7290)2、认真阅读参考程序,理解程序的算法和原理。八、考核方式及成绩评定考核方式:考查考核方法:设计过程中检查学生实际操作能力,根据课程设计内容要求,设计相关程序,指导书中所给代码仅供参考,要求学生独立进行整体程序设计。成绩评定:实验成绩根据考勤、实验态度、动手能力、创新能力和实验报告来综合评定,分5个级别:优、良、中、及格、不及格。九、参考资料1、DP-51PROC实验指导书(实验设备配套指导资料),2007年.2、李广第.等单片机基础.北京航空航天大学出版社,2005年.3、胡汉才等.单片机原理及其接口技术.清华大学出版社,1999年.4、张迎新等.单片机初级教程.北京航空航天大学出版社,2001年.5、周航慈.单片机程序设计基础.北京航空航天大学出版社,1998年.6、李朝青.单片机原理及接口技术.北京航空航天大学出版社,1999年.7、张毅刚等.MCS-51单片机应用设计.哈尔滨工业大学出版社,1997年.8、单片机网站及相关论坛.9、DS18B20单总线数字温度传感器相关书籍.10、IIC相关书籍。
本文标题:1《单片机原理与应用》课程设计指导书2010-6-8
链接地址:https://www.777doc.com/doc-3101756 .html