自动化单片机课程设计_第1页
自动化单片机课程设计_第2页
自动化单片机课程设计_第3页
自动化单片机课程设计_第4页
自动化单片机课程设计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机课程设计报告单片机课程设计报告 专专 业业 0909 自动自动 化化 (2 2)班)班 姓姓 名名 周周 传传 剑剑 学学 号号 09050720040905072004 指导教师指导教师 储储 忠忠 完成时间完成时间 20122012 年年 3 3 月月 2020 目录 摘要摘要 : .3 实验一实验一 构建单片机最小系统和实验环境熟悉构建单片机最小系统和实验环境熟悉 .3 1.11.1 单片机的工作原理单片机的工作原理.3 1.1.1 运算器.3 1.1.2 控制器.4 1.1.3 单片机最小系统组成电路图.6 1.1.4 实验总结.7 实验二实验二 跑马灯实验及跑马灯实验及 74h

2、c138 译码器译码器 .8 2.12.1 实验内容实验内容.8 2.1.1 实验原理.8 2.1.2 实验原理图.8 2.1.3 实验程序流程图.9 2.1.4 实验程序代码.9 2.1.5 系统仿真.9 2.22.2 实验总结实验总结.10 实验三实验三 8255 控制交通灯实验控制交通灯实验 .11 3.13.1 实验内容实验内容.11 3.1.3 实验原理.11 3.1.2 实验原理电路图.11 3.1.3 实验程序流程图.12 3.1.4 实验程序代码.12 3.1.5 系统仿真.13 3.23.2 8255a8255a 寻址原理寻址原理.14 3.33.3 实验总结实验总结.15

3、实验四实验四 8253 方波实验方波实验 .16 4.14.1 实验内容实验内容.16 4.1.1 实验原理.16 4.1.2 实验原理电路图.16 4.1.3 程序流程图.17 4.1.4 程序流程代码.17 4.1.4 系统仿真.18 4.24.2 实验总结实验总结.18 附件:附件: .19 1 1、完整版电路仿真图、完整版电路仿真图.19 2 2、实物图、实物图.19 3 3、完整版程序代码、完整版程序代码.20 单片机课程设计报告 摘要: 本课程设计完成的是构建单片机最小系统和实验环境熟悉,跑马灯实验及 74hc138 译 码器,8255 控制交通灯实验,8253 方波实验。最小系统

4、包括晶振,复位等模块。138 的译 码实验,根据 138 的译码特性建立一个译码表。0 xf0,0 xf1,0 xf2,0 xf3,0 xf4,0 xf5,0 xf6,0 xf7; 用 p1 口给 74hc138 的 a、b、c 口赋值,在此过程中其实只用到了 p10,p11,p12。8255a 交通的实验选择 pa 口控制交通灯,核心思想就是延时时间的控 制。8253 方波实验采用的是 clk0 进行一次分频,输出方波,通过改变延时的时间可以改 表方波的频率。 关键词:关键词: 74hc138 8255a 8253 80c51 实验一实验一 构建单片机最小系统和实验环境熟悉构建单片机最小系统

5、和实验环境熟悉 1.11.1 单片机的工作原理单片机的工作原理 1.1.11.1.1 运算器运算器 运算器包括算术逻辑运算单元 alu、累加器 acc、寄存器 b、暂存器 tmp、程序状态字寄存器 psw、十进制调整电路等。它能实现数据的算术逻辑 运算、位变量处理和数据传送操作。 1.算术逻辑单元 alu alu 在控制器根据指令发出的内部信号控制下,对 8 位二进制数据进行加、 减、乘、除运算和逻辑与、或、非、异或、清零等运算。它具有很强的判跳、 转移、丰富的数据传送、提供存放中间结果以及常用数据寄存器的功能。mcs- 51 中位处理具有位处理功能,特别适用于实时逻辑控制。 2. 累加器 a

