基于AT89C51单片机和keilc软件的流水灯设计.doc

基于AT89C51单片机和keilc软件的流水灯设计

收藏

压缩包内文档预览:(预览前20页/共28页)
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:512600    类型:共享资源    大小:1.43MB    格式:RAR    上传时间:2015-11-11 上传人:QQ28****1120 IP属地:辽宁
6
积分
关 键 词:
毕业设计
资源描述:
基于AT89C51单片机和keilc软件的流水灯设计,毕业设计
内容简介:
1 目 录 摘要 . 1 关键词 . 1 Abstract . 2 Keyword . 2 1 AT89C51单片机简介 . 3 1.1 单片机的发展 . 3 1.2 单片机的分类 . 3 1.3 AT89C51的介绍 . 3 1.3.1 AT89C51的结构 . 3 1.3.2 AT89C51主要特性 . 4 1.3.3 AT89C51的管脚说明 . 4 2 keilc软件及 ledkey控件介绍 . 6 2.1 keilc软件介绍 . 6 2.2 ledkey控件介绍 . 7 2.2.1 ledkey控件的开发 . 7 2.2.2 ledkey控件原理图 . 7 2.2.4 ledkey控件的使用 . 7 2.2.5 举例说明 . 8 3 多花样流水灯硬件设计 . 9 3.1 Ledkey控件原理图 . 9 3.2 功能介绍 . 9 4 多花样流水灯软件设计 . 11 4.1 程序功能 . 11 4.2 程序流程图 . 12 5 多花样流水灯的仿真 . 13 结语 . 14 参考文献 . 15 附录 1:花样流水灯的程序代码 . 16 附录 2:花样流水灯功能表 . 19 附录 3: keilc软件和 ledkey控件介绍相关图片 . 20 nts 1 基于 AT89C51 单片机和 keilc 软件的流水灯设计 摘要 :本文介绍了花样流水灯的软件设计过程 ,重点给出了其软件编程的方法,使学者对汇编语言有个初步了解。 通过对单片机 发展、分类、硬件原理图 的介绍,特别是 AT89C51的介绍,具体到其结构、特性、管脚说明等,让单片机学者对 51 系 列单片机有了初步的认识。在程序实现方面通过文字说明和相应的图片又充分的介绍了 keil软件及控件使用方法 。 关键词 : 单片机;编程 ;控件 ; 仿真 nts 2 Design of glide light base on single chip of AT89C51 and keilc software Abstract:This paper introduces an software design procedure for multiform pomadeng, especially lies out the method of the program software, so that scholars can have a preliminary understand for program language. According to introduce the development, sort of single chip and hardware illustrative diagram, especially the introduce of AT89C51, in particular , referring to the explain of its structure , specialty ,pin instruction. For this introduce , the scholars of single chip can have an initial understand for the sort of single chip. And then We have sufficient introduce for the keil software and widget of using method by means of the words and pictures, in aspect of the program realization. Key word: single chip; program; widget; emulate nts 3 1 AT89C51 单片机简介 1.1 单 片机的发展 单片机(又称为微控制器)的出现是计算机发展史上的一个重要里程碑,它以体积小、功能全、性价比高等诸多优点而独具特色,在工业控制、尖端武 器、通信设备、信息处理、家用电器等嵌入式应用领域中独占熬头。 51 系列单片机是国内目前应用最广泛的 8 位单片机之一,经过二十多年的推广与发展, 51 系列单片机形成了一个规模庞大、功能齐全、资源丰富的产品群。随着嵌入式系统、片上系统等概念的提出和普遍接受及应用, 51 单片机的发展又进入了一个新的阶段。特别是近年来,基于单片机的嵌入式实时操作系统的出现和推广,表明了 51 系列单片机在今后的许多年中依然会活跃如故,而且在很长一段时间中将占据嵌入式系统产品的低端市场。 1.2 单片机的分类 MCS-51 系列单片机品种很多,如 果按照存储器配置状态,可划分为:片内 ROM 型,如 80( C) 5X;片内 EPROM,如 87( C) 5X;片内 FlashEEPROM 型,如 89C5X;内部无EPROM 型,如 80( C) 3X。如果按照其功能,可分为: ( 1) 基本型,有 8031、 8051、 8031AH、 8751、 89C51 和 89S51 等。 ( 2) 增强型,有 8052、 8032、 8752、 89C52 和 89S52 等。 ( 3) 低功耗型,有 80C5X、 80C3X、 87C5X 和 89C5X 等。 ( 4) 高级语言型,如, 8052AH-BASIC 芯片内固化有 MCS BASIC52 解释程序,其BASIC 语言能与汇编语言混用。 ( 5) 可编程记数阵列( PCA)型。 ( 6) A/D 型。 ( 7) DMA 型。 ( 8) 多并行接口型。 ( 9) 在系统可编程( ISP)型。 ( 10) JTAG 调试型。 1.3 AT89C51 的 介绍 AT89C51 是一个低功耗,高性能 CMOS 8 位单片机,片内含 4k Bytes ISP(In-system programmable)的可反复擦写 1000 次的 Flash 只读程序存储器,器件采用 ATMEL 公司的高密度、非易失性存储技术制造,兼容标准 MCS-51 指令系统及 80C51 引脚结构,芯片内集成了通用 8 位中央处理器和 ISP Flash 存储单元,功能强大的微型计算机的 AT89C51 可为许多嵌入式控制应用系统提供高性价比的解决方案。 具体体现在以下几点: 1.3.1 AT89C51 的 结构 ( 1) 8 位微控制器。 8 位指的是微控制器内部数据总线、寄存器宽度。比如计算机( PC)所用的 CPU,第一代 PC 的 CPU8088/8086 到第二代 PC 的 CPU80286 都为 16 位 CPU;而从 80386 到目前的Pentium4 都属于 32 位的 CPU。尽管如此,目前所采用的单片机微控制器,仍是以 8 位为主,只有在特殊场合,才会采用 16 位的单片机,如 8096 等。 ( 2)程序存储器 ROM:内部有 4KB、外部最多可扩充至 64KB。 ( 3)数据存储器 ROM:内部有 128B、外部最多可扩充至 64KB。 ( 4) 4 组可位寻址的 8 位输入 /输出端口,即 P0、 P1、 P2 及 P3。 ( 5)一个全双工串行口,即 UART。 ( 6) 5 个中断源,即 INT0、 INT1、 T0、 T1、 RXD 或 TXD。 ( 7) 111 个指令。 nts 4 1.3.2 AT89C51 主要特性 ( 1) 8031 CPU 与 MCS-51 兼容 ( 2) 4K 字节可编程 FLASH 存储器 (寿命: 1000 写 /擦循环 ) ( 3) 全静态工作: 0Hz-24KHz ( 4) 三级程序存储器保密锁定 ( 5) 128*8 位内部 RAM ( 6) 32 条可编程 I/O 线 ( 7) 两个 16 位定时器 /计数器 6 个中断源 ( 8) 可编程串行通道 ( 9) 低功耗的闲置和掉电模式 ( 10) 片内振荡器和时钟电路 1.3.3 AT89C51 的管脚说明 ( 1) VCC:供电电压。 ( 2) GND:接地。 ( 3) P0 口: P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。当 P1口的管脚第一次写 1 时,被定义为高阻输入。 P0 能够用于外部程序数据存储器,它可以被定义为数据 /地址的第八位。在 FIASH编程时, P0 口作为原码输入口,当 FIASH进行校验时,P0输出原码,此时 P0 外部必须被拉高。 ( 4) P1 口: P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口, P1 口缓冲器能接收输出 4TTL门电流。 P1口管脚写入 1后,被内部上拉为高,可用作输入, P1口被外部下拉为低电平时 ,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时, P1 口作为第八位地址接收。 ( 5) P2 口: P2口为一个内部上拉电阻的 8位双向 I/O口, P2口缓冲器可接收,输出 4个 TTL门电流,当 P2口被写 “1” 时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时, P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。 P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时, P2 口输出地址的高八位。在给出地址 “1” 时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时, P2口输出其特殊功能寄存器的内容。 P2口在 FLASH编程和校验时接收高八位地址信号和控制信号。 ( 6) P3口: P3 口管脚是 8个带内部上拉电阻的双向 I/O口,可接收输出 4个 TTL门电流。当 P3口写入 “1” 后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平, P3 口将输出电流( ILL)这是由于上拉的缘故。 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 口同时为闪烁编程和编程校验接收一些控制信号。 ( 7) RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。nts 5 在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时, ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它 可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。此时, ALE 只有在执行 MOVX, MOVC 指令是 ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE 禁止,置位无效。 ( 8) /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次 /PSEN 有效。但在访问外部数据存储器时,这两次有效的 /PSEN 信号将不出现。 ( 9) /EA/VPP:当 /EA 保持低电平时,则在此期间 外部程序存储器( 0000H-FFFFH),不管是否有内部程序存储器。注意加密方式 1 时, /EA 将内部锁定为 RESET;当 /EA 端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电 ( VPP)。 ( 10) XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 ( 11) XTAL2:来自反向振荡器的输出。 其管脚图如图 1-1所示。 图 1-1 管脚图 nts 6 2 keilc 软件及 ledkey 控件 介绍 2.1 keilc 软 件介绍 keilc51uvision 是德国 keil 公司开发的基于 windows 环境的 8051 软件开发平台,它集项目管理、源程序编辑、程序调试于一体,是一个强大的集成开发环境。 Uvision2 支持 keil的各种 8051 工具,包括: c 编译器,宏汇编译器、连接 /定位器及 object-hex 转换程序,可以帮助用户快速有效的实现嵌入式系统的设计与调试。采用 c 语言进行单片机系统的开发,具有避免手工分配寄存器,移植容易等优点。 恒科 keilc51 的 IDE 开发防真器优特点: 1、 仿真 8031 内核的单片机。 2、 接支持 keilc51 的 IDE 开发仿真环境, 63k 用户程序空间。 3、 全保留单片机特性,避免仿真正常而实际烧录芯片不正常的问题。 4、 仿真频率 0 40MHZ 晶振可选。 5、 程序代码可重复装载。 6、 监控程序占用用户资源极少,全速运行不占用资源。 7、 可在 keiluvision2 下单步、断点、全速、可参考变量、 RAM 变量、结构变量等。 8、 支持汇编、 c 语言、混合调试。 9、 内部存储物理空间为 68k,是伟福通用仿真器 G6 型的 7 倍,是伟福 51 专用仿真器的 4 倍。 10、 仿真频率可达 40MHz。 11、 支持 10 个硬件断点。 在 keilc51 集成开发软件环境是使用工程方 法来管理文件的,而不是单一文件模式。所有的文件包括源程序(包括 c 程序,汇编程序)、头文件、甚至说明性的技术文档都可以放在工程项目文件里面统一管理。在使用 keilc51 之前,您应该习惯这种工程的管理方式,对于刚刚使用 keilc51 的用户来讲,一般可以按照下面的步骤来创建一个自己的 keilc51 应用程序。 1、 建一个项目文件。 (此图参照附录 3 中图 2-2 所示) 2、 工程选择一个目标器件。 (此图参照附录 3 中图 2-3 所示) 3、 创建源程序文件并输入程序代码并保存。 (此图见附录 3 中图 2-4 所示) 4、 把源文件添加到项目中。 (见图 2-1 所示 ) 图 2-1 源文件添加到项目 5、 为工程项目设置软硬件调试环境。 (见附录 3 中图 2-5 所示) 6、 编译项目文件。 (见附录 3 中图 2-6 所示) 7、 硬件或者软件调试。 (见附录 3 中图 2-7 所示) nts 7 2.2 ledkey 控件 介绍 2.2.1 ledkey 控件的开发 前面介绍了 Keil 软件的使用,从中我们可以看到 Keil 的强大功能,不过,对于初学者来说,还有些不直观,调试过程中看到的是一些数值,并没有看到这些数值所引起的外围电路的变化,例如数码管点亮、发光管发光等。为了让初学者更好地入门,笔者利用 Keil 提供的 AGSI 接口开发了两块仿真实验板。其中的键盘、 LED 显示实验仿真板就是我们所要提的 ledkey 控件。这块仿真板将枯燥无味的数字用形象的图形表达出来,可以使初学者在没有硬件时就能感受到真实的学习环境,降低单片机的入门门槛。 2.2.2 ledkey 控件原理图 图 2-8 控件原理图 图 2-8是键盘、 LED 显示实验仿真板的图,从图中可以看出,该板比较简单有在 P1 口接有 8 个发光二极管,在 P3 口接有 4 个按钮,图的右边给出了原理图。 2.2.3 ledkey 控件的安装 Ledkey 控件的安装很简单,只需根据需要将 ledkey.dll 文件拷贝到 keil 软件的c51/bin文件夹中即可。 2.2.4 ledkey 控件的使用 要使用仿真板,必须对工程进行设置 , 设置的方法是点击 Project-Option for Target Target1 打开对话框,然后选中 Debug 标签页,在 Dialog :Parameter: 后的编缉框中输入 -d 文件名。例如要用 ledkey.dll (即第一块仿真板 )进行调试,就输入 -dledkey,如图 2-9 所示,输入完毕后点击确定退出。编译、连接完成后按 CTRL+F5 进入调试,此时,点击菜单 Peripherals,即会多出一项“键盘 LED 仿真板( K)”,选中该项,即会出现如图2-8的界面。 nts 8 图 2-9 工程设置 2.2.5 举例说明 指示灯 L7 L0依次循环点亮,程序如下: MOV A,#0FEH MAIN: MOV P1,A LCALL DELAY RR A LJMP MAIN DELAY: MOV R5,#10 D1: MOV R7,#250 D2: MOV R6,#250 D3: DJNZ R6,D3 DJNZ R7,D2 DJNZ R5,D1 RET END (注:其 软件界面 及结果 见附录 3 图 g 、 h 所示) nts 9 3 多花样流水灯硬件设计 3.1 Ledkey 控件原理图 按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。 AT89C51单片机是美国 ATMEL公司生产的低电压、高性能 CMOS 8位单片机,具有丰富的内部资源: 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.1P1.7口的其他 7 个 LED 的点亮和熄灭的方法同 LED1。因此,要实现流水灯功能,我们只要将发光二极管 LED1 LED8 依次点亮、熄灭, 8 只 LED 灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到 “ 流水 ” 效果了。 其硬件原理图如 图 3-1所示: 图 3-1 硬件原理图 3.2 功能介绍 图中的电阻为 LED1 8的限流电阻 ,与复位电路连接的 RST引脚 使单片机的 RST 复位脚电平先高后低,从而达到复位; 图中的 系统时钟电路的设计如 图 3-2所示。 图 3-2 复位电路 nts 10 对于时间要求不高的系统,使用内部振荡方式即可 (如图 3-1)。图中电容器 C1、 C2 起稳定振荡频率、快速起振的作用,因此注意电容的参数 (一般为 5 30PF),并保证电路的对称性选用正规厂家产品。 在 与引脚 X1和 X2相连接的电路 以及单片机内部时钟电路的作用下,单片机依程序将 P1.0P1.7 引脚拉低或抬高;拉低的引脚对应的 LED点亮,抬高的引脚对应的 LED熄灭。 与 P3 口相连的开关是用来选择控制各种花样流水灯所亮的方式 , p3.2处于开状态时,其流水花样 参见图表 3-3, p3.3控制的花样如图表 3-4, p3.4控制的如图表 3-5。(注:以下各表只是其完整花样中的一部分, 详 见附录) 表 3-3 P3.2 控制花样图 L7 L6 L5 L4 L3 L2 L1 L0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 表 3-3 P3.3 控制花样图 表 3-4 P3.4 控制花样图 L7 L6 L5 L4 L3 L2 L1 L0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 L7 L6 L5 L4 L3 L2 L1 L0 1 1 1 1 1 0 1 0 1 1 1 1 0 1 0 1 1 0 1 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 1 1 1 1 0 0 nts 11 4 多花样流水灯 软 件设计 4.1 程序功能 说明:以下程序代码只是全部代码的一部分,完整的程序代码 请参照 附录 1。 ORG 0000H ;单片机上电后从 0000H地址执行 AJMP START ;跳转到主程序存放地址处 ORG 0030H ;设置主程序开始地址 START: MOV SP,#60H ;设置堆栈起始地址为 60H MOV P3,#0FFH ;P3口初始定义 此段程序相当于给整个程序一个起始地点和初始化,伪指令 ORG可以改变汇编器的地址计数器初值,指示此语句后面的程序或数据块以 ORG后的数据为起始地址连续存放在程序存储器中。其具体表现在主程序开始地址为 0030H、堆栈指针指向 60H、 P3 口置 1状态,也就是 P3口控制的开关一开始是关闭状态。 ;检测开关状态 * Test_on: JNB P3.2,ON1 ;检测 p3.2开关状态 JNB P3.3,ON2 JNB P3.4,ON3 JMP Test_on ;循环等待检测 指令 JNB在此处的用途为,当 P3 口为 0状态时,跳转到相应的程序段,从而实现开关功能。若 P3 口不为 0,则执行指令 JMP,使此段程序来个短跳转,跳回到此段首地置,重新执行此段程序,从而实现了检测开关状态的作用。 ;开关导通 状态 * ON1: MOV DPTR ,#TAB1 ;指向表首地址 LOOP1: CLR A ;累加器清零 MOVC A,A+DPTR ;取数据表中的值 CJNE A,#0FFH,SHOW1 ;检查流水结束标志 JB P3.2,Test_on ;若 P3.2 口 为 1,重新检测开关 AJMP ON1 ;所有花样流完,则从头开始重复流 当检测到 P3.2为 0状态时,此段程序就开始被执行了。因为此程序的设计用的是查表法,而查表法用的是程序存储器,指令符号采用 MOVC的形式,所以就应该先让寄存器 DPTR指针指向表 TAB1 的首地址,同时还应将累加器清零,这样在用指令 MOVC A, A+DPTR 时就很容易的让我们看到所取的为表中的哪个数据了。在这里还用到了转移指令 CJNE A,#data, rel 此指令的意思为:当 A #data,则转移,执行( As+3+rel) PC, A=#data,程序顺序执行。该指令在此处的用途为检查流水结束标志,也就是当 A #0FFH 时执行 SHOW1这个程序段,当 A=#0FFH时,就说明程序已经执行完,则顺序执行下一指令。当将一个表中的数据都取完时,程序将重新检测开关,所以这里就用到了指令 JB bit, rel此指令意思为:若( bit) =1,则转移到( As+3+rel),否则程序顺序执行。当所有花样流完时,通过指令AJMP ON1使之实现循环功能。 ;显示程序 * SHOW1: MOV P1,A ;将数据送到 P1口 MOV R1,#0AH nts 12 D_LOOP1:ACALL DELAY ;调用延时子程序 DJNZ R1,D_LOOP1 INC DPTR ;取数据表指针指向下一数据 AJMP LOOP1 ;继续查表取数据 很明显这段程序是具体实现灯的显示的。由于与 P1 口相连的是 LED 显示灯,所以将 A中的状态送到 P1 口,就能实现表中各种状态在 LED 显示灯所对应的亮法了。此处还用到了一个小的循环,循环的是下面的延时程序,通过减一非零转移 DJNZ 和给出的数据来看,循环了 10 次,这样做是为了使延时更长一些,具体的有关延时方面的问题将在下面的延时程序中详细介绍。当延时结束后,就要接着去取下一个要取的数据,在这里为实现这一功能用到了指令 INC,在这里就不再详细介绍 它了 。 ;延时程序 * DELAY: MOV R7,#0FFH D1: MOV R6,#0FFH D2: DJNZ R6,D2 DJNZ R7,D1 RET 此延时程序段总的延时时间为 : 1+1+(2 255)+2 255+2 1us=130.818ms(注:在此处假设晶振为 12MHz,所以机器周期就等于 12 1/12=1us。 )根据以上显示程序段的说明,整个程序中使 LED灯点亮的时 间延时为 10 130.818ms=1.30818s。 4.2 程序流程图 以上流程图是用一个一个的模块来组成的, 具体每个模块中的内容请参照附录 1中的程序代码。 箭头的方向即为程序的执行顺序 。 在图左边的菱形框图中是一个 语句 判断 ,当 P3口为 1状态时,则返回到对 P3 口的初始化阶段,然后再对其进行开关检测,当 P3口不为 1状态时,则顺序执行程序。图的右边显然是实现程序循环的。 NO YES 开始 指针指向 60h 检测开关状态 P3.2=1 P3.3=1 P3.4=1 开关 P3 初始化 显示程序 将相应表中的数据送入 P1 口 调用延时程序 10 次 指针指向下一数据 图 4-1 流程图 nts 13 5 多花样流水灯的仿真 用 keil软件和 ledkey控件来进行其仿真 ,仿真结果如以下图片所示 : 图 5-1 仿真图 图 5-1给我们展示了 P3.2为开状态时,代码中表 1所显示出的一个瞬间状态 图 5-2 P3.3 为开关 仿真图 从图 5-2中根据图一的介绍,很容易知道这是当 P3.3 为开状态时,代码中表 2 显示的一个瞬间状态 以上只是代码在仿真时的一个状态显示, 而还有许多花样状态并未在此处列出。 nts 14 结 语 当上述程序之一编写好以后,我们需要使用编译软件 keil 对其编译,得到单片机所能识别的 十六 制代码,然后再用 ledkey控件 进行仿真 ,我们就看到 LED1 LED8的 “ 流水 ” 效果了。本文所给程序实现的 花样 功能比较 多 , 但方法简单, 旨在抛砖引玉,用户可以自己在此基础上扩展更复杂的流水灯控制,比如键盘控制流水花样、控制流水灯显示数字或图案等等。 nts 15 参考文献 1 徐爱钧,彭秀华 .单片机高级语言 C51应用程序设计 .北京:电子工业出版社, 2000 2 Keil Software_Cx51 Compiler User s Guide 09.2001 3 李建忠 .单片机原理及应用 .西安:西安电子科技大学出 版社, 2002 4 张义和,陈敌北,刘丹 .例说 8051.北京, 人民邮电出版社, 2006 5 李群芳, 肖看 .单片机原理接口及应用 .北京, 清华大学出版社, 2005 6 赵晓安 . MCS-51 单片机原理及应用 . 天津:天津大学出版社, 2001.3 7 夏继强 . 单片机实验与实践教程 . 北京:北京航空航天大学出版社 , 2001 8 王海义 .汇编语言 .北京:清华大学出版社, 2003 9 艾德才 .微型计算机原理与接口技术 .北京, 高等教育出版社, 2001 10 沈美明,温冬蝉 .IBM PC汇编 语言程序设计 .北京,清华大学出版社, 2002 nts 16 附录 1:花样流水灯的程序代码 ORG 0000H ;单片机上电后从 0000H地址执行 AJMP START ;跳转到主程序存放地址处 ORG 0030H ;设置主程序开始地址 START: MOV SP,#60H ;设置堆栈起始地址为 60H MOV P3,#0FFH ;P3口初始定义 ;检测开关状态 * Test_on: JNB P3.2,ON1 ;检测 p3.2 开关状态 JNB P3.3,ON2 JNB P3.4,ON3 JMP Test_on ;循环等待检测 ;开关导通状态 * ON1: MOV DPTR ,#TAB1 ;指向表首地址 LOOP1: CLR A ;累加器清零 MOVC A,A+DPTR ;取数据表中的值 CJNE A,#0FFH,SHOW1 ;检查流水结束标志 JB P3.2,Test_on ;若 P3.2 口为 1,重新检测开关 AJMP ON1 ;所有花样流完,则从头开始重复流 ON2: MOV DPTR ,#TAB2 ;指向表首地址 LOOP2: CLR A ;累加器清零 MOVC A,A+DPTR ;取数据表中的值 CJNE A,#0FFH,SHOW2 ;检查流水结束标志 JB P3.3,Test_on AJMP ON2 ;所有花样 流完,则从头开始重复流 ON3: MOV DPTR ,#TAB3 ;指向表首地址 LOOP3: CLR A ;累加器清零 MOVC A,A+DPTR ;取数据表中的值 CJNE A,#0FFH,SHOW3 ;检查流水结束标志 JB P3.4,Test_on AJMP ON3 ;所有花样流完,则从头开始重复流 ;显示程序 * SHOW1: MOV P1,A ;将数据送到 P1口 MOV R1,#0AH D_LOOP1:ACALL DELAY ;调用延时子程序 nts 17 DJNZ R1,D_LOOP1 INC DPTR ;取数据表指针指向下一数据 AJMP LOOP1 ;继续查表取数据 SHOW2: MOV P1,A ;将数据送到 P1口 MOV R2,#0AH D_LOOP2:ACALL DELAY ;调用延时子程序 DJNZ R2,D_LOOP2 INC DPTR ;取数据表指针指向下一数据 AJMP LOOP2 ;继续查表取数据 SHOW3: MOV P1,A MOV R3,#0AH ;将数据送到 P1口 D_LOOP3:ACALL DELAY DJNA R3,D_LOOP3 ;调用延时子程序 INC DPTR ;取数据表指针指向下一数据 AJMP LOOP3 ;继续查表取数据 ;延时程序 * DELAY: MOV R7,#0FFH D1: MOV R6,#0FFH D2: DJNZ R6,D2 DJNZ R7,D1 RET ;十六进制表示花样 * TAB1: DB 7FH, 0BFH, 0DFH, 0EFH, DB 0F7H, 0FBH, 0FDH, 0FEH, DB 3FH, 9FH, 0CFH, 0E7H, DB 0F3H,0F9H, 0FCH, 3FH, DB 0FH, 03H , 00H ,0BDH DB 0DBH ,0E7H, 42H , 00H DB 0CH ,0C3H , 1FH ,0F8H DB 0FFH TAB2: DB 0F8H, 0F5H , 0AFH , 5FH DB 0BCH, 0C0H , 3FH , 0FH DB 0F0H, 09H , 81H , 0C3H DB 0D7H, 0A5H , 7EH , 0BBH nts 18 DB 0DBH, 0E7H , 00H , 03H DB 01H , 3FH , 7FH DB 0FFH TAB3: DB 01H , 03H , 07H , 0FH DB 1FH , 3FH , 7FH , 3FH DB 5FH , 6FH , 77H , 7BH DB 7DH , 7EH , 55H , 0AAH DB 0E7H, 0C3H , 81H DB 00H DB 0FFH ;流水花样结束标志 0FFH END ;程序结束 nts 19 附录 2: 花样流水灯功能表 表 1 花样图 1 表 2 花样图 2 L7
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:基于AT89C51单片机和keilc软件的流水灯设计
链接地址:https://www.renrendoc.com/p-512600.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!