大连理工单片机课程设计报告书_第1页
大连理工单片机课程设计报告书_第2页
大连理工单片机课程设计报告书_第3页
大连理工单片机课程设计报告书_第4页
大连理工单片机课程设计报告书_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、专业资料大连理工大学本科设计报告题目:基于DS18B20 ZLG7290的温度米集系统设计课程名称:单片机综合设计实验学院系: 信息与通信工程学院 专 业:电子信息工程班 级:电子学 号:学生姓名:成 绩:20 16 年5 月6 日题目1设计要求1. 利用DS18B2C实现现场环境温度的采集;2. 利用ZLG7290B实现温度数据证书的十进制显示;3. 默认一个上限温度的报警蜂鸣器;4. 能够利用ZLG7290B的键盘操作修改“上限报警值;5. 可以显示温度的小数位,以提升温度检测的分辨率;6. 程序中必须有中断环节.2设计分析及系统方案设计利用P3.3 口采集DS18B20勺温度信息,采集后

2、,通过I2C协议限制ZLG7290显示温度信息,并且将小数局部显示出来,通过P1.3连接一个拨码用来做模式限制,限制是温度显示状态模式或者设定温度上限模式,其中温度上限存放在 28H单元中.利用T0定时器限制蜂鸣器发声一段时间,超过温度上限报警声音提示,同 时数码管进行闪烁以报警.利用INTO外部中断读取按键值,用于设定上限温度并保存.3系统电路图word完美格式J ONO 臼3EZ23 GN DT>SF1SISA20朗10"7 单总线I3S18I32O与单片机按口电路他禺A L 一 .上相电粗5 kK211i AIS9C5!1远思幾i | |1ZLG72Gj找位数码僻Pi &

3、gt;戸J1SDA1/共阴枫1 'PmV-St jPh;111117RST图冷11宜.验电路的连按5主程序中主要变量说明内存单元的定义、功能等.变量名称内存单元功能TEMPER_L36H存放温度低四位TEMPER35H存放温度咼四位TEMPER34H转换后的温度值TEMPER_BCD)33HBCD形式温度值TEMPER_NUM/I60H温度值缓冲单元WSLA_729070H7290写限制单元RSLA_729071H7290读限制单元20-27H数码管显示缓冲区28H存放温度上限值30-31H存放温度BCD码个位十位6系统软件中各个子程序的功能描述子程序的名称、功能,以及入口、出口参数.

4、子程序名称功能描述GET_TEMPEF1读取18B20的温度值WRITE_1820向18b20写限制字READ_18200向18b20读限制字TEMPER_CO'/温度转换成十进制BCD码形式CF拆分子程序,拆分送数码管显示INIT_1820温度传感器初始化BUZZER蜂鸣器限制发声子程序INT_7290:读取按键外部中断子程序RDKEY读取键值子程序DELAY延时子程序7主程序程序流程图8程序清单I2C库函数省略SDABIT P1.0SCLBIT P1.1TEMPER_L EQU 36HTEMPER EQU 35HTEMPEREQU 34H;转换后温度值TEMPER_BCD EQU

5、33H;BCD码温度值TEMPER_NUM EQU 60H;缓冲单元WSLA_7290 EQU 70HRSLA_.7290 EQU 71HFLAG1BIT 00HDQBIT P3.3;总线限制单元ORG0000HLJMPMAINORG0003HLJMPINT_7290ORG0100HMAIN:MOSP,#70H;ZLG7290 复位CLRP1.7LCALL DELAYSETB P1.7MOE8H,#1EH;温度上限初始值30度MOVTMOD,#01H;模式一,16位计数器专业资料;允许中断SETB EAword完美格式MODE:TMP:JB P1.3,SETTMP;温度采集CLREX0MOE7

6、H,#仆H;拨码为0时采集温度;tLP1:LCALL GET_TEMPERLCALL TEMPER_COV;7290显示MOVR7,#08HMOVR0,#20HMOVR2,#10HMOVR3,#WSLA_7290LCALL WRNBYTLCALL DELAYMOgTEMPER;判断温度上限MOE8H,R5CLRCCJNE A,28H,rel ;此处报警温度为30度rel:JC NETLCALL BUZZER;大于等于时蜂鸣器报警;闪烁MOV28H,#70H;闪烁命令字MOV29H,#7FH;闪烁命令字MOVR7,#02H;设定数据个数MOVR0,#28H;设置源数据首地址MOVR2,#07H;