6、cc 累加器 acc 是 8 位寄存器,是最常用的专用寄存器,它既可存放操作数, 又可存放运算的中间结果。mcs51 系列单片机中许多指令的操作数来自累加 器 acc。累加器非常繁忙,在与外部存储器或 i/o 接口进行数据传送时,都要 经过 a 来完成。 3. 寄存器 b 寄存器 b 是 8 位寄存器,主要用于乘、除运算。乘法运算时,b 中存放乘 数,乘法操作后,高 8 位结果存于 b 寄存器中。除法运算时,b 中存放除数, 除法操作后,余数存于寄存器 b 中。寄存器 b 也可作为一般的寄存器用。 4. 程序状态字 psw 程序状态字是 8 位寄存器,用于指示程序运行状态信息。其中有些位是根

7、据程序执行结果由硬件自动设置的,而有些位可由用户通过指令方法设定。 psw 中各标志位名称及定义如下: 位序d7d6d5d4d3d2d1d0 位标志cyacf0rs1rs0ov p cy(psw.7):进(借)位标志位,也是位处理器的位累加器 c。在加减 运算中,若操作结果的最高位有进位或有借位时,cy 由硬件自动置 1,否则清 “0” 。在位操作中,cy 作为位累加器 c 使用,参于进行位传送、位与、位或 等位操作。另外某些控制转移类指令也会影响 cy 位状态(第三章讨论) 。 ac(psw.6):辅助进(借)位标志位。在加减运算中,当操作结果的低 四位向高四位进位或借位时此标志位由硬件自动

8、置 1,否则清“0” 。 f0(psw.5):用户标志位,由用户通过软件设定,决定程序的执行方式。 rs1(psw.4) ,rs0(psw.3):寄存器组选择位。用于设定当前通用寄存 器组的组,其对应关系如下: rs1rs0寄存器组r0r7 地址 00组 00007h 01组 1080fh 10组 21017h 11组 3181fh ov(psw.2):溢出标志位。它反映运算结果是否溢出,溢出时 ov=1; 否则 ov=0。ov 可作为条件转移指令中的条件。 psw.1:未定义位。 p(psw.1):奇偶标志位。p=1,表示 acc 中 1 的个数为奇数;否则 p=0。p 也可以作为条件转移指

9、令中的条件。 1.1.21.1.2 控制器控制器 控制器包括定时控制逻辑(时钟电路、复位电路) ,指令寄存器,指令译码 器程序计数器 pc,堆栈指针 sp,数据指针寄存器 dptr 以及信息传送控制部 件等。 1. 时钟电路 mcs51 系列单片机芯片内部有一个高增益反相放大器,输入端为 xtal1,输出端为 xtal2,一般在 xtal1 与 xtal2 之间接石英晶体振荡器 和微调电容,从而构成一个稳定的自激振荡器,就是单片机的内部时钟电路, 如图(a)所示。时钟电路产生的振荡脉冲经过二分频以后,才成为单片机的 时钟信号。电容 c1 和 c2 为微调电容,可起频率稳定、微调作用,一般取值在

10、 530pf 之间,常取 30pf。晶振的频率范围是 1.2mhz12mhz ,典型值取 6 mhz。xtal1 接地,xtal2 接外部震荡器,外接信号应是高电平持续时间大 于 20ns 的方波,且脉冲频率应低于 12 mhz。如图(b)所示。 (a)内部时钟电路 (b)外部振荡源 2. 复位电路 对于使用 12mhz 的晶振的单片机,复位信号持续时间应超过 4s 才能完 成复位操作。产生复位信号的电路有上电自动复位电路和按键手动复位电路两 种方式。上电自动复位是通过外部复位电路的电容充电来实现的,该电路通过 电容充电在 rst 引脚上加了一个高电平完成复位操作。上电自动复位电路如图 (a)

11、所示。按键手动复位电路。按键手动复位是通过按键实现人为的复位操作, 按键手动复位电路如图(b)所示。 复位后内部暂存器的状态如下: pc0000htcon00h acc00htl000h psw00hth000h sp07htl100h dptr0000hth100h p0p3ffhscon00h ip 000000b sbuf不定 ie 0000000b pcon 00000b tmod00h 3. 指令寄存器和指令译码器 指令寄存器中存放指令代码,cpu 执行指令时,由程序存储器中读取的指 令代码送入指令存储器,经译码器后由定时与控制电路发出相应的控制信号, 完成指令所指定的操作。 4.

