基于51单片机的花样流水灯设计

基于51单片机的花样流水灯设计
基于51单片机的花样流水灯设计

摘要

摘要

计算机技术的飞速发展和提高,把我们带入了崭新的时代,现在,计算机的应用已经深入到千家万户。单片微型计算机是制作在一块集成电路芯片上的计算机,简称单片机。单片机在现在社会有着广泛的应用,小到人们的日常电子用品,大到航天飞机、宇宙飞船,上面都有单片机的广泛应用。单片机具有体积小、功能强大、低功耗、应用广泛等特点。以AT公司的芯片AT89C51 单片机来实现流水灯的设计。本系统由单片机控制,I/O口接LED的负极,而LED的正极则直接与5V电源相连。通过I/O口输出的低电平点亮LED灯。因此可以通过控制单片机的I/O口的电平高低以达到控制LED,从而实现不同花样的流水灯的目的。

关键词:LED,单片机,高低电平变化

ABSTRACT

ABSTRACT

The rapid development of computer technology and improving, bring us to the new era, now, the application of computer has been deep into the thousands. Single chip microcomputer is made on an integrated circuit chip computer, hereinafter referred to as single chip microcomputer. SCM has been widely used in the present society, small to People's Daily electronic products, big to aerospace aircraft, spacecraft, above has the wide application of single-chip microcomputer. SCM has small volume, powerful function, low power consumption, wide application, etc. AT the company's chip AT89C51 single-chip microcomputer to realize the water lamp design. This system controlled by single chip microcomputer, I/O ports connect the LED the cathode, and LED the anode is directly connected to 5V power supply. Through the I/O port output low level light leds. So you can single chip microcomputer control through the I/O ports to control LED, the level of high and low so as to realize the purpose of the different pattern of flowing water light.

Key words:LED , MCU ,High and Low output leve

目录

第1章引言 (1)

1.1 研究背景及意义 (1)

1.2 国内外研究现状以及本系统的重点问题 (1)

1.3 本文章节安排 (2)

第2章系统设计方案论证 (3)

2.1 控制器模块方案论证 (3)

2.2 键盘模块方案 (4)

2.3 电源模块方案 (4)

第3章系统硬件设计方案 (5)

3.1 系统设计框图 (5)

3.2 硬件电路设计 (5)

3.2.1 电源电路 (5)

3.2.2 单片机89C52最小系统 (6)

3.2.3 按键电路 (13)

3.3.4 LED灯电路 (13)

第4章程序设计及软件仿真 (15)

4.1 软件设计框图 (15)

4.2 软件开发平台选择 (15)

4.3 软件系统功能模块 (16)

4.3.1 初始化模块 (16)

4.3.2 延时函数 (17)

4.3.3 定时器控制模块 (17)

4.3.4 键盘扫描模式 (17)

4.3.5 LED灯输出控制模块 (18)

4.4 程序调试仿真 (19)

4.4.1 仿真平台介绍 (19)

4.4.2 仿真测试 (19)

第5章硬件调试 (21)

5.1 硬件设计 (21)

5.2 硬件调试 (21)

5.2.1 下载功能调试 (21)

5.2.2 LED电路测试 (21)

5.2.3 模式选择功能调试 (22)

5.2.4 速度加减功能调试 (22)

5.2.5 复位电路调试 (22)

5.2.6 稳定性测试 (22)

总结 (23)

致谢 (25)

参考文献 (26)

附录 (27)

附录一:原理图 (27)

附录二:硬件实物 (28)

附录三:程序代码 (29)

第1章引言

第1章引言

1.1 研究背景及意义

现如今,随着集成化芯片的飞速发展,分立元件或数字逻辑电路正逐步被集成电路所取代,而单片机作为一种集成电路,其价格低廉,且可靠性强、控制简单但控制方法多样。

单片机在我们的日常生活和工作中无处不在、无处不有:家用电器中的电子表、洗衣机、电饭褒、豆浆机、电子秤;住宅小区的监控系统、电梯智能化控制系统;汽车电子设备中的ABS、GPS、ESP、TPMS;医用设备中的呼吸机,各种分析仪,监护仪,病床呼叫系统;公交汽车、地铁站的IC卡读卡机、滚动显示车次和时间的LED点阵显示屏;电脑的外设,如键盘、鼠标、光驱、打印机、复印件、传真机、调制解调器;计算机网络的通讯设备;智能化仪表中的万用表,示波器,逻辑分析仪;工厂流水线的智能化管理系统,成套设备中关键工作点的分布式监控系统;导弹的导航装置,飞机上的各种仪表等等。有资料表明:2007年全球单片机的产值达到151亿美元,我国单片机的销售额达到400亿元人民币,我国每年单片机的需求量达50至60亿片,是全球单片机的最大市场。可以说单片机已经渗透到了我们生活的各个领域。

1.2 国内外研究现状以及本系统的重点问题

单片机自从问世以来便得到了广泛的应用,单片机以其体积小、重量轻、功耗低、功能强、数据在芯片内部传输速度较快、可靠性高、程序运行速度快、抗干扰能力强等优势迅速得到了人们的青睐,被广泛应用于测控系统、数据采集、智能仪器仪表、机电一体化产品、智能接口电路、计算机通信和单片机多级系统等领域。而在流水灯的控制系统中,单片机更是取代了传统流水灯的分立元件设计,成为该系统的核心部件。传统设计的流水灯,电路复杂,且可靠性较差,并且花样单一;而单片机控制的流水灯,花样纷繁多样,且易于修改;硬件电路比分立元件的设计简单很多,成本也极为低廉。因此,单片机控制的流水灯必将在流水灯领域掀起一场大革命。

电子科技大学成都学院课程设计

本文中所设计的系统为基于51单片机的花样流水灯控制系统。该系统由一块单片机通过C语言编程来实现控制功能。可靠且灵活性高、适用范围广、且变换的花样繁多,同时也适用于霓虹灯以及交通灯等领域。本文将详细介绍该对该系统的设计。

1.3 本文章节安排

第1章介绍了论文的研究背景及意义,对主要研究的技术指标和章节安排进行了说明。

第2章对本系统的设计方案的各个设计模块进行比较论证,得到了适合本文的设计方案。

第3章提出了系统设计框图以AT89S52单片机为主控制器,通过键盘来设控制流水灯的模式与流水灯的快慢。

第4章根据设计方案,设计了软件设计框图,并对各个模块的主要算法进行说明。

第5章利用protues进行软硬件设计仿真,并进行实物制作,验证实物的性能指标。

第6章对本文研究的内容和工作进行总结,查找不足并作出展望。

第2章系统设计方案论证

第2章系统设计方案论证

2.1 控制器模块方案论证

