单片机课程设计温度报警器系统计数器.docx

上传人:b****6 文档编号:8386268 上传时间:2023-01-31 格式:DOCX 页数:12 大小:229.64KB
下载 相关 举报
单片机课程设计温度报警器系统计数器.docx_第1页
第1页 / 共12页
单片机课程设计温度报警器系统计数器.docx_第2页
第2页 / 共12页
单片机课程设计温度报警器系统计数器.docx_第3页
第3页 / 共12页
单片机课程设计温度报警器系统计数器.docx_第4页
第4页 / 共12页
单片机课程设计温度报警器系统计数器.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

单片机课程设计温度报警器系统计数器.docx

《单片机课程设计温度报警器系统计数器.docx》由会员分享,可在线阅读,更多相关《单片机课程设计温度报警器系统计数器.docx(12页珍藏版)》请在冰豆网上搜索。

单片机课程设计温度报警器系统计数器.docx

单片机课程设计温度报警器系统计数器

课程名称单片机原理与应用

设计题目计数器及温度报警器

起止日期

工作内容

 

一:

设计任务

1:

设计一个0-255计数器,计满后自动清零,重新计数,在数码管中显示。

2:

设计一个0-50000计数器,计满后自动清零,重新计数,在数码管中显示。

3.设计一个温度报警系统;温度显示范围为0-51度,当温度大于40度时,上限报警指示灯点亮,并驱动电机1转动;当温度小于10度时,下限报警指示灯点亮,并驱动电机2转动。

二:

设计源程序

1:

255计数器

ORG0000H

AJMPSTART

ORG0300H

START:

MOVDPTR,#0CFE9H

MOVA,#0D1H;将8279初始化

MOVX@DPTR,A

NOP

NOP

NOP

NOP;延时

NOP

NOP

NOP

NOP

MOVTMOD,#50H;采用工作方式一进行计数

MOVTH1,#00H;高位清零

MOVTL1,#00H;地位清零

SETBTR1;启动定时器/计数器T1进行加1计数

LOOP1:

MOVA,TL1;将低位数给累加器A

MOVB,#64H;将十进制数100给B

DIVAB;用A除以B,商保存在A中,余数保存在B

MOVR1,A;将百位给R1

MOVA,B;将B传递给A

MOVB,#0AH;把十进制数10传给B

DIVAB;用A除以B

MOVR2,A;把十位上的数字传给R2

MOVR3,B;把个位上的数字传给R3

MOVDPTR,#0CFE9H

MOVA,#80H;选择第一个数码管

MOVX@DPTR,A

MOVDPTR,#TAB

MOVA,R

MOVCA,@A+DPTR;通过查表将百位数送入到第一个数

MOVDPTR,#0CFE8H码管

MOVX@DPTR,A

CLRA;将累加器A清零

MOVDPTR,#0CFE9H

MOVA,#81H;选择第二个数码管

MOVX@DPTR,A

MOVDPTR,#TAB

MOVA,R2;通过查表将十位上的数送至第二

MOVCA,@A+DPTR个数码管

MOVDPTR,#0CFE8H

MOVX@DPTR,A

CLRA;将累加器清零

MOVDPTR,#0CFE9H

MOVA,#82H;选择第三个数码管

MOVX@DPTR,A

MOVDPTR,#TAB

MOVA,R3;通过查表将个位上的数字送

MOVCA,@A+DPTR到第三个数码管

MOVDPTR,#0CFE8H

MOVX@DPTR,A

LJMPLOOP1

TAB:

DB3FH,06H,5BH,4FH,66H;共阴极LED数码管的段码管

DB6DH,7DH,07H,7FH,6FH

END

1:

0-255计数器数码管显示仿真图

2:

0-50000计数器

ORG0000H

SJMPSTART

DRG000BH

AJMPT0

START:

MOVTMOD,#050H

MOVP1,#0

MOVTH0,#0FFH

MOVTL0,#0FFH

MOVP3,#0;将p3口置0

CLRC;将C置0

MOVDPTR,#TAB;指针指向TAB,

SETBEA;总中断控制设为“1”

SETBET0;T0允许中断控制设为“1”

MOVR0,#0;个位值清零

MOVR1,#0;十位值清零

MOVR2,#0;百位值清零

MOVR3,#0;千位值清零

MOVR4,#0;万位值清零

SETBTR0;打开T0开关

ACALLT1;显示加等待中断

TO:

MOVTH0,#0FFH

MOVTL0,#0FFH;中断将计数器初始化

INCR0;R0自动加1

MOVA,R0;将R0的值赋给A

CJNEA,#10AAA;比较A是否等于十,若为十则进位,否则继续计数

MOVR0,#0;R0置零

INCR1;进位到十位

AAA:

MOVCA,@A+DPTR;查表

MOVP2,A

SETBP1.0;示个位

ACALLDELAY;延时

SETBP1.0

MOVA,R1;R1的值赋给A中

CJNEA,#10,BBB;比较,是否进位

MOVR1,#0;进位R1置0

INCR2;进位到百位

BBB:

MOVCA,@A+DPTR;查表

MOVP2,A

SETBP1.1;显示十位

