智能传感器课程设计_第1页
智能传感器课程设计_第2页
智能传感器课程设计_第3页
智能传感器课程设计_第4页
智能传感器课程设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、题目:智能传感器设计1 设计要求发送方的adc模块能够随时动态采集模拟电压的变化,即使用a/d转换芯片tlc549cp对模拟电压进行数字转换,并将转换结果处理为三位十进制数(000-255)通过zlg7290b进行显示;可设定上限报警;且报警值可用键盘修改,修改报警值时,修改位闪烁,且显示上一次的报警值并保存。2 设计分析及系统方案设计这是一个利用具有数据滤波功能的adc转换程序,使用8位tlc549芯片、蜂鸣器等,将采集出来的数据转换成三位十进制数稳定输出,并通过zlg7290b显示的程序。其中,设定上限报警值,即通过改变模拟电压输入,达到上限值后响铃报警,且可修改上限报警值。首先是主程序,

2、开中断并进行7290复位,设定初始报警值100,建立显示缓冲区(40h-47h)并显示”adc=”,采集tlc549的n个数据并存放于20h开始的单元中,调adjust进行数据滤波,结果存于a中;调alarm进行报警判断:若大于设定报警值,则蜂鸣器响;调bcd_cont,将a中的数据拆分、查表并送显示缓冲区的低两位,以备显示用;调wrnbyt,将显示缓冲区中的数据写入7290b,以十进制的方式显示adc的结果;调延时子程序。子程序主要有利用蜂鸣器报警、采集n个数据、数据滤波、二进制转换成十进制并显示(其中包括拆分);还有一个中断程序,由硬件int_0控制,通过键值的修改实现对报警值的调整。当按

3、“e”时,进入报警值修改,数码管显示当前报警值并闪烁;继续按百位、十位、个位输入修改值,每输入一位,该位不闪烁,输入结束,将显示在数码管后三位,再按“f”即返回原模拟量对应值,且报警值已修改。另外加有容错功能,即当输入值大于255时,直接默认将报警值修改为2553系统电路图at89c51 p1.0 p1.1 p1.7(/int0) p3.2 p1.2p1.3p1.4p1.5zlg7290bsdasck/rst/int_keytlc549vccref+clk anindat ref-/cs gnd10k855047k103buzzic总线ref+ jk158 vcc vccanin jk159w

4、2buzzjk624 外围接口模块硬件电路功能描述(1)zlg7290:数码管动态显示驱动,键盘扫描管理芯片(2)tcl549cp:cmos 8位a/d转换器(3) 蜂鸣器:利用定时/计数器输出一个特定频率的方波并驱动蜂鸣器发声5 主程序中主要变量定义变量名称ram单元/寄存器功能addr20h数据缓冲区首地址/60h存放报警值disda40h显示个位disda+141h显示十位disda+242h显示百位disda+343h无显示disda+444h显示符号“=”disda+545h显示符号“c”disda+646h显示符号“d”disda+747h显示符号“a”6系统软件中各个子程序的功能

5、描述子程序名称入口参数出口参数功能 描述alarm/p1.5实现报警响铃tlc549累加器a20h-2fh连续采集32次数据adjust20h-2fh累加器a数据滤波bcd_cont累加器ar3转换成十进制数tlc549_adcp1.3累加器aa/d转换rdkey1fh累加器a获取到的键值cf累加器ar3将数据拆分为两个独立的bcd码并查表delay/延时flash1/后三位闪烁flash2/后两位闪烁flash3/后一位闪烁flash4/后三位不闪烁7主程序及中断程序流程图主程序入口开中断7290复位初始化报警值,建立显示缓冲区,显示“adc=”采集32次a/d转换数据数据滤波,取平均值调a

