IO口的扩展与应用 课程设计说明书.docx
《IO口的扩展与应用 课程设计说明书.docx》由会员分享,可在线阅读,更多相关《IO口的扩展与应用 课程设计说明书.docx(12页珍藏版)》请在冰豆网上搜索。
IO口的扩展与应用课程设计说明书
目录
一理论部分1
1课题要求与内容1
2系统方案设计1
3系统硬件的设计1
4系统软件设计4
二实践部分4
1系统硬件原理简介4
2系统硬件调试中出现的问题及解决措施10
3系统软件10
3.1软件设计10
3.2软件调试中出现的问题及解决措施10
三附录11
一理论部分
理论设计课题名称:
I/O口的扩展与应用
1课题要求与内容
对基于单片机的I/O口的扩展与应用系统进行设计。
所设计的系统功能为:
以MCS-51系列单片机作为控制核心,通过开关控制输出数据来驱动二极管显示出I/O口的扩展。
设计目的:
学习单片机系统中扩展I/O口的方法;掌握I/O口的控制逻辑,学习数据输入输出的种类及程序的编辑方法。
设计要求:
了解常用的I/O抠芯片,硬件扩展,读取开关状态,输出数据并且驱动发光二极管显示出来。
2系统方案设计
本设计采用单片机STC2C5A16S2和外围接口8155、发光二极管、晶振、复位、电源等电路以及必要的软件组成的以STC2C5A16S为核心,辅以简单的设备和必要的电路,设计了一款读取开关状态,输出数据并且驱动发光二极管显示出来,并编写简单的程序,使其能够工作。
3系统硬件的设计
采用发光二极管显示的I/O口的扩展与应用系统电路原理图如图1所示,系统由控制模块、指示灯显示模块、电源模块三部分组成。
图1系统电路原理图
3.1控制模块
控制模块电路如图2所示。
主控制器采用STC2C5A16S2。
STC2C5A16S2的晶振及复位电路按典型电路设计,元器件参数如图2中所示,晶振频率选为12MHz。
P10~P17用于控制8个发光二极管。
由于STC2C5A16S2使用片内的8KB的Flash程序存储器,所以片内外程序存储器选择引脚/VPP接+5V电源。
图2控制模块原理图
3.2指示灯显示模块
指示灯显示模块如图3所示。
指示灯指示采用红色发光二极管共8个。
红色发光二极管的共阴极通过电阻接地,阳极接P10~P17。
当发光电流为6mA时,限流电阻按公式R=(5-1.8)/0.006计算,取标称值为510Ω。
图3指示灯显示模块
3.3电源电路
电源电路如图4所示。
整个系统采用的电源电压只需+5V电压,将交流电经变压器变换为15V交流电,再用整流桥得到13.5V左右的直流电,采用不可调的3端稳压器件LM7805将电源稳定在5V直流输出。
图4电源电路
4系统软件设计
I/O口的扩展与应用系统软件主要分为主程序、特种车中断服务子程序二部分。
.4.1主程序
主程序主要负责总体程序管理功能,包括初始化部分与人机交互设定部分。
由于采用动态扫描方式显示通断,因此主程序大部分时间是调用扫描显示程序。
主程序流程图如图5所示。
。
图5主程序流程图
初始化部分主要完成内存规划,定时器的工作模式、中断方式等的设定。
由于子程序调用较多,因此初始化时堆栈指针设于80H处。
4.2特种车中断服务子程序
将按钮S4按下,给引脚输入低电平信号来模拟特种车通过信号,此时外部中断1被触发。
二实践部分
1系统硬件原理简介
1.18051单片机原理简述
MCS-51单片机的典型芯片是8031、8051、8751。
8051内部有4KBROM,8751内部有4KBEPROM,8031内部无ROM;除此之外,三者的内部结构及引脚完全相同。
本设计使用的是STC2C5A16S2,相当于8031。
下面我们就对本系列单片机的内部组成及信号引脚进行说明。
㈠STC2C5A16S2单片机的基本组成:
1)中央处理器(CPU)
中央处理器是单片机的核心,完成运算和控制功能。
有运算电路和控制电路,其中控制电路是单片机的指挥控制部件,保证单片机各部分能自动而协调的工作。
例如定时控制电路和振荡电路均属于控制电路。
单片机执行程序就是在控制电路的控制下进行的。
首先从程序存储器读出指令,送指令寄存器保存;然后送指令译码器进行译码,译码结果送定时控制电路,有定时控制逻辑产生各种定时信号和控制信号;再送到系统的各个部件去控制相应的操作。
这就是执行一条指令的全过程,而执行程序就是不断地重复这一过程。
2)内部数据存储器(内部RAM)
STC2C5A16S2芯片中共有256个RAM单元,通常把这256个单元按其功能划分为两部分:
低128单元(单元地址00H~7FH)和高128单元(单元地址80H~FFH)。
内部RAM的高128单元是供给专用寄存器使用的,其单元地址为80H~FFH。
因这些寄存器的功能已作专门规定,故称之为专用寄存器(SpecialFunctionRegister),也可称为特殊功能寄存器SFR区。
但高128单元被专用寄存器占用,能作为寄存器供用户使用的只是低128单元,用于存放可读写的数据。
因此通常所说的内部数据存储器就是指前128单元,简称内部RAM。
片内低128字节RAM是用户真正可以存取随机数据的数据存储器,其地址为00H-7FH。
3)定时/计数器
STC2C5A16S2共有两个16位的定时/计数器,以实现定时或计数功能,并以其定时或计数结果对计算机进行控制。
4)并行I/O口
STC2C5A16S2共有4个8位的I/O口(P0、P1、P2、P3),以实现数据的并行输入/输出。
每个口都包含一个锁存器、一个输出驱动器和输入缓冲器。
实际上,它们已被归入专用寄存器之列,并且具有字节寻址和位寻址功能。
在访问片外扩展存储器时,低8位地址和数据由P0口分时传送,高8位地址由P2口传送。
在无片外扩展存储器的系统中,这4个口的每一位均可作为双向的I/O端口使用。
5)串行口
STC2C5A16S2单片机有一个全双工的串行口,以实现单片机和其它设备之间的串行数据传送。
该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为同步移位器使用。
6)中断控制系统
STC2C5A16S2单片机的中断功能较强,以满足控制应用的需要。
8051共有5个中断源,即外中断两个,定时/计数中断两个,串行中断一个。
全部中断分为高级和低级共两个优先级别。
7)时钟电路
STC2C5A16S2芯片的内部有时钟电路,但石英晶体和微调电容需外接。
时钟电路为单片机产生时钟脉冲序列。
系统允许的晶振频率一般为6MHz和12MHz。
从上述内容可以看出,STC2C5A16S2虽然是一个单片机芯片,但作为计算机应该具有的基本部件它都包括,因此,实际上它已是一个简单的微型计算机系统了。
图6STC2C5A16S2单片机芯片
㈡STC2C5A16S2单片机外部引脚,如图6
1)、主电源引脚
Vss、Vcc
2)、外接晶振引脚
XTAL1、XTAL2
3)、控制或复位引脚
RST/VPD两个机器周期高电平,单片机复位。
P0~P3口:
输出高电平
SP:
07H
SFR、PC:
清0
不影响内RAM状态,机器从0地址开始执行。
上电复位电路、电平方式开关复位电路如图2-4所示。
ALE/PROG:
地址锁存控制端
提供1/6fosc振荡频率,输入编程脉冲EPROM
PSEN:
外部程序内存的读选通信号端。
EA/VPP:
EA=1,访问内部程序内存
当PC值超过内ROM范围(0FFFH)时,自动转执行外部内存的程序
EA=0,只访问外部程序内存。
对8751机,可施加21V编程电源(Vpp)
4)、输入/输出引脚
P0~P3:
四个I/O口,每口8线,共同32线。
1.2晶体振荡电路
1.时钟信号的产生
在MCS-51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。
而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器,这就是单片机的时钟电路,如图2.1所示。
时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。
一般地,电容C1和C2取30pF左右,晶体的振荡频率范围是1.2~12MHz。
晶体振荡频率高,则系统的时钟频率也高,单片机运行速度也就快。
MCS-51在通常应用情况下,使用振荡频率为6MHz或12MHz。
图7晶体振荡电路
2.时序
时序是用定时单位来说明的。
MCS-51的时序定时单位共有4个,从小到大依次是:
节拍、状态、机器周期和指令周期。
下面分别加以说明。
1)节拍与状态
把振荡脉冲的周期定义为节拍(用P表示)。
振荡脉冲经过二分频后,就是单片机的时钟信号的周期,其定义为状态(用S表示)。
这样,一个状态就包含两个节拍,具前半周期对应的拍节叫节拍1(P1),后半周期对应的节拍叫节拍2(P2)。
2)机器周期
MCS-51采用定时控制方式,因此它有固定的机器周期。
规定一个机器周期的宽度为6个状态,并依次表示为S1~S6。
由于一个状态又包括两个节拍,因此,一个机器周期总共有12个节拍,分别记作S1P1、S1P2、…、S6P2。
由于一个机器周期共有12个振荡脉冲周期,因此机器周期就是振荡脉冲的十二分频。
当振荡脉冲频率为12MHz时,一个机器周期为1μs;当振荡脉冲频率为6MHz时,一个机器周期为2μs。
本设计采用的晶振频率为12MHz。
3)指令周期
指令周期是最大的时序定时单位,执行一条指令所需要的时间称为指令周期。
它一般由若干个机器周期组成。
不同的指令,所需要的机器周期数也不相同。
通常,包含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令,等等指令的运算速度与指令所包含的机器周期有关,机器周期数越少的指令执行速度越快。
单片机执行任何一条指令时都可以分为取指令阶段和执行指令阶段。
ALE引脚上出现的信号是周期性的,在每个机器周期内出现两次高电平。
第一次出现在S1P2和S2P1期间,第二次出现在S4P2和S5P1期间。
ALE信号每出现一次,CPU就进行一次取指操作,但由于不同指令的字节数和机器周期数不同,因此取指令操作也随指令不同而有小的差异。
1.3单电源电平转换芯片
MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。
引脚介绍:
第一部分是电荷泵电路。
由1、2、3、4、5、6脚和4只电容构成。
功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。
第二部分是数据转换通道。
由7、8、9、10、11、12、13、14脚构成两个数据通道。
其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。
8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。
TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。
第三部分是供电。
15脚GND、16脚VCC(+5v)。
主要特点:
1、符合所有的RS-232C技术标准
2、只需要单一+5V电源供电
3、片载电荷泵具有升压、电压极性反转能力,能够产生+10V和-10V电压V+、V- 4、功耗低,典型供电电流5mA
5、内部集成2个RS-232C驱动器
6、内部集成两个RS-232C接收器
MAX232芯片在串行接口电路中的到了应用。
如图8
图8串行接口电路
1.4模数转换器
TLC549是美国德州仪器公司生产的8位串行A/D转换器芯片,可与通用微处理器、控制器通过CLK、CS、DATAOUT三条口线进行串行接口。
具有4MHz片内系统时钟和软、硬件控制电路,转换时间最长17μs,TLC549为40000次/s。
总失调误差最大为±0.5LSB,典型功耗值为6mW。
采用差分参考电压高阻输入,抗干扰,可按比例量程校准转换范围,VREF-接地,VREF+-VREF-≥1V,可用于较小信号的采样。
图9A/D转换电路
芯片简介:
1、TLC549的内部框图和管脚名称
TLC549的内部框图和引脚名称如图1所示。
2、极限参数
TLC549的极限参数如下:
●电源电压:
6.5V;
●输入电压范围:
0.3V~VCC+0.3V;
●输出电压范围:
0.3V~VCC+0.3V;
●峰值输入电流(任一输入端):
±10mA;
●总峰值输入电流(所有输入端):
±30mA;
●工作温度:
TLC549C:
0℃~70℃
TLC549I:
-40℃~85℃
TLC549M:
-55℃~125℃
2系统硬件调试中出现的问题及解决措施
问题1:
调试中出现不能下载程序的问题
措施:
检查电板焊接部分是否焊接完整,检查各个芯片是否正常工作。
问题2:
通电后指示灯不亮
措施:
检查电板电路焊接,单片机是否安装正确,元件是否有损坏。
问题3:
数码管显示不完整。
措施:
检查不能显示的电路上焊接是否有虚焊,元件损坏等问题。
3系统软件
单片机语言编译用著名的KeilC51编译器。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势,其方便易用的集成环境、强大的软件仿真调试工具会令你事半功倍。
3.1软件设计
软件的设计是一个将需求转变为软件陈述(表达)的过程。
这种陈述给一个对软件的全局观点。
系统通过逐步求精使得设计陈述逐渐接近源代码。
这里有两个基本步骤:
第一步是初步设计Preliminarydesign,关注于如何将需求转换成数据和软件框架。
第二步是详细设计Detaildesign,关注于将框架逐步求精细化为具体的数据结构和软件的算法表达。
发生中的设计行为、数据、算法和程序设计都需要由现代程序所需的界面设计这一清晰的行为来结合起来。
界面设计Interfacedesign建立程序布局和人机交互机制。
贯穿设计过程的质量由一系列的正式技术评定formaltechnicalreviews或设计排演designwalkthroughs来评价。
3.2软件调试中出现的问题及解决措施
程序编完后先保存,在编译的过程中,软件提示程序存在着多处错误,在软件的提示下一条一条的排查修改最终得到完美的程序。
但演示出现错误时,要进行排查,分层次编译。
三附录
参考程序清单
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVSP,#60H;初始化堆栈
MOVA,#01H;初始化IO口工作方式
MOVDPTR,#7F00H;设置PA口为输出方式
MOVX@DPTR,A
MOVA,#0;设置变量初值
MOVDPTR,#7F01H;初始化端口地址
LOOP:
INCA
MOVX@DPTR,A;端口置数
ACALLDELAY
SJMPLOOP
DELAY:
NOP;延时程序
MOVR4,#5
DELAY1:
MOVR5,#200
DELAY2:
MOVR6,#250
DJNZR6,$
DJNZR5,DELAY2
DJNZR4,DELAY1
RET
END