资源描述
单片微机原理课程设计专周
学校: 成都工业学院
系别: 电气与电子工程系
题目: Pm1.0、Pm2.5智能检测
指导老师:傅林
姓名: 欧尤俊
班级: 2011251
学号: 34
目录
一、系统功能框图:
二、原件简介:
1、 AT89C51
1、1. AT89C51简介
1、2. AT89C51基本操作
2、 ADC0808模数转换
2、1.内部结构
2、2. 引脚功能(外部特性)
三、软件部分:
1、1.主程序
1、2.A/D转换电路
1、3.显示系统
四、硬件部分:
1、1.A/D转换仿真图
1、2.显示部分仿真图
五、专周心得
附录一
附录二
一、系统功能框图:
Pm1.0、Pm2.5智能检测同样具有单片机应用系统的三个层次。其中以AT89C51单片机为核心构成单片机系统。在此系统中,检测信号进入单片机进行运算处理。为了更好的理清设计思路,将整个系统细分为三部分加以设计说明。整个检测系统由三个部分组成,分为三大模块:浓度检测模块、主控模块和显示模块。在本次设计中,使用的核心器件是单片机和Pm1.0、2.5传感器。为了保重整个系统可靠的运行,设计中必须明确三大部分的实际联系:以单片机为中心,其他各大模块一一展开。其中,浓度检测及显示模块所实现的功能是将房间中的一氧化碳浓度值转换成为单片机能够处理的数字信号,并且浓度值显示出来:主控模块以单片机为主。系统框图如图2-2所示。
AT89C51
Pm1.0检测器
A/D转换
显示
传感器
Pm2.5检测器
图2-2 系统框图
二、原件简介:
1、 AT89C51:
1、1.AT89C51简介:
VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。当P1口的管脚写“1”时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部电位必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入“1”后,电位被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚电位被内部上拉电阻拉高,且作为输入。作为输入时,P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉的优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入时,由于外部下拉为低电平,P3口将输出电流(ILL),也是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下所示:
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 (外部中断0)
P3.3 (外部中断1)
P3.4 T0(记时器0外部输入)
P3.5 T1(记时器1外部输入)
P3.6 (外部数据存储器写选通)
P3.7 (外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
:外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期两次有效。但在访问外部数据存储器时,这两次有效的信号将不出现。
:当保持低电平时,访问外部ROM;注意加密方式1时,将内部锁定为RESET;当端保持高电平时,访问内部ROM。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
1、2.AT89C51基本操作:
AT89C51复位引脚RST/VP通过片内一个施密特触发器(抑制噪声作用)与片内复位电路相连,施密特触发器的输出在每一个机器周期由复位电路采样一次。当振荡电路工作,并且在RST引脚上加一个至少保持2个机器周期的高电平时,就能使AT89C51完成一次复位。复位不影响RAM的内容。复位后,PC指向0000H单元,使单片机从起始地址0000H单元开始重新执行程序。所以,当单片机运行出错或进入死循环时,可按复位键重新启动。
2、 AD0808模数转换:
ADC0808是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
2、1.内部结构:
ADC0808是CMOS单片型逐次逼近式A/D转换器,它有8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器。
2、2.引脚功能(外部特性):
ADC0808芯片有28条引脚,采用双列直插式封装,如右图所示。各引脚功能如下:
1~5和26~28(IN0~IN7):8路模拟量输入端。
8、14、15和17~21:8位数字量输出端。
22(ALE):地址锁存允许信号,输入,高电平有效。
6(START): A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
7(EOC): A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
9(OE):数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
10(CLK):时钟脉冲输入端。要求时钟频率不高于640KHZ。
12(VREF(+))和16(VREF(-)):参考电压输入端
11(Vcc):主电源输入端。
13(GND):地。
23~25(ADDA、ADDB、ADDC):3位地址输入线,用于选通8路模拟输入中的一路
三、软件部分:
1、1.主程序:
MAIN: MOV R0,#30H
MOV R7,#20H
LOOP: MOV @R0,#00H
INC R0
DJNZ R7,LOOP
MOV TMOD,#12H
MOV TH0,#245
MOV TL0,#00H
SETB EA
SETB ET0
SETB TR0
MAIN_1: ACALL ADC
ACALL CHULI
MOV R6,35H
MOV R7,36H
ACALL H_BCD
MOV 38H,R3
MOV 39H,R4
MOV 3AH,R5
ACALL FENLI
ACALL DISPLAY
ACALL DELAY
AJMP MAIN_1
INT_T0: CPL CLOCK
RETI
ADC: CLR START
SETB START
CLR START
JNB EOC,$
SETB OE
MOV AD_DATA,P3
CLR OE
RET
DELAY: MOV 40H,#100
DELAY_1:ACALL DISPLAY
DJNZ 40H,DELAY_1
RET
1、2.A/D转换电路:
ADC: CLR START
SETB START
CLR START
JNB EOC,$
SETB OE
MOV AD_DATA,P3
CLR OE
RET
CHULI: MOV A,AD_DATA
MOV B,#20
MUL AB
MOV 35H,B
MOV 36H,A
RET
H_BCD: CLR A
MOV R3,A
MOV R4,A
MOV R5,A
MOV R2,#10H
H_BCD_1:MOV A,R7
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5
ADDC A,R5
DA A
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R3
ADDC A,R3
MOV R3,A
DJNZ R2,H_BCD_1
RET
1、3.显示系统:
DISPLAY:MOV DPTR,#TAB1
MOV R0,#42H
MOV R7,#3
MOV R2,#02H
DSP_1: MOV P2,#01H
MOV A,41H
MOVC A,@A+DPTR
ANL A,#7FH
MOV P0,A
ACALL DS1MS
MOV P2,R2
MOV A,@R0
MOVC A,@A+DPTR
LOOK: CJNE A,#0F9H,MOVON
SETB P1.0
MOVON: JNC LOOK
MOV P0,A
ACALL DS1MS
INC R0
MOV A,R2
RL A
MOV R2,A
DJNZ R7,DSP_1
RET
DS1MS: MOV TH1,#0FCH
MOV TL1,#18H
SETB TR1
DS1MS_1:JBC TF1,DS1MS_2
SJMP DS1MS_1
DS1MS_2:CLR TR1
RET
TAB1: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
四、硬件部分:
1、1.A/D转换仿真图
1、2.显示部分仿真图
五、专周心得:
通过这一周的查阅资料、自己修改、程序调试和修改,是我学会了很多。以前课堂上不懂得部分、理解不透彻的地方我都弄明白并且理解了。当然在这一周中还是有很多不如意的地方。例如,当程序写出来了,调试的时候有很多错误自己又不知道怎么改,查阅资料无果后。心里真的有种想放弃的冲动!不过最后我还是坚持了下来。专周虽然让人很疲惫,但是当你做出来以后的那种成就感是永远没法替代的。
通过这个专周我不仅学习了知识、运用了自己所学,还使得我领悟了许多自身应有的态度。做事的态度、处事的方法,还有就是不要放弃。
附录一
CLOCK BIT P1.4
START BIT P1.5
EOC BIT P1.6
OE BIT P1.7
AD_DATA EQU 30H
ORG 0000H
SJMP MAIN
ORG 000BH
AJMP INT_T0
ORG 0030H
MAIN: MOV R0,#30H
MOV R7,#20H
LOOP: MOV @R0,#00H
INC R0
DJNZ R7,LOOP
MOV TMOD,#12H
MOV TH0,#245
MOV TL0,#00H
SETB EA
SETB ET0
SETB TR0
MAIN_1: ACALL ADC
ACALL CHULI
MOV R6,35H
MOV R7,36H
ACALL H_BCD
MOV 38H,R3
MOV 39H,R4
MOV 3AH,R5
ACALL FENLI
ACALL DISPLAY
ACALL DELAY
AJMP MAIN_1
INT_T0: CPL CLOCK
RETI
ADC: CLR START
SETB START
CLR START
JB EOC,MOVON
MOVON: SETB OE
MOV AD_DATA,P3
CLR OE
RET
DELAY: MOV 40H,#100
DELAY_1:ACALL DISPLAY
DJNZ 40H,DELAY_1
RET
CHULI: MOV A,AD_DATA
MOV B,#20
MUL AB
MOV 35H,B
MOV 36H,A
RET
H_BCD: CLR A
MOV R3,A
MOV R4,A
MOV R5,A
MOV R2,#10H
H_BCD_1:MOV A,R7
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5
ADDC A,R5
DA A
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R3
ADDC A,R3
MOV R3,A
DJNZ R2,H_BCD_1
RET
FENLI: MOV A,38H
ANL A,#0F0H
SWAP A
MOV 40H,A
MOV A,38H
ANL A,#0FH
MOV 41H,A
MOV A,39H
ANL A,#0F0H
SWAP A
MOV 42H,A
MOV A,39H
ANL A,3FH
MOV 43H,A
MOV A,3AH
ANL A,#0F0H
SWAP A
MOV 44H,A
MOV A,3AH
ANL A,#0FH
MOV 45H,A
RET
DISPLAY:MOV DPTR,#TAB1
MOV R0,#42H
MOV R7,#3
MOV R2,#02H
DSP_1: MOV P2,#01H
MOV A,41H
MOVC A,@A+DPTR
ANL A,#7FH
MOV P0,A
ACALL DS1MS
MOV P2,R2
MOV A,@R0
MOVC A,@A+DPTR
MOV P0,A
ACALL DS1MS
INC R0
MOV A,R2
RL A
MOV R2,A
DJNZ R7,DSP_1
RET
DS1MS: MOV TH1,#0FCH
MOV TL1,#18H
SETB TR1
DS1MS_1:JBC TF1,DS1MS_2
SJMP DS1MS_1
DS1MS_2:CLR TR1
RET
TAB1: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
附录二
展开阅读全文