7、设置外围器件内部存放器首地址MOVR3,#WSLA_7290设定外围器件地址LCALL WRNBYT ;调用显示子程序LCALL DELAYLJMP NEXTT;设定温度上限SETTMP:SETB EX0;7290复位CLRP1.7LCALL DELAYSETB P1.7;显示设定内容MOV27H,#0B6H ;SMOV26H,#9EH ;EMOVR7,#03HMOVRO,#25HMOVR2,#15HMOVR3,#WSLA_7290LCALL WRNBYTLCALL DELAYSJMP NEXTTNET:MOV28H,#7OH;不能闪烁MOV29H,#OOHMOVR7,#02HMOVR0,#2

8、8HMOVR2,#07HMOVR3,#WSLA_7290LCALL WRNBYTLCALL DELAYNEXTT: CALL DELAYSJMP MODEGET_TEMPER:SETB DQ;定时入口专业资料BCD:LCALL INIT_1820JB FLAG1,S22LJMP BCD;假设ds18b20不存在那么返回S22:LCALL DELAY1MOg#0CCH;跳过 rom 匹配 0cchLCALL WRITE_1820MOg#44H;发出温度转换命令LCALL WRITE_1820LCALL DELAYCBA:LCALL INIT_1820JB FLAG1,ABCLJMP CBAABC

9、:LCALL DELAY1MOg#0CCH;跳过rom匹配LCALL WRITE_1820MOS,#0BEH;发出读温度命令LCALL WRITE_1820LCALL READ_18200RETWRITE_1820:;写 ds18b20 程序CLRCWR1: CLRDQMOVR3,#6;延时 24usDJNZ R3,$RRCXMOVDQ,CMOVR3,#23;延时 60usDJNZ R3,$SETB DQNOPDJNZ R2,WR1SETB DQRETREAD_18200:;从1820中读出两个字节温度数据PUSH 01HMOVR4,#2MOVR1,#36HRE00: MOVR2,#8RE01

10、: CLRCSETB DQNOPword完美格式专业资料CLRDQNOPNOPSETBDQMOVR3,#2DJNZR3,$MOVC,DQMOVR3,#23HDJNZR3,$RRCADJNZR2,RE01MOVR1,ADECR1DJNZR4,RE00POP01HRETMOVk,#OFOHword完美格式TEMPER COV:;将读出的数据转换PUSHDPHPUSHDPLPUSH02H专业资料ANLA,TEMPER_L ;舍去小数点后的四位SWAP AMOVTEMPER_NUM,AMOVA,TEMPER_HANLA,#07HSWAP AADDA,TEMPER_NUMMOVTEMPER,A;转换成十

11、进制数显示MOVB,#10DIV ABMOV30H,B;个位MOVB,#10DIV ABMOVMH,B;十位ANLA,#0FH;百位SWAP AADDA,BMOVTEMPER_BCD,ALCALL CF2;拆分查表MOV25H,R3word完美格式专业资料MOE6H,R4MOVk,30HANLA,#OFHLCALL CFMOE4H,R3;处理四位小数位数据MOVk,TEMPER_LANLA,#OFH ;取低四位数据MOVI,#O2HMUIABMOV)PTR,#NUMSEGMOVC A,A+DPTRMOVTEMPER_BCD,ALCALL CF2MOE2H,R3MOE3H,R4MOVk,TEMP

12、ER_LANLA,#0FHMOVJ,#02HMUIABINC AMOVC A,A+DPTRMOVTEMPER_BCD,ALCALL CF2MOEOH,R3MOE1H,R4POP02HPOFDPLPOFDPHRET; 小数局部查表NUMSEG: DW 0000H,0625H,1250H,1875H,2500H,3125H,3750H,4375HDW 5000H,5625H,6250H,6875H,7500H,8125H,8750H,9375H; 拆分显示整数子程序CF: PUSH 02HPUSH DPHPUSH DPLword完美格式专业资料MOVDPTR,#LEDSEGM0VR2,TEMPER

