收藏 分享(赏)

单片机最小系统交通灯流水灯课程设计.doc

上传人:czsj190 文档编号:4587040 上传时间:2019-01-03 格式:DOC 页数:31 大小:4.63MB
下载 相关 举报
单片机最小系统交通灯流水灯课程设计.doc_第1页
第1页 / 共31页
单片机最小系统交通灯流水灯课程设计.doc_第2页
第2页 / 共31页
单片机最小系统交通灯流水灯课程设计.doc_第3页
第3页 / 共31页
单片机最小系统交通灯流水灯课程设计.doc_第4页
第4页 / 共31页
单片机最小系统交通灯流水灯课程设计.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、 HEFEI UNIVERSITY单 片 机 应 用 技 术 课 程设 计 报 告系 别: 电子信息与电气工程系 专业(班级): 姓名(学号): 导师姓名: 完成时间: 2015-05-30 摘 要本课程设计完成的是构建单片机最小系统和实验环境熟悉,跑马灯实验及74LS138 译码器,8255 控制交通灯实验,8253 方波实验。最小系统包括晶振,复位等模块。138 的译码实验,根据 138 的译码特性建立一个译码表,用 P1 口给 74LS138 的 A、B 、C 口赋值,在此过程中其实只用到了P10,P11,P12;8255A 交通的实验选择 PA 口控制交通灯,核心思想就是延时时间的控制

2、;8253 方波实验采用的是 CLK0 产生方波信号,再用 T0、T1不同工作方式进行分频,输出方波;最后继电器是通过控制单片机端口的高低电平来控制继电器的通断。 关键词:单片机 译码器 交通灯 方波 工作方式 目录一、系统分析 1二、系统总体设计 2三、硬件设计 31、单片机最小系统 32、流水灯电路 53、译码器电路 63.1 74LS138 芯片的引脚图及功能 .63.2 电路设计 74、交通灯电路 84.1 8255A 芯片引脚图及功能 .84.2 电路设计 95、方波电路 105.1 8253 芯片的引脚图及功能 .105.2 电路设计 126、继电器电路 127、独立按键电路 13

3、四、软件设计 131、主程序 132、地址端口定义 143、输出方波程序 15五、系统调试 161、硬件调试 162、软件调试 163、软硬件联调 16六、功能测试 161、测试平台 162、测试工具 173、测试步骤 174、测试结果 17总结 17致谢 18参考文献 18附录 19附录 1 作品展示 .19附录 2 硬件清单 .20附录 3 软件清单 .21单片机应用技术- 课程设计0一、系统分析本次设计的单片机控制系统,旨在通过按键操作完成如下五个功能:1、实现 P1 口控制 8 个指示灯,循环点亮,瞬间只有一个灯亮2、实现与 74LS138 译码器连接的 8 个指示灯,循环点亮,瞬间只

4、有一个灯亮3、使用芯片 8255A 控制 LED 指示灯,实现交通灯功能。4、使用 8253A 的计数器 0 和计数器 1 实现对输入时钟频率的两级分频,得到一个周期为 1 秒的方波,用此方波控制蜂鸣器,发出报警信号5、设计接口电路,通过继电器控制直流电机转动、停止通过分析以上功能可知,本次实验可以选用已有单片机 STC89C52,运用5 个独立按键来控制 5 个功能的实现,且各个功能不能相互干扰。因此需要每个功能实现后进行复位,但是考虑到 8253A 芯片没有自带复位键,决定采用上电复位。对于第一个实验,由于要实现循环点亮,所以直接用 8 个灯并联然后与一个 1K 电阻串联,接成共阳即可;对