ACALLDELAY;延时

CLRP1.0

MOVA,R2R2;赋给百位

CJNEA,#10,CCC;比较,是否进位

MOVR2,#0;进位,R2置0

INCR4;进位到千位

CCC:

MOVCA,@A+DOTR;查表

MOVR2,A

SETBP1.2;显示百位

MOVA,R3;R3赋给A

CJNEA,#10,DDD;比较,是否进位

MOVR3,#0;进位置0

INCR4;进位到万位

DDD:

MOVCA,@A+DPTR;查表

MOVP2,A

SETBP1.3;显示千位

ACALLDELAY;延时

CLRP1.3

MOVA,R4

CJNEA,#5,EEE;比较万位是否到5

MOVR4,#0;万位到5时置0

MOVR3,#0

EEE:

MOVCA,@A+DPTR;查表

MOVP2,A

SETBP1.4;显示万位

ACALLDELAY;延时

CLRP1.4

RETI

T1:

MOVA,R0;等待中断时调用

MOVCA,@A+DPTR

MOVP2,A

SETBP1.0

ACALLDELAY

CLRP1.0

MOVA,R1

MOVCA,@A+DPTR

MOVP2,A

SETBP1.1

ACALLDELAY

CLRP1.1

MOVA,R2

MOVA,@A+DPTR

MOVP2,A

SETBP1.2

ACALLDELAY

CLRP1.2

MOVA,R3

MOVCA,@A+DPTR

MOVP2,A

SETBP1.3

ACALLDELAY

CLRP1.3

MOVA,R4

MOVCA,@A+DPTR

MOVP2,A

SETBP1.4

ACALLDELAY

CLRP1.4

AJMPT1

DELAY:

MOVR7,#10

DE1:

MOVR6,#50

DE2:

DJNZR6,DE2

DJNZR7,DE1

RET

TAB:

DB0C0H0F9H0A4H0B0H99H92H82H0F8H80H90H88H83H0C6H0A1H86H8EH

2;0-50000计数器数码管显示仿真图

3:

温度报警器源程序

DISPLAY0EQU71H;EQU赋值命令

DISPLAY1EQU72H

DISPLAY2EQU73H

ADCEQU74H

STBITP1.0;将P2.5地址赋值给START

EOCBITP1.1;将P2.6地址赋值给EOC

OEBITP1.2;将P2.7地址赋值给OE

ORG00H

SJMPSTART

START:

CLRP3;P3清零,为报警电路做准备

MOVP1.2,#1;P2.7给高电平,OE高电平有效

MOVDISPLAY0,#0FFH;给数码管赋初值

MOVDISPLAY1,#0FFH

MOVDISPLAY2,#0FFH

MOVDPTR,#TABLE;跳转至表格

MOVTMOD,#02H;工作方式二8-bit定时/计数(自动重装初值)

MOVTH0,#0F5H;定时计数器高八位付初值

MOVTL0,#00H

MOVIE,#82H;EA=1,ET0=1溢出中断位允许中断

SETBTR0;启动定时器TR0开始运行

WAIT:

CLRST;转换启动信号STARK清零

SETBST;启动转换信号

CLRST

JNBEOC,$;EOC为转换结束线,高电平为转换结束

;当EOC=0时转移到本指令首地址

SETBOE;输出转换得到的数据

MOVADC,P1;OE=1时将AD信号存入ADC中

CLROE;输出数据线呈高阻态

给第一个数码管的值

MOVA,ADC

MOVB,#51;DOUT=VIN*51为AD转换得出数据

DIVAB;DOUT/51为DISPLAY2值

MOVDISPLAY2,A;给第一个数码管的值

报警程序

MOVR0,#2

SUBBA,R0

JCLOOP1;如果A大于R0(大于2)则转移至LOOP1

MOVP3,00H;否则

给第二,第三个数码管的值

LOOP2:

MOVA,B

MOVB,#5

DIVAB

MOVDISPLAY1,A;分别得到DISPLAY1DISPLAY0的值

MOVA,B

MOVDISPLAY0,A

LCALLDISP

SJMPWAIT;等待再次得到ADC

RETI

数码管点亮程序

DISP:

MOVA,DISPLAY0

MOVCA,@A+DPTR

CLRP1.6;位选第一个数码管低电平有效

MOVP0,A;点亮第一个数码管

NOP

NOP

NOP

NOP

NOP

NOP

SETBP1.6;重新置一(动态扫描)

MOVA,DISPLAY1

MOVCA,@A+DPTR

CLRP1.5

MOVP0,A;点亮第二个数码管

NOP

NOP

NOP

NOP

NOP

NOP

SETBP1.5

MOVA,DISPLAY2

MOVCA,@A+DPTR

CLRP1.4

ORLA,#80H;或指令点亮数码管点号

MOVP0,A;点亮第三个数管

NOP

NOP

NOP

NOP

NOP

NOP

SETBP1.4

RET

表格

TABLE:

DB3FH,06H,5BH,4FH,66H

DB6DH,7DH,07H,7FH,6FH

点亮报警电路数码管

LOOP1:

MOVP3.1,#1

LJMPLOOP2

END

温度报警器仿真图

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1