数字温度计设计实例.doc

上传人:PIYPING 文档编号:10530091 上传时间:2021-05-22 格式:DOC 页数:15 大小:145KB
返回 下载 相关 举报
数字温度计设计实例.doc_第1页
第1页 / 共15页
数字温度计设计实例.doc_第2页
第2页 / 共15页
数字温度计设计实例.doc_第3页
第3页 / 共15页
数字温度计设计实例.doc_第4页
第4页 / 共15页
数字温度计设计实例.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《数字温度计设计实例.doc》由会员分享,可在线阅读,更多相关《数字温度计设计实例.doc(15页珍藏版)》请在三一文库上搜索。

1、数字温度计设计实例利用可调电阻调节电压值模拟温度的输入量,当温度低于30C时,发出长“嘀”声和光报警,当温度高于60C时,发出短“嘀”声和光报警,测量温度范围0-99度,用4位7段数码管显示温度,ADC0808(ADC0809) 作为转换器。1、 硬件设计2、 软件设计LED_0EQU 30HLED_1 EQU 31HLED_2 EQU 32HADCEQU35HTCNTAEQU36HTCNTBEQU37HH_TEMPEQU38H;温度上限L_TEMPEQU39H;温度下限FLAGBIT00HH_ALMBITP3.0L_ALMBITP3.1SOUNDBITP3.7CLOCKBITP2.4ST B

2、IT P2.5EOC BIT P2.6OE BIT P2.7ORG 00HSJMPSTARTORG0BHLJMPINT_T0ORG1BHLJMPINT_T1START:MOVLED_0,#00HMOVLED_1,#00HMOVLED_2,#00HMOVDPTR,#TABLEMOVH_TEMP,#153MOVL_TEMP,#77MOVTMOD,#12HMOVTH0,#245MOVTL0,#0MOVTH1,#(65536-1000)/256MOVTL1,#(65536-1000)MOD 256MOVIE,#8aHCLRCSETBTR0;为ADC0808提供时钟WAIT:SETBH_ALMSETBL

3、_ALMCLR STSETB STCLR ST;启动转换 JNB EOC,$SETB OE MOV ADC,P1;读取AD转换结果CLR OEMOVA,ADCSUBBA,#77 ;判断是否低于下限JCLALMMOVA,H_TEMPMOVR0,ADCSUBBA,R0;判断是否高于上限JCHALMCLRTR1LJMPPROCLALM:;低温报警CLRL_ALMSETBTR1CLRFLAGLJMPPROCHALM: ;高温报警CLRH_ALMSETBTR1SETBFLAGLJMPPROCPROC:MOV A,ADC ;数值转换MOV B,#100DIV ABMOV LED_2,AMOV A,BMOV

4、 B,#10DIV ABMOV LED_1,AMOV LED_0,BLCALLDISPSJMP WAITINT_T0:CPLCLOCK ;提供ADC0808时钟RETIINT_T1:MOVTH1,#(65536-1000)/256MOVTL1,#(65536-1000)MOD 256CPLSOUNDINCTCNTAMOVA,TCNTAJBFLAG,I1 ;判断是高温警报还是低温警报CJNEA,#30,RETUNE;低温警报声SJMPI2I1:CJNEA,#20,RETUNE;高温警报声I2:MOVTCNTA,#0INCTCNTBMOVA,TCNTBCJNEA,#25,RETUNEMOVTCNT

5、A,#0MOVTCNTB,#0LCALLDELAY2RETUNE:RETIDISP:MOVA,LED_0;数码显示子程序MOVCA,A+DPTRCLRP2.3MOVP0,ALCALLDELAYSETBP2.3MOVA,LED_1MOVCA,A+DPTRCLRP2.2MOVP0,ALCALLDELAYSETBP2.2MOVA,LED_2MOVCA,A+DPTRCLRP2.1MOVP0,ALCALLDELAYSETBP2.1RETDELAY:MOVR6,#10D1:MOVR7,#250DJNZR7,$DJNZR6,D1RETDELAY2:MOVR5,#20D2:MOVR6,#20D3:MOVR7,

