扩展8个输出端口设计方案_第1页
扩展8个输出端口设计方案_第2页
扩展8个输出端口设计方案_第3页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、扩展8个输出端口设计万案1. 设计背景MCS-51系列单片机有4个并行口(P0, P1, P2, P3口),但对一个稍微复杂的应 用系统来说,真正可供用户使用的并行口数量是有限的,况且常常因扩展I2C和SPI 的器件需占用某些并行口,这就迫使我们不得不扩展并行口以满足实际的需要。在 RXD和TXD没被使用的情况下,可以利用 RXD和TXD端口和移位寄存器74LS164将 串行口扩展为多组八位的并行输出口,这样就可以用本来闲置不用的端口进行并行 口的扩展,能充分利用单片机有限的I/O资源,并扩展了并行口的数量。单片机的应用越来来越广泛,上述扩展并行口只是为了单片机更复杂的应用, 作为将来的相关技

2、术人员,应该时刻关注单片机的的发展现状和未来的发展趋势, 首先先将动手能力和理论知识的结合起来,锻炼动手能力,扎实掌握基础知识,为 将来更深入学习和工作做准备。2. 设计方案2.1原理图设计方案1. 方案比较与选择AT89C52单片机有4个并行口,当部并行口不够用时可以外扩并行口芯片。可扩展 的的并行口芯片很多,分成两类:不可编程的并行口芯片(74LS64)和可编程并行接口 芯片(8255)。将用不可编程的并行口芯片74LS64扩展作为方案一,将用可编程并行接 口芯片8255扩展作为方案二。2. 系统框图根据课程设计要求,作为控制模块的 AT89C52单片机要工作需要最小系统,而最小 系统由晶

3、振电路部分、复位电路部分和电源模块组成,由于要扩展八位并行输出口必定 有扩展部分,作为扩展成功的标志输出显示部分势必不可少的,故系统框图如图2.1 图2.1系统框图晶振电路主控模块AT输扩出展|"L 1 m 显部示分部分3. 元器件简介对AT89C52进行和74LS164进行简介。4. 根据设计要求,依据系统框图用 Proteus画原理图。下面先对Proteus 进行一下简介:Proteus的ISIS 是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。按下列步骤进行原理图的绘制:(1)新

4、建文件DSN文件;在元件库中搜索所需的元件,按下列顺序进行绘制a. 完成AT89C52最小系统;b. 经移位寄存器芯片74IS164扩展出8个输出口;c. 接八只LED输出显示;d. 由桥堆2w10 7805完成电源电路。放在DSN文件里,按要求接线后保存。2.2程序设计方案1. 设计程序流程图根据课题要求,进行分析:(1)单片机工作在串行口方式0则需要对 SCON设置,SM0,SM1必须置0; (2)串行口中断,需要对RI,TI清零;(3)要使LED按不同的顺 序依次亮,贝嚅要通过串行口向外依次输出不同的数据;(4)由晶振为11.0592MHZ频率过高,需要编写延时程序,每次对串行口输出数据

5、后调用,才能够看清设计的结果是 否满足课题要求;(5)在程序设计中,需要对程序进行仿真,则要求对仿真软件能很好 的把握。软件设计时,我提出了两种不同的思路:一、对数据输出时,顺序依次编写出输出 程序,编写程序时,要多次重复写出送数据到SBUF调用、延时等程序,在此过程中,需要占用大量的存储空间,且反复书写,冗长单调。二、利用查表法对数据进行输出, 把将要输出的数据放在一个TAB表中,依次排列,调用时,让地址依次增加,取得的数 据送入SBUF中,这样做,程序简单明了,占用的存储空间比较小。对此,仅列出第二种思路的流程图。如图 2.2 :图2.2程序流程图2.依据程序流程图用Keil软件设计应用程

6、序,并利用Keil和Proteus级联来验证编写的程序是否符合设计要求。3. 方案实施3.1原理图设计方案1.方案比较与选择方案一:由AT89C52的串行口 RXD输出信息由74ls64的管脚1, 2,由TXD输出的脉冲信号与74LS164的CLOCK脚相连控制74LS164的输出锁存与变换,将转化成并行 数据输出到led上显示。如图3.1所示PEIJlACClFQ.1MD1F3口* 口 FgjftIO 阿礙” nADS KTLi PUJ嶼叶APFr-jaF-吕 pFZAtl 堆:TMH FZ.C FZSTA13rzymisF3HRX&F31凹P3ST1FlJfiWIP3J/WID12