方案一:使用FPGA,让第一个灯先亮,然后通过移位,依次点亮其他的灯,便形成了流水灯。初始状态时,所有灯都不亮,每来一个时钟脉冲CLK,计数器就加1.每当判断出计数器中的数值达到25000000时,就会点亮一个灯,并进行移位,FPGA输出的数据就应该先是10000000,隔一秒就编程110000000......一直变化到11111111,这样就依次点亮所有的灯,也就形成了流水灯。而当当8个灯都被点亮时,需要一个操作使得所有的灯都恢复为初始状态,即:灯都不亮,然后再一次流水即可。如果是右移位,就会出现右流水现象。反之就是左流水。

方案二:使用单片机,将LED的正极接电源,负极接单片机的I/O,然后当单片机的I/O口输出低电平时,即点亮LED灯,然后通过移位指令让其他LED 依次点亮,即形成流水效果。若是左移指令,即为左流水;右移指令则为右流水。

在数控方面,单片机会优于CPLD或FPGA器件,因为此处只是用于流水灯控制,不需要太高的速度以及精确度,且上述两种期间控制起来也比单片机麻烦,因此没有必要选用价格昂贵的CPLD和FPGA器件。而单片机则不同,因为单片机在技术领域已经相当成熟,市面上流通有型号与品牌繁多的单片机,各种参考文献也非常多,且价格低廉,只需要几元人民币,因此用单片机控制会较为划算。其次,单片机的编程方式较为多样,可选用普及度很高的C语言或汇编语言进行编程,在这一点上也优于CPLD和FPGA器件。因此,最终决定采取单片机控制的方案。

由于单片机的高电平的电位为大于2V,低电平电位为小于0.8V,而供电的电源为5V,且一般的LED的耐压为3-4V,因此,若直接将I/O口与LED相连,有可能会烧坏LED,因此需要串联分压电阻。阻值大约为220-300Ω。

考虑到PCB的布局布线,因此打算采用P0口和P2口来驱动LED灯。但因为P0口的驱动能力较弱,因此需要在P0口外部提供的强上拉。因此采取接阻值为10kΩ的排阻的方法来提供这个强上拉。

电子科技大学成都学院课程设计

2.2 键盘模块方案

方案一:采用独立式按键电路,每个按键单独占有一根I/O接口线,每个I/O 口的工作状态互不影响,此类键盘采用端口直接扫描方式。缺点为当按键较多时占用单片机的I/O口数目较多。

方案二:采用标准4×4键盘,此类键盘采用矩阵式行列扫描方式,优点是当按键较多时可降低占用单片机的I/O口数目。

本系统只需要三个按键,分别为控制模式按键,流水灯变换速度加,流水灯变换速度减,因此本系统采用独立式按键即可满足系统要求,降低开发难度和硬件成本。

2.3 电源模块方案

由于系统的单片机和LED灯的电压都只需要5V,不需要多种电压,因此直接采用市场上现有的220V转5V的电源,通过DC线连接系统的火牛头为系统供电。

第3章系统硬件设计方案

第3章系统硬件设计方案

3.1 系统设计框图

3.2 硬件电路设计

3.2.1 电源电路

本设计需要用到5V供电,考虑采用USB转DC电源线接5V,1A开关电源以提供稳定的电压,加入一个6脚自锁开关控制电路通断。单片机的40脚接至VCC,20脚接至GND,电路图如图3-2所示,图中J1为DC火牛头。

电子科技大学成都学院课程设计

图3-2 电源电路图

3.2.2 单片机89C52最小系统

本系统采用的核心控制模块是常用的单片机型号:89C52。下面简要介绍该单片机的特点和使用方法。

3.2.2.1 单片机简介

1.单片机内部结构

MCS-51结构的单片机内部采用模块式结构,其结构组成框图如图3-3所示。

由图可见,该系列单片机主要由随机数据存储器(RAM)、程序存储器(ROM)、中央处理器(CPU)、输入输出口、串行口、内置的定时器/计数器、中断控制、总线控制、以及时钟电路通过总线连接而成。

CPU是单片机内部的核心器件,分为运算器和控制器两大部分,此外还有面向控制的未处理功能。

STC89C52中有512字节的随机数据存储器(RAM),可通过片外扩展来提升RAM容量。

存储器(ROM),是用来存储程序的存储器,在STC89C52中集成了8K字节的FLASH存储器,如果片内的容量不够,还可扩展至64KB。

中断系统:具有5个中断源,2级中断优先权。

定时器/计数器:片内集成了3个16位的定时器/计数器T0、T1、T2,具有四种工作方式

串行口:一个全双工异步串行口,具有四种工作方式,可进行串口通信,扩展并行I/O口,还可以与多个单片机相连以构成多级系统。

第3章系统硬件设计方案

特殊功能寄存器(SFR):共有26个特殊功能寄存器,用于CPU对片内各功能部件进行管理和监视。特殊功能寄存器实际上是片内各个功能部件的控制寄存器和状态寄存器,这些特殊功能寄存器映射在片内RAM区80H-FFH的地址区内。

图3-3 MCS-51内部结构

2.STC89C52引脚结构

目前,STC89C52多采用DIP-40封装,即双列直插,共40个引脚的封装方式。此外,还有44引脚的PLCC和LQFP封装(都为表贴元件)。

其中40个引脚根据功能的不能可分为3类:

(1)、电源及时钟引脚——VCC、GND;XTAL1、XTAL2。

(2)、控制引脚——PSEN非、ALE/PROG非、EA非/Vpp、RST(即复位)。

(3)、I/O口引脚——P0、P1、P2、P3,为4个8为I/O口的外部引脚。

3.单片机时钟介绍

单片机执行的指令均是在CPU控制的时序控制电路的控制下进行的,各种时序均与时钟周期有关。

(1)、时钟周期

时钟周期是单片机时钟控制信号的基本时间单位。若时钟晶体的振荡频率为fosc,则时钟周期Tosc=1/fosc.如fosc=12MHz,Tosc=83.3ns。

电子科技大学成都学院课程设计

(2)、机器周期

CPU完成一个基本操作所需要的时间称为机器周期。单片机中通常把执行一条指令的过程分为几个机器周期。每个机器周期完成一个基本操作,如取指令、读或写数据等。STC89C52单片机每12个时钟周期为一个机器周期。即Tcy=12/fosc.若f osc=12MHz,Tcy=1us。

STC89C52单片机的一个机器周期包括12个时钟周期,分为6个状态,S1-S6。每个状态又分为两拍:P1和P2。因此,一个机器周期中的12个时钟周期表示为S1P1、S1P2、S2P1、S2P2、...、S6P2。

(3)、指令周期