5、于第二个实验,指示灯的电路可与第一个实验相同,但其负极需与 74LS138 译码器的输出相接,然后通过单片机控制译码器的 A、B、C 实现指示灯的循环点亮;对于第三个实验,交通灯采取红、黄、绿排列,指示灯需串 1K 电阻,然后通过单片机控制 8255A 的工作方式 0来实现交通灯的功能;对于第四个实验,采用红灯与蜂鸣器并联接地,其阳极接 8253A 的 OUT1 输出,绿灯阴极接在 OUT1 上,通过单片机控制 8253A 可以实现蜂鸣器报警,红绿灯交替点亮;对于第五个实验,初步考虑利用 PNP 三极管来驱动 5V 的继电器,由于 PNP 低电平有效,起基极 b 与单片机相连,这样可以通过单片

6、机控制继电器的吸合,考虑到在电路板上焊接直流电机不方便,在此将直流电机换成 LED 灯。以上便是整个系统的初步分析,具体电路还需根据实际情况设计。单片机应用技术- 课程设计1二、系统总体设计根据本次设计的要求,经小组成员讨论后,选用单片机 STC89C52 作为控制器,5 个独立按键作为各个独立模块的按钮,译码器实验选用 74LS138,交通灯实验选用 D82C55AC-2 芯片,方波实验选用 D8253C-2 芯片,继电器实验选用 HRS2H-S-DC5V-N 继电器,另外电源采用直流可调稳压电源。系统原理框图如 2.1 所示:STC89C52译码器D82C55AD8253C独立按键电源电路

7、流水灯实验继电器8 个 LED交通灯蜂鸣器、LED1 个 LED图 2.1 系统原理图具体的单片机端口分工:(1)单片机最小系统的晶振采用 12M Hz 晶振,电源采用直流可调稳压电源5V 供电,五个独立按键接单片机 P2.0P2.4 口,分别依次控制五个模块。(2)实验一 8 个 LED 灯阴极接单片机 P1 口(3)实验二 74LS138 译码器 G2A、G2B 一起接 P3.0 口,A、B、C 分别接P1.2、P1.1、P1.0 口(4)实验三 D8255A 芯片的 A1、A0 接 P2.6、P2.7,D0D7 接 P0,CS 接P3.1,WR、RD 接 P3.6、P3.7(5)实验四

8、D8253C 芯片的 A1、A0 接 P2.6、P2.7,D0D7 接 P0,CS 接P3.2,单片机应用技术- 课程设计2WR、RD 接 P3.6、P3.7,CLK0 接 P3.5(6)实验五 PNP 三极管基极 b 接 P2.5三、硬件设计1、单片机最小系统单片机最小系统主要由晶振电路和复位电路组成的,晶振电路是由晶振和瓷片电容构成的,我们是的晶振是 11.0592Mhz,为 51 单片机提供时钟源。复位电路是由按钮、电解电容和电阻组成的,为单片机提供复位功能,就此就构成了最小系统板。STC89C52RC 单片机是基于 51 内核的单片机,是在 51 单片机应有的功能上基础拓展的单片机,是

9、属于 MCS51 系列单片机中的高端单片机,它有运算器包括算术逻辑运算单元 ALU、累加器 ACC、寄存器 B、暂存器 TMP、程序状态字寄存器 PSW、十进制调整电路等。它能实现数据的算术逻辑运算、位变量处理和数据传送操作。(1)控制器单片机有控制器,它包括定时控制逻辑(时钟电路、复位电路) ,指令寄存器,指令译码器程序计数器 PC,堆栈指针 SP,数据指针寄存器 DPTR 以及信息传送控制部件等。(2)时钟电路单片机有时钟电路,在单片机芯片的内部有一个高增益反相放大器,输入端为 XTAL1,输出端为 XTAL2,一般在 XTAL1 与 XTAL2 之间接石英晶体振荡器和微调电容,从而构成一

10、个稳定的自激振荡器,就是单片机的内部时钟电路,时钟电路产生的振荡脉冲经过二分频以后,才成为单片机的时钟信号。电容 C1和 C2 为微调电容,可起频率稳定、微调作用,我们取用 30pf 电容。晶振的频率范围是 1.2MHz12MHz ,我们取 11.0592 MHz。(3)复位电路单片机的复位电路需要外接,对于使用 12MHZ 的晶振的单片机,复位信号持续时间应超过 4s 才能完成复位操作。产生复位信号的电路有上电自动复位电路和按键手动复位电路两种方式。我通过外部复位电路的电容充电来实现的单片机复位的,即人为的复位操作。(4)指令寄存器和指令译码器指令寄存器中存放指令代码,CPU 执行指令时,由