13、_BCDANLA,#OFHMOVC A,A+DPTRMOVR3,AMOA,R2SWAP AANLA,#0FHMOVC A,A+DPTRMOVR4,AINC R3;加上小数点POFDPLPOFDPHPOR02HRET; 拆分显示小数子程序CF2:PUSH 02HPUSH DPHPUSH DPLPUSH ACCM0VR2,TEMPER_BCDM0VA,R2ANLA,#OFHMOVC A,A+DPTRMOVR3,AMOVA,R2SWAP AANLA,#0FHMOVC A,A+DPTRMOVR4,A;加上小数点POPACCPOPDPLPOPDPHPOR02HRETJ-led字型码LEDSEG:DB 0

14、FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E4HDB 0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EHword完美格式专业资料DJNZ R7,$word完美格式SETBDQNOPCLRDQMOVR0,#80HTSR1: DJNZR0,TSR1SETBDQINIT_1820:;延时300us;96usMOVRO,#25HTSR2: DJNZ R0,TSR2JNBDQ,TSR3LJMPTSR4TSR3:SETBFLAG1LJMPTSR5TSR4:CLRFLAG1LJMPTSR7TSR5:MOVR0,#06BHTSR6:DJNZR0,TSR6TSR7:SE

15、TBDQ;延时;致标志位;ds18b20 存在;清标志位;ds18b20不存在;延时200usRETDELAY1:MOVR7,#20H;80us 延时专业资料RET; 蜂鸣器驱动子程序BUZZER:PUSH 07HMOR7,#OOHMOVL0,#33H;设置定时0.5us初值MOVH0,#0FEHSETB TR0;启动 t0WAIT: JNBTF0,$CLRTF0MOVL0,#33HMOVH0,#0FEHCPLP1.2DJNZ R7,WAITCLRTR0SETB P1.2POP07HRET外部中断效劳程序 word完美格式INT_7290:PUSH00HPUSH01HPUSH02HPUSH03

16、HPUSH04HPUSH07HPUSHACCPUSHPSWSJMPRD1RD1:JB P3.2,$;以查询方式等待下一次按键操作SWAP ALCALL RDKEYCJNE A,#OAH,WAITT;容错功能调整WAITT: JNC RD1MOVTEMPER_BCD,ALCALL CF2MO巴#OAHMUIABMOVR5,AMOV23H,R3MOVR7,#01HMOVR0,#23HMOVR2,#13HMOVR3,#WSLA_729OLCALL WRNBYTKEY2: JB P3.2,$;以查询方式等待下一次按键操作LCALL RDKEYCJNE A,#0AH,WAITT2WAITT2:JNCKE

17、Y2MOVTEMPER_BCD,ALCALL CF2MOVA,R5ADDA,TEMPER_BCDMOVR5,AMOV22H,R3M0E1H,#9CH;CMOVR7,#02HMOVR0,#21HM0VR2,#11HMOVR3,#WSLA_7290LCALL WRNBYT;确定键COMF: JB P3.2,$;等待确认键LCALL RDKEYCJNE A,#0FH,COMFMOV28H,R5;上限值放入28h中DOWN:;7290复位CLRP1.7LCALL DELAYSETB P1.7CLRIE0 ;必须清标志POFPSWPOPACCPOP07HPOP04HPOP03HPOP02HPOP00HA

18、 中-RETI; 读取键值子程序键值保存在RDKEY: MORO,#1FHMOVR7,#O1HMOVR2,#O1HMOVR3,#WSLA_729OMOVR4,#RSLA_729OLCALL RDADDMOVA,1FHDECARET; 延时子程序DELAY: PUSH OOH;延时子程序PUSH 01HMOVR1,#00LP: MOVR1,#00HDJNZ R1,$DJNZ R0,LPPORD1HPORD0HRET;【附录一】由汇编语言编制的I2C通讯子程序;【提 示】以下程序是在系统时钟为12MH或11.0592MHZ,即NOFP旨令为1 微秒左右.;1带有内部单元地址的多字节写操作子程序 W

