单片机原理及接口技术课程设计报告跑马灯跑马灯方波交通灯_第1页
单片机原理及接口技术课程设计报告跑马灯跑马灯方波交通灯_第2页
单片机原理及接口技术课程设计报告跑马灯跑马灯方波交通灯_第3页
单片机原理及接口技术课程设计报告跑马灯跑马灯方波交通灯_第4页
单片机原理及接口技术课程设计报告跑马灯跑马灯方波交通灯_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、 单片机应用设计报告系别 电 子 信 息 与 电 气 工 程 系 专 业 自动化 班 级 09 级 (1) 班 姓名 老 师 完成 时间 2012年5月18日 单片机原理及接口技术课程设计报告摘 要: 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器cpu随机存储器ram、只读存储器rom、多种i/o口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、a/d转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。mcs-51单片机是使用极为广泛的一款8位单片机,在此次实训中所用的单片机是美国atmel公司生产的以8

2、031为内核的at89s52单片机。实训分别以构建单片机最小系统版、74hc138流水灯、8255交通灯、8253方波、6n137光耦控制继电器等几个实验关键词:at89s52 74hc138 8255a 8253 6n137 交通灯目录单片机原理及接口技术课程设计报告1实验一 构建单片机最小系统和实验环境熟悉21.1单片机的工作原理21.1.1单片机最小系统图21.1.2运算器简介31.1.3控制器简介41.1.4实验解析与总结6实验二跑马灯实验及74hc138译码器62.1实验内容62.1.1实验原理72.1.2实验原理图72.1.3实验程序流程图82.1.4实验程序代码82.1.5完成后

3、的效果图92.2实验总结9实验三 8255控制交通灯实验103.1实验内容103.1.3实验原理103.1.2实验原理电路图123.1.3程序流程图133.1.4实验程序代码133.1.5系统实现图153.2 8255a寻址原理153.3实验总结16实验四 8253方波实验174.1实验内容174.1.1实验原理图174.1.2实验原理电路图184.1.3程序流程图194.1.4程序流程代码194.1.4系统仿真214.2实验总结21实训总结22附录231仿真系统电路原理图232硬件实物照片24实验一 构建单片机最小系统和实验环境熟悉1.1单片机的工作原理1.1.1单片机最小系统图单片机最小系

4、统主要有外部晶振电路,系统复位电路以及供电电源组成。在构建单片机最小系统板是在vcc引脚出加上10uf和0.1uf的滤波电容,可以有效的提高系统工作的稳定性。单片机最小系统图1.1.2运算器简介运算器包括算术逻辑运算、累加器acc、单元alu、寄存器b、暂存器tmp、程序状态字寄存器psw、十进制调整电路等。它能实现数据的算术逻辑运算、位变量处理和数据传送操作。1. 算术逻辑单元alualu在控制器根据指令发出的内部信号控制下,对8位二进制数据进行加、减、乘、除运算和逻辑与、或、非、异或、清零等运算。它具有很强的判跳、转移、丰富的数据传送、提供存放中间结果以及常用数据寄存器的功能。mcs-51

5、中位处理具有位处理功能,特别适用于实时逻辑控制。2. 累加器acc累加器acc是8位寄存器,是最常用的专用寄存器,它既可存放操作数,又可存放运算的中间结果。mcs51系列单片机中许多指令的操作数来自累加器acc。累加器非常繁忙,在与外部存储器或i/o接口进行数据传送时,都要经过a来完成。4. 程序状态字psw程序状态字是8位寄存器,用于指示程序运行状态信息。其中有些位是根据程序执行结果由硬件自动设置的,而有些位可由用户通过指令方法设定。psw中各标志位名称及定义如下:位序d7d6d5d4d3d2d1d0位标志cyacf0rs1rs0ovpcy(psw.7):进(借)位标志位,也是位处理器的位累

