单片机课程设计.docx
《单片机课程设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计.docx(21页珍藏版)》请在冰豆网上搜索。
单片机课程设计
目录
一、课题要求简介…………………………………………1
二、有关中断知识点回顾…………………………………6
三、设计方案………………………………………………7
四、硬件电路设计…………………………………………15
五、软件程序设计…………………………………………18
六、设计心得与体会………………………………………19
一、课题要求简介
设计要求:
以MCS51单片机为核心,辅以外围接口电路,实现一个外部中断响应、控制设计。
要求对外部4个硬件中断请求信号(下降沿信号),单片机能实时响应,并通过一位数码管分别显示1、2、3、4来反映中断信号来源。
控制软件设计与调试,包括中断系统相关初始化功能的设计、中断响应功能的实现以及显示程序的设计等。
二、有关中断知识点回顾
1.中断的定义
中断是指计算机暂时停止原程序执行转而为外部设备服务(执行中断服务程序),并在服务完后自动返回原程序执行的过程。
中断由中断源产生,中断源在需要时可以向CPU提出“中断请求”。
“中断请求”通常是一种电信号,CPU对这个电信号进行检测,一旦响应便可自动转入该中断源的中断服务程序执行,并在执行后自动返回原程序继续执行。
而且中断源不同,中断服务程序的功能也不同。
2.单片机的中断服务程序入口地址
表格2-1中断服务程序入口
3.中断请求源
图2-2中断请求
由图可见,MCS51中断系统共有5个中断请求源:
INT0*——外部中断请求0,中断请求信号由INT0*引脚输入,中断请求标志为IE0。
INT1*——外部中断请求1,中断请求信号由INT1*引脚输入,中断请求标志为IE1。
定时器/计数器T0计数溢出发出的中断请求,中断请求标志为TF0。
定时器/计数器T1计数溢出发出的中断请求,中断请求标志为TF1。
串行口中断请求,中断请求标志为发送中断TI或接收中断RI。
5个中断请求源的中断请求标志分别由TCON和SCON的相应位锁存。
4.TCON寄存器
为定时器/计数器的控制寄存器,字节地址为88H,可位寻址。
特殊功能寄存器TCON的格式如图所示。
图2-3TCON寄存器
TCON各标志位功能如下:
①TF1—定时器/计数器T1的溢出中断请求标志位。
当T1计数产生溢出时,由硬件使TF1置“1”,向CPU申请中断。
CPU响应TF1中断时,TF1标志由硬件自动清“0”,TF1也可由软件清“0”。
②TF0—定时器/计数器T0的溢出中断请求标志位,功能与TF1类似。
③IE1—外部中断请求1的中断请求标志位。
④IE0—外部中断请求0中断请求标志位,功能与IE1类似。
⑤IT1—选择外部中断请求1为跳沿触发还是电平触发。
IT1=0,电平触发方式,引脚上低电平有效,并把IE1置“1”。
转向中断服务程序时,由硬件自动把IE1清“0”。
IT1=1,跳沿触发方式,加到引脚上的外部中断请求输入信号电平从高到低的负跳变有效,并把IE1置“1”。
转向中断服务程序时,由硬件自动把IE1清“0”。
⑥IT0—选择外部中断请求0为跳沿触发方式还是电平触发方式,其意义与IT1类似。
5.SCON寄存器
串行口控制寄存器,字节地址为98H,可位寻址。
低二位锁存串行口的发送中断和接收中断的中断请求标志TI和RI,格式如图5-4所示。
图2-4SCON寄存器
各标志位的功能:
①TI—串行口的发送中断请求标志位。
每发送完一帧串行数据后,TI自动置“1”。
TI标志必须由软件清“0”。
②RI—串行口接收中断请求标志位。
串行口接收完一个串行数据帧,硬件自动使RI中断请求标志置“1”。
必须在中断服务程序中用指令对RI清“0”。
6.中断允许寄存器IE
MCS51的对各中断源的开放或屏蔽,是由中断允许寄存器IE控制的。
IE字节地址为A8H,可位寻址,格式如图所示。
图2-4中断允许寄存器IE
IE对中断的开放和关闭实现两级控制。
有一个总的开关中断控制位EA(IE.7位),EA=0时,所有的中断请求被屏蔽;EA=1时,开放中断,但5个中断源的中断请求是否允许,还要由IE中的低5位所对应的5个中断请求允许控制位的状态来决定。
IE中各位功能如下:
(1)EA—中断允许总开关控制位。
EA=0,所有的中断请求被屏蔽。
EA=1,所有的中断请求被开放。
(2)ES——串行口中断允许位。
ES=0,禁止串行口中断。
ES=1,允许串行口中断。
(3)ET1——定时器/计数器T1的溢出中断允许位。
ET1=0,禁止T1溢出中断。
ET1=1,允许T1溢出中断。
(4)EX1——外部中断1中断允许位。
EX1=0,禁止外部中断1中断。
EX1=1,允许外部中断1中断。
(5)ET0——定时器/计数器T0的溢出中断允许位。
ET0=0,禁止T0溢出中断。
ET0=1,允许T0溢出中断。
(6)EX0——外部中断0中断允许位。
EX0=0,禁止外部中断0中断。
EX0=1,允许外部中断0中断。
7.中断应用步骤及中断初始化
中断初始化应在产生中断请求前完成,一般放在主程序中,并常与主程序初始化综合考虑一起进行。
①开中断。
将控制寄存器IE中的中断控制位EA和相应的中断允许控制位置“1”。
②若是外中断,则要定义外中断触发方式,将控制寄存器TCON中相关的控制位置“1”。
③定义中断优先级。
将中断优先级控制寄存器IP中相关的控制位置“1”。
中断服务程序中除包含中断处理的程序段外,还包括以下几个方面的内容,编程时予以注意。
在相应的中断入口地址处设置一条跳转指令(SJMP、AJMP或LJMP),将中断服务程序转到合适的ROM空间。
若中断服务程序长度不大于8个字节时,可直接放置在中断入口地址处。
现场保护。
为减轻堆栈负担,保护现场的数据存储单元数量力求少。
CPU响应中断后,其硬件不能自动清除其中断请求标志位时,应考虑清除中断请求标志位的其他操作。
恢复现场最后一条指令必须是中断返回指令RETI。
8.有关单片机类型的引脚的介绍
(1)VCC(40脚):
+5V电源。
(2)VSS(20脚):
数字地。
(3)XTAL1(19脚):
片内振荡器反相放大器和时钟发生器电路输入端。
用片内振荡器时,该脚接外部石英晶体和微调电容。
外接时钟源时,该脚接外部时钟振荡器的信号。
(4)XTAL2(18脚):
片内振荡器反相放大器的输出端。
当使用片内振荡器,该脚连接外部石英晶体和微调电容。
当使用外部时钟源时,本脚悬空。
(5)RST(RESET,9脚):
复位信号输入,在引脚加上持续时间大于2个机器周期的高电平,可使单片机复位。
正常工作,此脚电平应≤0.5V。
当看门狗定时器溢出输出时,该脚将输出长达96个时钟振荡周期的高电平。
(6)EA*/VPP(31脚):
引脚第一功能:
外部程序存储器访问允许控制端。
EA*=1,在PC值不超出0FFFH(即不超出片内4KBFlash存储器的地址范围)时,单片机读片内程序存储器(4KB)中的程序,但PC值超出0FFFH(即超出片内4KBFlash地址范围)时,将自动转向读取片外60KB(1000H-FFFFH)程序存储器空间中的程序。
EA*=0,只读取外部的程序存储器中的内容,读取的地址范围为0000H~FFFFH,片内的4KBFlash程序存储器不起作用。
VPP:
引脚第二功能,对片内Flash编程,接编程电压。
(7)ALE/PROG*(30脚):
ALE为CPU访问外部程序存储器或外部数据存储器提供地址锁存信号,将低8位地址锁存在片外的地址锁存器中。
此外,单片机正常运行时,ALE端一直有正脉冲信号输出,此频率为时钟振荡器频率fosc的1/6。
可用作外部定时或触发信号。
注意,每当AT89S51访问外部RAM时(执行MOVX类指令),要丢失一个ALE脉冲。
如需要,可将特殊功能寄存器AUXR(地址为8EH,将在后面介绍)的第0位(ALE禁止位)置1,来禁止ALE操作,但执行访问外部程序存储器或外部数据存储器指令“MOVC”或“MOVX”时,ALE仍然有效。
即ALE禁止位不影响对外部存储器的访问。
PROG*:
引脚第二功能,对片内Flash编程,为编程脉冲输入脚。
(8)PSEN*(29脚):
片外程序存储器读选通信号,低电平有效。
(9)①P0口:
8位,漏极开路的双向I/O口,当外扩存储器及I/O接口芯片时,P0口作为低8位地址总线及数据总线的分时复用端口。
P0口也可用作通用的I/O口,需加上拉电阻,这时为准双向口。
作为通用I/O输入,应先向端口写入1。
可驱动8个LS型TTL负载。
②P1口:
8位,准双向I/O口,具有内部上拉电阻。
准双向I/O口,作为通用I/O输入时,应先向端口锁存器写1。
P1口可驱动4个LS型TTL负载。
P1.5/MOSI、P1.6/MISO和P1.7/SCK,可用于对片内Flash存储器串行编程和校验,它们分别是串行数据输入、输出和移位脉冲引脚。
③P2口:
8位,准双向I/O口,具有内部上拉电阻。
当AT89S51扩展外部存储器及I/O口时,P2口作为高8位地址总线用,输出高8位地址。
P2口也可作为普通的I/O口使用。
当作为通用I/O输入时,应先向端口输出锁存器写1。
P2口可驱动4个LS型TTL负载。
④P3口:
8位,准双向I/O口,具有内部上拉电阻。
可作为通用的I/O口使用。
作为通用I/O输入,应先向端口输出锁存器写入1。
可驱动4个LS型TTL负载。
图2-5单片机
三、设计方案
1、概述
设计包括硬件和软件两个部分。
就电路而言,即硬件由单片机、输入/输出设备、以及外围应用电路等组成,因实验箱上已经含有各部分电路,只需用导线对其进行正确的连接即可。
软件是各种工作程序的总称,通过硬件和软件实现设计需求。
系统上电运行后,若需要复位,一般是通过手动复位来实现的。
通常采用手动复位和上电自动复位结合。
复位电路虽然简单,但其作用十分重要。
一个单片机系统能否正常运行,首先要检查是否能复位成功。
初步检查可用示波器探头监视RST引脚,按下复位键,观察是否有足够幅度的波形输出(瞬时的),还可以通过改变复位电路阻容值的方法进行检测。
2.Keil C51开发系统基本知识
图3-1keilc51的运行程序
系统概述 :
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
下面详细介绍Keil C51开发系统各部分功能和使用。
Keil C51单片机软件开发系统的整体结构 C51工具包的整体结构,其中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。
开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。
然后分别由C51及A51编译器编译生成目标文件(.OBJ)。
目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。
ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。
使