




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、大连理工大学本科设计报告题目:基于ds18b20 zlg7290的温度采集系统设计课程名称:单片机综合设计实验学院(系): 信息与通信工程学院专 业:电子信息工程班 级:电子学 号:学生姓名:20 16 年 5 月 6 日题目:1设计要求1 .利用ds18b2ck现现场环境温度的采集;2 .利用zlg7290改现温度数据证书的十进制显示;3 .默认一个上限温度的报警(蜂鸣器);4 .能够利用zlg7290由勺键盘操作修改“上限报警值”;5 .可以显示温度的小数位,以提高温度检测的分辨率;6 .程序中必须有中断环节。2设计分析及系统方案设计利用p3.3 口采集ds18b20勺温度信息,采集后,通
2、过i2c协议控制zlg7290 显示温度信息,并且将小数部分显示出来,通过 p1.3连接一个拨码用来做模式 控制,控制是温度显示状态模式或者设定温度上限模式,其中温度上限存放在 28h单元中。利用t0定时器控制蜂鸣器发声一段时间,超过温度上限报警声音提示,同 时数码管进行闪烁以报警。利用into外部中断读取按键值,用于设定上限温度并保存3系统电路图用iu-7 中签线与单片机接门电蹄把住5主程序中主要变量说明内存单元的定义、功能等。变量名称内存单元功能temper_l36h存放温度低四位temper_h35h存放温度高四位temper34h转换后的温度值temper_bcd)33hbc限式温度值
3、temper_num60h温度值缓冲单元wsla_729070h7290写控制单元rsla_729071h7290读控制单元20-27h数码管显示缓冲区28h存放温度上限值30-31h存放温度bc则个位十位6系统软件中各个子程序的功能描述子程序的名称、功能,以及入口、出口参数。子程序名称功能描述get_temper(读取18b20的温度值write_1820向18b20写控制字read_18200向18b20读控制字temper_co'/温度转换成十进制bc则形式cf拆分子程序,拆分送数码管显示init_1820温度传感器初始化buzzer蜂鸣器控制发声子程序int_7290:读取按键
4、外部中断子程序rdkey读取键值子程序delay延时子程序7主程序程序流程图升殆行序初溶化7<r<拨妈为1? ;, /调泡庾米鼻子耳移按键触发中断荒泉温度值m专换成机诩推分送fig7m。显不混度大于上眼睛,姓啤案响数超管网爆中断速效鸳值工取蛀百r查询接褪<51值为o凸?:拆分送k90导示保存为十位/' n产舐值为0 9? 拆分送鹿箕品保存为个位,咨询接班:.jtx. /1忖叁否为赣啰a保存温度上限倩r£tl8程序清单(i2c库函数省略)sdabit p1.0sclbit p1.1temper l equ 36htemper_h equ 35htemper e
5、qu 34h; 转换后温度值temper_bcd equ 33h;bcd码温度值temper_num equ 60h; 缓冲单元wsla_7290 equ 70hrsla_7290 equ 71hflag1bit 00hdqbit p3.3; 总线控制单元org0000hljmpmainorg0003hljmpint7290org0100hmain:movsp,#70h;zlg7290 复位clrp1.7lcall delaysetb p1.7mov28h,#1eh温度上限初始值30 度movtmod,#01h模式一, 16 位计数器setb ea允许中断mode: jb p1.3,settm
6、p; 拨码为 0 时采集温度; 温度采集tmp:clrex0mov27h,#1fh;tlp1:lcall get_temperlcall temper_cov;7290 显示movr7,#08hmovr0,#20hmovr2,#10hmovr3,#wsla_7290lcall wrnbytlcall delaymova,temper; 判断温度上限mov28h,r5clrccjne a,28h,rel ; 此处报警温度为30度rel:jc netlcall buzzer ; 大于等于时蜂鸣器报警; 闪烁mov28h,#70h; 闪烁命令字mov29h,#7fh; 闪烁命令字movr7,#02h
7、; 设定数据个数movr0,#28h; 设置源数据首地址movr2,#07h; 设置外围器件内部寄存器首地址movr3,#wsla_7290 ;设定外围器件地址lcall wrnbyt ; 调用显示子程序lcall delayljmp nextt; 设定温度上限settmp:setb ex0;7290 复位clrp1.7lcall delaysetb p1.7; 显示设定内容mov27h,#0b6h ;smov26h,#9eh ;emov25h,#1fh ;t.movr7,#03hmovr0,#25hmovr2,#15hmovr3,#wsla_7290lcall wrnbytlcall del
8、aysjmp nexttnet:mov28h,#70h; 不能闪烁mov29h,#00hmovr7,#02hmovr0,#28hmovr2,#07hmovr3,#wsla_7290lcall wrnbytlcall delaynextt: call delaysjmp modeget_temper:setb dq ; 定时入口bcd: lcall init_1820jb flag1,s22ljmp bcd ;若ds18b20不存在则返回s22: lcall delay1mova,#0cch; 跳过 rom 匹配 0cchlcall write_1820mova,#44h; 发出温度转换命令lc
9、all write1820lcall delaycba:abc:writewr1:lcall init_1820jb flag1,abcljmp cbalcall delay1mova,#0cchlcall write_1820mova,#0behlcall write_1820lcall read_18200ret1820:movr2,#8clrcclrdqmovr3,#6djnz r3,$rrcamovdq,cmovr3,#23djnz r3,$setb dqnop; 跳过 rom 匹配; 发出读温度命令;写ds18b20程序; 延时 24us; 延时 60usdjnz r2,wr1set
10、b dqretread_18200:;从 1820 中读出两个字节温度数据push 01hmovr4,#2movr1,#36hre00: movr2,#8re01: clrcsetb dqnopclrdqnopnopsetb dqmov r3,#2djnz r3,$mov c,dqmov r3,#23hdjnz r3,$rrc adjnz r2,re01mov r1,adec r1djnz r4,re00pop 01hrettemper_cov:; 将读出的数据转换push dphpush dplpush 02hmova,#0f0hanla,temper_l ; 舍去小数点后的四位swap a
11、movtemper_num,amova,temper_hanla,#07hswap aadda,temper_nummovtemper,a; 转换成十进制数显示movb,#10div abmov30h,b; 个位div abmovb,#10mov22h,r3mov31h,b; 十位anla,#0fh; 百位swap aadda,bmovtemper_bcd,alcall cf2 ; 拆分查表mov25h,r3mov26h,r4mova,30hanla,#0fhlcall cfmov24h,r3; 处理四位小数位数据mova,temper_lanla,#0fh ; 取低四位数据movb,#02h
12、mulabmovdptr,#numsegmovc a,a+dptrmovtemper_bcd,amov23h,r4mova,temper_lanla,#0fhmovb,#02hmulabinc amovc a,a+dptrmovtemper_bcd,alcall cf2mov20h,r3mov21h,r4pop02hpopdplpopdphret; 小数部分查表numseg: dw 0000h,0625h,1250h,1875h,2500h,3125h,3750h,4375hdw 5000h,5625h,6250h,6875h,7500h,8125h,8750h,9375hj拆分显示整数子程序
13、cf: push 02hpush dphpush dplmovdptr,#ledsegmovr2,temper_bcdanla,#0fhmovc a,a+dptrmovr3,amova,r2swap aanla,#0fhmovc a,a+dptrmovr4,ainc r3 ; 加上小数点popdplpopdphpop02hret; 拆分显示小数子程序cf2: push 02hpush dphpush dplpush accmovdptr,#ledsegmovr2,temper_bcdmova,r2anla,#0fhmovc a,a+dptrmovr3,amova,r2swap aanla,#0
14、fhmovc a,a+dptrmovr4,a; 加上小数点popaccpopdplpopdphpop02hret;led字型码 ledseg: db 0fch,60h,0dah,0f2h,66h,0b6h,0beh,0e4hdb 0feh,0f6h,0eeh,3eh,9ch,7ah,9eh,8ehinit1820:setb dqnopclrdqmovr0,#80htsr1: djnz r0,tsr1setb dq; 延时 300usmovr0,#25htsr2: djnz r0,tsr2jnbdq,tsr3ljmp tsr4tsr3: setb flag1ljmp tsr5tsr4: clrf
15、lag1ljmp tsr7tsr5: movr0,#06bhtsr6: djnz r0,tsr6;96us; 延时; 致标志位;ds18b20 存在; 清标志位;ds18b20 不存在; 延时 200ustsr7: setb dqretdelay1: movr7,#20hdjnz r7,$;80us 延时retj蜂鸣器驱动子程序buzzer:push 07hmovr7,#00hmovtl0,#33h; 设置定时 0.5us 初值movth0,#0fehsetb tr0; 启动 t0wait: jnbtf0,$clrtf0movtl0,#33hmovth0,#0fehcplp1.2djnz r7
16、,waitclrtr0setb p1.2pop07hret; 外部中断服务程序int_7290:push 00hpush 01hpush 02hpush 03hpush 04hpush 07hpush accpush pswsjmp rd1rd1:jb p3.2,$; 以查询方式等待下一次按键操作swap alcall rdkeycjne a,#0ah,waitt ; 容错功能调整waitt: jnc rd1movtemper_bcd,alcall cf2movb,#0ahmulabmovr5,amov23h,r3movr7,#01hmovr0,#23hmovr2,#13hmovr3,#wsl
17、a_7290lcall wrnbytkey2: jb p3.2,$; 以查询方式等待下一次按键操作lcall rdkeycjne a,#0ah,waitt2waitt2: jnckey2movtemper_bcd,alcall cf2mova,r5adda,temper_bcdmovr5,amov22h,r3mov21h,#9ch ;cmovr7,#02hmovr0,#21hmovr2,#11hmovr3,#wsla_7290lcall wrnbyt; 确定键comf: jb p3.2,$; 等待确认键lcall rdkeycjne a,#0fh,comf; 上限值放入 28h 中mov28h
18、,r5down:;7290 复位clrp1.7lcall delaysetb p1.7; 必须清标志clrie0poppswpopaccpop07hpop04hpop03hpop02hpop00hretirdkey: movr0,#1fh读取键值子程序(键值保存在a 中) -movr7,#01hmovr2,#01hmovr3,#wsla_7290movr4,#rsla_7290lcall rdaddmova,1fhdecaret; 延时子程序 delay: push 00h; 延时子程序push 01hmovr1,#00lp: movr1,#00hdjnz r1,$djnz r0,lppop0
19、1hpop00hret;【附录一】由汇编语言编制的i2c通讯子程序;【提 示】下列程序是在系统时钟为12mhz或11.0592mhz,即nop旨令为1 微秒左右。;(1)带有内部单元地址的多字节写操作子程序wrnbyt.* ;;通用的i2c通讯子程序(多字节写操作);入口参数r7字节数,r0:源数据块首地址;r0原数据块首地址;r2从器件内部子地址;r3:外围器件地址(写);相关子程序wrbytstop cack sta.*wrnbyt: push pswpush accwradd: mov a,r3;取外围器件地地址(包含 r/w=0 )lcall sta ;发送起始信号slcall wrb
20、yt ;发送外围地址lcall cack ;检测外围器件的应答信号jb f0,wradd ;如果应mov a,r2lcall wrbyt ;发送内部寄存器首地址lcall cack ;检测外围器件的应答信号jb f0,wradd ;如果应答不正确返回重来wrda: mov a,r0lcallwrbyt;发送外围地址lcallcack;检测外围器件的应答信号jbf0,wradd;如果应答不正确返回重来incr0djnz r7,wrdalcall stoppop accpop pswret.*;(2)带有内部单元地址的多字节读操作子程序rdadd.* ;;通用的i2c通讯子程序(多字节读操作);入
21、口参数r7字节数;;r0目标数据块首地址;r2从器件内部子地址;r3器件地址(写);r4器件地址(读);相关子程序wrbytstop cack sta mnack.*rdadd: push psw;从pcf8563勺02h单元读入7个参数push acc ;存放于20h-26h单元rdadd1: lcall stamov a,r3lcall wrbytlcall cackjbmov a,r2lcall wrbytlcall cackjblcall stamov a,r4lcall wrbytlcall cackjbrdn: lcallmovdjnzlcalllcallpoppopretack:
22、 lcallinc; 取器件地址(写); 发送外围地址; 检测外围器件的应答信号f0,rdadd1; 如果应答不正确返回重来; 取内部地址;发送外围地址; 检测外围器件的应答信号f0,rdadd1; 如果应答不正确返回重来; 取器件地址(读); 发送外围地址; 检测外围器件的应答信号f0,rdadd1; 如果应答不正确返回重来rdbytr0,ar7,ackmnackstopaccpswmackr0sjmp rdn3) i2c 各个信号子程序.* ;*启动信号子程序 s.* ;*sta: setb sda ; 启动信号 ssetb sclnop;产生4.7us延时nopnopnopnopclr
23、sdanop;产生4.7us延时nopnopnopnopclr sclret.*停止信号子程序 p.* ;*stop: clr sda ; 停止信号 psetb sclnop;产生4.7us延时nopnopnopnopsetb sdanop;产生4.7us延时nopnopnopnopclr sclclr sdaret;*;应答信号子程序 mack;*mack: clr sda; 发送应答信号acksetb sclnop ;产生4.7us延时nopnopnopnopclr sclsetb sdaret;*;非应答法信号子程序 mnack;*mnack: setb sda ; 发送非应答信号nac
24、ksetb sclnop;产生4.7us延时nopnopnopnopclr sclclr sdaret.*;应答检测子程序 cack;*cack: setb sda ; 应答位检测子程序setb sclclr f0mov c,sda ; 采样 sdajnccend ; 应答正确时转cendsetb f0 ;应答错误时f0置一cend: clr sclret;*;发送一个字节子程序wrbyt;*wrbyt: push 06hmov r6,#08h; 发送一个字节子程序wlp: rlc a;( 入口参数 a)mov sda,csetb sclnop;产生4.7us延时nopnopnopclr sc
25、ldjnz r6,wlppop 06hret;*;接收一个字节子程序 rdbyt;*rdbyt:push 06hmov r6,#08h; 接收一个字节子程序rlp: setb sdasetb scl; *nop ;! 产生大于 15微秒的延时!nop ; 注意这是专门为 zlg7290nop ; 添加的 20 微秒延时部分nopnopnopnopnopnopnopnopnopnopnopnop; *mov c,sdamov a,r2rlc amov r2,aclr scldjnz r6,rlp ;( 出口参数 r2)pop 06hret;*end9 系统调试运行结果说明、分析所出现问题,设计体会与建议硬件使用zlg51单片机开发平台,软件使用keil2软件进行程序的编写编译以及调试。运行结果 : 能够实现当前环境温度的采集以及显示、 以及超过设定上限温度进行报警, 数码管闪烁功能。 同时能够通过拨码控
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国橡胶工业软件行业发展监测及发展趋势预测报告
- 财务主管自我剖析材料范文
- 中国双金属复合管行业市场全景评估及投资前景展望报告
- 2025年中国蛔虫卵装片行业市场发展前景及发展趋势与投资战略研究报告
- 2025年中国插线板行业发展前景预测及投资战略咨询报告
- 中国品牌代理行业市场前景预测及投资战略研究报告
- 消防队伍训练工作计划
- 2025年中国热电执行器行业市场占有率及投资前景预测分析报告
- 教育系统公共安全管理提升计划
- 2025-2030年中国航空直流电源车行业深度研究分析报告
- 220KV变电站施工材料采购方案
- 精益生产改善培训
- 传热学典型简答题
- 大学生心理健康教育(兰州大学版)学习通超星期末考试答案章节答案2024年
- 统计学数据的图表展示(共133张课件)
- 医院培训课件:《静脉中等长度导管临床应用专家共识》
- 2024年新北师大版八年级上册物理全册教学课件(新版教材)
- GB/T 44208-2024馆藏文物病害描述及图示基础要素
- 自来水公司初级试题
- 中国共产党支部工作条例
- 水处理过滤器产品营销计划书
评论
0/150
提交评论