6、#250DJNZR7,$DJNZR6,D3DJNZR5,D2RETTABLE: DB 3FH,06H,5BH,4FH,66HDB 6DH,7DH,07H,7FH,6FHEND数字钟设计实例利用AT89C51的定时器和6位7段数码管,设计一个电子时钟,显示格式“XX XX XX”,从左向右分别是:时、分、秒1、 硬件设计2、 软件设计说明:定时器每1000us中断一次,在中断服务程序中,对中断次数计数,100us计数10000次就是1s,然后再对秒计数得到分和小时,并送入显示缓存。LEDBUFEQU30H;显示码缓存区HOUREQU40HMINUTE EQU41HSECONDEQU42HC100

7、usEQU43HTICKEQU10000;置中断次数T100usEQU256-100;置定时器初始值LJMPSTART;跳转至主程序ORG000BH;定时器0中断入口T0INT:PUSHPSW ;状态保护PUSHACCMOVA,C100us+1JNZGOON;计数值是否为0DECC100usGOON:DECC100us+1MOVA,C100usORLA,C100us+1JNZEXITMOVC100us,#HIGH(TICK);重置计数值MOVC100us+1,#LOW(TICK)INCSECOND;秒值加一MOVA,SECONDCJNEA,#60,EXIT;判断秒值是否为60MOVSECOND

8、,#0;秒值为60,则清0INCMINUTE;分值加一MOVA,MINUTECJNEA,#60,EXIT;判断分值是否为60MOVMINUTE,#0;分值为60,则清0INCHOUR;小时值加一MOVA,HOURCJNEA,#24,EXIT;判断小时值是否为24MOVHOUR,#0;小时值为24,则清0EXIT:POPACCPOPPSWRETIDELAY: ;延时子程序MOVR7,#0FFHDELAYLOOP:DJNZR7,DELAYLOOPDJNZR6,DELAYLOOPRETLEDMAP:DB3FH,06H,5BH,4FH;八段数码管显示码DB66H,6DH,7DH,07HDB7FH,6F

9、H,77H,7CHDB39H,5EH,79H,71HDISPLAYLED:MOVR0,#LEDBUFMOVR1,#6;共6个八段管MOVR2,#01111111B;位扫描码初值LOOP:MOVA,#0MOVP0,A;关所有八段管MOVA,R0MOVP0,AMOVA,R2MOVP3,A;显示一位八段管MOVR6,#01HCALLDELAYMOVA,R2;显示下一位RRAMOVR2,AINCR0DJNZR1,LOOPRETT0LED:MOVDPTR,#LEDMAP;将字段码转换显示码MOVCA,A+DPTRRETSTART:MOVTMOD,#02H;定时器工作方式2MOVTH0,#T100us;置

10、定时器初始值MOVTL0,#T100usMOVIE,#10000010B;EA=1,IT0=1MOVHOUR,#0;显示初始值MOVMINUTE,#0MOVSECOND,#0MOVC100us,#HIGH(TICK)MOVC100us+1,#LOW(TICK)SETBTR0;启动定时器0MLOOP:MOVA,HOUR;显示小时值十位MOVB,#10DIVABCALLT0LEDMOVLEDBUF,A;将十位值送显示码缓存区MOVA,B;显示小时值个位CALLT0LEDORLA,#80H;显示小数点MOVLEDBUF+1,A;送显示码缓存区MOVA,MINUTE;显示分钟值十位MOVB,#10DI

11、VABCALLT0LEDMOVLEDBUF+2,A;将十位值送显示码缓存区MOVA,B;显示分钟个位值CALLT0LED ORLA,#80H;显示小数点MOVLEDBUF+3,A;送显示码缓存区MOVA,SECONDMOVB,#10;显示秒十位值DIVABCALLT0LEDMOVLEDBUF+4,A;送显示码缓存区MOVA,BCALLT0LEDMOVLEDBUF+5,ACALLDISPLAYLED;调用显示子程序LJMPMLOOPEND交通信号灯控制系统设计实例利用AT89C51的定时器作为切换到计时,设计东西南北交通信号灯的设计。1、硬件设计(参考)2、软件设计(参考)SECOND1EQU3