6、larm子程序转化为十进制7290数字显示转换值调延时子程序yyynnnnyynyn查询按键?7290数字显示报警值数码管后三位闪烁e键?读取键值中断程序入口查询按键?retif键?查询按键?读取键值,查表,7290显示个位数码管不闪烁输入数据与r5、r6相加存于a中,并将a中值赋给60h输入数据*10,存于r6中读取键值,查表,7290显示十位数码管最后一位闪烁输入数据*100,存于r5中读取键值,查表,7290显示百位数码管后两位闪烁查询按键?8程序清单sdabitp1.0 ;7290b的引脚定义 sclbitp1.1 wslaequ070hrslaequ071hdatbitp1.3 ;t

7、lc549pc引脚定义clkbitp1.2csbitp1.4cuntequ20h ;每次adc采集数据个数shiftequ05h;除数(与采集数据个数有关)addrequ20h ;数据缓冲区首地址disdaequ40h ;显示缓冲区discuntequ08h;显示缓冲区长度;#org8000hljmp8100horg8003hljmpint_7290;# ;主 程 序 ;(7290复位、显示缓冲区初始化、连续采集n个数据、数据滤波) ;(十进制调整/拆分/查表/送显示缓冲区,7290数码显示);#org8100hstart:movsp,#60hsetbea;开中断setbex0setbit0c

8、lrp1.7 ;7290复位lcalldelaysetbp1.7mov60h,#64h;初始化报警值为100,放入60h地址中;显示缓冲区处理,显示 adc = movdisda+7,#0eeh ;a字形movdisda+6,#7ah ;d字形movdisda+5,#1ah ;c字形movdisda+4,#00h ;熄灭movdisda+3,#12h ;loop:lcalltlc549 ;采集n个adc数据(20h单元) lcalladjust ;数据滤波(屏蔽以观察滤波效果) lcallalarm;调报警子程序lcallbcd_cont ;转换为十进制数movr7,#discuntmovr0

9、,#disdamovr2,#10hmovr3,#wslalcallwrnbyt ;7290数字显示lcalldelaysjmploop;#;利用蜂鸣器实现报警;#alarm:push00hmovr0,#40h;蜂鸣器频率movtmod,#10h;工作方式1movtl1,#33h;写入计数初值movth1,#0fehcjnea,60h,next;判断a与60h中数相减,无借位执行nextnext:jncloop1;cy=0,执行loop1sjmpnext1loop1:setbtr1jnbtf1,$clrtf1;清标志位movtl1,#33h;重装初值movth1,#0fehcplp1.5;取反d

10、jnzr0,loop1;循环r0次跳出next1:pop00hret;#; 各子程序;#tlc549:push00h ;连续采集32次数据push07h ;存放于20h-2fh中movr7,#cuntmovr0,#addrloop2:lcalltlc549_adc ;a/d转换movr0,aincr0djnzr7,loop2pop07hpop00hret ;#adjust:push00h ;将20h开始的cunt个数据push02h ;求平均值push03h ;结果于a中push07hmovr7,#cuntmovr0,#addrclramovr2,aloop3:clrc;累加addc a,r0

11、jncloop4;没有进位跳至loop4incr2;r2中存进位loop4:incr0djnzr7,loop3movr3,amova,r2 ;除以数据个数cuntmovr7,#shiftloop5:clrcmova,r2rrcamovr2,amova,r3rrcamovr3,adjnzr7,loop5pop07hpop03hpop02hpop00hret ;#tlc549_adc:;a/d转换push07hclraclrclkmovr7,#08hclrcsloop6:setbclknopnopnopnopmovc,datrlcaclrclknopnopdjnzr7, loop6setbcsse

12、tbclkpop07hret ;#bcd_cont: push07hpush06hpush05hpush02hmovb,#64hdivabmovr7,a ;r7中得百位数movr2,b;r2中得余数mova,r2movb,#0ahdivabmovr6,a;r6中得十位数movr5,b;r5中得个位数mova,r7lcallcf;调拆分子程序(入口a出口r4,r3-字形码)movdisda+2,r3;高位r4无用mova,r6lcallcf;调拆分子程序(入口a出口r4,r3-字形码)movdisda+1,r3mova,r5lcallcf;调拆分子程序(入口a出口r4,r3-字形码)movdis

