单片微机课程设计报告文档格式.docx
《单片微机课程设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《单片微机课程设计报告文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
掌握单片机技术是一门不可或缺的技术,对我们将来的工作以及生活和学习都有很密切的联系。
近年来,随着电子技术和微机计算机的迅速发展,单片机的档次不断提高,其应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到了广泛的应用,成为现代电子系统中最重要的智能化的核心部件。
关键词
AT89S51;
矩阵键盘;
全加器;
晶体振荡;
复位;
电源;
数码管
Abstract:
Thedesignisbasedonwhatwelearnthecoursesyllabus,accordingtotherequirementsofourfirstcourseexamination,isthenecessarytrainingcourseofourmission,andSCMareofgreathelp.Mastermicrocontrollertechnologyisoneoftheindispensabletoourfuturetechnology,theworkandthelifeandlearningareverycloseconnection.Inrecentyears,withtheelectronictechnologyandtherapiddevelopmentofthemicrocomputerchip,continuouslyimprovethegrade,itsapplicationsareconstantlyexpandinginindustrialcontrol,hasadvancedscience,intelligentinstrument,electricalappliances,automobileelectronicsystem,officeautomationequipment,personalinformationterminalsandcommunicationproductshasbeenwidelyusedinmodernelectronicsystem,becomethemostimportantcorecomponentsofintelligence.Inthisdesign,processandnouseoriginallearninbooks,buttheassemblerlanguageusingClanguageprogram,usingthesimulationsoftware,andpopularPROTEUSkeiljointsimulation,convenientdebugprogramandmodifythehardware,theresultsshowthattheschemedesignofhardwarecorrectproceduresalsomeetstherequirement.
Keywords
AT89S51;
matrixkeyboard;
fulladder;
crystaloscillator;
reset;
power;
nixietube
一前言
单片机自诞生以来,以其体积小,面向控制,高性价比等优点,在各方各面扮演者重要的角色。
本次课程设计涉及到单片机最小系统、5V稳压电源、数码管的显示、一位随机存储器、全加器几个单元,本次课程设计主要是引导我们应用理论知识做成一些实际的东西,达到将理论应用于实际的目的。
同时,也重在培养我们的对电路的布局,元件的焊接,以此来培养我们的动手能力,提升对理论知识的理解。
二设计任务与要求
2.1设1.了解并熟悉对直流电源的设计。
2.构成单片机最小系统的设计与控制方法。
3.熟悉单片机应用系统的开发过程和方法计目的
1,(从网上)查找AT89S51引脚参数资料,
2,规定完成基本内容:
1)1位六管静态随机存储器;
2)1位全加器;
(实现+、-、补、与、或、非、异或、与非。
)
3)测量判决门限;
4)单片机系统;
包括:
①,5V稳压电源;
②,上电复位;
③自动复位;
④,晶体管振荡;
⑤,3×
3扫描键盘(或编码键盘);
⑥,四位八段数字动态显示;
⑦要求使用芯片AT89S51;
⑧看门狗。
3,个人创新内容:
①,电机控制;
②,声音控制;
③,灯光控制;
④,温度控制;
⑤,电压控制;
⑥,频率控制;
⑦,汉字显示;
⑧,图象显示;
机器人智能控制等。
4,选做:
①,外部存储器扩展;
②,A/D、D/A转换。
1.AT89S51的基本简介
2.1AT89S51主要特性
·
与MCS-51产品指令系统完全兼容
4k字节在系统编程(ISP)Flash闪速存储器
1000次擦写周期
4.0-5.5V的工作电压范围
全静态工作模式:
0Hz-33MHz
三级程序加密锁
128×
8字节内部RAM
32个可编程I/O口线
2个16位定时/计数器
6个中断源
全双工串行UART通道
低功耗空闲和掉电模式
中断可从空闲模唤醒系统
看门狗(WDT)及双数据指针
掉电标识和快速编程特性
灵活的在系统编程(ISP字节或页写模式)
2.2AT89S51各引脚功能介绍
AT89S51
VCC:
供电电压。
GND:
接地。
·
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作原码输入口,当FIASH进行校验
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.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
I/O口作为输入口时有两种工作方式即所谓的读端口与读引脚读端口时实际上并不从外部读入数据而是把端口锁存器的内容读入到内部总线经过某种运算或变换后再写回到端口锁存器只6有读端口时才真正地把外部的数据读入到内部总线上面图中的两个三角形表示的就是输入缓冲器CPU将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作这是由硬件自动完成的不需要我们操心1然后再实行读引脚操作否则就可能读入出错为什么看上面的图如果不对端口置1端口锁存器原来的状态有可能为0Q端为0Q^为1加到场效应管栅极的信号为1该场效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为1也会因端口的低阻抗而使信号变低使得外加的1信号读入后不一定是1若先执行置1操作则可以使场效应管截止引脚信号直接加到三态缓冲器中实现正确的读入由于在输入操作时还必须附加一个准备动作所以这类I/O口被称为准双向口89C51的P0/P1/P2/P3口作为输入时都是准双向口接下来让我们再看另一个问题从图中可以看出这四个端口还有一个差别除了P1口外P0P2P3口都还有其他的功能
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个
机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置
0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另7外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,
置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程
电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
AT89SXX系列单片机实现了ISP下载功能
2.整体电路设计
本次课题设计以芯片AT89S51为核心,设计出了一个包括具有数码显示功能,一位全加器,一位存储器,晶体振荡电路,复位电路的整体电路系统。
下图2.1其系统框图。
4.1电源电路部分
电源部分包括:
电源变压器、整流电路、滤波电路、稳压电路。
整流电路是将工频交流电转为具有直流电成分的脉动直流电。
滤
波电路是将脉动直流中的交流成分滤除,减少交流成分,增加直流成
分。
稳压电路对整流后的直流电压采用负反馈技术进一步稳定直流电
压
电源的原理图如下:
直流稳压电源电路图
D1-D4整流二极管(4007)
C1、C3旁路电容,抗高频干扰(104)
C2、C4电源滤波1000uf/25V
7805稳压模块
D5发光二极管(红色),电源指示灯
R1限流电阻(1K)
5、3*3矩阵键键盘输入电路的设计
键盘输入电路分为独立式键盘输入、非编码键盘输入和硬件
编码键盘输入三种。
此电路系统采用的事非编码键盘输入。
盘
其硬件电路图如下:
当非编码键盘的按键较多时,若采用独立式键盘占用I/O口线
太多,此时可采用矩阵式键盘,键盘上的键按行列构成矩阵,在
行列的交点上都对应有一个键。
行列方式是用m条I/O线组成行
输入口,用n条I/O线组成列输出口,在行列线的每一个交点处,
设置一个按键,组成一个mxn的矩阵,矩阵键盘所需的连线数为
行数+列数,如4×
4的16键矩阵键盘需要8条线与单片机相连,
—般键盘的按键越多,这种键盘占I/O口线少的优点就越明显,
因此,在单片机应用系统较为常见。
本系统采用的是4x4的按键
电路。
因为单片机P1口内有上拉电阻,故不需要外接上拉电阻。
矩阵式键盘识别按键的方法有两种:
一是行扫描法,二是
线反转法。
用线反转法。
这里就将一下线反转法的原理:
如图4-9,
P1_0~P1_3为列线,P1_4~P1_7为行线。
(1)、先给列线送高电平
“1”,行线送低电平“0”;
若有按键按下,必有一根列线和行线
导通且为低电平“0”,故可确定这根列线;
(2)、先给行线送高
电平“1”,列线送低电平“0”;
若有按键按下,必有一根列线和
行线导通且为低电平“0”,故可确定这根列线;
(3)、根据确定
的列线与行线,即可确定按键的位置。
z关于键盘的抖动问题的分析和解决:
通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,电压信号小型如下图。
由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。
因而在闭合及断开的瞬间均伴随有一连串的抖动,如下图。
抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。
这是一个很重要的时间参数,在很多场合都要用到。
按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。
键抖动会引起一次按键被误读多次。
为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。
在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。
按键的抖动,可用硬件或软件两种方法。
<
1>
硬件消抖:
在键数较少时可用硬件方法消除键抖动。
下图所示的RS触发器为常用的硬件去抖。
图中两个“与非”门构成一个RS触发器。
当按键未按下时,输出为1;
当键按下时,输出为0。
此时即使用按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),中要按键不返回原始状态A,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形。
也就是说,即使B点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。
这一点通过分析RS触发器的工作过程很容易得到验证。
2>
软件消抖:
如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,产生5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。
当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。
四位共阳数码管
本次课程设计我们所用到的数码管是共阳的数码管。
数码管结构
数码管由8个发光二极管(以下简称字段)构成,通过不同的组合可用来显示数字0~9,字符A~F、H、L、P、R、U、Y等符号及小数点“.”。
数码管工作原理
共阳极数码管中8个发光二极管的阳极(二极管正端)连接一起,即为共阳极接法,简称共阳数码管。
通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。
当某段驱动电路的输入端为低电平时,该端所连接的字段导通并点亮。
根据发光字段的不同组合可显示出各种数字或字符。
此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。
数码管的显示方式按驱动方式可分成静态显示方式和动态显示方式两种。
对于多位数码管,通常都是采用动态扫描的方法进行显示。
在动态方式中,逐个循环地点亮各位数码管。
这样虽然在任意时刻只有一位数码管被点亮,但是由于人眼具有视觉残留效应和眼睛的余辉,看起来便是全部数码管持续点亮的效果。
单片机通过一分8位的二进制电平信号显示出想要显示的数字或者字母。
例如,点亮二极管b,c,数码管就会显示1,点亮a,b,c,d,e,f,g数码管就会显示数字0.所以,数码管的显示需要有8根连线。
同理,要使用四位八段数码管,只要控制相应的位选和段选就可以自由的显示相应的数字。
一位随机存储器
其原理图如下:
这次设计中的一位随机存储器由NPN三极管9013,电阻和LED搭建而成,LED的亮灭用以显示出数据的存入是1还是0。
理论上,由于电路的对称性,使得LED的亮灭具有随机性,左边的LED亮还是右边的LED亮事先无法预知,但是实际中由于不能做到元件的绝对对称,并且导线的长度也不能绝对相等,所以随机性并不是很好。
存入数据的时候可以用一个按键开关控制,也可以直接用一根连接到了地端或者是正5V电源的导线用接触的方式进行控制。
本次设计的一位全加器能实现加、减、补;
与、异或、非、或等七个功能,其结果用LED的亮灭体现出来。
电路是由具有4与非门的74LS00集成芯片搭建而成,74LS00的内部逻辑如下图所示:
我们可以按照以下的与非逻辑电路结合74LS00的内部逻辑搭建我们所需要的全加器
由于是采用万用板搭建的,而这个电路所涉及到的与非门又比较多,所以在焊接之前,应该先布好局,防止在焊接的过程中将线焊错。
另外要注意将每个芯片的电源端和地端都连接好,以保证芯片正常工作。
复位电路的设计
复位电路主要有三种形式:
上电复位,手动复位,软件控制自
动复位。
本设计中硬件采用了上电复位和手动复位,便于在需要复
位时采取手动复位。
在上电瞬间对电容充电,然后电容缓慢放电,
让RST端保持在高电平(>
3.5v)的时间大于10MS则可实现复位。
其复位电路如图所示。
振荡电路设计
设计方案:
在AT89S51芯片内部有一个高增益反相放大器,其输入端芯片引脚XTAL1,其输出端为引脚XTAL2,只需要在XTAL1和XTAL2引脚之间跨接晶体振荡器和微调电容,形成反馈电路,振荡器即可工作。
基本设计原理图如下图
5.1软件部分:
软件设计有两种方法:
一种是自上而下,逐步细化;
另一种是自
下而上,先设计出每一个具体的模块(子程序),然后再慢慢扩大,
最后组成一个系统。
两种方法各有优缺点。
对于初学者来说,而自下
而上的方法是一种较为合适的方法,每设计并测试好一个模块,就能
看到实际的效果,而主程序采用自上而下的方法,将它分成若干个功
能相对独立的较小的程序模块。
然后再采用自下而上的方法,设计一
个模块,调试一个模块,加入主程序调试;
再进行下一个模块设计和
调试。
所以在这一步骤就是设计主程序的框架。
根据问题的定义,确定算法,并绘制程序框图。
注意必须确保程序框图的正确性。
编写程序
在确保程序框图的正确性的前提下,才能开始编写程序。
在编程
时必须注意以下几点:
①一定要严格根据框图编程。
②一定要写注释。
③通过编译后,只表明语法没错,并不表明逻辑正确,一定要用
同的数据对模块进行测试。
完全符合预定结果,方可确认通过。
④将该模块加到主控模块进行测试,如果与预定结果不符,必须
找原因,进行修改、调试。
⑤必须注意随时保存调试通过的副本。
以便当新程序出现故障时,随时可返回前面的正确点重新开始
键盘程序
ORG0000H
MOVP0,#0FFH
MOVP2,#00H
MAI:
MOVP1,#00000111B;
MOVA,P1;
00000110B
CJNEA,#07H,REL
AJMPMAI
REL:
MOVP1,#00111000B
MOVR6,A;
00000110B
00110000B
ADDA,R6;
00110110B36
KK1:
CJNEA,#1EH,KK2;
开始扫描键盘
ACALLK1
KK2:
CJNEA,#1DH,KK3
ACALLK2
KK3:
CJNEA,#1BH,KK4
ACALLK3
KK4:
CJNEA,#2EH,KK5
ACALLK4
KK5:
CJNEA,#2DH,KK6
ACALLK5
KK6:
CJNEA,#2BH,KK7
ACALLK6
KK7:
CJNEA,#36H,KK8
ACALLK7
KK8:
CJNEA,#35H,KK9
ACALLK8
KK9:
CJNEA,#33H,MAI
ACALLK9
K1:
MOVP0,#01H
MOVP2,#10H
RET
K2:
MOVP0,#02H
K3:
MOVP0,#03H
K4:
MOVP0,#04H
K5:
MOVP0,#05H
K6:
MOVP0,#06H
MOVP2,#20H
K7:
MOVP0,#07H
K8:
MOVP0,#08H
K9:
MOVP0,#09H
MOVP2,#40H
RET
End
程序指示
ORG0000H;
伪指令入口地址
CPLP2.0;
MOVR0,#5;
BBB:
MOVR1,#100;
AAA:
MOVR2,#100;
DJNZR2,$;
DJNZR1,AAA;
DJNZR0,BBB;
AJMPMAI;
END;
发
MOVP0,#11H
MOVP2,#88H
ACALLYS1
MOVSCON,#50H;
串行口方式1(8位,无校验),允许接收
MOVPCON,#0;
取SMOD=01/2分频
MOVTMOD,#20H;
计数器T1模式2,自动重装8位计数器
MOVTH1,#0D0H;
波特率600,fosc=11.0592MHz,则T1计数初值为D0
MOVTL1,#0D0H;
SETBTR1;
启动T1(TCON
MOVA,#0FFH;
数据准备
MOVSBUF,A;
发射
JNBTI,$;
等待发射完
MOVP2,A
CLRTI;
清零允许发射
AJMP$
;
JNBRI,$ ;
等待接收完
CLRRI