指令周期是执行一条指令所需的时间。STC89C52单片机中指令按字节来分,可分为单字节、双字节、三字节指令,因此执行一条指令的时间也有所不同。对于简单的单字节指令,取出指令立即执行,只需要一个机器周期的时间。而有些复杂的指令则需要两个或多个指令周期。

从指令的执行时间看,单字节和双字节指令一般为单机器周期和双机器周期,三字节指令是双机器周期,只有乘除法指令占用4个机器周期。

3.2.2.2 复位电路设计

(1)、复位操作

当STC89C52单片机进行复位操作时,PC寄存器初始化为0000H,使STC89C52单片机从程序存储器的0000H单元开始执行程序。除了进入系统的正常初始化之外,当程序运行出错或者操作错误使得系统处于“死锁”状态时,按复位键使得RST脚为高电平,使STC89C52单片机拜托当前状态而重启程序。出PC寄存器外,复位操作还对其他一些寄存器有影响,例如SP、Acc、PSW、DPTR 等。

(2)、复位电路

复位电路就是把电路恢复到起始状态的电路。能够在系统上电时给予复位信号,并且会一直等到系统的电源不再改变为止才会撤离所给的复位信号,这就是复位电路的功能所在。复位后的CPU的主要特征是各IO口呈现高电平。对于单片机而言基本的复位操作是将单片机的复位引脚RST上给定一个高电平信号并让该信号维持在2个机器周期以上,便可触发系统复位中断从而将系统复位。单

第3章系统硬件设计方案

片机系统的复位方式有:按键复位和上电复位。

首先是按键复位:复位电路最简单的方式就是通过按键复位直接在单片机复位引脚RST上加入高电平。单片机的复位引脚接至电阻R1一端,电阻R1另外一端接地。电路如下所示。常用的途径是在复位引脚端和正电压之间安装复位按键。当给一个力使按键被压迫向下,单片机的复位方位就会保持VCC。假如保持按下10ms即可让系统实现复位,如图3-4所示。

图3-4 按键复位图3-5 上电复位图3-6 混合模式第二个是上电复位:上电复位的电路图如图3-5所示,具体实现方式如下:系统上电瞬间单片机复位引脚RST电压时间变化曲线如图3-7所示。从曲线上易得当系统在一刹那完成上电,根据电容工作原理特性,它两端的Uc1不可能实现迅猛的变化,故电源电压全部加到R1上,然后电容C1开始充电,时间常数T=R1*C1,此时电容电压逐渐增加,R1两端电压逐渐降低,如果R1两端电压从高电平到低电平持续时间达到2个机器周期,即可实现单片机复位。

电子科技大学成都学院课程设计

图3-7 U rst电压时间曲线

在本设计中采用了按键复位和上电复位的两种模式(如图3-6所示)上电复位完成系统初始化,同时增加的手动按键复位可以方便调试使用。

3.2.2.3 时钟电路设计

时钟电路用于产生单片机工作时所必需的控制信号,STC89C52单片机的内部电路正是在时钟电路的控制下严格按时序执行指令进行工作的。

在执行指令时,CPU首先到程序存储器中取出需要执行的指令操作码,然后译码,并由时钟电路产生一系列控制信号完成指令所规定的操作。CPU发出的时序信号有两类,一类用于对片内各个功能部件的控制;另一类用于对片外存储器或I/O口的控制。

(1)、内部时钟方式

STC89C52内部有一个用于构成振荡器的高增益反向放大器,它的输入端为芯片的XTAL1脚,输出端为XTAL2脚。这两个引脚跨界石英晶体和微调电容,构成一个稳定的自激振荡器。电路的电容C1和C2通常选择30pF。该电容的大小会影响振荡器频率的高低,振荡器的稳定性和起振的快速性。晶体振荡频率的范围通常是1.2-12MHz。STC89C52通常采用12MHz的石英晶体。晶体的频率越高,系统的时钟频率越高,单片机的运行速度也就越快。但运行速度快对存储器的速度要求就越高,对PCB电路板的工艺要求也就越高,即要求线间的寄生电容要小。晶体和电容应尽可能安装得离单片机近一些以减少寄生电容,更好地保证振荡器稳定、可靠地工作。为了提高温度稳定性,应采用温度稳定性好的电容。

第3章系统硬件设计方案

(2)、外部时钟方式

外部时钟方式使用现成的外部振荡器产生脉冲信号,通常用于多片STC89C52单片机同时工作,以便于多片单片机之间的同步,一般为地狱12MHz 的方波。外部时钟源直接接到XTAL1端,XTAL2端悬空。

(3)、时钟信号的输出

当使用片内振荡器时,XTAL1、XTAL2引脚还能为应用系统中的其他芯片提供时钟,但需要增加驱动能力。

(4)、晶振电路

在单片机最小系统晶振的作用是给单片机输入时钟信号,这个时钟信号就是单片机的工作速度。单片机工作的最小时间计量单位就是由晶振决定的。电路图如图3-4所示。

晶振电路电容选择的原则为:

(1)、C1,C2,因为每一种晶振都有各自的特性,所以最好按制造厂商所提供的数值选择外部元器件。

(2)、在误差允许的区域内,C1和C2值都是越小,实现的功能就越精确,如果C1和C2值比正常数值大时,可能会使振荡器更加稳定,可是也会增加响应的时间。

图3-8晶振电路

本系统的单片机最小系统的时钟电路采用图3.8所示的晶振电路,其中晶振选用12MHz石英晶体振荡器,接至单片机的XTAL1和XTAL2脚,两个电容选用30p瓷片电容。

通过上述具体方案的设计论证,本系统设计了如图3-9所示的最小系统。

电子科技大学成都学院课程设计

图3-9 单片机最小系统

3.2.2.4 程序下载电路

在实际制作实物的还需要增加一个下载电路模块,方便调试下载。

程序下载电路中包含一个4pin排针,分别接至Vcc、单片机的10脚(RXD/P3.0)、单片机的11脚(TXD/P3.1)、GND。在下载程序时,需采用STC 公司的USB下载器,下载器的VCC脚接排针VCC脚;下载器的RXD脚接排针的TXD脚;下载器的TXD脚连接排针的RXD脚;下载器的GND脚接排针的GND脚,然后用STC公司的ISP软件选择keil编译生成的hex文件,即可将程序烧写到单片机中。电路如图3-10所示。图中P2即为4pin排针。

图3-10 下载接口电路

第3章系统硬件设计方案

3.2.3 按键电路

按键选择弹片开关,电路由3个弹片开关组成。3个弹片开关的一段依次接至单片机的1(P1.0)、2(P1.1)、3(P1.3)脚;另一端共地。功能依次为模式切换、加快运行速度、减慢运行速度,电路如图3-11所示。

图3-11 按键电路

3.3.4 LED灯电路