11、程序存储器中读取的指令代码送入指令存储器,经译码器后由定时与控制电路发出相应的控制信号,单片机应用技术- 课程设计3完成指令所指定的操作。(5)程序计数器 PCPC 是一个 16 位计数器,其内容为单片机将要执行的指令机器码所在存储单元的地址。PC 具有自动加 1 的功能,从而实现程序的顺序执行。由于 PC 不可寻址的,因此用户无法对它直接进行读写操作,但可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。PC 的寻址范围为 64KB,即地址空间为 00000FFFFH。(6)堆栈指针 SPSP 为 8 位寄存器,用于指示栈顶单元地址。所谓堆栈是一种数据结构,它只允许在其一端进行数据删

12、除和数据插入操作的线性表。数据写入堆栈叫入栈(PUSH) ,数据读出堆栈叫出栈(POP) 。堆栈的最大特点是“后进先出”的数据操作原则。MCS-51 系统复位后,SP 初始化为 07H。(7)数据指针 DPTR数据指针 DPTR 为 16 位寄存器,它是 MCS51 中唯一的一个 16 位寄存器。编程时,既可按 16 位寄存器使用,也可作为两个 8 位寄存器分开使用。DPH 为 DPTR 的高八位寄存器,DPL 为 DPTR 的低八位寄存器。DPTR 通常在访问外部数据存储器时作为地址指针使用,寻址范围为 64KB。(8)引脚定义P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可

13、吸收 8TTL 门电流。当 P1 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原码输入口,当 FIASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高。P1 口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输出 4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH 编程和校验时,P1 口作为第八位地址接收。 P2 口:P2 口为一个内部上拉电阻的 8

14、位双向 I/O 口,P2 口缓冲器可接收,输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。 P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个TTL 门电流。当 P

