《单片机音乐彩灯设计讲明.docx》由会员分享,可在线阅读,更多相关《单片机音乐彩灯设计讲明.docx(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机音乐彩灯设计讲明艺术彩灯控制系统设计一概述11艺术彩灯的设计背景及意义彩灯是人们日常生活中的一种装饰用品,它美观大方,尤其在节日期间,倍增节日气氛。它蕴涵着丰富的文化底蕴,被广泛地应用于各种店面的装饰。变换无穷的彩灯样式,给城市增添活力,吸引着人们的注意力,深受人民的喜欢。在日常生活中,人们还将彩灯摆放成各种图案,增添美感。随着电子技术的发展,应用系统向着小型化、快速化、大容量、重量轻的方向发展。科学技术愈加贴近人们的生活,向着知足人们需求的方向发展。节日彩灯的设计与制作工艺也一步一步的走向成熟。1.2系统设计功能概述本设计是以AT89C51单片机为基础的音乐彩灯控制方案,来实现对LED
2、彩灯的控制。以AT89C51单片机作为主控核心,通过汇编语言来控制单片机按下“开场按键,8个LED灯从上到下开场循环点亮,按下“上按键,灯由上向下流动,按下“下按键,灯由下向上流动,按下“停止按键,所有灯为暗。二彩灯设计容扼要:2.1彩灯设计任务:以单片机为核心,设计一个节日音乐彩灯控制器。2.2彩灯设计要求:P1.2-开场,按此键则灯开场流动由上而下。P1.3-停止,按此键则停止流动,所有灯为暗。P1.4-上,按此键则灯由上向下流动。P1.5-下,按此键则灯由下向上流动。2.3彩灯总体控制框图:3.2AT89C51单片机硬件构造:AT89C51是一种带4K字节闪存可编程可擦除只读存储器FPE
3、ROMFlashProgrammableandErasableReadOnlyMemory的单片机芯片,它采用静态CMOS工艺制造8位微处理器,最高工作频率位24MHZ。AT89C5外形及引脚排列如下图:管脚讲明:RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平常间。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它能够被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个
4、部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被部上拉为高,可用作输入,P1口被外部下拉为低电平常,将输出电流,这是由于部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1时,其管脚被部上拉电阻拉高,且作为输入。并因而作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1时,它利用部上拉优势,当对外部八位地址数据
5、存储器进行读写时,P2口输出其特殊功能寄存器的容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1后,它们被部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流ILL这是由于上拉的缘故。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平常,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因而它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据
6、存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只要在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。假如微处理器在外部执行状态ALE禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。EA/VPP:当EA保持低电平常,则在此期间外部程序存储器0000H-FFFFH,不管能否有部程序存储器。注意加密方式1时,EA将部锁定为RESET;当EA端保持高电平常,此间部程序存储器。XTAL1和XTAL2:反向振荡放大器的输
7、入及部时钟工作电路的输入。33系统的硬件构成及功能描绘:控制系统硬件设计电路图如下图:四系统的软件设计ORG0000HAJMPMAINORG000BHAJMPINTORG0020HMAIN:JNBP1.2,START;判定按键P1.2(开场键)为0时转MAIN程序JMPMAIN;否则返回START:MOV50H,#HIGHTABLE10;开场默认情况下上到下MOV51H,#LOWTABLE10ACALLBOFANG;音乐播放初始设置LJMPDOWNLIGHTSTOP:MOVP0,#0FFH;停止SETBP3.5JNBP1.2,STARTAJMPSTOPDOWN:MOV50H,#HIGHTABL
8、E10;上到下MOV51H,#LOWTABLE10ACALLBOFANG;音乐播放初始设置DOWNLIGHT:MOVDPTR,#TABLE1;将TABLE1首地址赋数据指针AJMPGETDATAUP:MOV50H,#HIGHTABLE10;下到上MOV51H,#LOWTABLE10ACALLBOFANG;音乐播放初始设置UPLIGHT:MOVDPTR,#TABLE2;将TABLE2首地址赋数据指针GETDATA:MOVR0,#08HMOVR6,DPH;暂存指针值MOVR7,DPLLOOP:CLRA;A清零MOVDPH,R6MOVDPL,R7MOVCA,A+DPTR;表数据送AMOVP0,A;将
9、A值送P0端口INCDPTR;数据指针加1,指向表中的下一数据MOVR6,DPHMOVR7,DPLJNBP1.2,START;P1.2口低电平则转START程序执行JNBP1.3,STOP;P1.3口低电平则转STOP程序执行JNBP1.4,DOWN;P1.4口低电平则转DOWN执行JNBP1.5,UP;P1.5口低电平则转UP左循环程序执行LJMPMUSIC;跳转音乐程序BACK:DJNZR0,LOOPCLRA;判定是上还是下MOVDPH,R6MOVDPL,R7MOVCA,A+DPTRJNZDOWNLIGHTLJMPUPLIGHTBOFANG:MOVTMOD,#11H;音乐播放初始设置MOV
10、IE,#82HMOV40H,#00HRETMUSIC:MOVA,40H;音乐播放处理MOVDPH,50H;取表地址MOVDPL,51HMOVCA,A+DPTR;将表数据送累加器AJZSTOP2;累加器A为0则转移(讲明歌曲播放完得重新播放)MOVR1,AANLA,#0FHRLAMOVR2,AMOVA,R1SWAPAANLA,#0FHJNZSINGCLRTR0LJMPW1SING:DECAMOV22H,ARLAMOVDPTR,#TABLE00MOVCA,A+DPTRMOVTH0,AMOV21H,AMOVA,22HRLAINCAMOVCA,A+DPTRMOVTL0,AMOV20H,ASETBTR0
11、W1:LCALLDELAYINC40HJNZSTOP1;A不为0则转移LJMPBACKSTOP1:CLRTR0;音符结束重新播放处理LJMPBACKSTOP2:CLRTR0;整首歌曲播放结束处理MOVR2,#03HLCALLDELAYLCALLBOFANGLJMPBACKTABLE00:DW64580,64684,64777,64820DW64898,64968,65030,64260DW64400,64524,65058,63835,64021INT:PUSHPSWPUSHACCMOVTH0,21HMOVTL0,20HCPLP3.5POPACCPOPPSWRETIDELAY:MOVR4,#100;延时100msLOOP3:MOVR5,#0FFHLOOP4:DJNZR5,$DJNZR4,LOOP3DJNZR2,DELAYRETTABLE1:DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH,01HTABLE2:DB7FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH,0FEH,00HTABLE10:
限制150内