6、加器c。在加减运算中,若操作结果的最高位有进位或有借位时,cy由硬件自动置1,否则清“0”。在位操作中,cy作为位累加器c使用,参于进行位传送、位与、位或等位操作。另外某些控制转移类指令也会影响cy位状态。ac(psw.6):辅助进(借)位标志位。在加减运算中,当操作结果的低四位向高四位进位或借位时此标志位由硬件自动置1,否则清“0”。f0(psw.5):用户标志位,由用户通过软件设定,决定程序的执行方式。rs1(psw.4),rs0(psw.3):寄存器组选择位。用于设定当前通用寄存器组的组,其对应关系如下:rs1rs0寄存器组r0r7地址00组00007h01组1080fh10组21017

7、h11组3181fhov(psw.2):溢出标志位。它反映运算结果是否溢出,溢出时ov=1;否则ov=0。ov可作为条件转移指令中的条件。psw.1:未定义位。p(psw.1):奇偶标志位。p=1,表示acc中1的个数为奇数;否则p=0。p也可以作为条件转移指令中的条件。1.1.3控制器简介控制器包括时钟电路、复位电路、指令寄存器、指令译码器程序计数器pc、堆栈指针sp、数据指针寄存器dptr以及信息传送控制部件等。时钟电路是计算机的心脏,他控制着计算机的工作节奏,cpu就是通过复杂的时序电路完成不同的指令功能,mcs-51的时钟信号可以有两种方式产生,一种是内部方式,利用芯片内部的振荡电路,

8、产生时钟信号;另一种是外部方式,时钟信号由外部引入,mcs-51单片机有hmos和chmos型,他们的时钟电路有一定区别,在实际使用时应该注意,下面是这两种时钟电路的电路图。 (a)内部时钟电路 (b)外部振荡源2. 复位电路对于使用12mhz的晶振的单片机,复位信号持续时间应超过4s才能完成复位操作。产生复位信号的电路有上电自动复位电路和按键手动复位电路两种方式。上电自动复位是通过外部复位电路的电容充电来实现的,该电路通过电容充电在rst引脚上加了一个高电平完成复位操作。上电自动复位电路如图(a)所示。按键手动复位电路。按键手动复位是通过按键实现人为的复位操作,按键手动复位电路如图(b)所示

9、。复位后内部暂存器的状态如下:pc0000htcon00hacc00htl000hpsw00hth000hsp07htl100hdptr0000hth100hp0p3ffhscon00hip××000000bsbuf不定ie0×000000bpcon0×××0000btmod00h1.1.4实验解析与总结本次实验的内容是熟悉单片机最小系统的组成和工作原理,熟悉keil c51集成环境软件的安装和使用方法。同时也是为接下来的几个实验打下基础,所以很好地完成第一个实验,有助于下面的几个实验顺利展开。该实验中,单片机系统电路的基本模块有:复

10、位电路,晶振电路,jtag下载口等主要模块。其中p0口作为输出使用必须对单片机的i/o口,因为p0为集电极开路,可以提高其功率和电平转换。在单片机最小系统的构建中,ea脚拉高是非常必要的,它可以影响单片机的正常工作。在检测单片机是否正常工作,可以通过检测晶振两端的信号的波形形状。在单片机正常工作条件下,其信号为正弦波。通过本次试验我了解了单片机的工作原理,知道了硬件部分的重要性,单片机最小系统板的焊接最主要是晶振部分的焊接,它为单片机提供了做工作的频率,是单片机的心脏。实验二跑马灯实验及74hc138译码器2.1实验内容跑马灯实验:1、熟悉集成环境软件或熟悉keil c51集成环境软件的安装和

11、使用方法。2、照接线图编写程序:使用p1口控制g6区的8个指示灯,循环点亮,瞬间只有一个灯亮。3、观察实验结果,验证程序是否正确。74hc138译码器实验:1、设计74hc138接口电路,编写程序:使用单片机的p1.0、p1.1、p1.2控制74hc138的数据输入端,通过译码产生8选1个选通信号,轮流点亮8个led指示灯。2、运行程序,验证译码的正确性。2.1.1实验原理根据74s138译码器的工作原理,当g1 g2a g2b口分别致高电平时,译码器工作,根据74ls138的3个译码信号a、b、c来选择y0、y1、y2、y3、y4、y5、y6作为输出,例如,abc为001时选择y0口,以此类

