#简易数字电压表单片机课程设计1.docx
- 文档编号:9571692
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:22
- 大小:132.19KB
#简易数字电压表单片机课程设计1.docx
《#简易数字电压表单片机课程设计1.docx》由会员分享,可在线阅读,更多相关《#简易数字电压表单片机课程设计1.docx(22页珍藏版)》请在冰点文库上搜索。
#简易数字电压表单片机课程设计1
一、设计任务和要求
1、设计任务:
简易数字电压表的设计
2、设计要求:
1)0—5V电压
2)8路输入电压
3)4位LED或LCD显示
4)结果按十进制显示,芯片自选。
二、硬件硬件框图和说明(元件选择依据即功能说明)
根据MUC-8088/8086H单片机的内部结构特点本文提出以MCS-51单片机为核心的电压测量系统。
该系统以8088/8086和ADC0809核心内件,能够在单片机的控制下监测八路的输入电压值,用8位串行A/D转换器进行0-5V量程自动转换,并且测量的电压值可通过四位数码管。
整个系统的设计过程中主要采用了模块化的设计方法,完成了硬件电路的设计及软件程序的编写,还详细的给出了相关的硬件框图和软件流程图,通过最终硬件电路的调试,使该系统能够在要求的条件下达到正常的测量及显示功能。
单片机8088/8086是整个系统的核心,实现输入端的分路选择,模数转换后数据的处理及在数码管上数据的显示等功能。
正文着重给出了软硬件系统的各部分电路,介绍了该系统的工作原理,MCS-51单片机特点,8088/8086的功能和使用,ADC0809的功能和使用等。
芯片介绍
1)8051芯片
8051是在8031的基础上,片内集成有4KROM,作为程序存储器,是一个程序不超过4K字节的小系统。
ROM内的程序是公司制作芯片时,代为用户烧制的,出厂的8051都是含有特殊用途的单片机。
所以8051适合和使用在程序已定,且批量大的单片机产品中。
8051单片机简介
8051单片机是把那些作为控制使用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上[2]。
如果按功能划分,它由如下功能部件组成,即中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口、中断系统和时种电路,其基本结构依旧是CPU加上外围芯片的传统结构模式。
但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式。
8051单片机的硬件结构具有功能部件种类全,功能强等特点。
特别值得一提的是该单片机CPU中的位处理器,它实际上是一个完整的1位微计算机,这个一位微计算机有自己的CPU、位寄存器、I/O口和指令集。
1位机在开关决策、逻辑电路仿真、过程控制方面非常有效;而8位机在数据采集,运算处理方面有明显的长处。
MCS-51单片机中8位机和1位机的硬件资源复合在一起,二者相辅相承,它是单片机技术上的一个突破,这也是MCS-51单片机在设计的精美之处。
引脚及其功能
MCS—51系列单片机的40个引脚中有2个专用于主电源引脚,2个外接晶振的引脚,4个控制或和其它电源复用的引脚,以及32条输入输出I/O引脚。
下面按引脚功能分为4个部分叙述个引脚的功能。
A.电源引脚Vcc和Vss
B.外接晶振引脚XTAL1和XTAL2
C.控制信号或和其它电源复用引脚
D.控制信号或和其它电源复用引脚有RST/VPD、ALE/P、PSEN和EA/VPP等4种形式。
输入/输出(I/O)引脚P口
P0(39脚~22脚),P0.0~P0.7统称为P0口。
当不接外部存储器和不扩展I/O接口时,它可作为准双向8位输入/输出接口。
当接有外部程序存储器或扩展I/O口时,P0口为地址/数据分时复用口。
提供8位双向数据总线。
对于片内含有EPROM的单片机,当EPROM编程时,从P0口输入指令字节,而当检验程序时,则输出指令字节。
P1口(1脚~8脚),P1.0~P1.7统称为P1口,可作为准双向I/O接口使用。
对于MCS—52子系列单片机,P1.0和P1.1还有第2功能:
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
选择的通道
0
0
0
IN0
0
0
1
IN1
0
1
0
IN2
0
1
1
IN3
1
0
0
IN4
1
0
1
IN5
1
1
0
IN6
1
1
1
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
NOP
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
SETBEA
SETBEX0;INT0允许
MOVDPTR,#A_DPORT
A_D:
MOVX@DPTR,A;启动A_D
NOP
NOP
CJNER7,#00H,$;等待A_D转换结束
MOV@R0,A;数据输出
INCR0
MOVR7,#0FFH;清读数标志
DJNZR3,A_D
MOVR0,#70H
POP3
RET
;******************************************************
INT_0:
CLREA
CLREX0
MOVXA,@DPTR;读A_D数据
NOP
NOP
MOVR7,#00H;置读数标志
INCDPTR
SETBEA
SETBEX0
RETI
;************************************************************************
INIT8279:
;8279初始化子程序
PUSHDPH;保存现场
PUSHDPL
PUSHACC
LCALLDELAY;延时
MOVDPTR,#Z8279
MOVA,#LEDMOD;置8279工作方式
MOVX@DPTR,A
MOVA,#LEDFEQ;置键盘扫描速率
MOVX@DPTR,A
MOVA,#LEDCLS;清除LED显示
MOVX@DPTR,A
POPACC;恢复现场
POPDPL
POPDPH
RET
DELAY:
;延时子程序
PUSH0;保存现场
PUSH1
MOV0,#0H
DELAY1:
MOV1,#0H
DJNZ1,$
DJNZ0,DELAY1
POP1;恢复现场
POP0
RET
;*******************************************************
;显示字符子程序
;输入:
R4,位置R5,值
DISLED:
PUSHDPH;保存现场
PUSHDPL
PUSHACC
MOVA,#LEDWR0;置显示起始地址
ADDA,R4;加位置偏移量
MOVDPTR,#Z8279
MOVX@DPTR,A;设定显示位置
MOVDPTR,#LEDSEG;置显示常数表起始位置
MOVA,R5
MOVCA,@A+DPTR;查表
MOVDPTR,#D8279
MOVX@DPTR,A;显示数据
POPACC;恢复现场
POPDPL
POPDPH
RET
;********************************************************************
DISPLAY:
MOVA,FLAG
CJNEA,#0FFH,DISP1
DISP2:
MOVR0,#70H
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
LCALLDISLED
MOVR5,S3
MOVR4,#5
LCALLDISLED
MOVR5,S4
MOVR4,#4
LCALLDISLED
MOVR5,TD
MOVR4,#1
LCALLDISLED
MOVA,TD
INCA
ANLA,#07
MOVTD,A
LCALLDELAY11
DJNZR3,LP2
CLRTD
POP3
MOVR0,#70H
RET
DELAY11:
PUSH5
PUSH6
PUSH7
MOVR5,#200
B2:
MOVR6,#20
B3:
MOVR7,#248
DJNZR7,$
DJNZR6,B3
DJNZR5,B2
POP7
POP6
POP5
RET
;*******************************
DISP1:
PUSH3
MOVR3,#10
MOVR0,#70H
LP1:
LCALLGETKEY
CJNEA,#0FFH,CONT
MOVA,B
CJNEA,#30H,CONT
LCALLCLEAR_T
CONT:
MOVA,R0
ADDA,TD
MOVR0,A
LCALLZCBCD
MOVA,S1
ADDA,#16
MOVR5,A
MOVR4,#07
LCALLDISLED
MOVR5,S2
MOVR4,#06
LCALLDISLED
MOVR5,S3
MOVR4,#5
LCALLDISLED
MOVR5,S4
MOVR4,#4
LCALLDISLED
MOVR5,TD
MOVR4,#1
LCALLDISLED
LCALLDELAY10
DJNZR3,LP1
POP3
MOVR0,#70H
RET
DELAY10:
PUSH5
PUSH6
PUSH7
MOVR5,#5
D2:
MOVR6,#20
D3:
MOVR7,#248
DJNZR7,$
DJNZR6,D3
DJNZR5,D2
POP7
POP6
POP5
RET
;**************************************************************
CLEAR_T:
PUSHACC
MOVA,TD
INCA
ANLA,#07
MOVTD,A
MOVR3,#10
POPACC
RET
;************************************************************
ZCBCD:
MOVA,@R0
MOVB,#51
DIVAB
MOVS1,A
MOVA,B
CLRF0
SUBBA,#1AH
MOVF0,C
MOVA,#10
MULAB
MOVB,#51
DIVAB
JBF0,LOOP2
ADDA,#5
LOOP2:
MOVS2,A
MOVA,B
CLRF0
SUBBA,#1AH
MOVF0,C
MOVA,#10
MULAB
MOVB,#51
DIVAB
JBF0,LOOP3
ADDA,#5
LOOP3:
MOVS3,A
MOVA,B
CLRF0
SUBBA,#1AH
MOVF0,C
MOVA,#10
MULAB
MOVB,#51
DIVAB
JBF0,LOOP4
ADDA,#5
LOOP4:
MOVS4,A
RET
;*********************************************************
;读取键盘子程序
;输入:
无;输出:
B:
读到的键码A:
按键的标志
GETKEY:
PUSHDPH;保存现场
PUSHDPL
PUSHPSW
MOVDPTR,#Z8279
MOVXA,@DPTR;读8279状态
ANLA,#07H;屏蔽D7-D3
JNZGETVAL;判断是否有键输入
MOVA,#0H;置标志(无键输入)
SJMPNKBHIT
GETVAL:
MOVA,#READKB;读FIFORAM命令
MOVX@DPTR,A
MOVDPTR,#D8279
MOVXA,@DPTR;读键
ANLA,#3FH;屏蔽SHIFT和CTRL键
MOVDPTR,#KEYCODE;键码表起始地址
MOVCA,@A+DPTR;查表
MOVB,A;置返回键值
MOVA,#0FFH;置标志(有键输入)
NKBHIT:
POPPSW;恢复现场
POPDPL
POPDPH
RET
;*********************************************************
;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;'0,1,2,3,4,5,6,7'
DB38H,39H,3AH,3BH,3CH,3DH,3EH,3FH;'8,9,A,B,C,D,E,F'
END
五、小结
此次简易数字电压表的设计可准确得测得0—5V的电压值,通过5个LED数码管显示测得的电压值和所测的电压通道。
主要有用到8051单片机、8279芯片、ADC0809芯片、LED数码管等元器件,通过8051单片机对各芯片的控制实现电压的测量。
本次课程设计的主要任务有:
对硬件的设计及其原理图的绘制、软件的设计、系统的调试。
在这两个星期的时间里很好得完成了任务,虽然说在这期间遇到不少问题,但在全组人员的努力和老师的指导下很快地将问题解决。
通过这次的简易数字电压表的课程设计,加深看我对单片机这门学科的认识,提高了我对单片机的兴趣,明白了单片机在工业控制很其他领域的重要作用。
锻炼了我的动手和自学能力。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 数字 电压表 单片机 课程设计