扩展8个输出端口设计 2.docx
- 文档编号:4176765
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:23
- 大小:254.87KB
扩展8个输出端口设计 2.docx
《扩展8个输出端口设计 2.docx》由会员分享,可在线阅读,更多相关《扩展8个输出端口设计 2.docx(23页珍藏版)》请在冰点文库上搜索。
扩展8个输出端口设计2
课程设计任务
设计题目
扩展8个输出端口设计
学生姓名
设计要求:
1.单片机串行口工作于方式0,使用移位寄存器芯片74LS164扩展出8个输出口,接八只LED输出显示。
具有电源开关及指示灯,有复位按键。
2.将串行口设置为工作方式0,接74LS164,扩展成8个输出端口,接8只LED。
3.使8个LED每4个为一组,亮灯从中间开始向左移动一次,再从中间开始向右移动一次,接着从最右端向中间移动一次,再从最左端向中间移动一次,然后闪烁两次,不断循环。
学生应完成的工作:
1.用Proteus完成扩展8个输出端口的原理图设计。
2.在Keil上用汇编语言完成扩展8个输出端口的实现程序。
3.将Proteus和Keil级联,进行仿真,修改硬件电路和程序,直至实现所要求的功能。
4.根据原理图完成实物焊接,将程序烧进单片机之后进行调试,直到达到设计要求。
5.完成课程设计说明书。
6.该学生主要做的工作是实物的焊接与调试。
参考文献阅读:
[1]余永权.ATMEL89系列单片机应用技术[M].北京航空航天大学出版社,2002.
[2]AT89C52Datasheet,ATMEL,2004.
[3]于永,戴佳,常江.51单片机实例精讲[M].北京:
电子工业出版社,2006.
[4]朱宇光.单片机应用新技术教程[M].西安:
电子工业出版社,2004.
[5]张毅刚,彭喜元,董继成.单片机原理及应用[M].高等教育出版社,2003.
[6]童诗白,华成英.模拟电子技术基础[M].高等教育出版社,2006.
工作计划:
6号——7号完成原理图设计;
8号——9号完成程序设计;
10号——11号电路仿真和调试;
13号——16号电路板的焊接和调试;
17号完成课程设计说明书。
任务下达日期:
2013年5月6日
任务完成日期:
2013年5月17日
指导教师(签名):
学生(签名):
扩展8个输出端口设计
摘要:
本设计利用AT89C52的单片机以及移位寄存器芯片74LS164实现扩展单片机8个输出端口的功能。
该设计包括电源模块,扩展模块,振荡模块,复位模块和显示模块。
电源电路利用桥堆2W10接变压器将交流电转化为直流电,经稳压集成电路7805稳压以及电容滤波后得到电压为+5V的直流电源,实现对芯片和电路的供电功能;而晶振和电容组成的振荡电路,对AT89S52提供工作频率;由电阻和按键组成一个按键电平复位电路实现对系统的复位;把编写的程序下载到单片机内实现对串行口扩展8个并行输出口的控制,显示模块使用的是74LS164移位寄存器实现对LED的低电平驱动控制显示,每个输出实现口接一只LED输出显示,实现LED能够按照设计的规律闪亮与熄灭。
关键词:
扩展输出口;AT89C52;移位寄存器芯片74LS164;桥堆2W10
目录
1.设计背景………………………………………………………………1
2.设计方案………………………………………………………………1
2.1原理图设计方案……………………………………………………1
2.2程序设计方案………………………………………………………3
3.方案实施………………………………………………………………5
3.1原理图设计方案的实施……………………………………………5
3.2程序设计方案的实施……………………………………………11
4.结果与结论……………………………………………………………12
4.1设计的结果………………………………………………………12
4.2设计的结论和心得体会…………………………………………12
5.收获与致谢……………………………………………………………13
6.参考文献………………………………………………………………13
7.附录…………………………………………………………………14
7.1附录一元器件清单………………………………………………14
7.2附录二电路仿真图………………………………………………15
7.3附录三程序及其注释…………………………………………16
7.4附录四实物图……………………………………………………18
1.设计背景
随着电子技术的发展,越来越多的电子产品都趋向于智能化,集成化,使得单片机的应用越来来越广泛,而扩展并行口只是为了单片机从基础到更高层侧次的应用。
为了更好的了解和开发单片机的功能我们应该时刻关注单片机的的发展现状和未来的发展趋势,把理论与实际结合起来充分发挥个人的创新思维,更好的利用单片机。
MCS-51系列单片机是单片机的基础,只有充分掌握了MCS-51的功能才能更有效率的去学习其他单片机。
MCS-51系列单片机有4个并行口(P0,P1,P2,P3口),但对一个稍微复杂的应用系统来说,四个并行口是远不能满足实际生产的需要的,这就迫使我们不得不扩展并行口以满足实际的需要。
在RXD和TXD端口没被使用的情况下,可以利用RXD和TXD端口和移位寄存器74LS164将4个八位并行口扩展为多组八位的并行输出口,这样就可以用本来闲置不用的端口进行并行口的扩展,能充分利用单片机有限的I/O资源,扩展了并行口的数量。
2.设计方案
2.1原理图设计方案
(1)方案比较与选择
AT89C52单片机有4个并行口,当内部并行口不够用时可以外扩并行口芯片。
而实现扩展端口的设计方案与很多种,下面简要介绍两种方案。
1.方案一
由AT89C52的串行口RXD输出信息由74LS164的管脚1,2,由TXD输出的脉冲信号与74LS164的CLOCK管脚相连控制74LS164的输出锁存与变换,将转化成并行数据输出到LED上显示。
首先根据要实现的LED灯的亮灭不同规律,编写八位二进制数,绘出数表,写入单片机。
单片机通过查表分别传出各个八位二进制数据,实现LED灯的亮闪功能。
然后要实现数表中数据的依次输出,每次查询数表中一个数据后,数据指针地址加一指向下一数据,便下一次查表读取数据,延迟一秒后,读取下一数据,直至数表中数据读取完毕。
最后设计循环体,实现数表的循环读取输出。
2.方案二
在LED灯闪灭控制的数据输出时,采用按照其要求结果依次编写输出程序。
不过在编写程序时,不免产生了多次重复的写入数据到SBUF、调用、延时等程序,占用了大量的存储空间,如此的反复书写,显得冗长单调硬件电路连好后,要想使8255工作还需要对8255进行初始化,显然编程比较麻烦,但是8255扩展的并行输出口个数可由工作方式选择,这是其优点。
74LS164为非可编程并行口输出芯片,不需要进行初始化,软件编程比较简单,但是以增加电路复杂度为代价的因此选择方案一。
(2)系统框图
根据课程设计要求,作为控制模块的AT89C52单片机算术运算功能强大,软件编程灵活,自由度大,可用程序实现各种算法和逻辑控制。
而单片机要工作需要的是最小系统,而最小系统由晶振电路部分、复位电路部分和电源模块组成,由于要扩展八位并行输出口,作为扩展成功的标志输出显示部分是由8个LED来实现的,特能够直观的看出所设计的电路是否符合要求,所以是必不可少的。
因此可得该电路系统框图如图2.1所示。
图2.1系统框图
(3)根据设计要求,依据系统框图用Proteus画原理图
Proteus软件具有其它EDA工具软件(例:
multisim)的功能。
这些功能是:
1.原理布图
2.PCB自动或人工布线
3.SPICE电路仿真
4.互动的电路仿真
用户甚至可以实时采用如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。
5.仿真处理器及其外围电路
可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。
还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。
配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。
下面用该软件进行电路的仿真。
按下列步骤进行原理图的绘制:
(1)新建文件DSN文件;
(2)在元件库中搜索所需的元件,按下列顺序进行绘制
a.完成AT89C52最小系统;
b.经移位寄存器芯片74ls164扩展出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)在程序设计中,需要对程序进行仿真,则要求对仿真软件能很好的把握。
软件设计时,我提出了两种不同的思路:
一、对数据输出时,顺序依次编写出输出程序,编写程序时,要多次重复的写出送数据到SBUF、调用、延时等程序,在这个过程中,需要占用大量的存储空间,且反复书写,冗长单调。
二、利用查表法对数据进行输出,把将要输出的数据放在一个TAB表列中,依次排列,在调用时,让地址依次增加,取得的数据送入SBUF中,这样做,程序简单明了,占用的存储空间比较小。
对此,仅列出第二种思路的流程图如图2.2所示。
图2.2程序流程图
2.依据程序流程图用Keil软件设计应用程序,并利用Keil和Proteus级联来验证所设计编写的程序是否符合设计要求。
3.方案实施
3.1硬件设计方案
1.AT89S52
AT89S52提供以下标准功能:
8K字节程序存储器,256字节内部RAM,32个并行I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工异步串行通信口,片内震荡器及时钟电路。
同时,AT89S52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式掉电模式和空闲模式。
空闲模式时停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但震荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。
AT89S52单片机与MCS-51兼容,它与MCS-51的功能基本相同。
AT89S52单片机适合于许多较为复杂控制应用场合,AT89S52的引脚图如图3.1所示。
图3.1AT89S52的引脚图
AT89S52的主要性能参数:
(1)与MCS-51产品指令和引脚完全兼容
(2)具有8K字节可重擦写Flash程序存储器
(3)1000次擦写周期
(4)全静态操作:
0Hz-24MHz
(5)三级加密程序存储器
(6)256×8字节内部RAM
(7)32个可编程I/O口线
(8)3个16位定时器/计数器
(9)8个中断源
(10)低功耗空闲和掉电方式
由于AT89S52的功能强大,是学习单片机的基础,对于初学者,要牢记各个管脚的功能及P1口和P3口的第二功能,特别是P3口的第二功能一定要牢记,它对于单片机的工作的作用十分的明显。
要熟记并理解其第二功能的含义,这样才能更有效率的用AT89S52,表3.1给出了P1口引脚的第二功能,表3.2是P3口的第二功能定义。
引脚
第二功能
P1.0
T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1
T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5
MOSI(在系统编程时,串行数据输入)
P1.6
MISO(在系统编程时,串行数据输出)
P1.7
SCK(移位脉冲输入)
表3.1P1口的第二功能定义
表3.2P3口的第二功能定义
引脚
第二功能
P3.0
RXD(串行数据输入)
P3.1
TXD(串行数据输出)
P3.2
INT0(外部中断0输入)
P3.3
INT0(外部中断1输入)
P3.4
T0(定时器0外部计数输入)
P3.5
T1(定时器1外部计数输入
P3.6
WR(外部数据存储器写选通输出)
P3.7
RD(外部数据存储器读选通输出)
RST:
复位输入。
在此引脚上,加上持续时间大于2个机器周期的高电平将使单片机复位。
单片机工作时,该引脚电平要小于等于0.5V。
ALE/PROG:
地址锁存控制信号(ALE)是访问外部程序存储器时或者是外部数据存储器时,锁存低8位地址到片外地址锁存器中。
PSEN:
外部程序存储器读选通信号。
EA/VPP:
访问外部程序存储器控制信号。
为使能从1000H到0FFFFH的外部程序存储器读取指令,EA引脚必须接低电平。
为了执行内部程序指令,EA引脚应该接高电平。
XTAL1:
片内振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
片内振荡器反相放大器的输出端。
2.74LS164简介
74LS164是一个串入并出的8位移位寄存器。
各个引出端符号的功能定义:
Q0—Q7(3,4,5,6,10,11,12,13)并行输出端;
A,B(1,2)串行数据输入端;
CLR(9)清除端,为0时,输出端(QA~QH)均为低电平,输出清零;
输入端A,B为可控数据端,当A、B任意一个为低电平则禁止新数据的输入,在时钟端(CLOCK)脉冲上升沿作用Q0为低电平。
当A、B一个为高电平,则另一个就允许输入数据,并在CLOCK上升沿作用下决定Q0的状态。
74LS164的引脚图如图3.2所示。
图3.274LS164的引脚图
AT89C52的串行口被设置在方式0时串行数据从RXD管脚输出,由74LS164的管脚1、2,由TXD输出的移位脉冲信号与74LS164的CLOCK管脚相连控制74LS164的输出锁存与变换,在移位脉冲的作用下,串行口发送缓冲器的数据逐位的从P3.0串行移入74LS164中,将转化成并行数据输出到LED上显示。
本设计中用74LS164虽然一片只能扩展八个并行输出口,但也可以用多片74LS164并联来弥补扩展口输出数量的不足,实现扩展多组八个输出端口。
74LS164为非可编程并行口输出芯片,所以不需要进行初始化,单片机的软件编程比较简单,但是以增加电路复杂度为代价的。
3.确定选取方案一之后选取合适的AT89S52、晶振11.0592MHZ、电容、LED指示灯、移位寄存器74LS164、桥堆2W10、7805、万能板、电阻、按键等器件。
4.设计原理图
(1)时钟电路模块
晶振全称是晶体振荡器,晶振的作用是为单片机系统提供其工作所需要的时钟信号,是整个系统的心脏,只有在晶振正常工作的情况下整个系统才能工作。
AT89C52单片机内部已经有一个用于构成振荡器的高增益反相放大器,它的输入端为芯片引脚XTAL1,输出端为引脚XTAL2,只需在这两引脚跨接晶振和微调电容,构成一个稳定的自激振荡器。
我们设计的时钟电路用11.0592MHZ的晶振和两个33uf电容并联设计成的时钟电路。
时钟振荡电路的电路图如图3.3所示。
图3.3时钟电路
(2)复位电路模块
复位是单片机的初始化操作,只需给AT89S52的复位引脚RST加上大于两个机器周期的高电平,就可以使AT89S52复位。
复位电路主要有两种:
上电自动复位,按键复位。
上电自动复位是通过外部复位电路给电容C充电加至RST引脚一个短的高电平信号,此信号随着Vcc对电容C的充电过程而逐渐回落,即RST引脚上的高电平持续时间取决于电容的充电时间。
因此要想保证可靠的复位,RST引脚上的高电平信号必须维持足够长的时间。
按键手动电平复位是通过RST端经电阻与电源Vcc接通来实现。
本次设计的时钟频率为12MHz,两个机器周期即为2us,为了实现两个机器周期的持续高电平,选择了极性电容与电阻串接,按键短路电容的方式组成复位电路。
在设计中,采用按键、两个1000欧姆电阻、100uf电容的按键复位,复位电路如图3.4所示。
图3.4复位电路
(3)电源模块
电源模块实现的是将220V的交流电转换成能供给单片机使用的+5V的直流电,所以用到的有变压器,桥堆2W10和稳压管7850,220V的交流电经变压器变为12V的交流电又流经桥堆变为9V的直流电,流经稳压管变为+5V的可供单片机使用的直流电,设计时还应该设计电源开关和LED电源指示灯,我设计的电源电路如图3.5所示。
图3.5电源电路
(4)主控模块
主控部分由AT89S52单片机充当,串行输出端口P3.0有SBUF缓冲器,单片机将数据写入SBUF,然后串行输出,P3.0有输出的同时P3.1会有移位脉冲信号,这是由单片机的内部电路决定的。
(5)扩展模块
AT89S52串行口P3.0接移位寄存器芯片74LS164输入端口(1,2)P3.1口给74LS164提供脉冲信号扩展出8位并行输出口,扩展模块电路图如图3.6所示。
图3.674LS164扩展并行输出口
(6)显示模块
74LS164输出口经300
电阻接八只共阴极LED,P0口与其他口相比驱动能力较大,可以驱动8个二极管,其他的只能驱动4个,而任何一个口想要获得较大的驱动能力,只能用低电平输出。
在单片机程序的驱动下,实现LED按照设计好的闪亮规律下的闪亮和熄灭,作为实现扩展输出功能的输出显示,显示模块电路如图3.7所示。
图3.7LED输出显示
3.2程序设计方案的实施
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机程序语言软件开发系统KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,编码效率高。
按下列步骤使用Keil进行编程:
(1)Project/NewuVisionProject/输入工程名gongcheng点击保存。
(2)File/New新建完之后再按File/Save输入gongcheng.asm保存,然后按下列步骤将gongcheng.Asm添加到gongcheng工程里,右键点击SourceGroup1/AddFiletoGroup‘SourceGroup1’/gongcheng.Asm/Add。
(3)在asm文件里用汇编语言编写程序。
(4)执行,若程序有错误会提示出现错误处,对错误处程序进行修改,直至程序正确之后,进行相关设置会生成HEX文件。
(5)双击DSN文件里AT89S52,选择Keil生成的hex文件,点击运行,对程序和软件进行调试。
4.结果与结论
4.1设计的结果
经过一天的插件焊接终于完成了电路的实物连接,由于没有变压器,用手机充电器直接当直流+5V电源,接在正极和负极,接通电源之后电源指示灯亮但是八个输出显示LED并不能按照事先设计的闪亮规律闪亮,后经检查原来在设计时74LS164的电源管脚忘记了接入高电平,导致芯片没有电源,在完成修改之后,接通电源之后只有一部分灯亮,而每一次接入电源闪亮的灯并不一样我们判断是晶振坏了而没有对单片机提供工作频率但是在换了一个晶振之后,还是只有一部分灯闪亮,每次接入电源点亮的灯都不同但并不是按设计的规律闪亮,用示波器检查各个芯片的工作电流均正常,重新查看了设计的程序并修改程序,再次下载到单片机内,断电之后重新接电源,仍然闪亮但没有规律,现在只能怀疑AT89C52损坏,于是换了一片新的,烧进程序后,仍旧出现上述问题,我们又利用示波器测量74LS164的工作波形,结果发现芯片也存在工作电波,但是这个波形是不是符合电路工作所需要的波形就不得而知,在老师的建议下我们又换了一片74LS164芯片,通电后看到8个LED每4个为一组,亮灯从中间开始向左移动一次,再从中间开始向右移动一次,接着从最右端向中间移动一次,再从最左端向中间移动一次,然后闪烁两次,不断循环,实现了所要求的功能。
为什么芯片会损坏,现在怀疑刚开始的时候可能是电源电压过高,或者是由于频繁的接断电源导致芯片损坏。
至此在郭汝静老师的耐心的指导下实现了课程设计所要求实现的任务,并明白了中间出现错误的原因。
4.2设计的结论和心得体会
这次单片机实习,我们小组四人完成了实物电路板的制作完全实现了任务书预期的要求。
在实习的过程中也遇到了很多麻烦:
第一,编程时一部分组员选择利用C语言编程,一部分选择利用汇编语言,最后经过讨论和参考老师的意见选择用汇编语言编写程序;第二,在进行电路图的设计和仿真方面由于第一次用到这些软件,很多功能在不断的摸索的过程中才发现,最后也实现了电路图的设计和仿真;第三,在焊接过程中由于要焊接的芯片引脚太多太乱而感到无处下手,尤其是74LS164不仅管脚多而且每一个管脚都用到了十分容易连接到一块,但是经过不懈的努力终于完成了任务;第四,由于第一次使用万能板焊接元器件排线比较乱。
尽管在制作的过程中遇到了很多麻烦但是经过大家共同努力和讨论,还是完成了实习之初的要求。
5.收获与致谢
6.参考文献
[1]余永权.ATMEL89系列单片机应用技术[M].北京航空航天大学出版社,2002.
[2]AT89C52Datasheet,ATMEL,2004.
[3]于永,戴佳,常江.51单片机实例精讲[M].北京:
电子工业出版社,2006.
[4]朱宇光.单片机应用新技术教程[M].西安:
电子工业出版社,2004.
[5]张毅刚,彭喜元,董继成.单片机原理及应用[M].高等教育出版社,2003.
[6]童诗白,华成英.模拟电子技术基础[M].高等教育出版社,2006.
[7]张大明,刘振鹏.单片微机控制应用技术实操指导书[M].机械工业出版社,2007.
[8]阎石,数字电子技术基础(第五版)[M].高等教育出版社,2005.
[9]邱关源,罗先觉.电路(第五版)[M].北京:
高等教育出版社,2006.
7.附录
7.1附录一
表7.1元器件清单
元器件名称
型号规格
数量
备注
52单片机
AT89S52
1
晶振
1
12M
发光二级管
LED
9
8红1绿
移位寄存器
74LS164
1
7805
7805
1
桥堆
2w10
1
底座
40脚
1
底座
14脚
1
电容
33pf
2
电容
104
2
极性电容
100uf
2
极性电容
10uf
1
拨动开关
Sw-spst
1
按键
Sw-pb
1
电阻
300
8
电阻
2k
1
电阻
1k
1
7.2附录二
电路仿真图
图7.1仿真电路图
7.3附录三
本设计用到的程序及其注释如下
org0000h;程序起始地址
ajmpSTART
START:
movscon,#00h;设置串行口为方式0
movsbuf,#00H;将SBUF初始化为零
clrp3.0;将P3.0初始化
movr1,#12h;令r1=12
movdptr,#tab;查表
movr0,#00h;令r0=0
REC:
mo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 扩展8个输出端口设计 扩展 输出 端口 设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)