15、3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的单片机应用技术- 课程设计4缘故。 P3 口也可作为 AT89C51 的一些特殊功能口,如下表所示: 管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断 0) P3.3 /INT1(外部中断 1) P3.4 T0(记时器 0 外部输入) P3.5 T1(记时器 1 外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3 口同时为闪烁编程和编程校验接收一些控制信号

16、。最小系统原理图如图 2.2 所示:图 2.2 单片机最小系统原理图2、流水灯电路系统若要实现流水灯功能,我们只要将发光二极管 LED1LED8 依次点亮、熄灭,8 只 LED 灯便会一亮一暗的做流水灯了。由于是一个一个点亮,在此我们采用 8 个 LED 并联然后与一个 1K 电阻串联,具体电路如图 2.3 所示:单片机应用技术- 课程设计5图 2.3 流水灯电路3、译码器电路本模块功能是通过单片机控制 74LS138 译码器来实现流水灯,首先我们了解下译码器的工作原理。3.1 74LS138 芯片的引脚图及功能(1)74LS138 芯片的引脚图如图 2.4 所示图 2.4 74LS138 芯

17、片引脚图单片机应用技术- 课程设计6A0A2:地址输入端G1:选通端(高电平有效)/G2A、/G2B:选通端(低电平有效)/Y0/Y7:输出端(低电平有效)VCC:电源正GND:地A0A2 对应 Y0Y7;A0,A1,A2 以二进制形式输入,然后转换成十进制,对应相应 Y 的序号输出低电平,其他均为高电平(2)74LS138 芯片真值表如表 2.1表 2.1 74LS138 译码器真值表3.2 电路设计根据上述 74LS138 译码器的工作原理可知,当 G1 G2A G2B=100 时,译码器工作,根据 74LS138 的 3 个译码信号 A、B、C 来选择Y0、Y1、Y2、Y3、Y4、Y5、

18、Y6 作为输出,各输出为低电平时,当共阳极的 LED灯节高电平时,就会使相应的灯亮。给单片机的端口赋初值,点亮第一个单片机应用技术- 课程设计7LED,然后延时一段时间后,点亮下一个 LED,依次循环下去,会实现流水灯的模式,具体电路如图 2.5 所示:图 2.5 译码器电路4、交通灯电路本模块功能是通过单片机控制 8255A 芯片控制电路实现交通灯功能,首先我们应了解 8255A 芯片的工作原理。4.1 8255A 芯片引脚图及功能(1)8255A 芯片引脚图如图 2.6 所示:单片机应用技术- 课程设计8图 2.6 8255A 芯片引脚图D0-D7:三态双向数据线,与单片机数据总线连接,用

19、来传送数据信息。CS:片选信号线,低电平有效,表示芯片被选中。 RD:读出信号线,低电平有效,控制数据的读出。 WR:写入信号线,低电平有效,控制数据的写入。 GND:地线。 Vc:+5V 电源PA0-PA7:A 口输入/输出线。 PB0-PB7:B 口输入/输出线。 PC0-PC7:C 口输入/输出线。 RESET:复位信号线。A1、A0:地址线,用来选择 8255 内部端口。(2)工作方式方式 0基本输入/输出方式8255 工作在方式 0 时,三个端口分成彼此的两个 8 位口,即 A 口和B 口,两个 4 位口,这 4 个并行口都能设定为输入或输出。方式 0常用于无条件查询传送方式 1选通

20、输入/输出方式方式 2双向输入/输出方式4.2 电路设计交通灯共有东西南北四个方向,红黄绿总共 12 个 LED 灯,为了让电路简单,在此采用 4 个方向的 LED 灯共阳接法,每个方向的红、黄、绿灯并联然后与一个 1K 电阻串联,阴极接在对应 8255A 芯片的 PA 口,具体仿真电路如图 2.7 所示:单片机应用技术- 课程设计95、方波电路本模块功能是通过单片机控制 D8253C 芯片输出方波信号,首先我们需要了解 8253 芯片的工作原理。5.1 8253 芯片的引脚图及功能(1)8253 芯片的引脚图如图 2.8 所示图 2.8 8253 芯片引脚图(2)8253 芯片内部组成部分

21、1)数据总线缓冲器(8 位、三态、双向)。数据中线缓冲器是 8253 与系统数据总线相连接时用的接口电路,它由 8 位双向三态缓冲器构成。2)读/写控制逻辑。读/写控制逻辑接收系统控制总线送来的输入信号,经组合后形成控制信号,对各部分操作进行控制。可接收的控制信号有:图 2.7 交通灯电路单片机应用技术- 课程设计10:片选信号,低电平有效;CS:读信号,低电平有效;RD:写信号,低电平信号;W:端口选择信号。 =00 时,选中 0 通道; =01 时,选中 1 通10A10A10A道; =10 时,选中 2 通道; =11 时,选中控制寄存器。8253 的输入信号组合功能表如表 2.2 所示

22、。表 2.2 8253 输入信号组合的功能表CSRDW10A功 能0 1 0 0 0 写计数器 00 1 0 0 1 写计数器 10 1 0 1 0 写计数器 20 1 0 1 1 写入控制字寄存器0 0 1 0 0 读计数器 00 0 1 0 1 读计数器 10 0 1 1 0 读计数器 20 0 1 1 1 无操作1 禁止使用0 1 1 无操作3)计数器 02。三个完全相同的 16 位减计数器。每个通各有 3 个引脚,它们是:CLK0CLK2 计数器 02 的输入时钟脉冲此引脚输入;OUT0OUT2 计数器 02 的输出端;GATE0GATE2 计数器 02 的门控脉冲输入端。4)控制字寄