将16个LED的负极依次与单片机的P1口和P2口的16个I/O口相接,正极则与5V电源相接。但由于直接相接可能会烧坏发光二极管,因此需要串联电阻。限流电阻的阻值根据设计经验及现有电阻取值为220Ω.由于为了便于设计PCB电路板时布局布线,故此处的电阻采用贴片0805封装。

此外,由于P0口的驱动能力较弱,无法直接驱动8个发光二极管,故选择在P0口的I/O和发光二极管的负极之间接入10kΩ的共阳排阻以提供一个强上拉。电路图如图3-12中P1即为10kΩ共阳排阻。

电子科技大学成都学院课程设计

图3-12 LED电路

第4章程序设计及软件仿真

第4章程序设计及软件仿真

4.1

如图

4.2

软件设计的开发平台采用美国keil Software公司出品的Keil uvision4。Keil uvision4是美国keil software公司出品的51系列兼容单片机C语言软件开发系统,与汇编语言相比,C语言在功能上、结构性、可读性、可维护性上有明显的又是,

电子科技大学成都学院课程设计

因而易学易用。keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境将这些部分组合在一起。运行keil软件需要win98、NT、win2000、winXP等操作系统。若使用C语言进行编程,keil将是不二之选,即使是使用汇编语言编程,keil方便易用的集成环境以及强大的软件仿真调试工具也能让开发者事半功倍。

4.3 软件系统功能模块

本系统采用结构化模块程序设计,所谓“模块”,实质上就是具有一定功能、相对独立的程序段。在编程过程中首先将所要完成的各个功能分别按模块编写和调试,所有模块调试成功以后,再将各个模块连接整合在一起形成系统。

模块化程序设计的主要特点是:单个模块比一个完整的程序更容易编写、查错和测试;模块化程序可以实现共享,一个模块化程序可被多个任务在不同的条件下调用;把输入/输出封装起来,可以使程序减少不必要的修改;这样的设计有利于程序代码的优化和共享,而且便于设计、调试和维护,可以增强系统的可靠性。

本系统的主要模块有:初始化模块、延时模块、定时器控制模块、键盘扫描模式、LED灯输出控制模块,下面依次简要介绍。

4.3.1 初始化模块

根据本系统的设计要求,当系统上电之后,LED灯并不亮,只有进入模式切换之后才有变换,因此需要对系统的控制参数,比如模式标志位、速度变量进行初始化,其代码如下:

void InitialCPU(void)

{RunMode = 0x00;TimerCount = 0;

SystemSpeedIndex = 10;

Delay1ms(500);

SetSpeed(SystemSpeedIndex);

}

51单片机32位流水灯

51单片机32位流水灯 摘要:随着电子工业的发展,电子元器件急剧增加,C51单片机应用非常广泛。本文介绍了一种简易的单片机应用的设计思路及硬件结构。首先研究了51单片机流水灯的基本原理,画出整机框图,接着提出系统的性能指标,计算确定电路形式和元器件参数,然后根据原理图通过Simulink软件进行建模仿真,验证系统的可行性。 关键字:C51;LED;S imulink软件;Protel99SE; 1引言 1.1设计背景及意义 目前,随着电子工业的发展,电子元器件急剧增加,电子元器件的适用围也逐渐广泛起来,在我们的生活当中有许多地方要应用中到灯光,因此,设计全自动,可靠,安全,便捷的灯光效益具有极大的现实必要性。 2.系统概述 该系统主要有C51单片机,LED灯,晶振等。 2.1 设计目的 (1)掌握简易流水灯的工作原理,以及程序的编写等等。 (2)进一步熟悉和掌握常用数字电路元器件的应用; (3)学习数字电路仿真、调试、测试、故障查找和排除的方法、技巧; (4)培养实践技能,提高分析和解决实际问题的能力。 2.2设计容及要求 1、51单片机x1、40Pin 座x1 2、LED x32(建议用5mm 七彩的) 3、电阻470Ωx33 4、晶振12MHz x1 5、10uf 电解电容x1、谐振瓷片电容30pf x2 6·其他的可以看自己的爱好去加 7、其实也可以不用那么多的电阻,用几个排阻就OK了。

2.2电路原理图

2.2重要元器件介绍

(1)C51单片机 (2)12MHZ晶振分为两种封装形式: SMD3225产品详细参数: 频率围:12 ~ 54 MHz 频率公差(25℃)± 10ppm± 30 ppm, or specify 在工作温度围的频率稳定度:± 10ppm± 30 ppm, or specify 工作温度围:- 20 ~ +70 oC, or specify 并联电容(C0):7 pF Max. 驱动级:1~200μW(100μW typical) 负载电容:Series, 8 pF, 12 pF, 15 pF, 20pF, or specify 老化(25℃):± 3 ppm / year Max. 储存温度围:- 40 ~ + 85 oC SMD5032产品详细参数: 频率围:12 ~ 54 MHz 频率公差(25℃)± 10ppm± 30 ppm, or specify 在工作温度围的频率稳定度:± 10ppm± 30 ppm, or specify 工作温度围:- 20 ~ +70 oC, or specify 并联电容(C0):7 pF Max. 驱动级:1~200μW(100μW typical) 负载电容:Series, 8 pF, 12 pF, 15 pF, 20pF, or specify 老化(25℃):± 3 ppm / year Max. 储存温度围:- 40 ~ + 85 oC 3实物

单片机课程设计报告--心形流水灯

井冈山大学 机电工程学院 单片机 课程设计报告 课程名称:单片机 设计题目:心形流水灯 姓名:玉红 专业:生物医学工程 班级:11级医工本一班 学号:110615017 指导教师:王佑湖 2013年11月27日

目录 1引言 (2) 1.1设计任务 (2) 1.2设计要求……………………………………………… ..2 2 课题综述 (2) 2.1课题的来源 (2) 2.2面对的问题 (2) 3 系统分析 (2) 3.1 STC89C52单片机引脚图及引脚功能介绍 (2) 4 系统设计 (4) 4.1硬件设计 (4) 4.1.1硬件框图 (4) 4.1.2硬件详细设计 (5) 4.2 软件设计 (5) 4.3 硬件原理图 (6) 4.4 元件清单 (6) 4.5 硬件焊接

图 (6) 4.6 代码编写 (7) 5心得体会 (7) 6致 (8) 参考文献 (8) 1 引言 单片机课程设计主要是为了让我们增进对STC89C51单片机电路 的感性认识,加深对理论方面的理解。了解软硬件的有关知识,并掌握软硬件设计过程、方法及实现,为以后设计和实现应用系统打下良好基础。另外,通过简单课题的设计练习,使我们了解必须提交的各项工程文件,达到巩固、充实和综合运用所学知识解决实际问题的目 的。 1.1设计任务 设计一个单片机控制的流水灯系统 1.2设计要求 (1)32个LED灯; (2)可实现多种的亮灯(如左循环,右循环,间隔闪,90度交叉闪等)。 2 课题综述