7、普F-iFI LEW*2n> G"r图3.1用74ls164扩展并行输出口方案二:用P0 口作为8255的输入信号,用P2.5和P2.6控制A0和A1作为工作方 式控制信号,P2.7作为片选信号,RD与 WR和单片机的RD与 WR相连,硬件电路连好后, 要想使8255工作还需要对8255进行初始化,显然编程比较麻烦,但是 8255扩展的并 行输出口个数可由工作方式选择,这是其优点。如图 3.2所示PDOBQ FDLIfflBIFD2AE F 口 3*3 PEL*执 M PDkUR PDLSMhS PDJ/AIWFZIFA2pz.irsFZQ P Z3AH PX4/A12F苗2

8、PMfAHPZ.7fASP3Hi> P寸托 阳 Kinin 旧m暫 口屮口 pssm pj.sOTW Fl.T/HW壬3=13«3333工Z7nr nffl.ADAlRESET霜p _p F p p p pP BQPB£rasp时penPC1PC2PC3FC*PCSPCPCT;E逹-fISTf一HlTTMnwa仏1SF一 "TJT71TF图3.2 用8255扩展并行输出口本设计中若要用8255将P0 口扩展成一个或几个8位并行口,在其中一个八位口上接入8个发光二极管做为输出,即可满足要求;若要用74LS164虽然一片只能扩展八个并行输出口,但也可以用多片74

9、LS16 4并联来弥补扩展口输出数量的不足,即使扩展三 个八位的并行输出口,如图3.3所示也只需要AT 89C52的五个管脚,在并行输出口紧缺的情况时是可取的,另外74LS164为非可编程并行口输出芯片,不需要进行初始化, 软件编程比较简单,但是以增加电路复杂度为代价的因此选择方案二。ra.tfAOi- IFajffADS M3厲 rajfACffpinsa 任仲sP22VA1P2At1P2.4JA12PZSVAC 帕缺H PZJ/AtSrsxrnxt Fj.n? rjiTirm riJHOTF3.4TKI pajmPltfUK PJJJ/ffTz* 3- 36 zr-151i HT S图3.