23、存器。控制字寄存器是一种只写寄存器,在对 8253 编程时,由 CPU 用输出指令向它写入控制字,来选定计数器通道,规定各计数器的工作方式,读写格式和数制。其格式如图 2.9 所示:7D65D43D210D1SC0 1RL MBCD单片机应用技术- 课程设计110RL5)8253 芯片的工作方式:工作方式 0:计数结束中断方式;工作方式 1:可编程单稳态输出方式;工作方式 2:比率发生器;工作方式 3:方波发生器;工作方式 4:软件触发选通;工作方式 5:硬件触发选通;5.2 电路设计具体的设计电路如图 2.10 所示:图 2.10 方波电路0 二进制计数000 方式 0 001 方式 1 1

24、0 方式 2 11 方式 3100 方式 4101 方式 51 BCD 码计数00 计数器锁存,供 CPU 读 01 只读/写计数器低字节10 只读/写计数器高字节11 先读/写计数器低字节,后读/写高字节00 选择通道 001 选择通 110 选择通道 211 无效图 2.9 8253 控制字格式单片机应用技术- 课程设计126、继电器电路此模块功能是实现单片机控制继电器的吸合来实现对 LED 灯的控制,其实验原理就是单片机给 s8550 PNP 三极管低电平使其导通,然后控制继电器的线圈,使内部开关吸合,以致 LED 的电路能够导通。具体电路如图 2.11 所示:7、独立按键电路键盘在单片

25、机应用系统中,实现输入数据,传送命令的功能,是人工干预的主要手段。因此设计 5 个独立按键来控制模块的选择运行,当某个按键按下时,单片机便执行对应的程序,具体的设计电路如图 2.12 所示:图 2.12 独立按键电路图 2.11 继电器电路单片机应用技术- 课程设计13四、软件设计1、主程序主程序开始时要从存放实际键值的参数中取出刚读取到的键值送到累加器A,依次判断累加器 A 的低四位。若检测到低电平,则说明与该位对应的按键按下,从而转到相应的处理子程序段,完成相应的操作,实现相应的功能后返回。若没有检测到低电平,则返回。主程序流程图如图 4.1 所示: 图 4.1 主程序流程图开始查询按键P

26、2.0 是否按下P2.1 是否按下P2.2 是否按下P2.3 是否按下P2.4 是否按下退出流水灯继电器方波交通灯译码器单片机应用技术- 课程设计142、地址端口定义#include#include/绝对地址处理头文件,包含 XBYTE,用 XBYTE 来定义扩展的 I/O 端口和外部 RAM 单元地址#define uint unsigned int#define uchar unsigned char#define control XBYTE0xffd7/定义控制字寄存器端口地址#define PA XBYTE0x3fd7/定义端口 PA 地址sbit A0=P26;/定义 8255 地址

27、端口引脚 A0sbit A1=P27;/定义 8255 地址端口引脚 A1sbit dat=P0;/定义数据口 D0D7#define T0 XBYTE0x3fff/定义定时器 1 地址#define T1 XBYTE0x7fff端口定义原则由于 A0、A1 对应的端口是 P2.6、P2.7,在程序开始需要定义控制字及需要使用的端口的地址,单片机共 16 位地址线,P2 口是高八位地址线,P0 口是低 8 位地址线,如表 4.1 所示:表 4.1 端口地址表P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0A1 A0 * * * * * *P0.7 P0.6 P0.

28、5 P0.4 P0.3 P0.2 P0.1 P0.0* * 0 1 0 * * *其中 * 代表未知电平,对应表中 A0、A1,把 * 默认为 1,得到控制字的地址为 0xffd7(A1=0 ,A0=0) ,对于 8255A 使用 PA 口,则需 A1=0,A0=1 ,定义为 0x3fd7,在 8253A 芯片使用时,用到了 T0,T1 计数器,为了区分8255A 的 PA 口,定义地址为 0x3fff(A1=0 ,A0=1) ,0x7fff(A1=1,A0=0) 。单片机应用技术- 课程设计153、输出方波程序若想单片机内部产生 4K HZ 即周期为 250 微秒的脉冲,单片机晶振频率为12

