32花样流水灯的设计Word格式.docx
- 文档编号:19846391
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:71
- 大小:776.91KB
32花样流水灯的设计Word格式.docx
《32花样流水灯的设计Word格式.docx》由会员分享,可在线阅读,更多相关《32花样流水灯的设计Word格式.docx(71页珍藏版)》请在冰豆网上搜索。
MCS-51系列单片机内部采用模块式结构,其结构组成框图如图1所示。
图1MCS-51系列单片机组成框图
由图1可见,MCS-51系列单片机主要由以下部件通过片内总线连接而成:
中央处理器(CPU)、数据存储器(RAM)、程序存储器(ROM)、并行输入/输出口(P0口~P3口)、串行口、定时器/计数器、中断控制、总线控制及时钟电路。
2.2.2引脚定义
引脚是单片机和外界进行通信的通道连接点,用户只能通过引脚组建控制系统。
从应用的角度来看,引脚的应用是单片机应用的一个重要基础。
因此熟悉引脚是学习应用单片机的基础。
MCS-51系列单片机的引脚封装主要有:
PDIP40、PLCC44和PQFP/TQFP44。
不同封装的芯片其引脚的排列位置有所不同,但他们的功能和特性都相同。
方形封装(PLCC44和POFP/TQFP44)有44引脚,其中4个NC为空引脚。
采用40引脚PDIP封装的80C51单片机的引脚排列及逻辑符号如图2所示。
由于工艺及标准化等原因,芯片的引脚数量是有限的,但单片机为实现控制所需要的信号数目却远远超过其引脚数目。
为解决这一矛盾,单片机的某些信号引脚被赋以双重功能。
1)电源及电源复位引脚:
(1)VCC(40脚):
正常操作时接+5V直流电源。
(2)VSS(20脚):
接地端。
图240引脚PDIP封装的80C51单片机的引脚排列及逻辑符号图
(3)RST/VPD(9脚):
复位信号输入端。
在该引脚上输入一定时间(约两个机器周期)的高电平将使单片机复位。
该引脚的第二功能是VPD,即备用电源输入端。
当主电源发生故障,降低到低电平规定值时,可将+5V备用电源自动接入VPD端,以保护片内RAM中的信息不丢失,使复电后能继续正常运行。
(4)
/VPP(31脚):
访问程序存储器控制信号/编程电源输入。
当
保持高电平时,访问内部程序存储器,访问地址范围在0~4KB内;
当PC(程序计数器)值超过0FFFH,即访问地址超出4KB时,将自动转向执行外部程序存储器内的程序;
保持低电平时,不管单片机内部是否有程序存储器,则只访问外部程序存储器(从0000H地址开始)。
由此可见,对片内有可用程序存储器的单片机而言,
端应接高电平,而对片内无程序存储器的单片机,可将
接地。
对于EPROM型单片机,在EPROM编程期间,此引脚用于施加21V的编程电源(VPP)。
2)时钟振荡电路引脚XTAL1和XTAL2:
(1)XTAL1(19脚):
外接石英晶体和微调电容引脚1。
它是片内振荡电路反向放大器的输入端。
采用外部振荡器时此引脚接地。
(2)XTAL2(18脚):
外接石英晶体和微调电容引脚2。
它是片内振荡电路反向放大器的输出端。
采用外部振荡器时此引脚为外部振荡信号输入端。
3)
(30脚):
低8位地址锁存控制信号/编程脉冲输入。
在系统扩展时,ALE用于把P0口输出的低8位地址锁存起来,以实现低8位地址和数据的隔离。
在访问外部程序存储器期间,ALE信号两次有效;
而在访问外部数据存储器期间,ALE信号一次有效。
对于EPROM型单片机,在EPROM编程期间,此引脚用于输入编程脉冲
。
4)
(29脚):
外部程序存储器的读选通信号输出端,低电平有效。
在从外部程序存储器取指令(或常数)期间,此引脚定时输出负脉冲作为读取外部程序存储器的信号,每个机器周期
两次有效,此时地址总线上送出的地址为外部程序存储器地址;
在此期间,如果访问外部数据存储器和内部程序存储器,不会产生
信号。
5)并行双向输入/输出(I/O)口引脚:
(1)P0口的P0.0~P0.7引脚(39~32脚):
8位通用输入/输出端口和片外8位数据/低8位地址复用总线端口。
(2)P1口的P1.0~P1.7引脚(1~8脚):
8位通用输入/输出端口。
(3)P2口的P2.0~P2.7引脚(28~21脚):
8位通用输入/输出端口和片外高8位地址总线端口。
(4)P3口的P3.0~P3.7引脚(10~17脚):
8位通用输入/输出端口,具有第二功能。
2.2.3外部总线构成
所谓总线,就是连接单片机与各外部器件的一组公共的信号线。
当系统要求扩展时,单片机要与一定数量的外部器件和外围设备连接。
如果各部件及每一种外围设备都分别用各自的一组线路与CPU直接连接,那么连线将会错综复杂,甚至难以实现。
为了简化硬件电路的设计和系统结构,常用一组线路,并配以适当的接口电路来与各个外部器件和外围设备连接,这组共用的连接线路就是总线。
采用总线结构便于扩展外部器件和外围设备,而统一的总线标准则使不同设备间的互连更容易实现。
利用片外引脚可以构造MCS-51系列单片机的三总线结构。
单片机的引脚除了电源端VCC、接地端VSS、复位端RST、晶振接入端XTAL1和XTAL2、通用I/O口的P1.0~P1.7以外,其余的引脚都是为实现系统扩展而设置的。
用这些引脚构造的单片机系统的三总线结构如3所示。
图3MCS-51系列单片机片外三总线结构
1)地址总线(AddressBus,AB):
MCS-51系列单片机总共有16根地址线A15~A0,片外存储器可寻址范围达64KB(216=65536字节),由P2口直接提供高8位地址A15~A8,P0口经地址锁存器提供低8位地址A7~A0。
2)数据总线(DataBus,DB):
MCS-51系列单片机总共有8根数据线D7~D0,全由P0口提供。
由于P0口是分时复用总线,分时输送低8位地址(通过地址锁存器锁存)和高8位数据信息。
3)控制总线(ControlBus,CB):
控制总线由P3口的第二功能
(P3.6)、
(P3.7)和3根独立的控制线
、ALE、
组成。
2.3单片机时钟电路及时钟时序单位
1)时钟电路
单片机本身如同一个复杂的同步时序电路,为了保证同步工作,电路应在唯一的时钟信号控制下,严格地按规定时序工作。
而时钟电路就用于产生单片机工作所需要的时钟信号。
MCS-51单片机时钟电路示意图如图4所示。
图4MCS-51单片机时钟振荡电路示意图
在MCS-51芯片内部有一个高增益反相放大器,用于构成振荡器。
反相放大器的输入端为引脚XTAL1,输出端为引脚XTAL2,在芯片的外部通过这两个引脚跨接晶体振荡器和微调电容C1、C2形成反馈电路,可构成稳定的自激振荡器,振荡频率范围通常是1.2~12MHz。
晶体振荡频率高,则系统的时钟频率也高,单片机的运行速度也就快。
振荡电路产生的振荡脉冲并不直接使用,而是经分频后再为系统所用。
振荡脉冲在片内通过一个时钟发生电路二分频后才作为系统的时钟信号。
片内时钟发生电路实质上是一个二分频的触发器,其输入来自振荡器,输出为二相时钟信号,即状态时钟信号,其频率为fosc/2;
状态时钟三分频后为ALE信号,其频率为fosc/6;
状态时钟六分频后为机器周期,其频率为fosc/12。
在图4中,使用晶体振荡器时,C1、C2取值30±
10pF;
使用陶瓷振荡器时,C1、C2取值40±
10pF。
C1、C2的取值虽然没有严格的要求,但电容的大小影响振荡电路的稳定性和快速性,通常取值20~30pF。
在设计印制电路板时,晶振和电容等应尽可能靠近芯片,以减少分布电容,保证振荡器振荡的稳定性。
也可以由外部时钟电路向片内输入脉冲信号作为单片机的振荡脉冲。
这时外部脉冲信号是经XTAL1引脚引入的,而XTAL2引脚悬空或接地。
对外部信号的占空比没有要求,但高低电平持续的时间不应小于20ns。
这种方式常用于多块芯片同时工作,便于同步。
其外部脉冲接入方式如图5所示。
图5MCS-51单片机外部时钟输入接线图
所谓时序,是指在指令执行过程中,CPU的控制器所发出的一系列特定的控制信号在时间上的先后关系。
CPU发出的控制信号有两类:
一类是用于单片机内部的,用户不能直接接触此类信号,不必对它作过多了解;
另一类是通过控制总线送到片外的,人们通常以时序图的形式来表示相关信号的波形及出现的先后次序。
为了说明信号的时间关系,需要定义时序单位。
89C51的时序单位共有四个,从小到大依次是拍节、状态、机器周期和指令周期。
如图4所示。
2.4单片机的复位
2.4.1复位状态
复位是单片机的初始化操作,其主要功能是将程序计数器PC初始化为0000H,使单片机从0000H单元开始执行程序。
除了进入系统的正常初始化外,当程序运行出错或操作错误使系统处于死锁状态时,也须重新启动单片机,使其复位。
单片机复位后,除P3~P0的端口锁存器被设置成FFH、堆栈指针SP设置成07H和串行口的SBUF无确定值外,其它各专用寄存器包括程序计数器PC均被设置成00H。
片内RAM不受复位的影响,上电后RAM中的内容是随机的。
记住这些特殊功能寄存器的复位状态,对熟悉单片机操作,简短应用程序中的初始化部分是十分必要的。
2.4.2复位电路
单片机的复位操作有上电自动复位和手动按键复位两种方式。
上电自动复位操作要求接通电源后自动实现复位操作。
如图1.5-1所示。
图6(a)所示为最简单的复位电路。
上电瞬间由于电容C上无储能,其端电压近似为零,RST获得高电平,随着电容器C的充电,RST引脚上的高电平将逐渐下降,当RST引脚上的电压小于某一数值后,单片机就脱离复位状态,进入正常工作模式。
只要高电平能保持复位所需要的时间(约两个机器周期),单片机就能实现复位。
相比于图6(a),图6(b)所示的电路只是增加了外接二极管VD和电阻R。
其优越性在于停电后,二极管VD给电容C提供了快速放电通路,保证再上电时RST为高电平,从而保证单片机可靠复位。
正常工作时,二极管反偏,对电路没影响。
断电后,VCC逐渐下降,当VCC=0时,电容C通过VD迅速放电,恢复到无电量的初始状态,为下次上电复位做好准备。
(a)(b)
图6上电自动复位电路
手动按键复位要求在电源接通的条件下,用按钮开关操作使单片机复位,如图7所示。
其工作原理为:
复位键按下后,电容C通过R2放电,放电结束后,RST引脚的电位由R1和R2分压决定,由于R2<
<
R1,因此,RST引脚为高电平,单片机进入复位状态,松开按键后,电容充电,RST上的电位降低,经过一定的延时,单片机就脱离复位状态,进入正常工作模式。
R2的作用在于限流,避免按键按下的瞬间电容C放电产生火花,保护按键的触点。
图7手动按键复位电路
系统上电运行后,若需要复位,一般是通过手动复位来实现的。
通常采用手动复位和上电自动复位结合。
复位电路虽然简单,但其作用十分重要。
一个单片机系统能否正常运行,首先要检查是否能复位成功。
初步检查可用示波器探头监视RST引脚,按下复位键,观察是否有足够幅度的波形输出(瞬时的),还可以通过改变复位电路阻容值的方法进行检测。
3电路及程序设计
3.1电路原理图设计
按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。
AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,具有丰富的内部资源:
4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。
因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。
从原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;
相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;
同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。
因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。
在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。
设计原理图如图8所示:
图8流水灯硬件原理图
3.2电路程序设计
程序流程图如图9所示:
程序中LIGHT7为多种亮灯方式结合循环
延时子程序DELAY为0.5秒延时,延时子程序DELAY1为2秒延时
LIGHT1~LIGHT6亮灯方式程序中有标注
图9程序流程图
程序如下:
ORG0000H
AJMPMAIN;
系统上电,执行主程序
ORG0003H;
外部中断0入口
AJMPLOOP;
转移至中断服务程序
MAIN:
SETBEX0;
允许INT0中断
SETBIT0;
INT0中断选用电平触发
SETBEA;
CPU开中断
HALT:
SJMPHALT;
等待中断
LOOP:
;
判0转移到相应亮灯方式
SETBP3.2
JNBP3.0,LIGHT1
JNBP3.1,LIGHT2
JNBP3.3,LIGHT3
JNBP3.4,LIGHT4
JNBP3.5,LIGHT5
JNBP3.6,LIGHT6
JNBP3.7,LIGHT7
LIGHT1:
一个正流水(2秒延时)
SETBP3.0
MOVDPTR,#TAB1
MOVR0,#8
LIGHT11:
MOVXA,@DPTR
MOVP1,A
LCALLDELAY
INCDPTR
DJNZR0,LIGHT11
JNBP3.0,LOOP
SJMPLIGHT1
LIGHT2:
两个正流水(2秒延时)
SETBP3.1
MOVDPTR,#TAB2
MOVR0,#4
LIGHT22:
DJNZR0,LIGHT22
SJMPLIGHT2
LIGHT3:
隔一个正流水(2秒延时)
SETBP3.3
MOVDPTR,#TAB3
LIGHT33:
DJNZR0,LIGHT33
SJMPLIGHT3
LIGHT4:
隔两个正流水(0.5秒延时)
SETBP3.4
MOVDPTR,#TAB4
LIGHT44:
LCALLDELAY1
DJNZR0,LIGHT44
SJMPLIGHT4
LIGHT5:
隔一个倒流水(0.5秒延时)
SETBP3.5
MOVDPTR,#TAB5
LIGHT55:
DJNZR0,LIGHT55
SJMPLIGHT5
LIGHT6:
隔两个倒流水(0.5秒延时)
SETBP3.6
MOVDPTR,#TAB6
LIGHT66:
DJNZR0,LIGHT66
SJMPLIGHT6
LIGHT7:
多样式流水(2秒延时)
SETBP3.7
MOVDPTR,#TAB7
MOVR0,#74
LIGHT77:
DJNZR0,LIGHT77
SJMPLIGHT7
DELAY1:
MOVR3,#10//0.5秒的延时子程序
D1:
MOVR7,#200
D2:
MOVR6,#123
D3:
DJNZR6,D3
NOP
DJNZR7,D2
DJNZR3,D1
RET
DELAY:
MOVR2,#40//2秒的延时子程序
D4:
MOVR1,#200
D5:
MOVR4,#123
D6:
DJNZR4,D6
DJNZR1,D5
DJNZR2,D4
TAB1:
一个正流水
DB01H02H04H08H10H20H40H80H
TAB2:
两个正流水
DB03H0CH30H0C0H
TAB3:
隔一个正流水
DB01H04H10H40H
TAB4:
隔两个正流水
DB01H08H40H02H10H80H04H20H
TAB5:
隔一个倒流水
DB80H20H08H02H
TAB6:
隔两个倒流水
DB80H10H02H40H08H01H20H04H
TAB7:
多样式流水
DB0FFH;
全灭
DB0FEH0FDH0FBH0F7H0EFH0DFH0BFH07FH;
依次逐个点亮
DB0FEH0FCH0F8H0F0H0E0H0C0H080H000H;
依次逐个叠加
DB080H0C0H0E0H0F0H0F8H0FCH0FEH0FFH;
依次逐个递减
DB07EH0BDH0DBH0E7H0E7H0DBH0BDH07EH;
两边靠拢后分开
DB07EH03CH018H000H000H018H03CH07EH;
两边叠加后递减
DB000H;
全亮
END;
程序结束指令
总结
本次课程设计我的课题是花样流水灯的设计,开始的几个星期我针对这个课题的任务要求从图书馆、上网等渠道获取相关信息,查找相关的参考资料,然后设定了本课题的设计方案。
经过近多日的努力,终于将本次课程设计做完了,但由于水平有限,文中肯定有很多不恰当的地方,请老师指出其中的错误和不当之处,使我能做出改正,我会虚心接受。
在本次课程设计过程中,我增强了自己的动手能力和分析能力。
通过跟老师和同学的交流,也通过自己的努力,我按时完成了这次课程设计。
在此过程中,我学会了很多,也看到了很多自己的不足之处。
在以后的学习生活中,我会努力学习专业知识,完善自我,为将来的发展做好充分的准备。
总之,在这次课程设计中,我受益匪浅,学到了很多书本上所没有的东西,懂得了理论和实际联系的重要性。
在以后的学习中,我不仅要把理论知识掌握牢固,更要提高自己的动手能力和分析能力。
致谢
通过两周的努力,终于将单片机课程设计完成了。
本次毕业设计目的是让我们对所学的专业知识有更进一步的了解和巩固,让我们能灵活运用所学的专业知识。
在这次设计里我学到了很多,这对我来说是一种进步,每个人只要自己和自己比,每一次小的进步就是大的突破。
在这次设计中我还看的了同学的友爱,当遇到困难时只要他们知道的就会耐心地指导和帮助,在论文完成之际,我要特别感谢我的指导老师李老师的热情关怀和悉心指导。
每次当我有问题的时候去问李老师,她都能耐心的帮我指导,和我一起解决困难。
通过这次的课程设计,不仅使我学到了很多专业方面的知识,也让我明白了不畏困难、勇于攀登艰难的重要性,这对我未来的学习和生活产生很大的影响。
所以我觉得这次毕业设计既能增强我们的动手能力、思维能力、实践能力、还能增进友情。
这次毕业设计对我来说真可畏受益匪浅啊!
在此,再次感谢我的学校和李老师。
参考文献
[1]胡汉才.单片机原理与接口技术[M].北京:
清华大学出版社,1995.6.
[2]楼然苗等.51系列单片机设计实例[M].北京:
北京航空航天出版社,2003.3.
[3]何立民.单片机高级教程[M].北京:
北京航空航天大学出版社,2001.
[4]赵晓安.MCS-51单片机原理及应用[M].天津:
天津大学出版社,2001.3.
[5]肖洪兵.跟我学用单片机[M].北京:
北京航空航天大学出版社,2002.8.
[6]夏继强.单片机
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 32 花样 流水 设计