流水控制LED及音乐播放_第1页
流水控制LED及音乐播放_第2页
流水控制LED及音乐播放_第3页
流水控制LED及音乐播放_第4页
流水控制LED及音乐播放_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、西安科技大学大学生业余制作报告 学院: 班级: 学号: 姓名: 内 容 摘 要 电子技术实验是一门重要的实践性技术基础课程。开设本课程的目的在于使学生理论联系实际,在老师的指导下完成大纲规定的实验任务。通过实验熟悉电工.电子技术的应用中常用的设备和电子器件,熟悉常用仪器的使用方法,掌握正确记录.处理实验数据、绘制曲线、分析实验结果的方法,从而开发学生分析问题或解决问题的能力,培养学生具有严谨的工作作风,实事求是的科学态度,刻苦钻研、勇于探索和创新的开拓精神以及遵守纪律、团结协作和爱护公物的优良品质,为今后从事专业科研工作和工程技术工作打下良好的基础。流水灯是一串按一定的规律像流水一样连续闪亮。

2、流水灯控制是可编程控制器的一个应用,其控制思想在工业控制技术领域也同样适用。索引关键词:流水灯 循环亮灭一 设计目的 进一步熟悉keil仿真软件、伟福仿真器和实验板的使用。了解并熟悉实验板上单片机I/O口和LED灯的电路结构,掌握C51中单片机I/O口的编程方法,掌握顺序控制程序的简单编程。二 设计内容电路开启后:led灯先是上面4个亮上面4个灭,然后下面4个亮下面4个灭 ,接着中间向两边依次拓展亮这样为一个循环,循环6次之后2,4,6,8灯亮并播放音乐。三程序设计原理当8255 的PA口有低电平输出时,相应的发光二极管就会点亮。应用这一原理我们可以容易的点亮一个数码管,例如令PA口输出011

3、1 1111时D1就会点亮。若再把0111 1111向右循环一位,利用PA口输出,就会点亮D2。在发光二极管两次点亮的间隔中加延时程序,让每次点亮停留一段时间,像这样人眼就可以看到“流水” 的现象。四 程序流程图初始化开始执行流水灯一次循环是判断循环次数是否小于5次否播放音乐五源程序#include <reg51.h>#include<intrins.h>#define LED P0typedef unsigned uchar;typedef unsigned uint;sbit LED1 = P00;sbit LED2 = P01;sbit LED3 = P02;sb

4、it LED4 = P03;sbit LED5 = P04;sbit LED6 = P05;sbit LED7 = P06;sbit LED8 = P07;uchar Count;sbit Speak =P13; /蜂鸣器器控制脚 /*以下数组是音符编码*/unsigned char code SONG = /祝你平安0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,

5、0x20,0x20,0x1c,0x20,0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,

6、0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,0x20,0x20,0x2b,0x10,

7、0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,

8、0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00, /路边的野华不要采0x30,0x1C,0x10,0x20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,

9、0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20,0x30,

10、0x1C,0x10,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x15,0x1F,0x05,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x30,0x20,0x30,

11、0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,0x80,0x00,;/* 名称 : Time0_Init()* 功能 : 定时器的初始化,定时时间可用光碟中软件计算,11.0592MZ晶振,10ms* 输入 : 无* 输出 : 无*/void Time0_Init()TMOD = 0x01;IE = 0x82;TH0 = 0xDC;TL0 = 0x00;/* 名称 : Time0_Int()* 功能 : 定时器中断,中断中实现 Count 加一* 输入

12、 : 无* 输出 : 无*/void Time0_Int() interrupt 1TH0 = 0xDC;TL0 = 0x00;Count+;/长度加1/* 名称 : Delay_xMs()* 功能 : 延时子程序,经过软件调试,测得延时程序大概为55us.* 输入 : x * 输出 : 无*/void Delay_xMs(uint x) uint i,j; for(i=0; i<x; i+) for(j=0; j<3; j+); /* 名称 : Play_Song()* 功能 : 播放蜂鸣器控制程序* 输入 : i (选择播放哪首歌曲,0为“祝你平安”,1为“路边的野花你不要采”

13、* 输出 : 无*/void Play_Song(uchar i)uchar Temp1,Temp2;uint Addr;Count = 0;/中断计数器清0Addr = i * 217;while(1)Temp1 = SONGAddr+; if (Temp1 = 0xFF) /休止符 TR0 = 0; Delay_xMs(100); else if (Temp1 = 0x00) /歌曲结束符 return; else Temp2 = SONGAddr+; TR0 = 1; while(1) Speak = Speak; Delay_xMs(Temp1); if(Temp2 = Count)

14、Count = 0; break; void Delay(uint del)uint i,j;for(i=0; i<del; i+)for(j=0; j<1827; j+) ;void FinalLed() LED1 = 1; LED2 = 0; LED3 = 1; LED4 = 0; LED5 = 1; LED6 = 0; LED7 = 1; LED8 = 0;void Led3() LED5 = 1; LED6 = 1; LED7 = 1; LED8 = 1;void Led4() LED1 = 1; LED2 = 1; LED3 = 1; LED4 = 1;void LeD(

15、) LED4 = 0; Delay(20); LED3 = 0; Delay(20); LED2 = 0; Delay(20); LED1 = 0; Delay(20);void LeD2() LED5 = 0; Delay(20); LED6 = 0; Delay(20); LED7 = 0; Delay(20); LED8 = 0; Delay(20);void LeDD() LED4 = 0; LED5 = 0; Delay(20); LED3 = 0; LED6 = 0; Delay(20); LED2 = 0; LED7 = 0; Delay(20); LED1 = 0; LED8

16、= 0; Delay(20);void main()uint n;n=0;Time0_Init();P0=0xff;while(n<15) Led3();Led4(); LeD();Led4();LeD2();Led3();LeDD();n+; FinalLed();Play_Song(1);六调试过程七遇到的问题及解决方法刚开始运行,程序改正之后没有错误,部分功能无法实现。分步查程序,进行改正。经过调整后,编译通过,导入protues中,仿真成功。焊接时,led管排的太紧密,看起来不大美观,而且增加了焊接难度。最后,尽管流水灯正常工作却因为排版的问题,与设想中的有一定差距。八 心得体会课设的安排给了我们实践的机会,很感谢。总之我学会了许多,编程其实最开始我感觉是一种痛苦,但一周下来,确实苦中作乐,学习能力的提高毕竟能给人带来成就感。它让我重新认识了单片机,是理论与实践结合的产物,一方缺陷都达不到成功。再此感谢老师和同学的帮助,给了我们动力。让我们把零散的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论