29、M HZ,则此时计数初值 X = MN =(256 250)1 = 6,故只要在TH0, TL0 中预置初始值 6,将定时器 / 计数器 T0 设置成定时工作方式 2 即可实现。具体程序如下:void T0_time() interrupt 1TH0=6;TL0=6;clk0=clk0;/产生 4kHZ 脉冲五、系统调试1、硬件调试在焊接过程中,我们采用焊一个模块,调试一个模块的原则,这样可以保证电路如果出错可以及时修改。通过万用表,测试电路的通断,观察有无虚焊的地方,对芯片的引脚也进行了检查,逐个模块检查接地和 VCC 的连接。总的来说,在硬件调试时发现了线路接错的现象,错误原因是在网上百度

30、的芯片引脚图错误,经修改,所有模块调试均成功。2、软件调试对于软件调试,我在 proteus 中对整个电路图进行了绘制,一些比较复杂的线路,我采用了标号和总线方式,对于程序方面,用的是 Keil C 软件。在不断的调试后,整个仿真图全部正常运行,但是也发现了一点,在 proteus 中仿真,单片机是无法复位的,最终所有模块均按程序执行。单片机应用技术- 课程设计163、软硬件联调在软硬件联调时,感觉模块上的接线太多,但是电路已经焊出来了,我们就没做修改,把连线统一给固定住了;另外,也发现了 8253A 不能直接复位,只能通过断电复位,因此我们最终采用了每个模块都用上电复位,整体调试很成功。六、

31、功能测试1、测试平台在实验室工作台上进行的功能测试,当时室内温度 26,对硬件电路影响不大。2、测试工具单片机开发板、双向 USB 线、笔记本电脑、整个电路模块、杜邦线、万用表3、测试步骤通过电脑将程序下载至 STC89C52RC 单片机把整个电路模块的接地、VCC 及数据端口连接,并检查,确保连线无误通过控制按键 15,来控制各个模块的运行4、测试结果软硬件很符合要求,各个模块均实现了预期的功能, 总结通过单片机应用技术课程上的学习,经过 4 个星期的努力,我们组最终完成了老师所要求的实验设计。整个控制系统主要分为硬件设计和软件设计两个部分:单片机应用技术- 课程设计17硬件设计主要是把单片

32、机最小系统、键盘控制模块、流水灯模块等各个硬件功能模块及其它元件合理搭配并连接起来使其能够为软件运行提供一个硬件平台。软件设计主要是通过编写程序代码,实现对整个系统的控制。在系统上电复位后程序自动运行,通过接受查询外部的键盘参数值,控制各个模块的启停。由于本次设计的要求时间较短,个人能力以及精力等因素的限制,加之设计经验的不足,该系统还有许多不尽如人意的地方。该系统未能完全的实现设计的所有功能。如:利用 8253A 芯片实现红绿等交替点亮,但在实际电路中只实现了红灯闪亮,而绿灯只会变暗;还有光耦设计部分也没有完成。通过这次单片机系统控制各个模块运行的设计,使我们从一开始对单片机各个引脚功能不太

33、熟悉,到能开发一个简单的系统,在这整个过程中我学到了很多东西,掌握了一些常用的开发技能,也发现了大量的问题,有些在设计过程中已经解决,有些还有待今后慢慢学习。只要学习就会有更多的问题,有更多的难点,但也会有更多的收获。致谢经过很长时间的努力,我们在储忠老师的指导、同学耐心的帮助和组员的努力下终于完成了此次设计,并按设计要求实现了按键控制流水灯、译码器、交通灯、方波、继电器五个功能。通过这次设计使我们从中学到到了很多课本上学不到的知识,了解了单片机的工作原理及端口地址定义,并学会了用单片机开发产品的完整的过程,明白了设计的概念。通过自己亲自去动手和调试我明白的实践的重要性,明白了理论结合实践的含

