[单片机原理及应用]课程设计
《微机控制技术及应用》
课程设计
题 目∶
院 系∶
8051单片机系统扩展
专业班级∶
姓 名∶
学 号∶
指导教师∶
成 绩∶
目录
引言 ……………………………………………………………………………………………(2) 一、设计目的和要求………………………………………………………………………… (2) 二、设计任务和主要内容…………………………………………………………………… (2) 51单片机基于8155、8255、ADC0809的应用设计 …………………………………………… (3)内容提要 ……………………………………………………………………………………(3) 关键词 ………………………………………………………………………………………(3) 一、8051单片机简介 ……………………………………………………………………… (3) 1)单片机的概述…………………………………………………………………………(3) 2)引脚及功能介绍……………………………………………………………………… (3) 二、51单片机的应用设计 ………………………………………………………………… (5)
1)系统组成框图(总图) ……………………………………………………………… (5)
2)设计电路原理图(总图) …………………………………………………………… (6) 3)设计原理说明 ……………………………………………………………………… (6) 1、51单片机基于8155芯片的扩展应用设计 ………………………………………… (6)
1.1 8155的内部结构及引脚说明…………………………………………………(6)
1.2 8155芯片扩展并口设计………………………………………………………(8) (1) 设计电路图 ……………………………………………………………… (8) (2) 程序流程图 ……………………………………………………………… (8) (3) 程序清单 ………………………………………………………………… (9) (4) 小结 …………………………………………………………………… (11)
2、51单片机基于8255芯片的扩展应用设计………………………………………… (11)
2.1 功能说明 ……………………………………………………………………(11)
2.2 8255扩展并口设计 …………………………………………………………(12) (1) 设计电路图……………………………………………………………… (12) (2) 程序流程图……………………………………………………………… (13) (3) 程序清单………………………………………………………………… (14)
(4) 小结……………………………………………………………………… (15)
3、51单片机基于ADC0809的扩展应用设计 ………………………………………… (15)
3.1 功能说明 ……………………………………………………………………(16)
3.2 ADC0809 扩展设计 …………………………………………………………(17) (1)设计电路图………………………………………………………………(17) (2)程序流程图………………………………………………………………(17) (3)程序清单…………………………………………………………………(18)
(4)小结………………………………………………………………………(19)
三、结束语 ………………………………………………………………………………(19) 参考文献 ……………………………………………………………………………………(20)
引言
一、 设计目的和要求
1.进一步熟悉和掌握单片机的结构及工作原理。
2.巩固和加深对单片机原理知识的理解,提高学生综合运用课程所学知识的能力及相应的自学能力,并初步建立起开发单片机应用系统的系统概念和整体设计的思想。
3.通过课程设计,掌握以单片机核心的电路设计的基本方法和技术,了解相关电路参 数的计算方法。
4.通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。
5.通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发单片机应用系统的全过程,为今后从事设计开发工作打下基础。
6.掌握单片机的接口技术和常用扩展接口芯片如8155、8255、ADC0809等的外特性、使用及控制方法,熟悉汇编程序设计方法,能够达到熟练调试程序的程度,能在教师的指导下,完成课题任务。
7.根据个人的设计调试过程,按照课程设计报告的规范撰写设计报告。
二、 设计任务和主要内容
结合MCS-51单片机,74LS373,74LS138,8155,8255,A/D0809等芯片,自拟课题,完成单片机设计。根据设计原理图、程序流程图,编写程序并调试,说明所设计电路的功能,以及各个功能模块的作用,并写出设计心得,完成课程设计报告。 a) 原理图设计
1.原理图设计要符合项目的工作原理,连线要正确。
2.图中所使用的元器件要合理选用,电阻,电容等器件的参数要正确标明。 3.原理图要完整,CPU ,外围器件,扩展接口,输入/输出装置要一应俱全。 b) 程序设计
1.根据要求,将总体功能分解成若干个子功能模块,每个功能模块完成一个特定的功能。 2. 根据总体要求及分解的功能模块,确定各功能模块之间的关系,设计出完整的程序流程图。
3. 编写程序,并执行该程序进行调试,检查该程序、是否达到设计要求,若未达到,修改程序,直到达到要求为止。
51单片机基于8155、8255、ADC0809的应用设计
【内容摘要】 单片计算机即单片微型计算机。由RAM 、ROM 、CPU 构成,定时、计数和多种接口于一体的微型控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。而51系列单片机是个单片机中最为典型和最有代表性的一种。这次课程设计通过对它的学习、应用,从而达到学习、设计、开发软、硬件的能力。
本次设计主要设计了一个基于8051单片机来扩展外围芯片(8155、8255、ADC0809),分别实现相应的功能,通过编写相应程序,来控制51单片机,进而分别控制三块芯片,可实现按键的采集和显示功能(使用8155芯片)、0—9循环显示的功能(使用8255芯片)、对模拟电压信号的采样以及数字化转换功能(使用ADC0809芯片)。
【关键字】 51单片机、8155、8255、ADC0809、扩展
一、8051单片机简介
1)单片机的概述
80C51是Intel 公司MCS-51系列单片机中最基本的产品,它采用Intel 公司可靠的CHMOS 工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS 产品。它结合了HMOS 的高速和高密度技术及CHMOS 的低功耗特征,它继承和扩展了MCS-48单片机的体系结构和指令系统。
80C51内置中央处理单元、128字节内部数据存储器RAM 、32个双向输入/输出(I/O)口、2个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
此外,80C51还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结CPU 而RAM 定时器、串行口和中断系统维持其功能。掉电模式下,保存RAM 数据,时钟振荡停止,同时停止芯片内其它功能。80C51有PDIP(40pin)和PLCC(44pin)两种封装形式。 2)引脚及功能介绍
图1为8051单片机的引脚图,单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。 1.电源
⑴ VCC—芯片电源,接+5V;
⑵ VSS—接地端;
图1 8051引脚图
⒉ 时钟:XTAL1、XTAL2 —晶体振荡电路反相输入端和输出端。 ⒊ 控制线:控制线共有4根
⑴ ALE/PROG:地址锁存允许/片内EPROM 编程脉冲 ● ALE 功能:用来锁存P0口送出的低8位地址
● PROG 功能:片内有EPROM 的芯片,在EPROM 编程期间,此引脚输入编程脉冲。 ⑵ PSEN:片外ROM 读选通信号。 ⑶ RST/VPD:复位/备用电源。 ●
RST (Reset )功能:复位信号输入端。
● VPD功能:在Vcc 掉电情况下,接备用电源。 ⑷ EA/Vpp:片内、片外ROM 选择/片内EPROM 编程电源。 ● EA 功能:片内、片外ROM 选择端。
● Vpp 功能:片内有EPROM 的芯片,在EPROM 编程期间,施加编程电源Vpp 。 ⒋ 输入/输出(I/O)引脚P0、P1、P2、P3(共32根) ●
P0口(39脚至32脚):是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LS 型的TTL 负载。 ●
P1口(1脚至8脚):是准双向8位I/O口。由于这种接口输出没有高阻状态,输
入也不能锁存,故不是真正的双向I/O口。P1口能驱动(吸收或输出电流)4个LS 型的TTL 负载。 ●
P2口(21脚至28脚):是准双向8位I/O口。在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址。在对EPROM 编程和程序验证期间,它接收高8位地址。P2口可以驱动(吸收或输出电流)4个LS 型的TTL 负载。 ●
P3口(10脚至17脚):是准双向8位I/O口,在MCS-51中,这8个引脚还用于专门功能,是复用双功能口。P3能驱动(吸收或输出电流)4个LS 型的TTL 负载。作为第一功能使用时,就作为普通I/O口用,功能和操作方法与P1口相同。作为第二功能使用时,用于特殊信号输入输出和控制信号(属控制总线)。
二、51单片机的应用设计
本设计为51单片机基于8155、8255、ADC0809的应用设计,可实现按键的采集和显示功能(使用8155芯片)、0—9循环显示的功能(使用8255芯片)、对模拟电压信号的采样以及数字化转换功能(使用ADC0809芯片)。
1)系统组成框图(总图)
统组成框图中省略了译码器(74LS138)和锁存器(74LS373),74LS138作用是作8155、8255、ADC0809芯片的片选信号输入端,而74LS373的作用是用于锁存51单片机P0口输出的低8位地址。当选中8155芯片时可实现按键的采集和显示功能,当选中8255芯片时可实现0—9循环计数的功能,当选中ADC0809芯片时可实现对模拟电压信号的采样以及数字化
转换功能。
2)设计电路原理图(总图) 设计电路原理图如图所示。 3)设计原理说明
如设计原理图所示,8051单片机的EA 端接地,说明只使用片外ROM (即2764),片内ROM 失去作用,因此只要将设计的程序存放在2764芯片内,就能控制8051单片机,进而控制各个扩展的芯片。8051芯片的P0口分别接8155、8255、ADC0809三块芯片的AD0-AD7、D0-D7、2-1~2-8引脚,P2.5、P2.6、P2.7分别接74LS138的A 、B 、C 口, 74LS138的输出口Y0、Y1、Y2分别作8155,8255,ADC0809芯片片选信号,因此,当P2.5、P2.6、P2.7输出为000时选通8155,P2.5、P2.6、P2.7输出为001时选通8255,P2.5、P2.6、P2.7输出为010时选通ADC0809, 即只要设置合理的端口地址,就能选通不同的芯片,设计不同的程序就能使8155、8255、ADC0809中的一块芯片,按照设计好的程序完成相应的功能。
下面对8155、8255、ADC0809这三块芯片分别与51单片机扩展设计的功能作出说明。
1、51单片机基于8155芯片的扩展应用设计
8155是能并行传送8位数据,具有256字节内部RAM 、1 个计数器、3个通道、4种工作方式的可编程并行接口芯片(40引脚)。由此定义可比较容易的理解8155的内部结构、8155引脚与CPU 的连接方式等。 1.1 8155的内部结构及引脚说明
8155内部结构及引脚图如图2所示,现按8155定义,叙述其内部结构。
图2 8155内部结构及引脚图
(1)内部RAM
8155有256字节单元的内部RAM 数据存储器,供用户作数据缓冲器等使用。 (2)定时器
8155还有一个14位的定时器,该定时器有一个计数器脉冲输入端TIMERIN 与定时器输出端TIMEROUT 。定时器输入和定时器输出分别用于输入计数器的脉冲信号、输出矩形波或脉冲波。
(3)3个通道
8155有3个通道A 、B 、C 与外设连接,其中A 、B 通道有8个引脚与外设连接,C 通道口有6个引脚。C 口的6个引脚常用于6位数据的输入与输出,或应答方式的通信线。
(4)与外设连接部分
①地址/数据总线 AD0~AD7: 分时的传送地址与数据信息。 ②控制总线CB
CPU 要对8155的RAM 、I/O口(A 、B 、C 口)进行读、写、片选等操作,控制线为片选、复位、读、写等信号。
●RAM 与I/O选择线
=1 时选择I/O口。
=0 时选择片内RAM ,
与8255一样,8155是使用地址线的低3位A0、A1、A2选择I/O口及控制寄存器。地址的高5 位在选择I/O口地址时可取任意值。具体选择方法如下表1所示:
表1 8155 I/O口地址:
●片选信号 :低电平有效,选择8155芯片。 ●写信号●读信号
:低电平有效,将AD0—AD7上信息写入8155的RAM 或I/O口。 :低电平有效,将8155的RAM 或I/O口中信息送上AD0—AD7。
、
上信息锁存到8155内部
●地址锁存信号 ALE:ALE 的下降沿将AD0—AD7、
锁存器中。
●复位信号 RST:RST 将8155各寄存器与I/O口锁存器等复位初始化。 PA0~PA7:8位通用I/O口,其输入、输出的流向可由程序控制。 PB0~PB7:8位通用I/O口,功能同A 口。
PC0~PC5:有两个作用,既可作为通用的I/O口,也可作为PA 口和PB 口的控制信号线。 1.2 8155芯片扩展并口设计
本设计实现51单片机基于8155扩展三个基本输入输出端口,其中A 、B 口用于输出,C 口用于输入。没有用到选通输入方式。如果需要用到此方式,可以进行相应的软硬件扩展设计。
(1)设计电路图
51单片机基于8155的并行口扩展设计如图所示(下页)。
整个硬件设计主要器件为:51单片机、8155芯片、数码管2只、按键开关6只、EPROM 2764一片、74LS138译码器、74LS373锁存器。本电路设计当中没有包含复位电路,51单片机的复位电路输出端可以和8155的复位端并联在一起使用。因为两芯片均为高电平复位。
图中,片选端接74LS138的Y0,而74LS138的A 、B 、C 分别接8051的P2.5 、P2.6、P2.7,而8155的IO\M引脚接VCC ,WR 、RD 两条线用于对IO 端口数据的读写,可以得到8155端口地址为1F00H~1F05H。
进一步可以得到详细的端口地址划分如下。 1F00H:命令状态口 1F01H:A口 1F02H:B口 1F03H:C口
1F04H:定时器低字节 1F05H:定时器高字节
需要特别说明的是:根据本设计的硬件电路图得到的端口地址可以不同,但是有一点,就是8155的16位端口地址中,高三位必为000,低三位用于确定端口号,剩余中间的10个位状态可以任选。这是由电路的端口地址译码所决定的。
(2)程序流程图
8155基于51单片机的并行扩展程序设计很简单,关键就是对8155的工作方式进行设
定,即8155的操作坚持采用先设定、后工作的原则。程序流程图如图3所示。
0.5s 延时运用软件延时实现,通过程序实现对8155的控制字寄存器进行设定,使8155的两个并行口A 、B 按照设定的基本输入输出方式正常工作,驱动两位数码管轮流显示按键个数,6位并行口C 工作于输入方式,间隔0.5s 查询一次键盘状态。
(3)程序清单 ;内存变量设定
图3 8155并口扩展程序流程图
DPLCODE DATA 30H ;待显示数据字型码
DPLNUM DATA 31H ;待显示数据,存储按键数单元 CNT1 DATA 32H ;软件延时用控制变量 CNT2 DATA 33H ORG 0000H LJMP MAIN ; 主程序
ORG 0050H
MAIN: MOV SP, #70H ;设置堆栈
MOV IE, #00H ;关闭所有中断 LCALL DELAY
MOV DPTR,#1F00H ;8155工作方式设定 MOV A,#03H MOVX @DPTR,A
LOOP: MOV DPTR,#1F03H ;读C 口键盘状态 MOVX A,@DPTR
LCALL KEYNUM ;调用判断按键数程序 LCALL KEYDPL ;调用显示码函数 MOV A,DPLCODE ;显示码送CPU MOV DPTR,#1F01H
MOVX @DPTR,A ;A口对应数码管显示按键数
MOV DPTR,#1F02H
MOVX @DPTR,A ;B口对应数码管显示按键数 LCALL DELAY ;延时0.5s MOV A,#0FFH
MOV DPTR,#1F01H
MOVX @DPTR,A ;关闭两个数码管显示 MOV DPTR,#1F02H MOVX @DPTR,A LJMP LOOP
; 分析键盘按键个数子程序
KEYNUM: MOV R6,#06H ; MOV DPLNUM,#00H
LOOP0: JNB ACC.5,INCKEYNUM ; RL A ; DJNZ R6,LOOP0 ; MOV A,DPLNUM ; RET ; 键盘个数加1
INCKEYNUM: INC DPLNUM ; RL A
DJNZ R6,LOOP0 ; MOV A,DPLNUM ; RET
; 按键个数显示码查表程序 KEYDPL: MOV A,DPLNUM MOV DPTR,#TABLE MOVC A,@A+DPTR MOV DPLCODE ,A RET
; 延时子程序,延时0.5s
DELAY: MOV CNT1,#0FAH ; MOV CNT2,#80H
DELAY1: LCALL DELAY0 ; LCALL DELAY0 LCALL DELAY0 LCALL DELAY0
DJNZ CNT2,DELAY1 ;4ms MOV CNT2,#80H RET DELAY0: NOP NOP
DJNZ CNT1,DELAY0 ; MOV CNT1,#0FAH RET
得到C 口所接键盘按键数 有键按下 无键按下 按键判断6次 得到按键数
有键按下,按键数加1 继续判断按键个数 按键数送CPU 软件延时0.5s 连续4ms 循环125次,实现0.5s 软件延时1ms 11
TABLE: DB C0H,B9H,A4H,B0H,99H,92H,82H,F8H,80H,90H ;数据显示码表0-9 END
程序功能为8155两个8位并行口工作于输出方式,6位并行口用于读取键盘状态,单片机间隔0.5s 读取键,通过8155的6位并行口读取外接键盘状态,分析按键个数,两个数码管显示按键个数。显示格式为:00、11、22、33、44、55、66。
(4)小结
此部分,是基于可编程功能扩展并口芯片8155实现的51单片机扩展输入输出并口的应用设计,由于设计篇幅所限,没有将8155的功能运用完全展开,比如8155的片内RAM 、片内14位定时器,A 口、B 口的置位工作方式等。但我对于8155芯片的基本使用,我已经了然于心,为了对8155的更细致的使用,我当进一步参考相关的文献资料。
2、51单片机基于8255芯片的扩展应用设计
8255是Intel 公司生产的通用可编程并行I/O接口芯片(40引脚),有3个8位并行I/O口,具有3个通道3种工作方式。 其各口功能可由软件选择,使用灵活,通用性强。8255可作为单片机与多种外设连接时的中间接口电路。允许采用同步、异步和中断方式传送I/O数据。
2.1 功能说明 特性
(1)一个并行输入/输出的LSI 芯片, 多功能的I/O器件, 可作为CPU 总线与外围的接
口。
(2)具有24个可编程设置的I/O口, 即3组8位的I/O口为PA 口、PB 口和PC 口。它
图4 8255内部结构及引脚图
们又可分为两组12位的I/O口。A 组包括A 口及C 口(高4位,PC4~PC7),B组包括B 口及C 口(低4位,PC0~PC3),8255内部结构如图4所示。 引脚功能
RESET :复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)
均被清除,所有I/O口均被置成输入方式。
CS:芯片选择信号线,当这个输入引脚为低电平时, 即/CS=0时, 表示芯片被选中,
允许8255与CPU 进行通讯;/CS=1时,8255无法与CPU 做数据传输。
RD :读信号线,当这个输入引脚为低电平时, 即/RD=0且/CS=0时, 允许8255通过数据总线向CPU 发送数据或状态信息,即CPU 从8255读取信息或数据。
WR :写入信号,当这个输入引脚为低电平时, 即/WR=0且/CS=0时, 允许CPU 将数据或控制字写入8255。
D0~D7:三态双向数据总线,8255与CPU 数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
PA0~PA7:端口A 输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的
数据输入锁存器。
PB0~PB7:端口B 输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。
PC0~PC7:端口C 输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的
数据输入缓冲器。端口C 可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含一个4位的锁存器,分别与端口A 和端口B 配合使用,可作为控制信号输出或状态信号输入端口。
A0、A1:地址选择线, 用来选择8255的PA 口、PB 口、PC 口和控制寄存器。 当A0=0、A1=0时,PA 口被选择; 当A0=0、A1=1时,PB 口被选择; 当A0=1、A1=0时,PC 口被选择; 当A0=1、A1=1时, 控制寄存器被选择。 2.2 8255扩展并口设计 (1)设计电路图
基于8255扩展并口设计如图所示(下页)。
整个电路所用器件为:51单片机、8255芯片、数码管3只、EPROM 2764一片、74LS138
译码器、74LS373锁存器。
在图中,74LS138的端口A 、B 、C 分别与51单片机的P2.5、P2.6、P2.7相连,输出端Y1用于8255芯片的片选,ALE 用于8255端口地址数据信号的锁存,数据的输入输出经由P0口。
图中,由74LS373锁存器的A1、A0和来自51单片机的端口P2.5、P2.6、P2.7共同决定8255的各个端口地址:当P2.5、P2.6、P2.7=001时,74LS138的输出端Y1=0,8255有效,无关位设为1,此时8255各个端口地址计算如下。
A 口:3F00H ; B口: 3F01H ; C口:3F02H ; 控制口: 3F03H;
关于8255端口占用51单片机外地址的分配,分析方法和8155类似,通过参考即可得到相应结论。
(2)程序流程图
8255基于51单片机的并口扩展流程设计如图5所示。
0.5s 延时运用软件延时实现,程序设计的重点是实现通过程序对8255的控制字寄存器进行设定,使8255的三个并口A 、B 、C 按照设定的基本输入输出方式正常工作,驱动三位数码管轮流显示0~9,由于8255的三个端口均有输入输出锁存器,因而数码管静态显示。
图5 8255并口扩展程序流程图
(3)程序清单
;内存变量设定
DPLCODE DATA 30H ;待显示数据字型码
DPLNUM DATA 31H ;待显示数据,存储按键数单元 CNT1 DATA 32H ;软件延时用控制变量 CNT2 DATA 33H ORG 0000H LJM MAIN
; 主程序
ORG 0050H
MAIN: MOV SP,#70H ; MOV IE,#00H ; LCALL DELAY ; MOV DPTR,#3F03H ; MOV A,#80H ;A MOVX @DPTR,A ;START: MOV R7,#0AH ;MOV DPLNUM,#00H ;LOOP: LCALL DISPLAY ; MOV A,DPLCODE ; MOV DPTR,#3F00H
MOVX @DPTR,A ;A LCALL DELAY ; MOV DPTR,#3F01H
MOVX @DPTR,A ;B LCALL DELAY ; MOV DPTR,#3F02H
MOVX @DPTR,A ;C LCALL DELAY ; INC DPLNUM ; DJNZ R7,LOOP ;0-9 LJMP START ;; 查表获得待显示数据的显示代码
DISPLAY:MOV A,DPLNUM ; MOV DPTR,#TABLE
MOVC A,@A+DPTR ;MOV DPLCODE ,A RET
; 软件延时0.5s 子程序
DELAY: MOV CNT1,#0FAH ;MOV CNT2,#80H
DELAY1:LCALL DELAY0 ; LCALL DELAY0 LCALL DELAY0
堆栈设置 关闭所有中断 完成8255复位 工作方式设定
、B 组工作模式为0,且均为输出 写控制端口
依次从0-9显示,共10次 从数字0开始显示 调用显示码函数 显示码送CPU 口对应数码管显示按键数 延时0.5s 口对应数码管显示按键数 延时0.5s
口对应数码管显示按键数 延时0.5s 显示数字加1
十个数是否显示完毕 显示完则重新开始 取数 查表 软件延时0.5s 连续4ms 15
LCALL DELAY0
DJNZ CNT2,DELAY1 ;4ms循环125次,实现0.5s MOV CNT2,#80H RET
DELAY0:NOP
NOP
DJNZ CNT1,DELAY0 ;软件延时1ms MOV CNT1,#0FAH RET
TABLE: DB C0H,B9H,A4H,B0H,99H,92H,82H,F8H,80H,90H ;数据显示码表0-9 END
程序功能为等待8255复位完成后,对8255进行初始化设置,设置8255的三个可编程并口全部为输出方式,用于同时显示0—9的10个数字,显示格式为:000、111、222、333、444、555、666、777、888、999。显示数据更新时间间隔为0.5s 。
(4)小结
此部分,是基于可编程扩展并行接口芯片实现的51单片机并行扩展应用设计。在此,学会了51单片机的并行扩展方法及8255的基本使用,8255与8155芯片一样,都是可编程并口芯片,即采用这两款芯片进行扩展的并口,可以设定并口的工作方式,是输入还是输出,还是置位。由于此设计只用到8255芯片的基本输入输出功能,所以芯片提供的其他功能没有体现在此设计中。当在程序中对8255的控制字进行重新设定,3个并行口工作方式即发生变化,但是端口工作方式的改变有时需要硬件电路作相应的更改。
3、51单片机基于ADC0809的扩展应用设计
ADC0809是采样分辨率为8位的、以逐次逼近原理进行模—数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
3.1 功能说明
图
6 ADC0809内部结构及引脚图
主要特性
1)8路输入通道,8位A /D 转换器,即分辨率为8位。 2)具有转换起停控制端。 3)转换时间为100μs 4)单个+5V 电源供电
5)模拟输入电压范围0~+5V ,不需零点和满刻度校准。
7) 工作温度范围为-40~+85摄氏度 7)低功耗,约15mW 。 内部结构
ADC0809是CMOS 单片型逐次逼近式A /D 转换器,内部结构如图6示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D /A 转换器、逐次逼近 。 外部特性(引脚功能)
ADC0809芯片有28条引脚,采用双列直插式封装,如图6所示。下面说明各引脚功能。
IN0~IN7:8路模拟量输入端。 2-1~2-8:8位数字量输出端。
ADDA 、ADDB 、ADDC :3位地址输入线,用于选通8路模拟输入中的一路 ALE :地址锁存允许信号,输入,高电平有效。
START : A/D 转换启动脉冲输入端,输入一个正脉冲(至少100ns 宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
EOC : A/D 转换结束信号,输出,当A /D 转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE :数据输出允许信号,输入,高电平有效。当A /D 转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK :时钟脉冲输入端。要求时钟频率不高于640KHZ 。 REF (+)、REF (-):基准电压。 VCC :电源,单一+5V 。 GND :地。
3.2 ADC0809 扩展设计 (1)设计电路图
基于ADC0809的数据采集系统电路设计如图所示(下页)。
整个电路所用器件为:51单片机、ADC0809芯片、EPROM 2764一片、74LS138译码器、74LS373锁存器、5个74LS14、2个74LS32。
图中,51单片机工作于12MHz ,P0口用于读取8位A/D转换数据,P2口的P2.5、P2.6、P2.7与74LS138译码器的输入端A 、B 、C 相连,输出端Y2用于ADC0809片选控制,51单片机通过外部中断0触发对A/D数据的读取。
图中,ADC0809的8个模拟信号输入端IN0~IN7用于输入待转换的模拟输入信号电压,51单片机P0口的低三位地址数据经锁存器锁存后送入ADC0809的通道选择端ADD_A、ADD_B、ADD_C。
在图中,ADC0809的A/D启动端START 与ALE 由74LS138译码器的输出端Y2与写控制信号WR 经与非门控制,转换完成后ADC0809的EOC 端信号反向后送入51单片机的INT0端,触发51单片机外部中断服务程序,在中断程序当中读取A/D数据。 (2)程序流程图
51单片机控制8通道模拟信号A/D转换的流程图如图7所示。
在图中,51单片
主程序:
中断程序:
图7 8通道模拟信号A/D转换的流程图
机初始化后开
始启动通道0的A/D转换,每次中断程序中读取A/D数据后,开始启动下一通道的A/D转换。本程序的重点在于外部中断0服务程序的编写,以及A/D转换通道的选择,完成8个通道转换后开始开始下一次8通道A/D转换循环。
(3)程序清单 ; 控制变量设定 COUT DATA 30H
DBUF DATA 39H ;39H—40H 的8个单元用于存储8个电压数字量 ORG 0000H LJMP MAIN ORG 0003H LJMP INT0
ORG 0030H
MAIN: MOV SP,#70H ; MOV COUT,#08H MOV R7,100
SETB EA ; SETB EX0
MOV DPTR,#5F00H ; MOV R1,#DBUF ; MOVX @DPTR,A ; SJMP $
INT0: CLR EX0 ; PUSH PSW
PUSH ACC ; DJNZ COUT,NEXT ;8 MOV COUT,#08H
LCALL NEW ; MOVX @DPTR,A ; POP ACC
POP PSW ; SETB EX0 ; RETI
NEXT: MOVX A,@DPTR ; MOV @R1,A
INC R1 ; INC DPTR ; LCALL DELAY200 ; MOVX @DPTR,A ; POP ACC
POP PSW ; RETI
;AD 转换恢复到通道0
NEW: MOV DPTR,#5F00H ;A/D RET ; 延时之程序
DELAY200:DJNZ R7,DELAY200 ; MOV R7,100
堆栈设置 开外部中断0 指向A/D通道0
存储指针指向首地址 启动通道0 A/D转换 关闭外部中断0 压栈保护 次A/D判断 数据更新 启动A/D转换 堆栈数据弹出 开外部中断0 读取A/D数据 指针向下移动 通道加1 延时 启动A/D 堆栈数据弹出 通道指向0 延时200um 19
RET END
程序功能比较简单,通过A/D转换芯片ADC0809实现对模拟电压信号的采样以及数字化转换,将数字量存储到51单片机内存。ADC0809启动A/D转换完成后,触发51单片机外部中断0,在中断服务程序当中,实现A/D数据的读取。
(4)小结
此部分,是ADC0809芯片基于51单片机电压数据采集系统的设计。在对ADC0809的功能的了解的基础上,我学会了ADC0809芯片的扩展及基本使用。此设计由于采用外接5V 基准电压,电压采集范围为单极性0—5V ,也可以采用另外的基准电压标准。另外程序只是实现了8个通道电压数据的循环采集,存储电压数据时预留了8B 的空间,采集的新电压数据值存储时将覆盖原来的数值,可通过采取外接片外SRAM 的方法实现大容量数据的采集存储。关于片外扩展SRAM ,可参考书上存储器扩展的相关章节。
三、结束语
课程设计是培养学生综合运用所学知识, 发现、提出、分析和解决实际问题, 锻炼实践能力的重要环节, 是对学生实际工作能力的具体训练和考察的一个过程。
伴随着日新日异的科学技术的发展,单片机显然已经成为当今计算机应用领域的核心, 在生活中也可以说得是无处不在。因此,我们作为二十一世纪的大学生,熟练掌握单片机的应用开发技术是十分重要和必不可缺的。
对于此次单片机课程设计,我感慨颇多、受益匪浅。从选题到定稿,从理论知识到实践整合,在近一个月的时间里,除去上课、复习时间,我几乎都在准备它,这可以说得是痛苦的。但是在设计中,我看出了自己理论知识的欠缺,譬如对单片机汇编语言掌握得不好,不懂一些元器件的使用方法等等,就及时进行了复习,在巩固所学过的知识的同时,还学到了很多的的新东西,这让我对单片机的应用有了更深刻的了解。
这次课程设计让我懂得了理论与实际相结合的重要性,只单有理论知识或者实践能力都是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从实践中发现问题并解决问题,才能真正为社会服务。从而提高自己的实际动手能力和独立思考的能力。
设计的过程中遇到的很多问题,都让我无从下手,然而我并没有放弃,因为这毕竟是我第一次做这方面的设计。在老师的指导和同学以及朋友的帮助下,最终一一得以解决,这让我很是感动。在此,谨对帮助我顺利完成此次单片机课程设计的老师、同学和朋友表示衷心
20
苏州科技学院
的感谢!
参考文献
[1] 肖金球. 单片机原理及接口技术. 北京:清华大学出版社,2004
[2] 朱定华、戴汝平. 单片微机原理与应用. 北京:清华大学出版社,2003
[3] 苏家键等. 单片机原理及应用技术. 北京:高等教育出版社,2004
[4] 蓝清华等. 单片机应用教程. 北京:清华大学出版社,1999
[5] 黄智伟. 凌阳单片机课程设计指导. 北京:北京航空航天大学出版社,2007
[6] 钟睿.MCS-51单片机原理及应用开发技术. 北京:中国铁道出版社,2006
[7] 边春元.C51单片机典型模块设计与应用. 北京:机械工业出版社,2008
21