基于单片机的led彩灯控制器
    

1 引言

随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯。 led 彩灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰已经成为一种时尚。但目前市场上各式样的led彩灯控制器大多数用全硬件电路实现,电路结构复杂、功能单一,这样一旦制作成品只能按照固定的模式闪亮,不能根据不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态参数。这种彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点。此外从功能效果上看,亮灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。因此有必要对现有的彩灯控制器进行改进。

本文提出了一种基于at89s51单片机的彩灯控制方案,实现对led彩灯的控制。

2 设计原理

2.1 mcs51

引脚说明

mcs单片机都采用40引脚的双列直插封装方式。图1为引脚排列图, 40条引脚说明如下:

(1)主电源引脚vss和vcc

① vss接地

② vcc正常操作时为+5伏电源

(2)外接晶振引脚xtal1和xtal2

① xtal1内部振荡电路反相放大器的输入端,是外接晶体的一个引脚。当采用外部振荡器时,此引脚接地。

② xtal2内部振荡电路反相放大器的输出端。是外接晶体的另一端。当采用外部振荡器时,此引脚接外部振荡源。

图1 8051引脚排列图

(3)控制或与其它电源复用引脚rst/vpd,ale/prog,ea和/vpp

① rst/vpd 当振荡器运行时,在此引脚上出现两个机器周期的高电平(由低到高跳变),将使单片机复位

在vcc掉电期间,此引脚可接上备用电源,由vpd向内部提供备用电源,以保持内部ram中的数据。

② ale/prog正常操作时为ale功能(允许地址锁存)提供把地址的低字节锁存到外部锁存器,ale 引脚以不变的频率(振荡器频率的1/6)周期性地发出正脉冲信号。因此,它可用作对外输出的时钟,或用于定时目的。但要注意,每当访问外部数据存储器时,将跳过一个ale脉冲,ale 端可以驱动(吸收或输出电流)八个lsttl电路。 对于eprom型单片机,在eprom编程期间,此引脚接收编程脉p冲(prog功能)

③psen外部程序存储器读选通信号输出端,在从外部程序存储取指令(或数据)期间,在每个机器周期内两次有效。同样可以驱动八lsttl输入。

④ ea/vpp 、ea/vpp为内部程序存储器和外部程序存储器选择端。当ea/vpp为高电平时,访问内部程序存储器,当/vpp 为低电平时,则访问外部程序存储器。

对于eprom型单片机,在eprom编程期间,此引脚上加21伏eprom编程电源(vpp)。

(4)输入/输出引脚p0.0 - p0.7,p1.0 - p1.7,p2.0 - p2.7,p3.0 - p3.7。

① p0口(p0.0 - p0.7)是一个8位漏极开路型双向i/o口,在访问外部存储器时,它是分时传送的低字节地址和数据总线,p0口能以吸收电流的方式驱动八个lsttl负载。

② p1口(p1.0 - p1.7)是一个带有内部提升电阻的8位准双向i/o口。能驱动(吸收或输出电流)四个lsttl负载……

③ p2口(p2.0 - p2.7)是一个带有内部提升电阻的8位准双向i/o口,在访问外部存储器时,它输出高8位地址。p2口可以驱动(吸收或输出电流)四个lsttl负载。

④ p3口(p3.0 - p3.7)是一个带有内部提升电阻的8位准双向i/o口。能驱动(吸收或输出电流)四个lsttl负载。

2.2 led显示数码管

led有共阴极和共阳极两种。如图所示。二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5v的电压。一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)a~g,另一个小数点为dp发光二极管。当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。为了保护各段led不被损坏,需外加限流电。

led数码管结构原理图

at89c2051芯片的20个引脚功能为:

vcc 电源电压。

gnd 接地。

rst 复位输入。当rst变为高电平并保持2个机器周期时,所有i/o引脚复位至“1”。

xtal1 反向振荡放大器的输入及内部时钟工作电路的输入。

xtal2 来自反向振荡放大器的输出。

