简易数字电压表单片机课程设计Word格式.docx
《简易数字电压表单片机课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《简易数字电压表单片机课程设计Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
![简易数字电压表单片机课程设计Word格式.docx](https://file1.bdocx.com/fileroot1/2022-11/27/7c09df62-8d7b-4eb4-a386-3d7e3f66d053/7c09df62-8d7b-4eb4-a386-3d7e3f66d0531.gif)
P1.0口用作定时器/计数器2的计数脉冲输入端T2;
P1.1用作定时器/计数器2的外部控制端T2EX。
对于EPROM编程和进行程序校验时,P0口接收输入的低8位地址。
P2口(21脚~28脚),P2.0~P2.7统称为P2口,一般可作为准双向I/O接口。
当接有外部程序存储器或扩展I/O接口且寻址范围超过256个字节时,P2口用于高8位地址总线送出高8位地址。
对于EPROM编程和进行程序校验时,P2口接收输入的8位地址。
P3口(10脚~17脚),P3.0~P3.7统称为P3口。
它为双功能口,可以作为一般的准双向I/O接口,也可以将每1位用于第2功能,而且P3口的每一条引脚均可独立定义为第1功能的输入输出或第2功能。
P3口的第2功能见下表
表单片机P3.0管脚含义
引脚
第2功能
P3.0
RXD(串行口输入端0)
P3.1
TXD(串行口输出端)
P3.2
INT0(部中断0请求输入端,低电平有效)
P3.3
INT1(中断1请求输入端,低电平有效)
P3.4
T0(时器/计数器0计数脉冲端)
P3.5
T1(时器/计数器1数脉冲端)
P3.6
WR(部数据存储器写选通信号输出端,低电平有效)
P3.7
RD(部数据存储器读选通信号输出端,低电平有效)
综上所述,MCS—51系列单片机的引脚作用可归纳为以下两点:
1、单片机功能多,引脚数少,因而许多引脚具有第2功能;
2、单片机对外呈3总线形式,由P2、P0口组成16位地址总线;
由P0口分时复用作为数据总线。
2)ADC0809芯片介绍
ADC0809芯片简介
ADC0809是一种8路模拟输入8路数字输出的逐次比较型A/D转换器。
目前在8位单片机系统中有着广泛的使用。
ADC0809是采样频率为8位的、以逐次逼近原理进行模—数转换的器件。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8个单断模拟输入信号中的一个进行A/D转换。
ADC0809的主要特性
A、8路8位A/D转换器,即分辨率8位。
B、具有转换起停控制端。
C、转换时间为100μs。
D、单个+5V电源供电。
E、模拟输入电压范围0~+5V,不需零点和满刻度校准。
F、工作温度范围为-40~+85摄氏度。
G、低功耗,约15mW。
ADC0809的引脚功能
ADC0809芯片有28条引脚,采用双列直插式封装,下面说明各引脚功能。
A、IN0~IN7:
8路模拟量输入端。
B、2-1~2-8:
8位数字量输出端。
C、ADDA、ADDB、ADDC:
3位地址输入线,用于选通8路模拟输入中的一路
D、ALE:
地址锁存允许信号,输入,高电平有效。
E、START:
A/D转换启动信号,输入,高电平有效。
F、EOC:
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
G、OE:
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
H、CLK:
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
I、REF(+)、REF(-):
基准电压。
J、Vcc:
电源,单一+5V,GND:
地。
ADC0809的工作过程是:
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。
直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
表1.2通道选择表
C
B
A
选择的通道
IN0
1
IN1
IN2
IN3
IN4
IN5
IN6
IN7
3)8279芯片介绍
8279芯片在电压表中的功能是驱动LED管显示经单片机数据处理后的十进制电压值。
8279功能介绍
8279是可编程的键盘、显示接口芯片。
它既具有按键处理功能,又具有自动显示功能,在单片机系统中应用很广泛。
8279内部有键盘FIFO(先进先出堆栈)/传感器,双重功能的8*8=64BRAM,键盘控制部分可控制8*8=64个按键或8*8阵列方式的传感器。
该芯片能自动消抖并具有双键锁定保护功能。
显示RAM容量为16*8,即显示器最大配置可达16位LED数码显示。
(1)数据线
DB0→DB7是双向三态数据总线,在接口电路中与系统数据总线相连,用以传送CPU和8279之间的数据和命令。
(2)地址线
/CS=0选中8279,当A0=1时,为命令字及状态字地址;
当A0=0时,为片内数据地址,故8279芯片占用2个端口地址。
(3)控制线
CLK:
8279的时钟输入线。
IRQ:
中断请求输出线,高电平有效。
/RD、/WR:
读、写输入控制线。
SL0---SL3:
扫描输出线,用来作为扫描键盘和显示的代码输出或直接输出线。
RL0---RL7:
回复输入线,它们是键盘或传感器矩阵的信号输入线。
SHIFT:
来自外部键盘或传感器矩阵的输入信号,它是8279键盘数据的次高位即D6位的状态,该位状态控制键盘上/下档功能。
在传感器方式和选通方式中,该引脚无用。
CNTL/S:
控制/选通输入线,高电平有效。
键盘方式时,键盘数据最高位(D7)的信号输入到该引脚,以扩充键功能;
选通方式时,当该引脚信号上升沿到时,把RL0---RL7的数据存入FIFORAM中。
OUTA0---OUTA3:
通常作为显示信号的高4位输出线。
OUTB0---OUTB3:
通常作为显示信号的低4位输出线。
/BD:
显示熄灭输出线,低电平有效。
当/BD=0时将显示全熄灭。
三、电路原理与说明
四、软件设计主要模块流程图,源程序清单与注释
设计流程图
源程序清单与解释
A_DPORTEQU8000H;
0809通道0地址
Z8279EQU08701H;
8279状态/命令口地址
D8279EQU08700H;
8279数据口地址
LEDMODEQU00H;
左边输入八位字符显示
;
外部译码键扫描方式,双键互锁
LEDFEQEQU2FH;
扫描速率
LEDCLSEQU0C1H;
清除显示RAM
LEDWR0EQU80H;
设定的将要写入的显示RAM地址
READKBEQU40H;
读FIFORAM地址0的命令字
S1EQU78H
S2EQU79H
S3EQU7AH
S4EQU7BH
TDEQU7CH
FLAGEQU7DH
ORG0000H
LJMPMAIN
ORG0003H
LJMPINT_0
ORG0013H
LJMPINT_1
ORG0040H
;
***************************************************************************************
MAIN:
MOVSP,#60H
MOVR0,#70H
CLRTD
CLRFLAG
SETBIT1
SETBEX1
SETBEA
LP0:
MOVDPTR,#A_DPORT
LCALLINIT8279
LCALLTEST
LCALLDISPLAY
LJMPLP0
NOP
LJMPMAIN
****************************************************************************************
INT_1:
CLREA
CLREX1
PUSHACC
MOVA,FLAG
CPLA
MOVFLAG,A
SETBEA
SETBEX1
POPACC
RETI
***********************数据采集***********要求R0=#70H****MOVA,R1********CPLA*********
TEST:
PUSH3
MOVR3,#8
MOVR7,#0FFH;
初始化
SETBIT0
SETBEX0;
INT0允许
A_D:
MOVX@DPTR,A;
启动A_D
NOP
CJNER7,#00H,$;
等待A_D转换结束
MOV@R0,A;
数据输出
INCR0
清读数标志
DJNZR3,A_D
MOVR0,#70H
POP3
RET
******************************************************
INT_0:
CLREX0
MOVXA,@DPTR;
读A_D数据
MOVR7,#00H;
置读数标志
INCDPTR
SETBEX0
RETI
************************************************************************
INIT8279:
8279初始化子程序
PUSHDPH;
保存现场
PUSHDPL
LCALLDELAY;
延时
MOVDPTR,#Z8279
MOVA,#LEDMOD;
置8279工作方式
MOVX@DPTR,A
MOVA,#LEDFEQ;
置键盘扫描速率
MOVA,#LEDCLS;
清除LED显示
POPACC;
恢复现场
POPDPL
POPDPH
DELAY:
延时子程序
PUSH0;
PUSH1
MOV0,#0H
DELAY1:
MOV1,#0H
DJNZ1,$
DJNZ0,DELAY1
POP1;
POP0
*******************************************************
显示字符子程序
输入:
R4,位置R5,值
DISLED:
MOVA,#LEDWR0;
置显示起始地址
ADDA,R4;
加位置偏移量
MOVDPTR,#Z8279
设定显示位置
MOVDPTR,#LEDSEG;
置显示常数表起始位置
MOVA,R5
MOVCA,@A+DPTR;
查表
MOVDPTR,#D8279
显示数据
********************************************************************
DISPLAY:
CJNEA,#0FFH,DISP1
DISP2:
CLRTD
PUSH3
MOVR3,#8
LP2:
MOVA,R0
ADDA,TD
MOVR0,A
LCALLZCBCD
MOVA,S1
ADDA,#16
MOVR5,A
MOVR4,#07
LCALLDISLED
MOVR5,S2
MOVR4,#06
MOVR5,S3
MOVR4,#5
MOVR5,S4
MOVR4,#4
LCALLDISLED
MOVR5,TD
MOVR4,#1
LCALLDISLED
MOVA,TD
INCA
ANLA,#07
MOVTD,A
LCALLDELAY11
DJNZR3,LP2
POP3
DELAY11:
PUSH5
PUSH6
PUSH7
MOVR5,#200
B2:
MOVR6,#20
B3:
MOVR7,#248
DJNZR7,$
DJNZR6,B3
DJNZR5,B2
POP7
POP6
POP5
RET
*******************************
DISP1:
MOVR3,#10
LP1:
LCALLGETKEY
CJNEA,#0FFH,CONT
MOVA,B
CJNEA,#30H,CONT
LCALLCLEAR_T
CONT:
LCALLDELAY10
DJNZR3,LP1
DELAY10:
MOVR5,#5
D2:
D3:
DJNZR6,D3
DJNZR5,D2
**************************************************************
CLEAR_T:
MOVA,TD
ANLA,#07
MOVR3,#10
************************************************************
ZCBCD:
MOVA,@R0
MOVB,#51
DIVAB
MOVS1,A
CLRF0
SUBBA,#1AH
MOVF0,C
MOVA,#10
MULAB
JBF0,LOOP2
ADDA,#5
LOOP2:
MOVS2,A
JBF0,LOOP3
LOOP3:
MOVS3,A
JBF0,LOOP4
LOOP4:
MOVS4,A
*********************************************************
读取键盘子程序
无;
输出:
B:
读到的键码A:
按键的标志
GETKEY:
PUSHPSW
读8279状态
ANLA,#07H;
屏蔽D7-D3
JNZGETVAL;
判断是否有键输入
MOVA,#0H;
置标志(无键输入)
SJMPNKBHIT
GETVAL:
MOVA,#READKB;
读FIFORAM命令
读键
ANLA,#3FH;
屏蔽SHIFT和CTRL键
MOVDPTR,#KEYCODE;
键码表起始地址
MOVB,A;
置返回键值
MOVA,#0FFH;
置标志(有键输入)
NKBHIT:
POPPSW;
LED显示常数表
LEDSEG:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;
'
0,1,2,3,4,5,6,7'
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H;
8,9,A,B,C,D,E,F'
DB0BFH,86H,0DBH,0CFH,0E6H,0EDH;
0,1,2,3,4,5,
键盘键码表
KEYCODE:
DB30H,31H,32H,33H,34H,35H,36H,37H;
DB38H,39H,3AH,3BH,3CH,3DH,3EH,3FH;
END
五、小结
此次简易数字电压表的设计可准确得测得0—5V的电压值,通过5个LED数码管显示测得的电压值和所测的电压通道。
主要有用到8051单片机、8279芯片、ADC0809芯片、LED数码管等元器件,通过8051单片机对各芯片的控制实现电压的测量。
本次课程设计的主要任务有:
对硬件的设计及其原理图的绘制、软件的设计、系统的调试。
在这两个星期的时间里很好得完成了任务,虽然说在这期间遇到不少问题,但在全组人员的努力和老师的指导下很快地将问题解决。
通过这次的简易数字电压表的课程设计,加深看我对单片机这门学科的认识,提高了我对单片机的兴趣,明白了单片机在工业控制很其他领域的重要作用。
锻炼了我的动手和自学能力。