12、程序计数器 pc pc 是一个 16 位计数器,其内容为单片机将要执行的指令机器码所在存储 单元的地址。pc 具有自动加 1 的功能,从而实现程序的顺序执行。由于 pc 不 可寻址的,因此用户无法对它直接进行读写操作,但可以通过转移、调用、返 回等指令改变其内容,以实现程序的转移。pc 的寻址范围为 64kb,即地址空 间为 00000ffffh。 5. 堆栈指针 sp sp 为 8 位寄存器,用于指示栈顶单元地址。所谓堆栈是一种数据结构,它 只允许在其一端进行数据删除和数据插入操作的线性表。数据写入堆栈叫入栈 (push) ,数据读出堆栈叫出栈(pop) 。堆栈的最大特点是“后进先出”的数

13、据操作原则。mcs-51 系统复位后,sp 初始化为 07h。 6. 数据指针 dptr 数据指针 dptr 为 16 位寄存器,它是 mcs51 中唯一的一个 16 位寄存 器。编程时,既可按 16 位寄存器使用,也可作为两个 8 位寄存器分开使用。 dph 为 dptr 的高八位寄存器,dpl 为 dptr 的低八位寄存器。dptr 通常 在访问外部数据存储器时作为地址指针使用,寻址范围为 64kb。 1.1.31.1.3 单片机最小系统组成电路图单片机最小系统组成电路图 单片机最小系统主要有外部晶振电路,系统复位电路以及供电电源组成。 在构建单片机最小系统板是在 vcc 引脚出加上 10

14、uf 和 0.1uf 的滤波电容,以 减小电源对系统工作的稳定性的影响,提高系统工作的稳定性。 单片机最小系统电路图 1.1.41.1.4 实验总结实验总结 该实验中,单片机系统电路的基本模块有:复位电路,晶振电路,jtag 下载口等主要模块。其中 p0 口作为输出使用必须对单片机的 i/o 口,因为 p0 为集电极开路,可以提高其功率和电平转换。在单片机最小系统的构建中,ea 脚拉高是非常必要的,它可以影响单片机的正常工作。在检测单片机是否正常 工作,可以通过检测晶振两端的信号的波形形状。在单片机正常工作条件下, 其信号为正弦波。通过本次试验我了解了单片机的工作原理,知道了硬件部分 的重要性

15、,单片机最小系统板的焊接最主要是晶振部分的焊接,它为单片机提 供了做工作的频率,是单片机的心脏。 实验二跑马灯实验及实验二跑马灯实验及 74hc13874hc138 译码器译码器 2.12.1 实验内容实验内容 1、熟悉集成环境软件或熟悉 keil c51 集成环境软件的安装和使用方法。 2、照接线图编写程序:使用 p1 口控制 g6 区的 8 个指示灯,循环点亮, 瞬间只有一个灯亮。 3、设计 74hc138 接口电路,编写程序:使用单片机的 p1.0、p1.1、p1.2 控制 74hc138 的数据输入端,通过译码产生 8 选 1 个选通信号,轮流点亮 8 个 led 指示灯。 2、运行程

16、序,验证译码的正确性。 2.1.12.1.1 实验原理实验原理 本次实验是根据 138 译码器的工作原理,当 g1g2ag2b=111 时,译码器 工作,根据 74ls138 的 3 个译码信号 a、b、c 来选择 y0、y1、y2、y3、y4、y5、y6 作为输出,各输出为低电平时,当共阳极的 led 灯节高电平时,就会使相应的灯亮。给单片机的端口赋初值,点亮第一个 led,然后延时一段时间后,点亮下一个 led,依次循环下去。采用思想,根 据 138 的译码特性建立一个译码表 uchar code table =0 xf0,0 xf1,0 xf2,0 xf3,0 xf4,0 xf5,0 x