2.1 课题的来源 当今社会,这种由单片机芯片控制各种硬件工作的技术也日益成熟,并普及在交通、化工、机械等各个领域。而流水灯这项技术在生活中的应用更是广泛,较为贴近生活。而流水灯控制的设计所需要的知识也正好吻合了我们本学期对于单片机这门课程的学习,所以设计流水灯控制的这个课题让我们对知识的学习和巩固都有了进一步的加深。 2.2 面对的问题 这次课程设计是通过STC89C52位单片机实现。但面对的问题却是两方面的:一个是软件的设计,也就是实现流水灯控制功能的程序编辑;另一个是硬件的设计,需要我们自己连接、焊接电路板。而更为严峻的就是设计的最后还要将软硬件相结合。 3 系统分析 3.1 STC 89C52单片机引脚图及引脚功能介绍 本次设计的目的在于加深STC89C52单片机的理解,首先来简单认识一下,它的引脚如图3-1所示: 图3.1 STC89C52

C51单片机实行流水灯程序

#include #define LEDPort P1 unsigned char LED01_[9]= {0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,}; //方式0,方式1灯开关数组。unsigned char LED23_[5]= {0xFF,0x7E,0xBD,0xDB,0xE7}; // 方式2,方式3灯开关数组。 unsigned char LED4_[16]={0XFF,0X7F,0X3F,0X1F,0X0F,0X07,0X03,0X01,0X00,0X01,0X03,0X07,0X0f,0X1 f,0X3f,0X7f}; //方式4 unsigned char LED56_[8]={0XFF,0X3F,0X9F,0XCF,0XE7,0XF3,0XF9,0XFC}; unsigned char LED7_[]={0X0F,0XF0,0X33,0XCC,0X3C,0XC3,0XFF}; unsigned char TAB[9]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80};//定义断码表。 unsigned char i=0,j=9; //数据选择计数。 unsigned char Mode=0; //模式选择,默认为模式0。 unsigned char Count=1; //定时器中断计数。 unsigned char Delay=1; //延迟计数,通过改变改数值改变灯状态延迟时间。 //灯延迟时间=uc_Dalay*定时器溢出时间。 void main() { P2=0X3F; TMOD=0x01; //定时器0模式一。 TH0=0x3C; TL0=0xB0; //溢出时间:50ms。 TR0=1; //定时器0开启。 IT0=1; //外部中断0下降沿触发。 IT1=1; //外部中断1下降沿触发。

51单片机流水灯C语言源代码

#include #include #define uint unsigned int #define uchar unsigned char uchar z=50,e=0x00,f=0xff; uchar code table1[]={ 0x80,0xc0,0xe0,0xf0, 0xf8,0xfc,0xfe,0xff}; uchar code table2[]={ 0x7f,0x3f,0x1f,0x0f, 0x07,0x03,0x01,0x00}; uchar code table3[]={ 0x01,0x03,0x07,0x0f, 0x1f,0x3f,0x7f,0xff}; uchar code table4[]={ 0xe7,0xdb,0xbd,0x7e, 0xbd,0xdb,0xe7,0xff}; uchar code table5[]={ 0xe7,0xc3,0x81,0x00, 0x81,0xc3,0xe7,0xff}; uchar code table6[]={ 0x7e,0x3c,0x18,0x00, 0x18,0x3c,0x7e,0xff}; void delay(uchar); void lsd1(); void lsd2(); void lsd3(); void lsd4(); void lsd5(); void lsd6(); void lsd7(); void lsd8(); void lsd9(); void lsd10(); void lsd11(); void lsd12(); main() { while(1) { lsd1(); lsd2(); lsd3(); lsd4();

最经典的51单片机经典流水灯汇编程序

单片机流水灯汇编程序设计 开发板上的8只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。 程序A: ;用最直接的方式实现流水灯 ORG 0000H START:MOV P1,#01111111B ;最下面的LED点亮 LCALL DELAY;延时1秒 MOV P1,#10111111B ;最下面第二个的LED点亮 LCALL DELAY;延时1秒 MOV P1,#11011111B ;最下面第三个的LED点亮(以下省略) LCALL DELAY MOV P1,#11101111B LCALL DELAY MOV P1,#11110111B LCALL DELAY MOV P1,#11111011B LCALL DELAY MOV P1,#11111101B LCALL DELAY MOV P1,#11111110B LCALL DELAY MOV P1,#11111111B ;完成第一次循环点亮,延时约0.25秒 AJMP START ;反复循环 ;延时子程序,12M晶振延时约250毫秒 DELAY: MOV R4,#2 L3: MOV R2 ,#250 L1: MOV R3 ,#250 L2: DJNZ R3 ,L2 DJNZ R2 ,L1 DJNZ R4 ,L3 RET END 程序B: ;用移位方式实现流水灯

ajmp main ;跳转到主程序 org 0030h ;主程序起始地址 main: mov a,#0feh ;给A赋值成11111110 loop: mov p1,a ;将A送到P1口,发光二极管低电平点亮 lcall delay ;调用延时子程序 rl a ;累加器A循环左移一位 ajmp loop ;重新送P1显示 delay: mov r3,#20 ;最外层循环二十次 d1: mov r4,#80 ;次外层循环八十次 d2: mov r5,#250 ;最内层循环250次 djnz r5,$ ;总共延时2us*250*80*20=0.8S djnz r4,d2 djnz r3,d1 ret end 51单片机经典流水灯程序,在51单片机的P2口接上8个发光二极管,产生流水灯的移动效果。 ORG 0 ;程序从0地址开始 START: MOV A,#0FEH ;让ACC的内容为11111110 LOOP: MOV P2,A ;让P2口输出ACC的内容 RR A ;让ACC的内容左移 CALL DELAY ;调用延时子程序 LJMP LOOP ;跳到LOOP处执行 ;0.1秒延时子程序(12MHz晶振)=================== DELAY: MOV R7,#200 ;R7寄存器加载200次数 D1: MOV R6,#250 ;R6寄存器加载250次数 DJNZ R6,$ ;本行执行R6次 DJNZ R7,D1 ;D1循环执行R7次 RET ;返回主程序

基于单片机的心形流水灯毕业设计论文

课程设计(论文)说明书 题目:心形流水灯 院(系):信息与通信学院 专业:通信工程 学生姓名: 学号: 指导教师: 职称:讲师 2012年12 月1日