13、da+0,r3pop02hpop05hpop06hpop07hret ;#cf:push02h ;将a中的数据拆分为两个独立的bcd码并查表pushdphpushdplmovdptr,#ledsegmovr2,aanla,#0fhmovca,a+dptrmovr3,amova,r2swapaanla,#0fhmovca,a+dptrmovr4,apopdplpopdphpop02hret ;#delay:push00hpush01hmovr0,#00hdelay1:movr1,#01hdjnzr1,$djnzr0,delay1pop01hpop00hretledseg:db0fch,60h,0

14、dah,0f2h,66h,0b6h,0beh,0e4hdb0feh,0f6h,0eeh,3eh,9ch,7ah,9eh,8eh ret;#int_7290:push00hpush 01hpush02hpush03hpush04hpush05hpush06hpush07hpushaccpushpswlcallrdkey;读取第一个按键值(功能键)cjnea,#0eh,down1 ;判断是e键吗?不是返回sjmp up;是e键时开始处理百位down1:ajmpdownup:mov a,60h;显示60h中的数lcallbcd_cont;即前一次设定的报警值movr7,#03h;闪烁显示movr0,

15、#40hmovr2,#10hmovr3,#wslalcallwrnbytlcalldelaylcallflash1jbp3.2,$;以查询的方式等待下一次按键操作lcallrdkey;读取第二个按键值(百位)movr1,amovdptr,#ledsegmovca,a+dptrmov42h,amovr7,#01hmovr0,#42hmovr2,#12hmovr3,#wsla;闪烁lcallwrnbyt ;7290数字显示百位lcalldelaylcallflash2mova,r1movb,#64h;处理输入的数据*100mulabmovr5,a;0-255之间的数,取低位即可jbp3.2,$;以

16、查询的方式等待下一次按键操作lcallrdkey;读取第三个按键值(十位)movr1,amovca,a+dptrmov41h,amovr7,#01hmovr0,#41hmovr2,#11hmovr3,#wslalcallwrnbyt ;7290数字显示lcalldelaylcallflash3;闪烁mova,r1movb,#0ah;处理输入的数据*10mulabmovr6,a;取低位jbp3.2,$;以查询的方式等待下一次按键操作lcallrdkey;读取第四个按键值(个位)movr1,amovca,a+dptrmov40h,amovr7,#01hmovr0,#40hmovr2,#10hmov

17、r3,#wslalcallwrnbyt ;7290数字显示lcalldelaylcallflash4;不闪烁mova,r1adda,r5;处理输入的数据,全部相加adda,r6mov60h,a;a赋值给60hjbp3.2,$;以查询的方式等待下一次按键操作lcallrdkey;读取第五个按键值(功能键)cjnea,#0fh,$;判断是f键吗?不是等待down:clrie0;清标志poppswpopaccpop07hpop06hpop05hpop04hpop03hpop02hpop01hpop00hretiflash1:mov 48h,#70h ;后三位闪烁 mov49h,#07hmov50h,

18、#00hmovr7,#02hmov r0,#48hmovr2,#07hmovr3,#wslalcallwrnbyt movr7,#01hmovr0,#50hmovr2,#0chmovr3,#wslalcallwrnbytretflash2:mov 48h,#70h ;后两位闪烁 mov49h,#03hmov50h,#00hmovr7,#02hmov r0,#48hmovr2,#07hmovr3,#wslalcallwrnbyt movr7,#01hmovr0,#50hmovr2,#0chmovr3,#wslalcallwrnbytretflash3:mov 48h,#70h ;最后一位闪烁 mov49h,#01hmov50h,#00hmovr7,#02hmov r0,#48hmovr2,#07hmovr3,#wslalcallwrnbyt movr7,#01hmovr0,#50hmovr2,#0chmovr3,#wslalcallwrnbytretflash4:mov 48h,#70h ;不闪烁 mov49h,#00hmov50h,#00hmo

温馨提示

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

评论

0/150

提交评论