12、0H;东西路口计时寄存器SECOND2EQU31H;南北路口计时寄存器 DBUFEQU40H;显示码缓冲区1TEMPEQU44H;显示码缓冲区2LED_G1BITP2.1;东西路口绿灯LED_Y1BITP2.2;东西路口黄灯LED_R1BITP2.3;东西路口红灯LED_G2BITP2.4;南北路口绿灯LED_Y2BITP2.5;南北路口黄灯LED_R2BITP2.6;南北路口红灯ORG0000HLJMPSTARTORG0100HSTART:MOVTMOD,#01H;置T0为工作方式1MOVTH0,#3CH;置T0定时初值50msMOVTL0,#0B0HCLRTF0SETBTR0;启动T0CL

13、RAMOVP1,A;关闭不相关的LED;*LOOP:MOVR2,#20;置1s计数初值,50ms*20=1sMOVR3,#20;红灯亮20sMOVSECOND1,#25;东西路口计时显示初值25sMOVSECOND2,#25;南北路口计时显示初值25sLCALLDISPLAYLCALLSTATE1;调用状态1WAIT1:JNBTF0,WAIT1;查询50ms到否CLRTF0MOVTH0,#3CH;恢复T0定时初值50msMOVTL0,#0B0HDJNZR2,WAIT1;判断1s到否?未到继续状态1MOVR2,#20;置50ms计数初值 DECSECOND1;东西路口显示时间减1sDECSECO

14、ND2;南北路口显示时间减1sLCALLDISPLAYDJNZR3,WAIT1;状态1维持20s;*MOVR2,#5;置50ms计数初值5*4=20MOVR3,#3;绿灯闪3sMOVR4,#4;闪烁间隔200msMOVSECOND1,#5;东西路口计时显示初值5sMOVSECOND2,#5;南北路口计时显示初值5sLCALLDISPLAYWAIT2:LCALLSTATE2;调用状态2JNBTF0,WAIT2;查询50ms到否CLRTF0MOVTH0,#3CH;恢复T0定时初值50msMOVTL0,#0B0HDJNZR4,WAIT2;判断200ms到否?未到继续状态2CPLLED_G1;东西绿灯

15、闪MOVR4,#4;闪烁间隔200msDJNZR2,WAIT2;判1s到否?未到继续状态2MOVR2,#5;置50ms计数初值DECSECOND1;东西路口显示时间减1sDECSECOND2;南北路口显示时间减1sLCALLDISPLAYDJNZR3,WAIT2;状态2维持3s;*MOVR2,#20;置50ms计数初值MOVR3,#2;黄灯闪2sMOVSECOND1,#2;东西路口计时显示初值2sMOVSECOND2,#2;南北路口计时显示初值2sLCALLDISPLAYWAIT3:LCALLSTATE3;调用状态3JNBTF0,WAIT3;查询100ms到否CLRTF0MOVTH0,#3CH

16、;恢复T0定时初值100msMOVTL0,#0B0HDJNZR2,WAIT3;判断1s到否?未到继续状态3MOVR2,#20;置100ms计数初值DECSECOND1;东西路口显示时间减1sDECSECOND2;南北路口显示时间减1sLCALLDISPLAYDJNZR3,WAIT3;状态3维持2s;*MOVR2,#20;置50ms计数初值MOVR3,#20;红灯闪20sMOVSECOND1,#25;东西路口计时显示初值25sMOVSECOND2,#25;南北路口计时显示初值25sLCALLDISPLAYWAIT4:LCALLSTATE4;调用状态4JNBTF0,WAIT4;查询100ms到否C

17、LRTF0MOVTH0,#3CH;恢复T0定时初值100msMOVTL0,#0B0HDJNZR2,WAIT4;判断1s到否?未到继续状态4MOVR2,#20;置100ms计数初值DECSECOND1;东西路口显示时间减1sDECSECOND2;南北路口显示时间减1sLCALLDISPLAYDJNZR3,WAIT4;状态4维持20s;*MOVR2,#5;置50ms计数初值MOVR4,#4;红灯闪20msMOVR3,#3;绿灯闪3sMOVSECOND1,#5;东西路口计时显示初值5sMOVSECOND2,#5;南北路口计时显示初值5sLCALLDISPLAYWAIT5:LCALLSTATE5;调用