p1口 8位双向i/o口。引脚p1.2~p1.7提供内部上拉,当作为输入并被外部下拉为低电平时,它们将输出电流,这是因内部上拉的缘故。p1.0和p1.1需要外部上拉,可用作片内精确模拟比较器的正向输入(ain0)和反向输入(ain1),p1口输出缓冲器能接收20ma电流,并能直接驱动led显示器;p1口引脚写入“1” 后,可用作输入。在闪速编程与编程校验期间,p1口也可接收编码数据。

p3口 引脚p3.0~p3.5与p3.7为7个带内部上拉的双向i/0引脚。p3.6在内部已与片内比较器输出相连,不能作为通用i/o引脚访问。p3口的输出缓冲器能接收20ma的灌电流;p3口写入“1”后,内部上拉,可用输入。p3口也可用作特殊功能口。

2.3 中断指令

在cpu和外设交换信息时,存在着快速cpu和慢速外设间的矛盾,机器内部有时也可能出现突发事件,为此,计算机中通常采用中断技术。

cpu和外设并行工作,当外设数据准备好( 或有某种突发事件发生)时向cpu提出请求,cpu暂停正在执行的程序转而为该外设服务(或处 理紧急事件),处理完毕再回到原断点继续执行原程序。

中断优先级:当有多个中断源同时 向cpu申请中断时,cpu优先响应最需紧急处理的中断请求,处理完毕再响应优先级别较低的 ,这种预先安排的响应次序。

中断的嵌套:在中断系统中,高优先级的 中断请求能中断正在进行的较低级的中断源处理,

(1)中断技术是实时控制中的常用技术,51系列单片机有三个内部中断,二个外部中断。所谓 外部中断就是在外部引脚上有产生中断所需要的信号。

每个中断源有固定的中断服务程序的入口地址(称矢量地址或向量地址)。当cpu响应中断以 后单片机内部硬件保证它能自动的跳转到该地址。因此,此地址是应该熟记的,在汇编程序 中,中断服务程序应存放在正确的向量地址内。

(或存放一条转移指令);而在c语言中是靠interrupt n的关键字n自动设置的。

(2)单片机的中断是靠内部的寄存器管理的,这就是中断允许寄存器ie,中断优先权寄存器ip ,必须在cpu开中断即开全局中断开关ea,开各中断源的中断开关,cpu才能响应该中断源的 中断请求,其中缺一不可。

(3)从程序表面看来,主程序和中断服务程序好象是没有关连的,只有掌握中断响应的过程, 才能理解中断的发生和返回,看得懂中断程序,并能编写高质量中断程序。

表2.1 常用中断

符号名 称中 断 引 起 原 因中断服务程序入口

int0外部中断0p3.2引脚的低电平或下降沿信号0003h

int1外部中断1

p3.3引脚的低电平或下降沿信号0013h

t0定时器0中断定时计数器0计数回零溢出000bh

t1定时器1中断定时计数器1计数回零溢出001bh

t2定时器2中断定时计数器2中断(tf2或t2ex信号)002bh

ti/ri串行口中断串行通信完成一帧数据发送或接收引起中断0023h

3 硬件原理图

晶振(12mhz)定时1秒,对于12mhz的晶振而言,其时钟周期t=1/f=1/12us,而89c51的一个机器周期包括12个时钟周期,所以一个机器周期为1us,对于t0而言,使之工作于16-bit,最大计时为65536*1=65536us,需要多次定时才能实现一秒定时。

4 软件设计

4.1 流程图

4.2 源程序

org 0000h ;中断入口程序;

ljmp start

org 0003h

reti

org 000bh

reti

org 0013h

reti

org 001bh

reti

clear: ret; ; 初始化程序

;start:acall clear ; 主 程 序

star1:mov p3,#0ffh

jnb p3.2,fun2

jnb p3.3,fun3 ;关闭按纽

jnb p3.4,fun0

jnb p3.5,fun1

jnb f0,star1 ;曾经有键按下f0置1

ret;

fun0:lcall dl10ms ;消除抖动

jb p3.4,star1

waitl0:jnb p3.4,waitl0 ;等待键释放

setb f0

fun01:lcall fun00

lcall star1

ljmp fun01;