10、3 用74ls164扩展3组并行口2. 元器件简介:AT89C52AT89C5是一个低功耗,高性能8位单片机,片含8KB的可反复擦写1000次的Flash 只读程序存储器,器件采用 ATMEL公司的高密度、非易失性存储技术制造,兼容标准 MCS-5指令系统,芯片集成了通用 8位中央处理器和Flash存储单元,功能强大的AT89C5可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89C5有 40个引脚,32个外部双向输入/输出(I/O )端口,同时含2个外中断口,3个16位可编程定时计数器,2 个全双工串行通信口, 2个读写口线,AT89C5可以按照常规方法进行编程,但不可以在 线编程(S

11、系列的才支持在线编程)其将通用的微处理器和Flash存储器结合在一起,特 别是可反复擦写的 Flash存储器可有效地降低开发成本。表3.1P1 口引脚的第二功能P1.0T2(定时器/计数器T2的外部计数输入),时钟输出P1.1T2EX (定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5MOSI(在系统编程用)P1.6MISO(在系统编程用)P1.7SCK(在系统编程用)PD3P 7 -=cmm2?72 21113121110/ SJssppr負吹負爲 M=IA* 卫L>L4-L5.L&7fwEMEr>® 吕工 3二 * 红誰壬生丢AL:?工s1;:!:;

12、. nnTi; * d c rt ex: i r a 2匚 孑匚 =' i C LfOSf) P1-5C lMSCr =!占匸 CSCK: P1.7CRCTC IRXD1-P10C ITXD: U 1 匸 <INTD;- DE匚 <RTT; =c 3 匚 cnx)Pi<c :T-i : " 5 L .77H =-3 * 匚PT n: r XTPL 匚 xtli r m u图3.4 AT89C52引脚图表3.2 P3 口的第二功能P3.0RXD(串行输入)P3.1TXD (串行输出)P3.2INT0(外部中断0)P3.3P3.3 INT0(外部中断0)P3.4

13、T0 (定时器0外部输入)P3.5T1 (定时器1外部输入P3.6WR外部数据存储器写选通)P3.7RD外部数据存储器写选通)RST复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。ALE/PROG地址锁存控制信号(ALE是访问外部程序存储器时,锁存低8位地址 的输出脉冲;PSEN外部程序存储器选通信号(PSEN是外部程序存储器选通信号;EA/VPP访问外部程序存储器控制信号。为使能从 0000H到FFFFH勺外部程序存储器 读取指令,EA必须接GND为了执行部程序指令,EA应该接VCCXTAL1振荡器反相放大器和部时钟发生电路的输入端;XTAL2振荡器反相放大器的输出端。7

14、4LS164简介74LS164是一个串入并出的8位移位寄存器引出端符号:Q0-Q7 (3, 4, 5, 6, 10, 11, 12, 13)并行输出端;A,B( 1, 2)串行输入端;CLR(9)清除端,为0时,输出清零;CLK(8)时钟输入端;图3.5 74LS164引脚图串行输入带锁存,串行输入带缓冲;最咼时钟频率可咼达36Mhz当清除(CLEAR为低电平时,输出端(QA-Q均为低电平。输入端A,B为可控数据端,当A、B任意一个为低电平则禁止新数据的输入,在时 钟端(CLOCK脉冲上升沿作用Q0为低电平。当A、B一个为高电平,则另一个就允许 输入数据,并在CLOC上升沿作用下决定Q0的状态

15、。表3.3 74IS164 真值表INPUTSOUTPUTSCLEARCLOCKABQaQbQhLXXXLLLHLXX1qaoQboqH0HtHHHQaoQGnHALXLH十XLLAnQG nL 低电平H -高电平X任意电平3. 确定选取方案一之后选取AT89S52晶振11.0592MHZ 电容、LED指示灯、 74LS164桥堆2W10 7805、40脚IC插座、万能板、电阻、按键等器件。4. 设计原理图:(1) 时钟电路晶振全称是晶体震荡器,晶振的作用是为系统提供基本的时钟信号,相当于单片机的心脏,本设计用11.0592MHZ的晶振和两个33uf电容完成时钟电路,如图3.6图3.6时钟电路

16、(2)复位电路复位是单片机的初始化操作,只需给 MCS-51的复位引脚RST加上大于两个机器周 期的高电平,就可使MCS-51复位。复位电路主要有两种:1.上电自动复位2.按键复 位。在设计中,采用按键、两个680欧姆电阻、1000uf电容的按键复位,电路如图3.7图3.7复位电路(3)电源模块日常用到的都是220V的交流电源,所以需要用变压器、桥堆 2w10转换成线路中所用到的直流电源。此转换后的直流电源为 +12V,而线路中的芯片工作所需电压是+5V,因此还需要12V到5V的转换电路,此转换采用7805、电容完成,并接电源开关和 LED电D18LED源指示灯,如图3.8。(4)主控部分主控

17、部分由AT89C52单片机充当,串行输出端口 P3.0有SBUF缓冲器,单片机将数 据写入SBUF,然后输出,P3.0有输出的同时P3.1会有脉冲信号,这是由单片机的部电 路决定的。(5)扩展部分AT89C52串行口 P3.0接移位寄存器芯片 74LS164输入端口( 1,2 )P3.1 口给74LS164 提供脉冲信号扩展出8位并行输出口,连线如图3.9图3.9 74IS164扩展并行输出口(6) 显示模块74IS164输出口经电阻接八只共阴极 LED当74LS164输出引脚有高电平输出时LED亮,低电平时不亮,作为实现功能的输出显示,如图3.11。3.2程序设计方案的实施用Keil设计应用

18、程序:KeilC51 是美国Keil Software 公司出品的51系列兼容单片机程序语言软件开发系统 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,编码效率高。按下列步骤使用Keil进行编程:(1)Project/New u Vision Project/输入工程名liubing 点击保存,选择单片机型号为 Atmel/AT89C52,点击 0K;( 2)File/New 新建完之后再按 File/Save 输入 liubing.asm 保存,然后按下列步骤将 liubing.Asm 添加到 liubing 工程里,右键点击 Source Grou

19、p 1/Add File to Group Source Group 1 '/liubing.Asm/Add ;(3)在asm文件里用汇编语言编写下列程序org 100h ;程序起始地址mov sbuf,#0; 将SBUF初始化为零clr p3.0; 将P3.0初始化start:mov r7,#0ch; 令 r7=12mov dptr,#tab; 查表mov r0,#00h;令 r0=0mov scon,#00h; 设置串行口为方式 0send:mov a,r0movc a,a+dptr; 从表头开始查表mov sbuf,a; 将查表所得值移入串行口缓存器wait:jnb ti,wai

20、t; 当串口传数据时一直等待clr ti; 当串口传完数据后将发送标志位清零lcall delay; 调用延时子程序inc r0;r0 自加一djnz r7,send ;循环 12 次查表,在 led 上输出ajmp start; 循环十二次之后,重新开始执行delay: mov r4,#20; 令 r4=20del0:mov r6,#255; 令 r6=255del1:mov r5,#255; 令 r5=255del2:djnz r5,del2;del2 循环 255 次djnz r6,del1;del1 循环 255 次djnz r4,del0ret;del1 循环 20 次tab:db

21、3ch,78h,3ch,1eh;led 输出表 db 0fh,1eh,0f0h,78hdb 00h,0ffh,00h,0ffhend(4)执行,若有错误会提示出现错误处,对程序进行修改,直至程序正确之后,进行相关设置会生成HEX文件。(5)双击DSN文件里AT89C52选择Keil生成的hex文件,点击运行,对程序和软件 进行调试。4. 结果与结论4.1 设计的结果经过我们小组同学的集体努力和指导老师的指导后完成了实物电路的焊接, 焊接完 之后又仔细检查电路的连接,由于没有变压器,用手机充电器直接当直流+5V电源,接在 7805的输出引脚上,接通电源之后电源指示灯和八个输出显示 LED闪亮一下

22、就一直不亮 了,后经检查电源开关接错,导致芯片没有电源,电源开关经修改后通电,但是接通电 源之后只有两个LED亮,然后直接用+5V电源经电阻后连在LED上,但仍然是原来的两 个LED亮,检查LED焊接正常之后,初步判断LED烧坏,用好的LED替换之后,接上电 源之后八个输出LED闪亮一下不亮了,断电之后重新接电源,仍然闪亮一下不亮了,再 次检查电路之后,没有发现问题,现在只能怀疑 AT89C52损坏,于是换了一片,烧进程 序后,使8个LED每4个为一组,亮灯从中间开始向左移动一次,再从中间开始向右移 动一次,接着从最右端向中间移动一次,再从最左端向中间移动一次,然后闪烁两次, 不断循环,实现了

23、所要求的功能。为什么芯片和 LED会损坏,现在怀疑刚开始的时候是 不是电源电压过高,用万用表测量电源电压大概为 +12V,而引线是从7805之后输出的, 所以芯片和LED才会烧坏,至此实现了课程设计所要现的任务,并明白了中间出现错误 的原因。4.2 设计的结论和心得体会通过这次单片机实习, 我们小组完成的实物电路板完全实现了任务书预期的要求。 在实习的过程中也遇到了很多麻烦:第一,编写程序时感到知识不熟练不能熟悉地写出 程序,而且没有编程的思想,经我们多方查阅资料,分析相关例子,并在一起研究探讨 以及和指导老师的指导矫正最终完成了程序;第二,在焊接过程中由于长时间没有进行 焊接而使焊接的结果不

24、是很美观,要焊接的芯片引脚太多太乱而感到无处下手,尤其是 74LS164不尽管脚多而且小;第三,由于第一次使用万能板焊接元器件排线比较乱;尽 管麻烦很多最终还是完成了电路板的焊接和调试,达到了预期要求。虽然设计的电路图不是太复杂也不是太实用,但是在这过程中遇到了很多问题,说 明自己的理论知识和动手能力欠缺,所以要加强理论知识的学习和增强动手实践的能 力。在实际电路中,电路的复杂度,制作所需的生产成本,对整个电路元器件的选择等 问题还值得我们进一步研究和探讨。5. 收获与致由于我们小组所做的课程设计比较简单,再把题目发下来的当天就把原理图和程序写完了,并且在PROTEU上仿真成功,然后就等着发元

25、件进行焊接,觉得实习报告是焊 接之后的事,所以也没有写,可是焊接和调试所用的时间太多,致使没有充足的时间写 实习报告,所以觉得应该好好安排实习的时间,毕竟学校安排两周的实习,是通过多年 的教学经验得来的。这段时间的实习,通过实习加深了对理论知识的理解,同时发觉自己理论知识的不 足,同时还深刻感受到了理论联系实际的重要性,通过实践可让理论知识更加系统化, 为今后的学习工作打下了基础。我相信这次实习会对我有积极的影响。在这里,首先我要感学校能给予我们这次设计机会以及给予我们莫大的物质支持;其次,我要感我的指导老师和我的同学对我的无私帮助;最后,我要感我们的小组同学,由于我们在实习过程中的通力合作,我们能非常愉快和顺利的完成设计。6. 参考文献1 杜尚丰.CAN总线测控技术及其应用.:电子工业,2007.12 杜树春.单片机C语言和汇编语言混合编程实例详解 .:航空航天大学,200

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论