摘要 本论文基于单片机技术与单片机芯片AT89S51芯片功能和C语言程序,实现心形流水灯的多种亮与灭的循环。首先,我们了解单片机的一些技术,了解了单片机芯片AT89S51的一些功能;然后结合C语言编程;最后将它们运用到实际的电路,使心形LED灯实现多种亮灭方法。本论文介绍关于流水灯的运用和单片机技术;然后介绍芯片AT89S51;最后介绍运用到的相关软件.矚慫润厲钐瘗睞枥庑赖。 关键词:单片机;流水灯;C语言;

Abstract This paper Based on the single chip microcomputer and single chip microcomputer chip AT89S51 chip function and C language program,Realization of flowing water light heart a variety of light and the cycle of destruction。primarily,We know some of the single chip microcomputer technology,Understanding of the single chip microcomputer chip AT89S51 of some functions, Then based on the C language programming; Finally they are applied to the practical circuit, Make heart LED lamp achieve a variety of light out method. This paper introduces about the use of flowing water light and single chip microcomputer; and then introduced chip AT89S51; At the end of this paper applied to software.聞創沟燴鐺險爱氇谴净。Key words:micro-computer;light water ;C programming language残骛楼諍锩瀨濟溆塹籟。

(完整版)51单片机流水灯程序

1.第一个发光管以间隔200ms 闪烁。 2. 8 个发光管由上至下间隔1s 流动,其中每个管亮500ms, 灭500ms 。 3. 8 个发光管来回流动,第个管亮100ms 。 4. 用8 个发光管演示出8 位二进制数累加过程。 5. 8 个发光管间隔200ms 由上至下,再由下至上,再重复一次,然后全部熄灭再以300ms 间隔全部闪烁 5 次。重复此过程。 6. 间隔300ms 第一次一个管亮流动一次,第二次两个管亮流动,依次到8 个管亮,然后重复整个过程。 7. 间隔300ms 先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8 个全部闪烁 3 次;关闭发光管,程序停止。 1 #include #define uint unsigned int sbit led 仁P"0; void delay(); void main() { while(1) { led1=0; delay(); led1=1; delay(); } } void delay() {

uint x,y; for(x=200;x>0;x--) for(y=100;y>0;y--); } #include #include #define uint unsigned int #define uchar unsigned char sbit p P1A0; uchar a; void delay(); void main() { a=0xfe; P1=a; while(1) { a=_crol_(a,1); delay(); P1=a; delay(); } } void delay() { uint b; for(b=55000;b>0;b--); } 3 #include #include #define uint unsigned int #define uchar unsigned char void delay() { uint x,y; for(x=100;x>0;x--) for(y=110;y>0;y--); } void main() { uchar a,i; while(1) a=0xfe; for(i=0;i<8;i++) { P1=a; delay(100); a=_crol_(a,1); } a=0x7f; for(i=0;i<8;i++) { P1=a; delay(100); a=_cror_(a,1);

51单片机流水灯实验报告单片机实验报告流水灯

51单片机流水灯试验 一、实验目的 1.了解51单片机的引脚结构。 2.根据所学汇编语言编写代码实现LED灯的流水功能。 3.利用开发板下载hex文件后验证功能。 二、实验器材 个人电脑,80c51单片机,开发板 三、实验原理 单片机流水的实质是单片机各引脚在规定的时间逐个上电,使LED灯能逐个亮起来但过了该引脚通电的时间后便灭灯的过程,实验中使用了单片机的P2端口,对8个LED灯进行控制,要实现逐个亮灯即将P2的各端口逐一置零,中间使用时间间隔隔开各灯的亮灭。使用rl或rr a实现位的转换。 A寄存器的位经过rr a之后转换如下所示: 然后将A寄存器转换一次便送给P2即MOV P2,A便将转换后的数送到了P2口,不断循环下去,便实现了逐位置一操作。

四、实验电路图 五、通过仿真实验正确性

代码如下:ORG 0 MOV A,#00000001B LOOP:MOV P2,A RL A ACALL DELAY SJMP LOOP DELAY:MOV R1,#255 DEL2:MOV R2,#250 DEL1:DJNZ R2,DEL1

DJNZ R1,DEL2 RET End 实验结果: 六、实验参考程序 #include #define uchar unsigned char #define uint unsigned int uchar table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