34、义,同时也大大的提高了自己的动手能力能力,这在我们以后的工作中都是非常有用的。在这次设计中,感谢储忠老师对我们课程设计的指导和修改,感谢同学的帮助,在此表示衷心的感谢!参考文献1 王静霞.单片机应用技术 C 语言版.北京:电子工业出版社.20092 谭浩强.C 语言程序设计.北京:清华大学出版社.20003 余锡存.单片机原理及接口技术.西安:西安电子科技大学出版社. 20074 周荷琴.微型计算机原理与接口技术.合肥:中国科技大学出版社.2008单片机应用技术- 课程设计18附录附录 1 作品展示单片机最小系统图单片机应用技术- 课程设计19各个功能模块图附录 2 硬件清单STC89C52R

35、C 单片机一个12M HZ 晶振一个30 pf 电容两个 10 uf 电容一个复位开关 6 个4.7K 排阻一个1K 电阻 20 个单片机底座 1 个各色 LED 灯 共 30 个8255A 芯片一个8253C 芯片一个LS138 译码器一个蜂鸣器一个5V 继电器一个Ss8550 三极管一个单片机应用技术- 课程设计20排针 50 个芯片底座 共 4 个杜邦线若干焊接板 2 块附录 3 软件清单#include#include/绝对地址处理头文件,包含 XBYTE,用 XBYTE 来定义扩展的 I/O 端口和外部 RAM 单元地址#define uint unsigned int#define

36、 uchar unsigned charsbit HC138A=P12;/位定义 74HC138 端口sbit HC138B=P11; sbit HC138C=P10;#define control XBYTE0xffd7/定义控制字寄存器端口地址#define PA XBYTE0x3fd7/定义端口 PA 地址sbit A0=P26;/定义 8255 地址端口引脚 A0sbit A1=P27;/定义 8255 地址端口引脚 A1sbit dat=P0;/定义数据口 D0D7#define T0 XBYTE0x3fff/定义定时器 1 地址单片机应用技术- 课程设计21#define T1 X

37、BYTE0x7fffsbit clk0=P35;/8253 计数器 0 输入void delay(uint z);/延时子数声明void HC138yimaqi();void jiaotongdeng();void fangbo(void);void liushuideng() ;void jidianqi(void);sbit key1=P20;sbit key2=P21;sbit key3=P22;sbit key4=P23;sbit key5=P24;sbit a138=P30; /控制 74LS138 0 有效sbit a8253=P32; /控制 8253 0 有效sbit a825

38、5=P31; /控制 8255 0 有效sbit ji=P25;/*主函数 *66z*/void main()a138=1;while(1)ji=1;单片机应用技术- 课程设计22if(key1=0) liushuideng(); else if(key2=0) while(1)HC138yimaqi ();else if(key3=0)jiaotongdeng();else if(key4=0)fangbo();else if(key5=0)jidianqi();void liushuideng() /流水灯单片机应用技术- 课程设计23 while(1)uchar i; /定义一个无符号字

39、符型局部变量 i 取值范围 0255/P1=0xfe; /赋初始值for(i=0;i0;i-)/黄灯闪烁三次PA=0xf5;单片机应用技术- 课程设计25delay(500);PA=0xf7;delay(500);PA=0xdb;/东西红灯,南北绿灯delay(3000);for(i=3;i0;i-)/黄灯闪烁三次PA=0xeb;delay(500);PA=0xfb;delay(500);/*方波*/void fangbo(void) a8253=0;control=0X14;/送控制字 00010100;选择通道 0 工作方式 2T0=100; control=0x56;/送控制字 01010110;选择通道 1 工作方式 3T1=20;TMOD=0X02;/选择定时器 0,工作方式 2TH0=6;/(256-250 )单片机应用技术- 课程设计26TL0=6;EA=1;ET0=1;TR0=1;while(1)/*继电器*/void jidianqi(void) while(1) ji=1;delay(500);ji=0;delay(500);/*延时函数*/void delay(uint z)uint x,y;for(x=z;x0;x-)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 规范标准 > 交通运输

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报