17、f6,0 xf7;用 p1 口 74hc138 的 a、b、c 口赋 值,在此过程中其实只用到了 p10,p11,p12:; 2.1.22.1.2 实验原理图实验原理图 74hc138 跑马灯电路原理图 2.1.32.1.3 实验程序流程图实验程序流程图 74hc138 跑马灯实验程序流程图 2.1.42.1.4 实验程序代码实验程序代码 while(1) for(num=0;num0;i-)/黄灯闪烁三次 pa=0 x2e; delay(100); pa=0 x3e; delay(100); pa=0 x33;/东西红灯,南北绿灯 delay(5000); for(i=3;i0;i-)/黄灯

18、闪烁三次 pa=0 x35; delay(100); pa=0 x37; delay(100); 3.1.53.1.5 系统仿真系统仿真 pa0 pa1 pa2 pa5 clk0 pa3 pa5 pa3 pa1 pa0 pa2 pa0 pa2 pa1 pa3 pa4 pa5 pa4 pa4 out0 gate0 clk0 9 gate0 11 out0 10 clk1 15 gate1 14 out1 13 clk2 18 gate2 16 out2 17 pa0 4 pa1 3 pa2 2 pa3 1 pa4 40 pa5 39 pa6 38 pa7 37 d10 led-red d11 l

19、ed-red d12 led-red d13 led-red d14 led-green d15 led-green d16 led-green d17 led-green d18 led-yellow d19 led-yellow d20 led-yellow d21 led-yellow 8255 交通灯系统仿真图 3.23.2 8255a8255a 寻址原理寻址原理 在本次试验中程序是用 c 语言写的 8253 驱动函数。使用 c 语言会给 8255 的寻址带来了一个难题,在这里是借助 keil 软件里的库函数 absacc.h 来进 行寻址的。 一下是 absacc.h 库函数的介绍:

20、 /*- absacc.h direct access to 8051, extended 8051 and philips 80c51mx memory areas. copyright (c) 1988-2002 keil elektronik gmbh and keil software, inc. all rights reserved. -*/ #ifndef _absacc_h_ #define _absacc_h_ #define cbyte (unsigned char volatile code *) 0) #define dbyte (unsigned char volat

21、ile data *) 0) #define pbyte (unsigned char volatile pdata *) 0) #define xbyte (unsigned char volatile xdata *) 0) #define cword (unsigned int volatile code *) 0) #define dword (unsigned int volatile data *) 0) #define pword (unsigned int volatile pdata *) 0) #define xword (unsigned int volatile xda

22、ta *) 0) #ifdef _cx51_ #define fvar(object, addr) (*(object volatile far *) (addr) #define farray(object, base) (object volatile far *) (base) #define fcvar(object, addr) (*(object const far *) (addr) #define fcarray(object, base) (object const far *) (base) #else #define fvar(object, addr) (*(objec

23、t volatile far *) (addr)+0 x10000l) #define fcvar(object, addr) (*(object const far *) (addr)+0 x810000l) #define farray(object, base) (object volatile far *) (base)+0 x10000l) #define fcarray(object, base) (object const far *) (base)+0 x810000l) #endif #endif 在程序中,用“include”即可使用其中定义的宏来访问绝对地 址,包括: c

24、byte、xbyte、pword、dbyte、cword、xword、pbyte、dwor d。例如:#define com8255 xbyte0x060ff 后面若出现 com8255,则单片 机端口 p0 和 p2 联合输出 0x060ff 绝对物理地址(地址指向 82c55 指令寄存器)。 p2. 7 p2. 6 p2. 5 p2. 4 p2. 3 p2. 2 p2. 1 p2. 0 p0. 7 p0. 6 p0. 5 p0. 4 p0. 3 p0. 2 p0. 1 p0. 0 a1 5 a1 4 a1 3 a1 2 a1 1 a1 0 a9a8a7a6a5a4a3a2a1a0 a0a1

