资源描述:
《单片机论文(1)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、东北大学秦皇岛分校电子信息系单片机程序设计温度采集系统设计专业名称班级学号学生姓名指导教师设计时间2011.10.27-2011.11.2温度采集系统设计摘要:本设计是用单片机组成温度采集显示系统,对单路温度进行测量,并用数码管显示当前温度值。温度范围为0℃~100℃,温度分辨率为±1℃。关键词:温度温度采集正文:本设计采用AT89C51单片机为核心控制器件,系统框图如下所示。放大显示单片机A/D转换传感器(温度采集)在温度测量时,需要将温度的变化转换为对应的电压信号的变化,这就需要温度传感器。常用的
2、温度传感器有热敏电阻、热电偶、集成温度传感器等。热电偶误差较大,集成温度传感器精度较高,但价格较贵,折中考虑因此选用负温度系数热敏电阻作为温度传感器。将热敏电阻的阻值变化转换成相应的电压变化,需要一个转换电路。本设计采用电桥电路,用热敏电阻与三个普通电阻组成电桥,当温度变化时,电桥的输出电压信号随之变化。由于电桥输出的电压信号幅值较低,要经过放大后才能满足A/D转换器对输入电压的要求,因此采用运算放大器对信号进行放大。温度与放大电路共同构成测温电路。测温电路输出的电压信号是模拟信号,需要经过A/D转换
3、成数字量后才能被单片机识别。该系统采用8位A/D转换器ADC0809集成电路芯片。AT89C51单片机控制ADC0809将模拟电压信号转换成数字信号,并根据这个数字信号查表取得相应温度值,送到数码管显示。根据设计要求,可以用3位LED数码管显示当前温度值。由于数据管位数不多,可以采用静态显示方式和BCD-七段译码器译码。但考虑到硬件成本,因此采用动态显示方式和程序译码方式,即直接从I/O口送出七段码。通过以上分析可得出程序设计方面的各部分任务分配如下:1、主程序负责对系统初始化,包括中断设置、定时器设
4、置和启动第一次A/D转换。2、定时器T0中断服务程序负责动态显示,定时依次将个、十、百位显示缓冲单元的数据送相应数码管。程序中这3个缓冲单元是30H(个位)、31H(十位)和32H(百位)。1、外中断INT0中断服务程序负责控制A/D转换,启动下一次转换,取得转换结果,将结果转换成3位BCD码分别存放在个、十、百位三单元显示缓冲。相应的程序流程图如下:主程序初始化1、中断开发2、定时器初始化3、堆栈设置4、启动A/D转换5、启动定时器原地踏步外中断INT0中断服务程序1、读取A/D0809转换结果2、
5、启动下一轮转换3、将转换成BCD码返回计数器=21、送百位数2、百位数码管点亮3、计数器+11、送十位数2、十位数码管点亮3、计数器+11、送个位数2、个位数码管点亮3、计数器+1计数器=1计数器=0定时器重置初值定时器T0中断服务程序返回设计的源程序如下:ORG0000HAJMPMAINORG000BHAJMPDISPORG0013HAJMPADMAIN:SETBIT0;设置INT0为边沿触发器MOVIE,#83H;INT0、T0中断开放MOVIP,#02H;T0高级优先MOVTMOD,#01H;设
6、置T0为方式2MOVTL0,#30H;T0设初值MOVTH0,#0F8HSETBTR0;启动T0MOV30H,#0;3个显示单元清0MOV31H,#0MOV32H,#0MOVA,#0;启动第一次A/D转换MOVR0,#0MOVX@R0,ASJMP$;原地踏步;T0中断显示;显示缓冲百32H、十31H、个30HDISP:MOVTL0,#30H;T0重置初值MOVTH0,#0F8HMOVP2,#0FFH;显示全关CJNER2,#00H,DISP1;显示个位MOVP1,30HCLRP2.0AJMPDISP3
7、DISP1:CJNER2,#01H,DISP2;显示十位MOVP1,31HCLRP2.1AJMPDISP3DISP2:MOVP1,32H;显示百位CLRP2.2MOVR2,#00HDISP3:RETI;INT0中断,A/D转换完成AD:MOVR0,#00H;读取A/D转换结果MOVXA,@R0MOVA,#0;启动下一次A/D转换MOVX@R0,AMOVDPTR,#TAB2;指向电压—温度表MOVCA,@A+DPTR;查处温度值MOVB,#64H;取得百位BCD码DIVABMOVDPTR,#TAB2MO
8、VCA,@A+DPTR;查对应的七段码MOV32H,A;七段码存入百位显示缓冲MOVA,B;取得十、个位BCD码MOVB,#0AHDIVABMOVCA,@A+DPTR;取得十位七段码MOV31H,AMOVA,B;取得个位七段码MOVCA,@A+DPTRMOV30H,ARETI;两组表格,TAB1:七段码表;TAB2:电压—温度表TAB1:DB0C0H,0F9H,0A4H,0B0H,99HDB92H,82H,0F8H,80H,98HTAB2:DB00H,0