12、推,实现译码。各输出为低电平时,当共阳极的led灯节高电平时,就会使相应的灯亮。a、b、c三个信号由单片机的p1.0、p1.1和p1.2来提供,而p1.0、p1.1和p1.2口的值是通过程序设置初始值后,然后根据p1.0、p1.1和p1.2的值加1和循环就可以实现led灯的循环点亮。2.1.2实验原理图74hc138跑马灯电路原理图2.1.3实验程序流程图74hc138跑马灯实验程序流程图2.1.4实验程序代码void yimaqi()/译码器 uchar bb; uint m; cs2=0; bb=0x00; delayms(600); for(m=0;m<8;m+) p1=bb; d

13、elayms(600); bb+; 2.1.5完成后的效果图实验通过仿真后顺利通过,我们在电路板上成功完成了实验,下面是效果图。74hc138跑马灯系统效果图2.2实验总结通过本次试验使我们对跑马的电路有了清晰的认识,从概念上理解了如何用程序来控制跑马灯。程序仿真的正确只是第一步,要想真正的完成实验目的,还需要硬件电路成功实现功能才可以说明本次实验是成功的。通过下载器把程序烧到单片机里,进行硬件调试,在实际硬件电路中可以实现了。这使我认识到计算机仿真和实际硬件电路还是有差别。在仿真中只能调试程序,并不能达到实际效果。进过一次一次的修改,调试程序。最后成功的达到预期的效果。我对单片机的程序和控制

14、有更深的认识和理解。这次实验最大的收获,我熟悉了keil 和protues 软件的联合使用。学会单片机程序编写和调试。我理解了软件与硬件的关系,单片机可以通过软件作用到硬件把我们的思想表达出来。实验三 8255控制交通灯实验3.1实验内容1、设计8255接口电路,编写程序:使用8255的pa0.2、pa5.7控制led指示灯,实现交通灯功能。2、连接线路验证8255的功能,熟悉它的使用方法。3.1.3实验原理参考电路原理图:交通灯实验电路原理图特别指出的是本次实验中我们进行了拓展,在实验电路中加入了数码管模拟交通灯的倒计时,可以更好对实验内容进行诠释。根据指导书要求交通灯的变化规律是:先假定一

15、个十字路口为东南西北走向交通灯的初始状态为状态1,东西方向绿灯通车,南北方向红灯。经过一段时间转换状态2,东西方向黄灯闪烁一段时间,延时2s,南北方向仍然红灯。再转换到状态3,东西方向红灯通车,南北方向绿灯。过一段时间转换到状态4,南北方向黄灯闪烁一段时间,东西方向仍然红灯。最后循环至南北红灯,东西绿灯。3.1.2实验原理电路图8255控制交通灯实验原理图3.1.3程序流程图8255交通灯实验程序流程图3.1.4实验程序代码void jiaotongdeng() /交通灯 cs1=0; control1=0x80; porta=0xff; porta=0x00; /所有灯全亮 delayms(

16、2000); init_time2();/数码管显示定时初始化 delayms(1400); while(1) porta=0xde; /主干道红灯 支干道绿灯 delayms(6000); porta=0xee; /支干道 黄灯闪 delayms(500); porta=0xfe; delayms(500); porta=0xee; /支干道 黄灯闪 delayms(500); porta=0xfe; delayms(500); porta=0xee; /支干道 黄灯闪 delayms(500); porta=0xfe; delayms(500); porta=0xee; /支干道 黄灯闪

17、delayms(500); porta=0xfe; delayms(500); porta=0xf3; /主干道绿灯 支干道红灯 delayms(6000); porta=0xf5; /主干道 黄灯闪 delayms(500); porta=0xf7; delayms(500); porta=0xf5; /主干道 黄灯闪 delayms(500); porta=0xf7; delayms(500); porta=0xf5; /主干道 黄灯闪 delayms(500); porta=0xf7; delayms(500); porta=0xf5; /主干道 黄灯闪 delayms(500); po

18、rta=0xf7; delayms(500); 3.1.5系统实现图8255交通灯系统硬件图3.2 8255a寻址原理在本次试验中程序是用c语言写的8253驱动函数。使用c语言会给8255的寻址带来了一个难题,在这里是借助keil软件里的库函数absacc.h来进行寻址的。例如:#define com8255 xbyte0x060ff 后面若出现com8255,则单片机端口p0和p2联合输出0x060ff绝对物理地址(地址指向82c55指令寄存器)。p2.7p2.6p2.5p2.4p2.3p2.2p2.1p2.0p0.7p0.6p0.5p0.4p0.3p0.2p0.1p0.0a15a14a13