sbit P00=P0^0; sbit P01=P0^1; void delay(uchar t) { uchar i,j; for(i=0;i

(完整word版)51单片机流水灯

51单片机的流水灯控制 班级:100712 姓名:全建冲 学号:10071047

一、设计要求 用51单片机设计一个流水灯的控制方案,要求采用定时器定时,利用中断法控制流水灯的亮灭,画出电路图和程序流程图,写出程序代码以及代码注释。 二、电路原理图 原理图分析: 本原理图采用STC89S52单片机控制8个LED灯,其中8个LED灯的负极接单片机的P1端口,正极通过1KΩ排阻连接到电源上。原理图中还给出了晶振与复位端,以保证控制器的稳定工作。

三、程序流程图

四、程序代码及注解 1.非中断定时器控制 #include #include//包含了_crol_函数的头文件 #define uchar unsigned char #define uint unsigned int uint i=0; uchar a=0xfe; void main() { TMOD=0x01;//设置工作方式为定时器0,16位手动重装初值 TH0=(65536-46080)/256;//50毫秒定时赋初值 TL0=(65536-46080)%256; TR0=1;//启动定时器0 while(1) { If(TF==1)//读溢出标志位 { TH0=(65536-46080)/256;//重新赋初值 TL0=(65536-46080)%256;

i++; if(i==10)//500毫秒定时 { i=0; P1=a;//P1端口赋值 a=_crol_(a,1);//循环左移 } TF=0;//清除定时器溢出标志 } } } 程序分析:本程序采用非中断定时器法控制流水灯,核心语句在于读取标志位TF位,TF为定时器溢出标志位,溢出时硬件自动置一,所以循环读取标志位以判断定时器是否溢出,而每次溢出需要手动清零,否则定时器无法再次溢出,利用标志i读取10次即可达到500毫秒的定时。另外需要注意的是单片机晶振为11.0592MHz,所以计时一个数的时间为12/11.0592=1.085us,故定时50毫秒的计数为50000/1.085=46080。 2.中断定时器控制 #include

基于51单片机心形流水灯C语言源程序

基于51单片机心形流水灯C语言源程序

#include unsigned int x,y; void delayms(unsigned int z) //延时 { unsigned int i,j; for(i=z;i>0;i--) for(j=150;j>0;j--); } void On_all() //开启所有灯 { P0=0x00; P1=0x00; P2=0x00; P3=0x00; } void Off_all()//关闭所有灯 { P0=0xff; P1=0xff; P2=0xff; P3=0xff; } void ls()//正向流水灯 { P0=0x00; delayms(400); P2=0x00; delayms(400); P3=0x00; delayms(400); P1=0x00; delayms(400); P0=0x01; delayms(50);

P0=0x04; delayms(50); P0=0x08; delayms(50); P0=0x10; delayms(50); P0=0x20; delayms(50); P0=0x40; delayms(50); P0=0x80; delayms(50); P0=0x00; P2=0x01; delayms(50); P2=0x02; delayms(50); P2=0x04; delayms(50); P2=0x08; delayms(50); P2=0x10; delayms(50); P2=0x20; delayms(50); P2=0x40; delayms(50); P2=0x80; delayms(50); P2=0x00; P3=0x80; delayms(50); P3=0x40; delayms(50); P3=0x20; delayms(50); P3=0x10; delayms(50); P3=0x08; delayms(50); P3=0x04; delayms(50);

基于51单片机的流水灯

基于51单片机的流水灯 利用51单片机P0口实现8个LED(发光二极管)的流水灯控制。可以使用Proteus软件进行仿真调试。 1 硬件设计 利用单片机的PO口控制8个LED,其电路如下图所示。 在桌面上双击图标,打开ISIS 7 Professional窗口(本人使用的是v7.4 SP3中文版)。单击菜单命令“文件”→“新建设计”,选择DEFAULT模板,保存文件名为“LSD.DSN”。在器件选择按钮中单击“P”按钮,或执行菜单命令“库”→“拾取元件/符号”,添加如下表所示 都可以不画,它们都是默认的。 在ISIS原理图编辑窗口中放置元件,再单击工具箱中元件终端图标,在对象选择器中单击POWER和GROUND放置电源和地。放置好元件后,布好线。左键双击各元件,设置相应元件参数,完成电路图的设计。 2 软件设计 流水灯又称为跑马灯,在函数中可以将P0口的八种不同状态做成一维数组,循环执行即可,如下所示。当然也可以采用其它函授来实现,如左移一位<<1(或右移一位>>1),循环左移函授_crol_(或循环右移函授_cror_)等。 /****************************************************************** 流水灯

*******************************************************************/ #include "reg51.h" const tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void delayms(unsigned int x) //延时 { unsigned int j; unsigned char k; for(j=0;j

发光二极管流水灯实验

实验一发光二极管流水灯实验 一、实验目的: 1.通过AT89C51单片机控制8个发光二极管,八个发光二极管分别接在单片机的P0.0-P0.7接口上,输出“0”时,发光二极管亮。开始时P0.0→P0.1….→P0.7,实现亮点以1HZ频率循环移动。 2.用PROTEUS 设计,仿真以AT89C51为核心的发光二极管流水灯实验装置。 3.掌握发光二极管的控制方法。 二、PROTEUS电路设计: 三、程序部分 #include sbit control = P3^7; void delay(int z) { int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void main() { int i,tmp; control = 0; P0 = 0xef; delay(1000); for(i=1;i<=7;i++) { tmp = P0; P0 = (tmp>>1)+ 0x80; delay(1000); } }

实验二开关控制LED数码管实验 一、实验目的: 1.通过AT89C51读入4位开关K1、K2、K3、K4的输入状态,并按照二进制编码关系0-F输出到数码管显示。(如K4K3K2K1全部按下,则显示F;若只有K2按下,则显示2。) 2.掌握LED数码管的静态显示。 3.掌握I/O口的控制方法。 二、PROTEUS电路设计:

三、程序部分 #include unsigned char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82, 0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,}; unsigned char KEY; void main() { while(1) { KEY = P2; switch(KEY) { case 0xff:P0 = table[0];break; case 0xfe:P0 = table[1];break; case 0xfd:P0 = table[2];break; case 0xfc:P0 = table[3];break; case 0xfb:P0 = table[4];break; case 0xfa:P0 = table[5];break; case 0xf9:P0 = table[6];break; case 0xf8:P0 = table[7];break; case 0xf7:P0 = table[8];break; case 0xf6:P0 = table[9];break; case 0xf5:P0 = table[10];break; case 0xf4:P0 = table[11];break; case 0xf3:P0 = table[12];break; case 0xf2:P0 = table[13];break; case 0xf1:P0 = table[14];break; case 0xf0:P0 = table[15];break; default :break; } } }

LED点阵心形流水灯单片机设计

河南理工大学 开放实验室单片机设计报 LED点阵心形流水灯礼品 目录 0 前言 (1) 1系统组成与功能 (1) 1.1 系统组成 (1) 1.1.1 AT89C51单片机 (1) 1.1.2 16乘16点阵 (2) 1.2 系统功能 (3) 2系统原理 (3) 2.1系统仿真图 (3) 2.2 实物照片 (4) 3程序流程图 (6) 4程序代码 (7) 5结论 (14) 参考文献 (14)

1 基于单片机控制心形流水灯跟点阵 0 前言 随着社会的发展,单片机得到了广泛的应用,人们越来越重视单片机的应用。比如温度是和每个人息息相关的,并且在有的生产车间里还要进行温度时时测量,甚至是对温度的进一步调控等,这些都是单片机的应用之例。本设计是用单片机和点阵加一个小的流水灯电路,作为玩具挺有趣的。 这次的作品,初衷是希望通过单片机学习,做个生日礼物送给朋友。由于时间紧迫,做的有些仓促,望原谅。 1系统组成与功能 1.1 系统组成 本系统主要有AT89C51单片机、18b20、1602、蜂鸣器、四位一体七段数码管等元件组成。 1.1.1 AT89C51单片机 AT89S51具有如下特点:40个引脚,8k Bytes Flash 片内程序存储器,256 bytes 的随机存取数据存储器(RAM ),32个外部双向输入/输出(I/O )口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT ) 电路,片内时钟振荡器。 此外,AT89S52设计和配置了振荡频率可 为0Hz 并可通过软件设置省电模式。空闲模式下,CPU 暂停工作,而RAM 定时计数器,串行口,外中断 系统可继续工作,掉电模式冻结振荡器而保存RAM 的数据,停止芯片其它功能直至外中断激活或硬件复位。 引脚图如图1-1所示。 管脚说明 图1-1 A T89C51引脚图

用单片机控制的LED流水灯设计(电路、程序全部给出)

1.引言 当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。学习单片机的最有效方法就是理论与实践并重,本文笔者用AT89C51单片机自制了一款简易的流水灯,重点介绍了其软件编程方法,以期给单片机初学者以启发,更快地成为单片机领域的优秀人才。 2.硬件组成 按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51单片机是美国ATM EL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz 工作频率,使用AT89C51单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。其具体硬件组成如图1所示。 图1 流水灯硬件原理图 从原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要

基于单片机的心形流水灯毕业设计论文

基于单片机的心形流水灯毕业设计论文 此文档为WORD版可编辑修改

课程设计(论文)说明书 题目:心形流水灯 院(系):信息与通信学院 专业:通信工程 学生姓名: 学号: 指导教师: 职称: X年X月X日

摘要 本论文基于单片机技术与单片机芯片AT89S51芯片功能和C语言程序,实现心形流水灯的多种亮与灭的循环。首先,我们了解单片机的一些技术,了解了单片机芯片AT89S51的一些功能;然后结合C语言编程;最后将它们运用到实际的电路,使心形LED灯实现多种亮灭方法。本论文介绍关于流水灯的运用和单片机技术;然后介绍芯片AT89S51;最后介绍运用到的相关软件. 关键词:单片机;流水灯;C语言;

Abstract This paper Based on the single chip microcomputer and single chip microcomputer chip AT89S51 chip function and C language program,Realization of flowing water light heart a variety of light and the cycle of destruction。primarily,We know some of the single chip microcomputer technology,Understanding of the single chip microcomputer chip AT89S51 of some functions, Then based on the C language programming; Finally they are applied to the practical circuit, Make heart LED lamp achieve a variety of light out method. This paper introduces about the use of flowing water light and single chip microcomputer; and then introduced chip AT89S51; At the end of this paper applied to software. Key words:micro-computer;light water ;C programming language

51单片机常见的五种流水灯编写方式

51单片机常见的五种流水灯编写方式通过改变赋值实现流水灯 void main() { while(1) { P2=0xfe; delay1ms(500); P2=0xfd; delay1ms(500); P2=0xfb; delay1ms(500); P2=0xf7; delay1ms(500); P2=0xef; delay1ms(500); P2=0xdf; delay1ms(500); P2=0xbf; delay1ms(500); P2=0x7f; delay1ms(500); } } 通过公式运算实现流水灯 void main() { while(1) { uint a,b=1; P2=0xfe; delayms(500); for(a=0;a<7;a++) {

P2-=b; // P2=P2-b delayms(500); b=b*2; //都化为同一类型进制运算 } } } 通过操作符<<与“|”实现流水灯 (通过移位实现流水灯) void main() { uchar a,i; while(1) { a=0xfe; //点亮第一位LED灯 for(i=0;i<8;i++) { P2=a; a=a<<1; //左移一位 a=a|0x01; //左移一位后与0x01相或,保证左移后最低位为1 delay_ms(500); } } } 通过库函数_crol_(字符左移)实现流水灯 void main() { uint a; a=0xfe; while(1) { P2=a;a=_crol_(a,1); delay_ms(500); } } 采用数组实现流水灯

C51单片机实验报告 流水灯 交通灯 定时器 双机交互 时钟

学号: 31100800 班级:自动化10班姓名:张 指导老师:胡 2012.12

单片机核心板实验要求 一、流水灯实验 1、实验目的: 1)简单I/O引脚的输出 2)掌握软件延时编程方法 3)简单按键输入捕获判断 2、完成功能要求 1)开机是点亮12发光二极管,闪烁三下 2)按照顺时针循环依次点亮发光二极管 3)通过按键将发光二极管的显示改为顺逆时针方式 二、定时器或实时时钟实验 1、实验目的 1)数码管动态显示技术 2)定时器的应用 3)按键功能定义 2、完成功能要求 1)通过按键可以设定定时时间,启动定时器,定时时间到,让12个发光二极管闪烁,完成定时器功能。 2)实时时钟,可以设定当前时间,完成钟表功能(四位数码管分别显示分钟和秒)。 上述二个功能至少完成一种功能。 三、双机通信实验 1、实验目的 UART 串行通信接口技术应用 2、完成功能要求 用两片核心板之间实现串行通信,将按键信息互发到对方数码管 显示。 四、交通灯实验 1、实验目的 1)按键、数码管、发光二极管综合应用编程技术 2)数据存储于EEPROM的技术(也可以不使用) 3)定时中断技术 4)按键中断技术 2、完成功能要求 1)对每个路口(主干道、次干道)的绿灯时间,及黄灯时间的设定。 2)设定参数掉电后不丢失(如果不使用EEPROM,此功能可以不实现)。 3)紧急按键功能,当按下该键时,所有路口变成红灯,相当于交警指挥特殊车辆通过。再按该键,恢复正常显示。

