1、单片机课程设计温度报警器系统计数器 课程名称 单片机原理与应用 设计题目 计数器及温度报警器 内容及任务进度安排 起止日期 工作内容参考文献一:设计任务1:设计一个0-255计数器,计满后自动清零,重新计数,在数码管中显示。2:设计一个0-50000计数器,计满后自动清零,重新计数,在数码管中显示。3.设计一个温度报警系统;温度显示范围为0-51度,当温度大于40度时,上限报警指示灯点亮,并驱动电机1转动;当温度小于10度时,下限报警指示灯点亮,并驱动电机2转动。二:设计源程序1:255计数器ORG 0000HAJMP STARTORG 0300HSTART:MOV DPTR,#0CFE9H
2、MOV A,#0D1H ;将8279初始化 MOVX DPTR,A NOP NOP NOP NOP ;延时 NOP NOP NOP NOP MOV TMOD,#50H ;采用工作方式一进行计数 MOV TH1,#00H ;高位清零 MOV TL1,#00H ;地位清零 SETB TR1 ;启动定时器/计数器T1进行加1计数LOOP1:MOV A,TL1 ;将低位数给累加器A MOV B,#64H ;将十进制数100给B DIV AB ;用A除以B,商保存在A中,余数保存在B MOV R1,A ;将百位给R1 MOV A,B ;将B传递给A MOV B,#0AH ;把十进制数10传给B DIV
3、AB ;用A除以B MOV R2,A ;把十位上的数字传给R2 MOV R3,B ;把个位上的数字传给R3 MOV DPTR,#0CFE9H MOV A,#80H ;选择第一个数码管 MOVX DPTR,A MOV DPTR,#TAB MOV A,R MOVC A,A+DPTR ;通过查表将百位数送入到第一个数 MOV DPTR,#0CFE8H 码管 MOVX DPTR,A CLR A ;将累加器A清零 MOV DPTR,#0CFE9H MOV A,#81H ;选择第二个数码管 MOVX DPTR,A MOV DPTR,#TAB MOV A,R2 ;通过查表将十位上的数送至第二 MOVC A,
4、A+DPTR 个数码管 MOV DPTR,#0CFE8H MOVX DPTR,A CLR A ;将累加器清零 MOV DPTR,#0CFE9H MOV A,#82H ;选择第三个数码管 MOVX DPTR,A MOV DPTR,#TAB MOV A,R3 ;通过查表将个位上的数字送 MOVC A,A+DPTR 到第三个数码管 MOV DPTR,#0CFE8H MOVX DPTR,A LJMP LOOP1TAB:DB 3FH,06H,5BH,4FH,66H ;共阴极LED数码管的段码管 DB 6DH,7DH,07H,7FH,6FHEND1:0-255计数器数码管显示仿真图2:0-50000计数器
5、ORG 0000HSJMP STARTDRG 000BHAJMP T0START : MOV TMOD ,#050H MOV P1,#0 MOVTH0,#0FFH MOV TL0,#0FFHMOV P3,#0 ;将p3口置0CLR C ;将C置0MOV DPTR ,#TAB ;指针指向TAB,SETB EA ;总中断控制设为“1”SETB ET0 ;T0允许中断控制设为“1”MOV R0,#0 ;个位值清零MOV R1,#0 ;十位值清零MOV R2,#0 ;百位值清零MOV R3,#0 ;千位值清零MOV R4,#0 ;万位值清零SETB TR0 ;打开T0开关ACALL T1 ;显示加等待
6、中断TO: MOV TH0,#0FFH MOV TL0,#0FFH ;中断将计数器初始化 INC R0 ;R0自动加1 MOV A, R0 ;将R0的值赋给A CJNE A,#10 AAA ;比较A是否等于十,若为十则进位,否则继续计数 MOV R0,#0 ; R0置零 INC R1 ;进位到十位AAA: MOVC A,A+DPTR ; 查表 MOV P2,A SETB P1.0 ;示个位 ACALL DELAY ;延时 SETB P1.0 MOV A,R1 ;R1的值赋给A中 CJNE A,#10,BBB ;比较,是否进位 MOV R1,#0 ; 进位R1置0 INC R2 ; 进位到百位
7、BBB: MOVC A,A+DPTR ;查表 MOV P2,A SETB P1.1 ;显示十位 ACALL DELAY ;延时 CLR P1.0 MOV A, R2 R2 ;赋给百位 CJNE A,#10, CCC ;比较,是否进位 MOV R2,#0 ;进位,R2置0 INC R4 ;进位到千位 CCC: MOVC A, A+DOTR ;查表 MOV R2,A SETB P1.2 ;显示百位 MOV A,R3 ;R3赋给A CJNE A,#10,DDD ;比较,是否进位 MOV R3 ,#0 ;进位置0 INC R4 ;进位到万位 DDD: MOVC A,A+ DPTR ;查表 MOV P2
8、,A SETB P1.3 ;显示千位 ACALL DELAY ;延时 CLR P1.3 MOV A, R4 CJNE A,#5,EEE ;比较万位是否到5 MOV R4,#0 ;万位到5时置0 MOV R3,#0EEE: MOVC A, A+DPTR ;查表 MOV P2,A SETB P1.4 ;显示万位 ACALL DELAY ;延时 CLR P1.4 RETIT1: MOV A,R0 ;等待中断时调用 MOVC A, A+DPTR MOV P2,A SETB P1.0 ACALL DELAY CLR P1.0 MOV A,R1 MOVC A,A+DPTR MOV P2,A SETB P1
9、.1 ACALL DELAY CLR P1.1 MOV A,R2 MOV A,A+DPTR MOV P2,A SETB P1.2 ACALL DELAY CLR P1.2 MOV A,R3 MOVC A,A+DPTR MOV P2,A SETB P1.3 ACALL DELAY CLR P1.3 MOV A,R4 MOVC A,A+DPTR MOV P2,A SETB P1.4 ACALL DELAY CLR P1.4 AJMP T1 DELAY: MOV R7,#10 DE1:MOV R6,#50DE2: DJNZ R6,DE2 DJNZ R7,DE1 RETTAB: DB 0C0H 0F9
10、H 0A4H 0B0H 99H 92H 82H 0F8H 80H 90H 88H 83H 0C6H 0A1H 86H 8EH2;0-50000计数器数码管显示仿真图3:温度报警器源程序DISPLAY0 EQU 71H ;EQU赋值命令 DISPLAY1 EQU 72H DISPLAY2 EQU 73H ADC EQU 74H ST BIT P1.0 ;将P2.5地址赋值给START EOC BIT P1.1 ;将P2.6地址赋值给EOC OE BIT P1.2 ;将P2.7地址赋值给OE ORG 00H SJMP START START: CLR P3 ;P3清零,为报警电路做准备 MOV P
11、1.2,#1 ;P2.7 给高电平,OE高电平有效 MOV DISPLAY0,#0FFH ;给数码管赋初值 MOV DISPLAY1,#0FFH MOV DISPLAY2,#0FFH MOV DPTR,#TABLE ;跳转至表格 MOV TMOD,#02H ;工作方式二 8-bit定时/计数(自动重装初值) MOV TH0,#0F5H ;定时计数器高八位付初值 MOV TL0,#00H MOV IE,#82H ;EA=1,ET0=1 溢出中断位允许中断 SETB TR0 ;启动定时器TR0 开始运行 WAIT:CLR ST ;转换启动信号STARK清零 SETB ST ;启动转换信号 CLR
12、ST JNB EOC,$ ;EOC为转换结束线,高电平为转换结束 ;当EOC=0时 转移到本指令首地址 SETB OE ;输出转换得到的数据 MOV ADC,P1 ;OE=1时 将AD信号存入ADC中 CLR OE ;输出数据线呈高阻态 给第一个数码管的值 MOV A,ADC MOV B,#51 ;DOUT=VIN*51为AD转换得出数据 DIV AB ;DOUT/51为 DISPLAY2值 MOV DISPLAY2,A ;给第一个数码管的值 报警程序 MOV R0,#2 SUBB A,R0 JC LOOP1 ;如果A大于R0(大于2)则转移至LOOP1 MOV P3,00H ;否则 给第二,
13、第三个数码管的值LOOP2:MOV A,B MOV B,#5 DIV AB MOV DISPLAY1,A ;分别得到DISPLAY1 DISPLAY0的值 MOV A,B MOV DISPLAY0,A LCALL DISP SJMP WAIT ;等待再次得到ADC RETI 数码管点亮程序 DISP:MOV A,DISPLAY0 MOVC A,A+DPTR CLR P1.6 ;位选第一个数码管 低电平有效 MOV P0,A ;点亮第一个数码管 NOP NOP NOP NOP NOP NOP SETB P1.6 ;重新置一(动态扫描) MOV A,DISPLAY1 MOVC A,A+DPTR CLR P1.5 MOV P0,A ;点亮第二个数码管 NOP NOP NOP NOP NOP NOP SETB P1.5 MOV A,DISPLAY2 MOVC A,A+DPTR CLR P1.4 ORL A,#80H ;或指令点亮数码管点号 MOV P0,A ;点亮第三个数管 NOP NOP NOP NOP NOP NOP SETB P1.4 RET 表格 TABLE:DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH 点亮报警电路数码管LOOP1:MOV P3.1,#1 LJMP LOOP2 END温度报警器仿真图
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1