单片机应用与接口技术课程设计指导书.docx
《单片机应用与接口技术课程设计指导书.docx》由会员分享,可在线阅读,更多相关《单片机应用与接口技术课程设计指导书.docx(42页珍藏版)》请在冰豆网上搜索。
单片机应用与接口技术课程设计指导书
1引言
篮球比赛计时计分器是为了解决篮球比赛时计分与计时准确的问题。
此装置利用单片机AT89C51完成了计时和计分的功能。
该设计将介绍系统硬件与软件的设计过程,采用该装置可根据实际情况进行比分修改和时间的准确显示,具有低功耗,可靠性,安全性以及低成本等特点。
1.1背景知识介绍
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲:
一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机是了解计算机原理与结构的最佳选择。
单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。
单片机的优点是体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。
例如,80C51系列单片机已有十多年的生命期,如今仍保持着上升的趋势,就充分证明了这一点。
单片机以其一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统,数据采集系统、智能化仪器仪表,及通讯设备、日常消费类产品、玩具等。
并且已经深入到工业生产的各个环节以及人民生活的各层次中,如车间流水线控制、自动化系统等、智能型家用电器等。
而美国ATMEL公司开发生产了新型的8位单片机——AT89系列单片机。
他不但具有一般MCS-51单片机的所有特性,而且还拥有一些独特的优点,此次设计中所用到的AT89C51就是其中典型的代表。
单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,用它来做一些控制电器一类不是很复杂的工作足矣了。
我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影。
单片机是靠程序实现功能的,并且可以修改。
通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能。
一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件的话,电路一定是一块大PCB板。
但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别。
只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性。
1.2设计目的
随着单片机在各个领域的广泛应用,许多用单片机做控制的球赛计时计分系统也应运而产生,如用单片机控制LCD液晶显示器计时计分器,用单片机控制LED七段显示器计时计分器等。
本设计用由AT89C51编程控制LED七段数码管作显示的球赛计时计分系统。
该系统具有赛程定时设置,赛程时间暂停,及时刷新甲、乙双方的成绩以及赛后成绩暂存等功能。
它具有价格低廉,性能稳定,操作方便并且易于携带等特点。
广泛适合各类学校或者小型团体作为赛程计时计分。
通过本次基于C51系列篮球计时计分器的设计,可以了解、熟悉有关单片机开发设计的过程,并加深对单片机的理解和应用以及掌握单片机与外围接口的一些方法和技巧,这主要表现在以下一些方面:
(1)篮球赛计时计分系统包含了8051系列单片机的最小应用系统的构成,同时在此基础上扩展了一些使用性强的外围接口。
(2)可以了解到LED显示器的结构、工作原理以及这种显示器的接口实例与具体连接与编程方法。
(3)怎样利用串行口来扩展显示接口等。
1.3功能要求
(1)能记录整个赛程的比赛时间,并能在比赛开始前设定比赛时间,在比赛过程中能暂停比赛时间。
(2)能随时刷新甲、乙两队在真个赛程中的比分,即对甲乙两队的分数进行加分和减分。
(3)中场交换比赛场地时,能交换甲、乙两队比分的位置。
(4)比赛结束时能发出报警提示。
(5)在每次交换球权后24秒能手动赋初值,进攻超过24秒计时暂停知道按下继续开始计时。
1.4硬件系统方案设计
基于单片机系统的篮球记时记分器的系统结构如图1.1
图1.1篮球记时记分器的系统结构
系统硬件由以下三个部分组成:
(1)处理器:
单片机AT89C51
(2)显示部分
(3)按键开关
处理器:
本系统采用单片机AT89C51作为本设计的核心元件,兼容MCS—51指令系统,32个双向I/O口,两个16位可编程定时/计数器,1个串行中断,两个外部中断源,低功耗空闲和掉电模式,4k可反复擦写(>1000次)FlashROM,全静态操作0-24MHz,128x8bit内部RAM,共6个中断源,足以满足本次设计的要求。
显示部分:
在本次设计中,共接入12个七段共阴LED显示器,其中6个用于计录甲、乙两队的分数,每队3个LED显示器分数范围可达到0—999分,足够满足赛程需要。
另外的6个LED显示器则用于计录赛程的时间。
分、秒、进攻时间,各用2个用LED显示。
其中显示分钟的两位数字和显示进攻时间的四个LED可以通过按键进行调整设定。
当把时间设置好后,按下开始计时按键比赛开始时启动计时。
分钟和进攻时间可以设置的范围为0—99。
根据设计,计时范围可达0—99分钟,进攻时间最大为99秒也完全满足赛程的需要。
按键部分:
本次设计共用了10各按键。
其中4各来调整甲乙两队的分数,每个队用两个按键,分别对分数进行加1分和减1分;2各按键用来设定比赛时间的分钟,其中这两个按键分别控制分钟的十位和个位;同样两个按键来设定进攻时间的十位和个位;剩下的两个按键一个用来控制比赛时间的开始与暂停,另外一个用来控制进攻时间,当按下比赛开始暂停按键时,比赛的时间有原来的状态变为另一种状态,进攻调整按键则是在交换球权的时候,手动来赋予进攻时间初值。
当一场比赛结束的时候,暂停/开始按键还能完成交换两队分数的功能。
1.5软件设计要求
一、在上电点时,先对系统初始化。
等待时间设定。
二、当时间设定完成之后,按下开始键,系统显示分值和比赛时间。
三、进攻时间由设定值减到0时。
整个体统暂停计时,直到开始键重新按下。
进攻时间重新赋值,开始继续计时。
四、当按下暂停按键时,进攻时间赋初值,停止计时,等待继续计时键按下。
五、倒计时结束时,发出10秒警报。
六、在整个计时过程中,都可以对甲乙两队分数进行修改。
2系统硬件设计
2.1单片机AT89C51介绍
MCS-51是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了很多品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。
AT89C51是一个低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的Flash只读程序存储器和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,内置功能强大的微型计算机的AT89C51提供了高性价比的解决方案。
AT89C51具有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。
AT89C51也是一个低功耗高性能单片机,有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
如图所示,图2.1为AT89C51单片机基本构造,其基本性能介绍如下:
图2.1AT89C51引脚图
2.1.1管脚说明
VCC:
供电电压
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
表2.1AT89C51特殊功能表
端口引脚
第二功能
P3.0
RXD(串行输入口)
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(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来MCS-51系列单片机片内有一个串行I/O端口,通过引脚RXD(P3.0)和TXD(P3.1)可与外设电路进行全双工的串行异步通信。
8051单片机的串行端口有4种基本工作方式,通过编程设置,可以使其工作在任一方式,以满足不同应用场合的需要。
其中,方式0主要用于外接移位寄存器,以扩展单片机的I/O电路;方式1多用于双机之间或与外设电路的通信;方式2,3除有方式l的功能外,还可用作多机通信,以构成分布式多微机系统。
串行端口有两个控制寄存器(SCON和PCON),用来设置工作方式、发送或接收的状态、特征位、数据传送的波特率(每秒传送的位数)以及作为中断标志等。
串行端口有一个数据寄存器SBUF(在特殊功能寄存器中的字节地址为99H),该寄存器为发送和接收所共同。
发送时,只写不读;接收时,只读不写。
在一定条件下,向SBUF写入数据就启动了发送过程;读SBUF就启动了接收过程。
串行通信的波特率可以程控设定。
在不同工作方式中,由时钟振荡频率的分频值或由定时器T1的溢出率确定,使用十分方便灵活自反向振荡器的输出。
2.1.2芯片擦除特性
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
2.1.3AT89C51省电模式
AT89C51有两种可用软件编程的省电模式,它们是空闲模式和掉电工作模式。
这两种方式是控制专用寄存器PCON(电源控制寄存器)中的PD(PCON.1)和IDL(PCON.0)位来实现的。
PD是掉电模式,当PD=1时,激活掉电工作模式,单片机进入掉电工作状态,IDL是空闲等待状态,当IDL=1时,激活空闲工作模式,单片机进入睡眠状态,如需同时进入两种工作模式,即PD和IDL同时为1,则先激活掉电工作模式。
空闲模式:
在空闲工作模式状态,CPU保持睡眠状态而所有片内的外设仍保持激活状态,这种方式由软件产生。
此时,片内RAM和所有特殊功能寄存器的内容保持不变。
空闲模式可由任何允许的中断请求或者硬件复位终止。
终止空闲工作模式的方法有两种
其一是任何一条被允许中断的事件被激活,IDL(PCON.0)被硬件清除,即刻终止空闲工作模式。
程序会首先响应中断,进入中断服务程序,执行完中断服务程序并紧随RETI(中断返回)指令后,下一条要执行的指令就是使单片机进入空闲模式那条指令后面的一条指令。
其二是通过硬件复位也可以将空闲工作模式终止。
需要注意的是,当由硬件复位来终止空闲工作模式时,CPU通常是从激活模式那条指令的下一条指令开始继续执行程序的,要完成内部复位操作,硬件复位脉冲要保持两个机器周期(24个时钟周期)有效,在这种情况下,内部禁止CPU访问片内RAM,而允许访问其他端口。
为了避免对端口产生意外写入,激活空闲模式的那条指令的后一条指令不应是一条对端口或者外部存储器的写入指令。
掉电模式:
在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内RAM和特殊功能寄存器的内容在终止掉电模式前被冻结。
推出掉电模式的唯一方法是硬件复位。
复位后将重新定义全部特殊功能寄存器但不改变RAM中的内容,在VCC恢复到正常工作电平前,复位应无效,且必须保持一定时间以使振荡器重新启动并且稳定的工作。
空闲和掉电模式外部引脚状态如表2.3所示
表2.2外部引脚状态表
模式
空闲模式
空闲模式
掉电模式
掉电模式
程序存储器
内部
外部
内部
外部
ALE
1
1
0
0
/PROG
1
1
0
0
P0
数据
浮空
数据
浮空
P1
数据
数据
数据
数据
P2
数据
数据
数据
数据
P3
浮空
浮空
数据
数据
2.1.4最小系统设计
通过上面对单片机的介绍,我们已经对单片的功能有了充分的了解。
下面就以AT89C51单片机来设计该设计中的核心部分——最小系统。
单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。
对51系列单片机来说,最小系统一般应该包括:
单片机、晶振电路、复位电路。
下面给出一个51单片机的最小系统电路图。
图2.2单片机最小系统
复位电路:
由电容串联电阻构成。
由图并结合"电容电压不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定。
典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位。
所以,适当组合RC的取值就可以保证可靠的复位。
在电路图中,电容的的大小是22uF,电阻的大小是10k。
所以根据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5V,所以充电到0.7倍即为3.5V),需要的时间是10K*10UF=0.1S。
也就是说在开机的0.1S内,电容两端的电压时在0~3.5V增加。
这个时候10K电阻两端的电压为从5~1.5V减少(串联电路各处电压之和为总电压)。
所以在0.1S内,RST引脚所接收到的电压是5V~1.5V。
在5V正常工作的51单片机中小于1.5V的电压信号为低电平信号,而大于1.5V的电压信号为高电平信号。
所以在开机0.1S内,单片机系统自动复位(RST引脚接收到的高电平信号时间为0.1S左右)。
当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平。
51单片机最小系统复位电路的极性电容C1的大小直接影响单片机的复位时间,一般采用10~30uF,51单片机最小系统容值越大需要的复位时间越短。
除上电复位外,还可以通过手动来复位,单片机手动复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部的程序从头开始执行。
单片机也一样,当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,按下手动复位按钮内部的程序自动从头开始执行。
原理同上电复位,当按键被按下时,给RST脚一个复位信号,使其重新开始运行。
由于在比赛过程中,我们通常不希望系统从头开始计时,在该设计中手动复位就不再设计电路中。
晶振电路:
51单片机最小系统晶可以采用6MHz或者11.0592MHz,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。
典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的合)/12MHz(产生精确的uS级时歇,方便定时操作),本设计使用的晶振为12MHz。
单片机最小系统起振电容C2、C3一般采用15~33pF,并且电容离晶振越近越好,晶振离单片机越近越好。
设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。
计数值N乘以机器周期Tc就是定时时间t。
在本设计中特别注意:
对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行;当接低电平时,复位后直接从外部ROM的0000H开始执行。
考虑到本设计用到的程序不多,内部ROM可以满足要求。
所以在最小系统中P3.1管脚接高电平。
2.2显示器设计
显示器是最常用的输出设备,其种类繁多,但在单片机系统设计中最常用的是发光二极管显示器(LED)和液晶显示器(LCD)两种。
由于这两种显示器结构简单,价格便宜,接口容易实现,因而得到广泛的应用。
发光二极管LED,组成的显示屏,每个点都是一个或多个发光二极管,通过控制电路控制二极管的亮与灭来控制点的发光,从而使整个大屏幕显示图案。
液晶显示器LCD最常见的就是TFT类型的,它是由光源,液晶光栅,和控制芯片组成,他的光源是常亮的白色强光,当光线通过液晶光栅(液晶屏)的时候,通过电压改变液晶颗粒滤光方向,从而改变每个点的颜色和强度来显示图案。
液晶显示器分很多种类,按显示方式可分为段式,行点阵式和全点阵式。
段式与数码管类似,行点阵式一般是英文字符,全点阵式可显示任何信息,如汉字、图形、图表等。
两者之间的区别:
(1)二极管本身时发光,液晶本身也不发光,只是透射光。
(2)二极管体积大,图像质量一般,适合作室外大屏幕,价格较低;而液晶成本较高,面积无法做得很大,但图像质量很好,适合做显示器。
(3)二极管耗电大,液晶耗电小。
(4)二极管图像刷新率低,液晶的高
二者的档次相差比较大,一般来讲在一些图像简单,对成本控制较严格的场合,用二极管,比如商场、银行等服务部门的电子提示窗,街道、百货公司外面的广告宣传窗;而液晶一般都是作计算机显示器、电视、手持设备等对图像质量要求高的场合。
2.2.1LED结构与原理
LED显示器又称为数码管,LED显示器由8个发光二极管组成。
中7个长条形的发光管排列成“日”字形,另一个贺点形的发光管在显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。
图2.37段LED数码管
LED显示器有两种不同的形式:
一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极LED显示器。
共阳和共阴两种结构,如上图所示。
图上为共阴结构。
即把8个发光二极管阴极连在一起。
这时如果需要点亮a到g中的任何一盏灯,只需要在相应的端口输入高电平即可;输入低电平则截止。
比如我们现在要显示数字“3”,则只要在对应的a、b、c、d、g段送入高电平,在其他端送入低电平即可,点亮为“3”。
共阴和共阳结构的LED显示器各笔划段名和安排位置是相同的。
当二极管导通时,相应的笔划段发亮,由发亮的笔划段组合而显示的各种字符。
8个笔划段hgfedcba对应于一个字节(8位)的D7D6D5D4D3D2D1D0,于是用8位二进制码就可以表示欲显示字符的字形代码。
例如,对于共阴LED显示器,当公共阴极接地(为零电平),而阳极hgfedcba各段为0111011时,显示器显示"P"字符,即对于共阴极LED显示器,“P”字符的字形码是73H。
如果是共阳LED显示器,公共阳极接高电平,显示“P”字符的字形代码应为10001100(8CH)。
表2.3列出了共阳极与共阴极LED显示器显示数字、字母与显示代码之间的对应关系
表2.3代码对应表
显示字符
共阴极段码
共阳极段码
显示字符
共阴极段码
共阳极段码
0
3FH
C0
8
7FH
80H
1
06H
F9
9
6FH
90H
2
5BH
A4
A
77H
88H
3
4FH
B0
B
7CH
83H
4
66H
99H
C
39H
C6
5
6DH
92H
D
5EH
A1H
6
7DH
82H
E
79H
86H
7
07H
F8
F
71H
8EH
2.2.2LED显示器显示方式
点亮LED显示器有两种方式:
一是静态显示;二是动态显示。
所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。
这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种方法单片机中CPU的开销小。
这种电路的优点在于:
在同一时间可以显示不同的字符;但缺点就是占用端口资源较多。
从下图可以看出,每位LED显示器需要单独占用8根端口线,因此,在数据较多的时候,往往不采用这种设计。
图2.4动态显示图
动态显示,就是将要显示的多位LED显示器采用一个8位的段选端口,然后采用动态扫描一位一位地轮流点亮各位显示器。
下图为4位LED显示器动态显示电路。
图2.5静态显示图
在此电路中,单片机的P1口用于控制4位LED的段选码:
P2口的P2.0~~P2.3用于控制4位LED位选码。
由于所有的段选码连在一起,所以同一瞬间只能显示同一种字符。
但如果要显示不同字符,则要借助位选码来控制。
(如果LED为共阴则P2.0~~P2.3输出为高电平,如果LED为共阳则P2.0~~P2.3输出为低电平。
)
例如,现在要显示5678四个数字,则首先应该将“5”的显示代码(共阴LED显示器的显示代码为6DH,共阳LED显示器的显示代码为92H)由P1.0送出,然后P2.0~~P2.3输出相应位码(LED为共阴则P2.0~~P2.3输出1000,)LED为共阴则P2.0~~P2.3输出0111)时,则可以看到在数码管1上显示的数字为“5”。
再