25、 00xxxxxxxxxxxxxx 11xxxxxxxxxxxxxx 表格的第四行表示 8255 的 a1,a0 口分别于单片机的 p2.7,p2.6 相连接,表 格是五行是表示 8255 pa 口的实际物理地址,即 0 x3fff,表格的第六行表示 8255 控制字寄存地的实际物理地址。 3.33.3 实验总结实验总结 通过本次交通灯实验,学会了使用 8255 芯片的初始化和编程方法。同时认 识到通过 8255 实现了 i/o 口的扩展。本实验使用的是 8255 的方式 0。利用 8255 完成交通灯的四中状态切换。第一种状态是东西方向是绿灯,南北方向是 红灯。第二种状态是东西方向是黄灯并且

26、闪烁,南北方向是红灯。第三种状态 是东西方向是红灯,南北方向是绿灯。第四种状态是东西方向是红灯,南北方 向是黄灯,最后变到第一种状态。在实现具体的硬件时,采用 8255 控制十二个 led,三个一组,分成两组来模拟实际交通灯,其中的对面两组状态变化是相 同一致的,所以将对面的对应相同颜色的灯用 8255 的一个口来控制。在本试验 中还有诸多不足之处,比如没有考虑到左右拐弯的红绿灯,没有计时功能等, 只完成了最基本的功能,还有许多有待优化之处。 实验四实验四 82538253 方波实验方波实验 4.14.1 实验内容实验内容 1、设计接口电路,编写程序:使用 8253 的计数器 0 和计数器 1

27、 实现对输 入时钟频率的两级分频,得到一个周期为 1 秒的方波,用此方波控制蜂鸣器, 发出报警信号,也可以将输入脚接到逻辑笔上来检验程序是否正确。 2、连接线路,验证 8253 的功能,熟悉它的使用方法。 4.1.14.1.1 实验原理实验原理 利用 8253 的通道 0 工作于方式 3,方波发生器模式。利用单片机定时器延 时 1ms,是单片机 p3.0 口产生 250hz 的方波,作为 8253 的时钟。然后给 8253 装机数初值,所装初值为 250,8253 产生的频率为 方波频率=时钟频率/计数初值 然后利用 8253 产生的方波驱动 npn 三极管的通断,使得蜂鸣器以 1hz 的 频

28、率鸣叫,发光二极管以 1hz 的频率闪烁。 4.1.24.1.2 实验原理电路图实验原理电路图 8253 方波实验原理电路图 4.1.34.1.3 程序流程图程序流程图 8253 方波实验程序流程图 4.1.44.1.4 程序流程代码程序流程代码 void fangbo() tmod=0 x01; /工作方式为定时器 0 a1=1; a0=1; ct=0 x16; /控制字寄存器 选择通道 0 工作于方式 3 a0=0; a1=0; t0=244; /装计数初值,方波频率=时钟频率/计数初值 while(1) gate=1; /gate 高电平输出方波 clk=1; /利用 p3.0 口产生

29、250hz 的方波 delay(5); clk=0; delay(5); 4.1.44.1.4 系统仿真系统仿真 8253 方波实验系统仿真图 4.24.2 实验总结实验总结 本实验使用 8253 的计数器 0 得到一个周期为 1 秒的方波。然后用此方波控 制 led 的闪亮和蜂鸣器的发声。是验证单片机定时器产生一个 250hz 的方波, 作为 8253 的时钟信号。将此方波作为时钟信号送给 8253 的通道 0,通过分频 产生需要的方波的频率。在实际电路中单片机产生的时钟频率为 244hz,所以 8253 预装的初值是 244。 这是实验通过 8253 的连线和程序的编写,我学会了 8253