19、a12a11a10a9a8a7a6a5a4a3a2a1a0a0a100xxxxxxxxxxxxxx11xxxxxxxxxxxxxx表格的第四行表示8255的a1,a0口分别于单片机的p2.7,p2.6相连接,表格是五行是表示8255 pa口的实际物理地址,即0x3fff,表格的第六行表示8255控制字寄存地的实际物理地址。3.3实验总结本次实验的内容是利用8255芯片口控制led灯的变化,模拟交通灯。要学会使用8255芯片的初始化和编程方法。本实验使用的是8255的方式0。利用8255完成交通灯的四中状态切换。第一种状态是东西方向是绿灯,南北方向是红灯。第二种状态是东西方向是黄灯并且闪烁,南北

20、方向是红灯。第三种状态是东西方向是红灯,南北方向是绿灯。第四种状态是东西方向是红灯,南北方向是黄灯,最后变到第一种状态。在实现具体的硬件时,采用8255控制十二个led,三个一组,分成两组来模拟实际交通灯,其中的对面两组状态变化是相同一致的,所以将对面的对应相同颜色的灯用8255的一个口来控制。最后我们还加入了数码管,使得整个电路更加的完善,基本完成了实验规定的内容学到了很多的东西。实验四 8253方波实验4.1实验内容1、设计接口电路,编写程序:使用8253的计数器0和计数器1实现对输入时钟频率的两级分频,得到一个周期为1秒的方波,用此方波控制蜂鸣器,发出报警信号,也可以将输入脚接到逻辑笔上

21、来检验程序是否正确。2、连接线路,验证8253的功能,熟悉它的使用方法。4.1.1实验原理图方波实验原理图利用8253的通道0工作于方式3,方波发生器模式。利用单片机定时器延时1ms,是单片机p3.0口产生250hz的方波,作为8253的时钟。然后给8253装机数初值,所装初值为250,8253产生的频率为方波频率=时钟频率/计数初值然后利用8253产生的方波驱动npn三极管的通断,使得蜂鸣器以1hz的频率鸣叫,发光二极管以1hz的频率闪烁。对8253的寻址原理也是利用kiel软件中的4.1.2实验原理电路图8253方波实验原理电路图4.1.3程序流程图8253方波实验程序流程图4.1.4程序

22、流程代码void fangbo() cs3=0; init_time1(); control2=0x16; /写通道0控制字,只读低字节,方式3,bcd计数/写入控制字 0011 0111b 通道0 只读写低字节,方式3,bcd计数 port0=0x64; /写计数初值,ch0=20000/100; /2分频 control2=0x56; /写通道1控制字,只读低字节,方式3,bcd计数 0x77;/写入控制字0111 0111b 通道1 先读写低字节 后读写高字节,方式3,bcd计数 port1=0xc8; /写计数初值,ch1=200/1; while(1); void display(u

23、char temp) dis=0; p1=temp; void init_time1(void)/定时器初始化 tmod=0x02; /选择通道0,方式2 th0=231;/设置计数初始值,th0=256-25 tl0=231;/th0=tl0 et0=1;/通道0中断使能 tr0=1;/启动定时器0 ea=1;/开总中断 void init_time2(void)/定时器初始化 tmod=0x10; /定时器1,方式2 th1=(65536-45872)/256; tl1=(65536-45872)%256; ea=1; et1=1; tr1=1; void t0_time(void)interrupt 1 th0=231; / 183 重装初值 tl0=231; out=out; void t1_time(void)interrupt 3 th1=(65536-45872)/256; / 183 重装初值 tl1=(65536-45872)%256; num2+; if(num2=20) d-; if(d=-1)d=9; void delayms(uint xms)/延时子程序uint i,j;for(i=xms;i>0;i-) for(j=110;j>0;j-);4.1.4系统仿真8253方波实验系统仿真图4.2实验总结本实验是方波实验,使用8253

温馨提示

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

评论

0/150

提交评论