fun1:lcall dl10ms ;消除抖动

jb p3.5,star1

waitl1:jnb p3.5,waitl1 ;等待键释放

setb f0

fun10:lcall fun11

lcall star1

ljmp fun10;

fun2:lcall dl10ms ;消除抖动

jb p3.2,star1

waitl2:jnb p3.2,waitl2 ;等待键释放

setb f0

fun20:lcall fun22

lcall star1

ljmp fun20;

fun3:lcall dl10ms ;消除抖动

jb p3.3,star1

[1][2][3]

分享到:qq空间新浪微博腾讯微博人人网更多

相关阅读

编辑:什么鱼

本文引用地址:http://www.eeworld.com.cn/mcu/2012/0924/article_10535.html

[发表评论]

[加入收藏]

[告诉好友]

[打印本页]

[关闭窗口]

[返回顶部]

[rss订阅]

waitl3:jnb p3.3,waitl3 ;等待键释放

clr f0

mov p1,#0ffh ;关显示

ljmp star1;

fun00:mov a,#0feh ;从p1.0到p1.7移动点亮

fun000:mov p0,a

lcall dl05s

jnb acc.7,out

rl a

ajmp fun000

out: ret;

fun11:mov a,#0feh ;从p1.0到p1.7依次点亮

fun111:mov p1,a

lcall dl05s

jz out

rl a

anl a,p1

ajmp fun111;

fun22:mov a,#0feh ;间隔点亮

fun222:mov p1,a

lcall dl01s

cpl a

rl a

mov p1,a

lcall dl01s

ret;

fun33: mov a,#01h ;逐点熄灭

fun333: mov p1,a

lcall dl01s

jnz out

rl a

orl a,p1

ajmp fun333

dl01s:mov r2,#0ffh ; 延时程序

mov r7,#02h

loop1: djnz r2,loop1

loop5:djnz r7,dl512

ret

dl10ms:mov r3,#14h

loop2: lcall dl512

djnz r3,loop2

ret

dl05s:mov r4,#0ah

loop3: lcall dl10ms

djnz r4,loop3

ret

dl30s:mov r5,#03h

loop4:lcall dl05s

djnz r5,loop4

ret

end

4.2一秒钟定时程序

mov b,#0ah ;允许中断

mov tmod,#01h ;工作方式1

mov th0,#0b0h

mov tl0,#3ch

setb tr0 ;启动计数

setb ea ;开中断

bu:jbc tf0,shi

sjmp bu

shi:mov th0,#3ch

mov tl0,#0b0h

ret

相关阅读
  • 基于TTL电路的LED可调彩灯控制器
  • 基于ttl电路的led可调彩灯控制器设
  • 基于STC单片机的智能LED路灯控制器
  • 基于STC单片机的智能LED路灯控制器
  • 基于STC单片机的LED轮廓显示控制器
  • 基于单片机的led轮廓显示控制器设
  • 用avr单片机设计led彩灯控制器
  • 基于ATMEGA8的LED彩灯控制器设计
  • 基于atmega8的led彩灯控制器设计
  • 基于stc单片机的led轮廓显示控制器
  • 基于STC单片机的太阳能LED路灯控制
  • 基于STC单片机的太阳能LED路灯控制
  • 基于FPGA的点阵LED显示屏控制器的
  • 单片机的led轮廓显示控制器设计原
  • 基于单片机的调光控制器设计
  • 基于51单片机两路温度控制器的设计
  • 基于单片机的彩灯设计
  • 基于单片机的调光控制器设计-控制/
  • 基于51单片机两路温度控制器的设计
  • 基于单片机实现的液位控制器设计
  • 基于单片机的LED室内照明控制系统-
  • 基于CPLD的LED点阵显示控制器
  •  



     
     
         

    收录时间:2014年10月24日 11:35:11 来源:21ic 作者:不详
    上一篇:用at91r40008设计高动态gps接收机  (电脑版  手机版)
     
    创建分享人
    是他春愁来
    最新问题
     
    喜欢此文章的还喜欢
    Copyright by www.chinabaike.com;All rights reserved. 联系:QQ:469681782