30、 芯片的使用方法。 学会如何用 8253 产生特定频率的方波。8253 的寻址原理如同 8255 实验的原理。 附件:附件: 1 1、完整版电路仿真图完整版电路仿真图 bus0.7 bus0.7 p1.1 p1.2 p1.0 p1.1 p1.2 y0 y1 y2 y3 y4 y5 y6 y7 y0 y1 y2 y3 y4 y5 y6 y7 pa0 pa1 pa2 pa5 bus0 bus1 bus2 bus3 bus4 bus5 bus6 bus7 bus0 bus1 bus2 bus3 bus4 bus5 bus6 bus7 p2.0 p2.1 p2.2 p2.3 实验四 实验二 实验三 p

31、2.2 p2.3 p2.4 p2.0 p2.1 p1.0 clk0 bus0 bus1 bus2 bus3 bus4 bus5 bus6 bus7 rd wr wr p2.7 pa3 pa5 pa3 pa1 pa0 pa2 pa0 pa2 pa1 pa3 pa4 pa5 pa4 pa4 out0 gate0 clk0 gate0 out0 wr p2.6 p2.5 p2.6 p2.5 p2.4 out0 rd rd xtal2 18 xtal1 19 ale 30 ea 31 psen 29 rst 9 p0.0/ad0 39 p0.1/ad1 38 p0.2/ad2 37 p0.3/ad3

32、36 p0.4/ad4 35 p0.5/ad5 34 p0.6/ad6 33 p0.7/ad7 32 p2.7/a15 28 p2.0/a8 21 p2.1/a9 22 p2.2/a10 23 p2.3/a11 24 p2.4/a12 25 p2.5/a13 26 p2.6/a14 27 p1.0 1 p1.1 2 p1.2 3 p1.3 4 p1.4 5 p1.5 6 p1.6 7 p1.7 8 p3.0/rxd 10 p3.1/txd 11 p3.2/int0 12 p3.3/int1 13 p3.4/t0 14 p3.7/rd 17 p3.6/wr 16 p3.5/t1 15 u1 80

33、c51 c233pf c133pf x1 crystal c3 22u r2 10k a 1 b 2 c 3 e1 6 e2 4 e3 5 y0 15 y1 14 y2 13 y3 12 y4 11 y5 10 y6 9 y7 7 u2 74hc138 d0 8 d1 7 d2 6 d3 5 d4 4 d5 3 d6 2 d7 1 rd 22 wr 23 a0 19 a1 20 cs 21 clk0 9 gate0 11 out0 10 clk1 15 gate1 14 out1 13 clk2 18 gate2 16 out2 17 u4 8253a r10 0.2k r11 0.2k r1

34、2 0.2k r13 0.2k r14 0.2k r15 0.2k r16 0.2k r17 0.2k d1 led-red d2 led-red d3 led-green d4 led-green d5 led-yellow d6 led-yellow d7 led-blue d8 led-blue d0 34 d1 33 d2 32 d3 31 d4 30 d5 29 d6 28 d7 27 rd 5 wr 36 a0 9 a1 8 reset 35 cs 6 pa0 4 pa1 3 pa2 2 pa3 1 pa4 40 pa5 39 pa6 38 pa7 37 pb0 18 pb1 19

35、 pb2 20 pb3 21 pb4 22 pb5 23 pb6 24 pb7 25 pc0 14 pc1 15 pc2 16 pc3 17 pc4 13 pc5 12 pc6 11 pc7 10 u3 8255a ls1 speaker d9 led-blue d10 led-red d11 led-red d12 led-red d13 led-red d14 led-green d15 led-green d16 led-green d17 led-green d18 led-yellow d19 led-yellow d20 led-yellow d21 led-yellow q1 pn2222a a b c d 2 2、实物图实物图 74hc138 流水灯流水灯 8255a 交通灯实验交通灯实验 8253 方波实验方波实验 3 3、完整版程序代码完整版程序代码 #include /定义 8052 单片机寄存器的头文件 #include/绝对地址处理头文件,包含 xbyte,用 xbyte 来定义扩展的 i/o 端口 和外部 ram 单元地址 #define uint unsigned int /宏定义 #define uchar unsigned char #define con xbyte0 xffff/定义 8255 控制字寄存器端

温馨提示

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

评论

0/150

提交评论