二、设计目的和要求
2.1课程设计目的
课程设计时单片机原理与接口技术课程集中实践环节的主要内容之一,可以使学生达到对单片机系统组成、编程、调试和绘图设计等基本技能训练。学生通过选作的课题,可以进一步熟悉单片机应用系统的开发过程,软、硬件设计的工作内容、方法、步骤。培养学生理论联系实际,提高分析问题、解决问题的能力和实际动手能力,以及正确应用单片机解决工业控制、工业检测等领域具体问题的能力。
2.2课程设计要求
(1)通过查阅手册和有关文献资料,掌握独立分析和解决实际问题的能力。
(2)通过实际电路方案的设计分析比较、设计计算、元件选取、仿真、安装调试等环节,掌握实用电路的分析方法和工程设计方法。
(3)熟悉常用仪器设备的使用方法,掌握实验调试方法,提高动手能力。
三、设计硬件电路及其相关介绍
3.1AT89C51
AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。 3.1.1AT89C51简介
AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图所示。
第 2 页 共 40 页
3.1.2AT89C51管脚功能介绍
VCC:供电电压。 GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写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的一些特殊功能口,如下表所示: 口管脚 备选功能
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)。
第 3 页 共 40 页
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。 3.1.3AT89C51复位电路
复位实单片机的初始化操作。单片机系统再上电启动运行时,都需要先复位。其作用是使CPU和系统中其他部件都处于一个初始的状态,并从这个状态开始工作,因而,复位实一个很重要的操作方式。但单片机本身是不能自动复位的,必须配合相应的外部复位电路才能实现。
单片机的复位方式有上电自动复位和上电加按键手动复位两种。
图 1
图 2
(1)上电自动复位
上电自动复位实利用电容器的充电实现。AT89C51单片机的上电自动复位电路如图1所示,在时钟电路工作后,再RST端连续给出两个机器周期的高电平就可以完成复位操作。图中给出了复位电路参数。
(2)上电加按键手动复位
AT89C51单片机的上电加手动按键复位电路如图2所示,当复位按键按下后,复位端通过51Ω的小电阻与+5V电源接通,电容迅速放电,使RST引脚为高电平;当复位按键弹起后,+5V的电源通过2KΩ电阻对22UF电容重新充电,RST引脚端出现复位正脉冲。其持续时间取决于RC电路的时间常数。本设计中采用这种复位方式(protues的ISIS仿真中若复位无效,降低电阻试试)。 3.1.4时钟电路
单片机工作是在统一的时钟脉冲控制下一拍一拍地进行的,这个脉冲是由单片机控制器中的时序电路发出的。单片机的时序就是CPU再执行指令时所需控制信号的时间顺序。为了保证各部件间的同步工作,单片机内部电路应该再唯一的时钟信号下严格地按时序进行工
第 4 页 共 40 页
作。AT89C51单片机内部有一个高增益反向放大器,用于构成震荡器,但是要形成时钟脉冲,外部还需要附加电路。AT89C51的时序有以下两种。
图 3
图 4
(1)内部时钟方式
利用芯片内部的震荡器,然后再引脚XTAL1和XTAL2两端跨接晶体震荡器,就构成了稳定的自激振荡器,发出的脉冲直接送入内部时钟电路。外接晶体振荡器时,C4和C5的值选择再30PF左右,C4和C5对频率有微调作用,晶振或陶瓷谐振器的频率范围可在1.2~12MHZ之间选择,为减小寄生电容,更好的保证震荡器稳定、可靠的工作,震荡器和电容应尽可能安装得与单片机引脚XTAL1和XTAL2靠近,单片机内部时钟电路如图3所示(本次设计中采用内部时钟方式)。
(2)外部时钟方式
此方式是将外部震荡脉冲接入XTAL1或XTAL2.HMOS和CHMOS单片机接入方式不同,单片机HMOS型外部时钟电路如图4所示。
3.2 74LS47
74LS47是BCD-7段数码管译码器驱动器,74LS47的功能用于将BCD码转化成数码块中的数字,通过它来进行解码,可以直接把数字转换为数码管的数字,从而简化了程序,节约了单片机的IO开销。因此是一个非常好的芯片! 3.2.1 74LS47管脚图和真值表
74LS47是BCD-7段数码管译码器/驱动器, 74LS47的功能用于将BCD码转化成数码块中的数字,通过它解码, 可以直接把数字转换为数码管的显示数字。 74LS47为低电平作用.
管脚图如图5所示:
第 5 页 共 40 页
图 5
真值表如下: LT 0 X 1 1 1 1 1 1 1 1 1 1 1 RBI X X 0 0 X X X X X X X X X BI/RBO 1 0 0 0 1 1 1 1 1 1 1 1 1 D C B A XXXX XXXX 0000 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 abcdefg 0000000 1111111 1111111 0000001 1001111 0010010 0000110 1001100 0100100 1100000 0001111 0000000 0001100 说明 试灯 熄灭 灭零 0 1 2 3 4 5 6 7 8 9 3.2.2引脚功能
(1)LT:试灯输入,是为了检查数码管各段是否能正常发光而设置的。当 LT=0时,无论输入A3 ,A2 ,A1 ,A0为何种状态,译码器输出均为低电平,也就是七段将全亮,若驱动的数码管正常,是显示8。
(2)BI:灭灯输入,是为控制多位数码显示的灭灯所设置的。当BI(—)=0时,不论LT
和输入A3 ,A2 ,A1,A0为何种状态,译码器输出均为高电平,使共阳极数码管熄灭。 (3)RBI:灭零输入,它是为使不希望显示的0熄灭而设定的。当对每一位A3= A2 =A1 =A0=0时,本应显示0,但是在RBI=0作用下,使译码器输出全为高电平。其结果和加入灭灯信号的结果一样,将0熄灭。
(3)RBO:灭零输出,它和灭灯输入BI(—)共用一端,两者配合使用,可以实现多位数码显示的灭零控制。
第 6 页 共 40 页