18、状态5JNBTF0,WAIT5;查询100ms到否CLRTF0MOVTH0,#3CH;恢复T0定时初值100msMOVTL0,#0B0HDJNZR4,WAIT5;判断200ms到否?未到继续状态5CPLLED_G2;南北绿灯闪MOVR4,#4;闪烁200msDJNZR2,WAIT5;判断1s到否?未到继续状态5MOVR2,#5;置100ms计数初值DECSECOND1;东西路口显示时间减1sDECSECOND2;南北路口显示时间减1sLCALLDISPLAYDJNZR3,WAIT5;状态5维持3s;*MOVR2,#20;置50ms计数初值MOVR3,#2;红灯闪2sMOVSECOND1,#2;

19、东西路口计时显示初值2sMOVSECOND2,#2;南北路口计时显示初值2sLCALLDISPLAYWAIT6:LCALLSTATE6;调用状态6JNBTF0,WAIT6;查询100ms到否CLRTF0MOVTH0,#3CH;恢复T0定时初值100msMOVTL0,#0B0HDJNZR2,WAIT6;判断1s到否?未到继续状态6MOVR2,#20;置100ms计数初值DECSECOND1;东西路口显示时间减1sDECSECOND2;南北路口显示时间减1sLCALLDISPLAYDJNZR3,WAIT6;状态6维持2sLJMPLOOP;大循环;*STATE1:;状态1SETBLED_G1;东西路

20、口绿灯亮CLRLED_Y1CLRLED_R1CLRLED_G2CLRLED_Y2SETBLED_R2;南北路口红灯亮RETSTATE2:;状态2CLRLED_Y1CLRLED_R1CLRLED_G2CLRLED_Y2SETBLED_R2;南北路口红灯亮RETSTATE3:;状态3CLRLED_G1CLRLED_R1CLRLED_G2CLRLED_Y2SETBLED_R2;南北路口红灯亮SETBLED_Y1;东西路口绿灯亮RETSTATE4:;状态4CLRLED_G1CLRLED_Y1SETBLED_R1;东西路口红灯亮SETBLED_G2;南北路口绿灯亮CLRLED_Y2CLRLED_R2RE

21、TSTATE5:;状态5CLRLED_G1CLRLED_Y1SETBLED_R1;东西路口红灯亮CLRLED_Y2CLRLED_R2RETSTATE6:;状态6CLRLED_G1CLRLED_Y1SETBLED_R1;东西路口红灯亮CLRLED_G2CLRLED_R2SETBLED_Y2;南北路口红灯亮RETDISPLAY:;数码显示MOVA,SECOND1;东西路口计时寄存器MOVB,#10;16进制数拆成两个10进制数DIVABMOVDBUF+3,AMOVA,BMOVDBUF+2,AMOVA,SECOND2;南北路口计时寄存器MOVB,#10;16进制数拆成两个10进制数DIVABMOVD

22、BUF+1,AMOVA,BMOVDBUF,AMOVR0,#DBUFMOVR1,#TEMPMOVR7,#4DP10:MOVDPTR,#LEDMAPMOVA,R0MOVCA,A+DPTRMOVR1,AINCR0INCR1DJNZR7,DP10MOVR0,#TEMPMOVR1,#4DP12:MOVR7,#8MOVA,R0DP13:RLCAMOVP3.0,CCLRP3.1SETBP3.1DJNZR7,DP13INCR0DJNZR1,DP12RETLEDMAP:DB3FH,06H,5BH,4FH,66H,6DH;0,1,2,3,4,5DB7DH,07H,7FH,6FH,77H,7CH;6,7,8,9,A,BDB58H,5EH,7BH,71H,0,40H;C,D,E,F, ,-END

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

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1