实验一流水灯实验 一、实验目的 1)简单I/O引脚的输出 2)掌握软件延时编程方法 3)简单按键输入捕获判断 二、实验实现的功能 1)开机是点亮12发光二极管,闪烁三下 2)按照顺时针循环依次点亮发光二极管 3)通过按键将发光二极管的显示改为顺逆时针方式 三、系统硬件设计 1)如单片机核心板所示的硬件电路。 四、系统软件设计 设计思路: 1)定义数组使得调用数组可以使led灯能够顺时针和逆时针显示; 2)将按键的输入端全部置零,做单独按键使用; 3)利用“while”循环使得数码管可以闪烁三下; 4)利用“for”循环使得小灯能够依次点亮一个周期; 5)将以上思想汇总,编程,实现功能。程序详见附录。 五、实验过程中遇到的问题及解决方法 1)刚开始不知道怎样只设置一个管脚(如P0^0),查阅相关资料后知道表示方法,并学会了用“sbit”语句定义,方便多了。 2)对于C语言的很多东西都不知道,语句的用法也不清楚,重新看了C语言,用到什么看什么很快就懂了。 3)主程序中没有用延时程序和死循环导致led不能点亮,请教同学以后才知道。4)对于按键只是不了解,看书又很模糊,看了网上“KINGST工作室”也就是“手把手教你学单片机”的视频后很清楚明了,之后好多东西也是从上边学到,就不再赘述了。 指导老师签字: 日期:

51单片机爱心流水灯原理及制作

电路原理图:

原件清单: 1、51单片机x1、40Pin 座x1 2、LED x32(建议用5mm 七彩的) 3、电阻470Ωx33 4、晶振12MHz x1 5、10uf 电解电容x1、谐振瓷片电容30pf x2 6·其他的可以看自己的爱好去加 7、其实也可以不用那么多的电阻,用几个排阻就OK了。~ 效果展示:

作品程序: #include<> #define uchar unsigned char ; uchar flag=200; /////////////////////////////////////////////////////////////////////// uchar code Tab1[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xFF};//暗中左移向下uchar code Tab2[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF};//暗中右移向上uchar code Tab3[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00};//亮中左移向下uchar code Tab4[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x00};//亮中右移向上uchar code Tab11[]={0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0xff};//暗中左移向下uchar code Tab22[]={0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00,0xff}; //////////////////////////////////////////////////////////////////// uchar code Tab33[]={0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF}; ; uchar code Tab44[]={0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF}; uchar code Tab55[]={0x08,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff}; uchar code Tab5[]={0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xff};

相关文档
最新文档