19、RNBYT *J;通用的I2C通讯子程序多字节写操作;入口参数R7字节数,R0:源数据块首地址;R0原数据块首地址;R2从器件内部子地址;R3:外围器件地址写;相关子程序 WRBYTSTOP CACK STA.*WRNBYT: PUSH PSWPUSH ACCWRADD: MOV A,R3;取外围器件地地址包含 r/w=0 LCALL STA ;发送起始信号SLCALL WRBYT ;发送外围地址LCALL CACK ;检测外围器件的应答信号JB F0,WRADD ;如果应MOV A,R2LCALL WRBYT ;发送内部存放器首地址LCALL CACK ;检测外围器件的应答信号JB F0,W

20、RADD ;如果应答不正确返回重来WRDA: MOV A,R0LCALL WRBYT ;发送外围地址LCALL CACK ;检测外围器件的应答信号JB F0,WRADD ;如果应答不正确返回重来INC R0DJNZR7,WRDALCALLSTOPPOPACCPOPPSWRET.*J;2带有内部单元地址的多字节读操作子程序 RDADD.*J;通用的I2C通讯子程序多字节读操作;入口参数R7字节数;;R0目标数据块首地址;R2从器件内部子地址;;R3器件地址写;R4器件地址读;相关子程序 WRBYTSTOP CACK STA MNACK.*JRDADD: PUSH PSW;从PCF8563勺02H

21、单元读入7个参数PUSHACC;存放于20H-26H单元RDADD1: LCALL STAMOVA,R3;取器件地址写LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JBF0,RDADD1;如果应答不正确返回重来MOVA,R2;取内部地址LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JBF0,RDADD1;如果应答不正确返回重来LCALLSTAMOVA,R4;取器件地址读LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JBF0,RDADD1;如果应答不正确返回重来RDN:LCALLRDBYTMOVR0,ADJ

22、NZR7,ACKLCALLMNACKLCALLSTOPPOPACCPOPPSWRETACK:LCALLMACKINCR0SJMPRDN;(3) I2C各个信号子程序.*启动信号子程序S.*STA:SETBSDA;启动信号SSETBSCLNOP;产生4.7US延时NOPNOPNOPNOPCLRSDANOP;产生4.7US延时NOPNOPNOPNOPCLRSCLRET.*停止信号子程序P.*STOP: CLR SDA ;停止信号 PSETB SCLNOP;产生4.7US延时NOPNOPNOPNOPSETB SDANOP;产生4.7US延时NOPNOPNOPNOPCLR SCLCLR SDARET.

23、*;应答信号子程序 MACK.*MACK: CLRSDA发送应答信号ACKSETBSCLNOP;产生4.7US延时NOPNOPNOPNOPCLR SCLSETB SDARET.*;非应答法信号子程序MNACK.*MNACK: SETBSDA;发送非应答信号NACKSETBSCLNOP;产生4.7US延时NOPNOPNOPNOPCLR SCLCLR SDARET *J*应答检测子程序CACK.*CACK: SETBSDA ;应答位检测子程序SETBSCLCLRF0MOVC,SDA ;采样 SDAJNCCEND ;应答正确时转CENDSETBF0;应答错误时FO置一CEND: CLRSCLRET.

24、*发送一个字节子程序WRBYT.*WRBYT: PUSH 06HMOV R6,#08H;发送一个字节子程序WLP: RLC A;入口参数 AMOV SDA,CSETB SCLNOP;产生4.7US延时NOPNOPNOPNOPCLR SCLDJNZ R6,WLPPOP 06HRET *;接收一个字节子程序RDBYT.*RDBYT:PUSH 06HMOV R6,#08H;接收一个字节子程序RLP:SETB SDASETB SCL*NOP;! 产生大于15微秒的延时!NOP;注意这是专门为ZLG7290NOP;添加的20微秒延时局部NOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOP*MOVC,SDAMOVA,R2RLCAMOVR2,ACLRSCLDJNZR6,RLP;出口参数 R2POP06HRET.*end9系统调试运行结果说明、分析所出现问题,设计体会与建议硬件使用ZLG51单片机开发平台,软件使用KEil2软件进行程序的编写编译 以及调试.运行结果:能够实现当前环境温度的采集以及显示、以及超过设定上限温度 进行报警,数码管闪烁功能.同时能够通过拨码限制模式切换,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论