




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、大连理工大学本科设计报告题目: 单总线高精度温度采集系统 题目:单总线高精度温度采集系统1 设计要求系统结构:1)由DS18B20实现对温度的采集; 2)由数码管实现温度显示系统。设计要求 :1)启动DS18B20进行12位高精度环境温度采集;2)利用数码管显示数据;3)具有温度上限声光报警;4)可以通过键盘设定报警上限值。扩展功能: 1)报警频率随实测温度与报警温度的差值变化,相差越大频率越高;2)键盘设定上限值时十位,个位的闪烁,并且在输入后停止闪烁。2 设计分析及系统方案设计程序采用无限循环结构。一次循环中,完成对温度的采集和显示,判断超过设定值时报警。键盘设定用外中断/INT1完成,T
2、1产生方波驱动蜂鸣器发声,初值赋为采集温度与设定值的差值。3.系统电路图K1-K16键盘矩阵电路8位数码管显示4 外围接口模块硬件电路功能描述ZLG7290B:数码管动态显示驱动、键盘扫描芯片。通过按键进行上限温度的设定及温度的显示模块。蜂鸣器模块:当温度超过上限则报警。DS18B20:智能温度传感器。对环境温度进行12位精度的采集。 5 主程序中主要变量定义变量名称RAM单元/寄存器功能TEMPER_L36H读出温度值低8位数据TEMPER_H35H读出温度值高4位数据TEMPER34H转换温度整数部分TEMPER-NUM60H转换温度整数部分的缓冲单元TEMPER_XS33H转换温度小数部
3、分TEMPER-NUM-XS61H转换温度小数部分的缓冲单元LIMIT14H键盘输入的温度上限值6系统软件中各个子程序的功能描述子程序名称入口参数出口参数功能 描述GET_TEMPER无温度值高四位TEMPER_L、温度值低8位TEMPER_H从DS18B20中读出12位温度数据TEMPER_COVTEMPER_LTEMPER_HTEMPERTEMPER_XS将读出的12位温度数据转换并保存INT_1820无FLAG1初始化DS18B20WRITE_1820A无向DS18B20中写入数据INT_T1TH1TL1定时器T1中断。装定时初值,初值为温度差值,并对P3.5取反驱动蜂鸣器。DISPLA
4、YTEMPERTEMPER_XS无将温度通过数码管显示出来READ_18200无TEMPER_LTEMPER_H从DS18B20中读出数据并储存7主程序程序流程图转换温度子程序读温度子程序开T1中断并赋初值开键盘中断INT07290复位开始把数据通过数码管显示出来采集温度值是否大于设定值 N开T1中断,把设定值与温度差值赋给T1初值,并驱动蜂鸣器报警 Y Y8程序清单TEMPER_L EQU 36H;存放读出温度低位数据TEMPER_H EQU 35H;存放读出温度高位数据TEMPER EQU34H ;存放转换后的8位温度值TEMPER_XS EQU 33H;存放转换温度的小数部分TEMPER
5、_NUM EQU 60H;缓冲单元TEMPER_NUM_XS EQU61HFLAG1 BIT00H DQ BITP3.3;一线总线控制端口LIMIT EQU 14HWSLA EQU 070HRSLA EQU 071HSDA BIT P1.0SCL BIT P1.1ORG 8000HLJMP MAINORG 8003H;外中断Int0的入口地址LJMP INT_7290ORG 801BH;定时器T1的入口地址LJMP INT_T1ORG 8100HMAIN:MOV SP,#70HCLR P1.2;7290复位LCALL DELAYSETB P1.2MOV LIMIT,#0FFHLP1:SETB
6、EX0;开外中断0SETB EAMOV TCON,#00HSETBET1;开T1中断SETBEAMOV TMOD,#10H;T1初值MOV TL1,#33HMOV TH1,#0FEHLCALL GET_TEMPER;从DS18B20读出温度数据LCALL TEMPER_COV;转换读出的温度数据并保存MOV A,TEMPERCJNE A,LIMIT,NEXTNEXT:JNC NEXT1;TEMPER>=LIMITJMP NEXT2NEXT1:SETBTR1LJMPNEXT3NEXT2:CLRTR1NEXT3:MOV 31H,#00H;显示整数部分MOV 30H,#01HMOV B,#10
7、 DIV ABADD A,#02HMOV 37H,AMOV A,BADD A,#0CHMOV 36H,AMOV A,TEMPER_XS;显示小数部分MOV B,#4MUL ABADD A,#16HMOV 35H,AINC AMOV 34H,AINC AMOV 33H,AINC AMOV 32H,AMOV DPTR,#LEDSEG1CLR AMOV R7,#08HMOV R0,#20HMOV R1,#30HLOOP1:MOV A,R1MOVC A,A+DPTRMOV R0,AINC R1INC R0DJNZ R7,LOOP1MOV R7,#08HMOV R0,#20HMOV R2,#10HMOV
8、 R3,#WSLALCALL WRNBYTLCALL DELAY2MOV A,TEMPERSJMP LP1;T1中断服务程序INT_T1:PUSHACCPUSHPSWCLR TF1MOVA,TEMPERSUBB A,LIMITMOVB,#2MULABADD A,#33HMOV TL1,A ;赋定时器t1初值MOV TH1,#0FEHCPL P3.5POP PSWPOPACCRETILEDSEG1: DB 0C6H,9CH;查表 DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E4H,0FEH,0F6H DB 0FDH,61H,0DBH,0F3H,67H,0B7H,0B
9、FH,0E5H,0FFH,0F7H DB 0FCH,0FCH,0FCH,0FCH,0FCH,0BEH,0DAH,0B6H,60H,0DAH,0B6H,0FCH,60H,0FEH,0E4H,0B6H DB 0DAH,0B6H,0FCH,0FCH,0F2H,60H,0DAH,0B6H,0F2H,0E4H,0B6H,0FCH DB 66H,0F2H,0E4H,0B6H DB 0B6H,0FCH,0FCH,0FCH DB 0B6H,0BEH,0DAH,0B6H DB 0BEH,0DAH,0B6H,0FCH DB 0BEH,0FEH,0E4H,0B6H DB 0E4H,0B6H,0FCH,0FCH DB
10、 0FEH,60H,0DAH,0B6H DB 0FEH,0E4H,0B6H,0FCH DB 0F6H,0F2H,0E4H,0B6H DB 00H,0EEH,10HDELAY2:PUSH 00HPUSH 01HMOV R0,#00HDELAY3:MOV R1,#00HDJNZ R1,$DJNZ R0,DELAY3POP 01HPOP 00HRET ;*读取温度值GET_TEMPER:;读出转换后的温度值SETB DQ ;定时入口BCD:LCALL INIT_1820JB FLAG1,S22LJMP BCD ; 若DS18B20不存在则返回S22:LCALL DELAY1MOV A,#0CCH ;
11、 跳过ROM匹配 0CCHLCALL WRITE_1820MOV A,#44H ; 发出温度转换命令LCALL WRITE_1820LCALL DELAYCBA:LCALL INIT_1820JB FLAG1,ABCLJMP CBAABC:LCALL DELAY1MOV A,#0CCH ; 跳过ROM匹配LCALL WRITE_1820MOV A,#0BEH ; 发出读温度命令LCALL WRITE_1820LCALL READ_18200 ;READ_1820RET WRITE_1820:;写DS18B20的程序MOV R2,#8CLR CWR1:CLR DQMOV R3,#6;延时24us
12、DJNZ R3,$RRC AMOV DQ,CMOV R3,#23;延时60usDJNZ R3,$SETB DQ;一个写周期至少要维持60us以上NOP;离下一个写周期至少要有1us间隔DJNZ R2,WR1SETB DQRETREAD_18200:; 读DS18B20的程序,从DS18B20中读出两个字节的温度数据MOV R4,#2 ; 将温度高位和低位从DS18B20中读出MOV R1,#36H ; 低位存入36H(TEMPER_L),高位存入35H(TEMPER_H)RE00:MOV R2,#8RE01:CLR CSETB DQNOPCLR DQ;DQ;DQ=0 15US内NOP;18B2
13、0送数,主控器NOP;必须完成DQ的采样SETB DQ;主控器释放DQMOV R3,#2DJNZ R3,$;延时10usMOV C,DQ;取dq数据位MOV R3,#23;延时60usDJNZ R3,$RRC ADJNZ R2,RE01MOV R1,ADEC R1DJNZ R4,RE00RETTEMPER_COV:;将读出的数据进行转换MOV A,#0F0HANL A,TEMPER_LSWAP AMOV TEMPER_NUM,AMOV A,TEMPER_LANL A,#0FHMOV TEMPER_NUM_XS,AMOV TEMPER_XS,TEMPER_NUM_XSTEMPER_COV1:MO
14、V A,TEMPER_H ANL A,#07HSWAP AADD A,TEMPER_NUMMOV TEMPER_NUM,AMOV TEMPER,TEMPER_NUMRETINIT_1820:; DS18B20初始化程序SETB DQNOPCLR DQMOV R0,#80HTSR1:DJNZ R0,TSR1SETB DQMOV R0,#25HTSR2:DJNZ R0,TSR2JNB DQ,TSR3LJMP TSR4TSR3:SETB FLAG1LJMP TSR5TSR4:CLR FLAG1LJMP TSR7TSR5:MOV R0,#06BHTSR6:DJNZ R0,TSR6TSR7:SETB D
15、QRETDELAY1:MOV R7,#20HDJNZ R7,$RETDELAY:PUSH 00HPUSH 01HMOV R0,#00LP:MOV R1,#00HDJNZ R1,$DJNZ R0,LPPOP 01HPOP 00HRET;*键盘设定温度上限值INT_7290:PUSH 00HPUSH 02HPUSH 03HPUSH 04HPUSH 07HPUSH ACCPUSH PSWLCALL RDKEYCJNE A,#0AH,DOWN1LJMPAKEYDOWN1:LJMP DOWNAKEY:LCALL DISPLAYA;闪烁控制PUSH05HPUSH06HMOVR5,#70HMOVR6,#08
16、HMOVR7,#02HMOVR0,#05HMOVR2,#07HMOVR3,#WSLALCALLWRNBYTLCALLDELAYPOP06HPOP05HCXUN:JB P3.2,$LCALL RDKEYCJNE A,#0AH,NEXT4;查询输入值是否为数字NEXT4: JNC CXUNNEXT5:MOV 40H,ALCALL DISPLAY1MOV A,40HMOV B,#10MUL ABMOV 14H,A;存十位;闪烁控制PUSH05HPUSH06HMOVR5,#70HMOVR6,#04HMOVR7,#02HMOVR0,#05HMOVR2,#07HMOVR3,#WSLALCALLWRNBYT
17、LCALLDELAYPOP06HPOP05HCXUN1:JB P3.2,$LCALL RDKEYCJNE A,#0AH,NEXT6;查询输入值是否为数字 NEXT6: JNC CXUN1;闪烁控制NEXT7:PUSH05HPUSH06HMOVR5,#70HMOVR6,#00HMOVR7,#02HMOVR0,#05HMOVR2,#07HMOVR3,#WSLALCALLWRNBYTLCALLDELAYPOP06HPOP05HMOV 41H,A;存个位LCALL DISPLAY2;显示个位数MOV A,41HADD A,14HMOV LIMIT,A;设定报警值JB P3.2,$FH1:LCALL R
18、DKEYCJNE A,#0BH,FH1DOWN:CLR IE0POP PSWPOP ACCPOP 07HPOP 04HPOP 03HPOP 02HPOP 00HRETIRDKEY:MOVR0,#1FH;键值缓冲单元MOVR7,#01H;取一个数据(键值)MOVR2,#01H ;指向内部数据键值寄存器地址MOVR3,#WSLA_7290;取器件地址(写)MOVR4,#RSLA_7290;取器件地址(读) LCALLRDADD;读出7290的01H单元中的键值MOVA,1FH;取健值送缓冲单元DECARETDISPLAY2:;显示输入的个位数MOV 30H,#01HMOV 31H,#00HPUSH
19、ACCMOVA,40HADDA,#02HMOV 33H,APOPACCADD A,#02HMOV 32H,AMOV 34H,#56HMOV 35H,#56HMOV 36H,#56HMOV 37H,#57HMOV DPTR,#LEDSEG1CLR AMOV R7,#08HMOV R0,#20HMOV R1,#30HLOOP2:MOV A,R1MOVC A,A+DPTRMOV R0,AINC R1INC R0DJNZ R7,LOOP2MOV R7,#08HMOV R0,#20HMOV R2,#10HMOV R3,#WSLALCALL WRNBYTLCALL DELAY2RETDISPLAYA:;显
20、示AMOV 30H,#01HMOV 31H,#00HMOV 32H,#58HMOV 33H,#58HMOV 34H,#56HMOV 35H,#56HMOV 36H,#56HMOV 37H,#57HMOV DPTR,#LEDSEG1CLR AMOV R7,#08HMOV R0,#20HMOV R1,#30HLOOP3:MOV A,R1MOVC A,A+DPTRMOV R0,AINC R1INC R0DJNZ R7,LOOP3MOV R7,#08HMOV R0,#20HMOV R2,#10HMOV R3,#WSLALCALL WRNBYTLCALL DELAY2RETDISPLAY1:;显示输入的
21、十位数MOV 30H,#01HMOV 31H,#00HMOV 32H,#58HADD A,#02HMOV 33H,AMOV 34H,#56HMOV 35H,#56HMOV 36H,#56HMOV 37H,#57HMOV DPTR,#LEDSEG1CLR AMOV R7,#08HMOV R0,#20HMOV R1,#30HLOOP4:MOV A,R1MOVC A,A+DPTRMOV R0,AINC R1INC R0DJNZ R7,LOOP4MOV R7,#08HMOV R0,#20HMOV R2,#10HMOV R3,#WSLALCALL WRNBYTLCALL DELAY2RET;【附录一】由
22、汇编语言编制的I2C通讯子程序;(1)带有内部单元地址的多字节写操作子程序 WRNBYT;*;通用的I2C通讯子程序(多字节写操作);入口参数R7字节数,R0:源数据块首地址;R0原数据块首地址;R2从器件内部子地址;R3:外围器件地址(写);相关子程序WRBYT、STOP、CACK、STA;*WRNBYT:PUSHPSWPUSHACCWRADD:MOVA,R3;取外围器件地地址(包含r/w=0)LCALLSTA;发送起始信号S LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JBF0,WRADD;如果应MOVA,R2LCALLWRBYT;发送内部寄存器首地址LCA
23、LLCACK;检测外围器件的应答信号JBF0,WRADD;如果应答不正确返回重来 WRDA:MOVA,R0LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JBF0,WRADD;如果应答不正确返回重来INCR0DJNZ R7,WRDALCALLSTOP POPACCPOPPSWRET ;*;(2)带有内部单元地址的多字节读操作子程序 RDADD ;*;入口参数R7字节数;;R0目标数据块首地址;R2从器件内部子地址;;R3器件地址(写);R4器件地址(读);相关子程序WRBYT、STOP、CACK、STA、MNACK ;*RDADD: PUSHPSW;从PCF8563
24、的02H单元读入7个参数PUSHACC;存放于20H-26H单元RDADD1:LCALLSTA MOVA,R3;取器件地址(写)LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JBF0,RDADD1;如果应答不正确返回重来MOVA,R2;取内部地址LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JBF0,RDADD1;如果应答不正确返回重来LCALLSTAMOVA,R4;取器件地址(读)LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JBF0,RDADD1;如果应答不正确返回重来RDN:LCALLRDBYT M
25、OVR0,ADJNZR7,ACKLCALLMNACKLCALLSTOPPOPACCPOPPSWRETACK:LCALLMACKINCR0SJMPRDN ;(3)I2C各个信号子程序;*;启动信号子程序S ;*STA:SETBSDA;启动信号SSETBSCLNOP;产生4.7US延时NOPNOPNOPNOPCLRSDANOP;产生4.7US延时NOPNOPNOPNOP CLRSCLRET ;*;停止信号子程序P ;*STOP:CLRSDA ;停止信号PSETBSCLNOP;产生4.7US延时NOPNOPNOPNOPSETBSDANOP;产生4.7US延时NOPNOPNOPNOPCLRSCLCLR
26、SDARET ;*;应答信号子程序 MACK;*MACK:CLRSDA;发送应答信号ACKSETBSCLNOP;产生4.7US延时NOPNOPNOPNOPCLRSCLSETBSDARET;*;非应答法信号子程序MNACK;*MNACK:SETBSDA;发送非应答信号NACKSETBSCLNOP;产生4.7US延时NOPNOPNOPNOPCLRSCLCLRSDARET;*;应答检测子程序CACK;*CACK:SETBSDA;应答位检测子程序SETBSCL CLRF0MOVC,SDA;采样SDAJNCCEND;应答正确时转CENDSETBF0;应答错误时F0置一CEND:CLRSCLRET;*;发送一个字节子程序WRBYT;*WRBYT:PUSH06HMOVR6,#08H;发送一个字节子程序 WLP:RLCA ;(入口参数A)MOVSDA,CSETBSCLNOP;产生4.7US延时NOPNOPNOPNOPCLRSCLDJNZR6,WLPPOP06HRET;*;接收一个字节子程序RDBYT ;*RDBYT: PUSH06HMOVR6,#08H;接收一个字节子程序RLP:SETBSDASETBSCL; *NOP;!产
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 供应链价值链分析方法-试题及答案
- 重要贸易条款解析试题及答案
- 2024年CPMM应试心理调节及试题及答案
- 供应链终端管理试题及答案探讨
- CPSM考试全科目复习试题及答案
- 分阶段复习的2024年CPMM试题及答案
- 2024年CPMM备考进阶试题及答案
- 2025年ABS专用料项目合作计划书
- 豫南九校2025届高考考前模拟化学试题含解析
- 植物体内水分调节机制试题及答案
- 2025年高考物理一轮复习:热学(解析版)
- 校园内电动汽车充电设施规划探讨
- 2024年洛阳市孟津区引进研究生学历人才考试真题
- 2025年春新外研版(三起)英语三年级下册课件 Unit2第1课时Startup
- 旋挖机施工方案
- 养猪场建设项目可行性研究报告
- 未遂事故培训课件
- 国网工程项目管理制度
- 2024年中考历史复习专题6:课件《辽宋夏金元时期:民族关系发展和社会变化》
- 慢性便秘中国专家共识意见课件
- 【虎啸】2024年虎啸年度洞察报告-3C家电行业
评论
0/150
提交评论