单片机课程设计,单片机控制流水灯

单片机课程设计,单片机控制流水灯
单片机课程设计,单片机控制流水灯

郑州科技学院

《单片机》课程设计

题目单片机控制流水灯

学生姓名X X X 专业班级电气工程及其自动化X班

学号201XXXX

院(系)电气工程学院

指导教师X X

完成时间201X年XX月XX日

目录

1设计的目的 (1)

2设计的任务与要求 (2)

3设计方案与论证 (2)

4 元器件介绍 (4)

4.1 单片机

5 硬件电路设计 (8)

6软件设计 (10)

7硬件的制作与调试 (12)

8总结 (13)

参考文献 (14)

附录1 总体电路原理图 (15)

附录2 实物图 (15)

引言

基于单片机的LED流水灯的应用十分广泛,由单片机作为的核心控制器,通过按键实现控制功能和数据输入是非常普遍的。通常在所需按键数量不多时,系统常采用独立式按键。这种按键的电路配置灵活,软件结构简单。由于实际应用中,不同系统对按键的要求不同,因此,对按键程序的设计要考虑全面,以便更好地完成按键所设定的功能,简述了该系统中一些重要芯片的基本工作原理,着重论述了硬件线路各个模块的设计思想。进而熟练掌握相关专业基础知识的综合应用,提高学生的实际动手和设计能力。

本系统是基于AT89C51系列单片机为核心的LED流水灯设计,实现12个LED灯变化方向和速度的可调。

1 设计的目的

1、使自己在学习理论知识的同时与实际操作相结合,从而提高自己动手操作的能力。

2、可以培养自己自主学习的能力,自己可以查阅资料,从而提高自己的知识储备。

3、可以提高自己的动手能力,提前为以后走向社会,适应社会而做准备。

4、在自己动手的同时,遇到不懂的可以请教老师,可以查阅资料,也可以通过自己的思考解决问题,这些都可以提高自己对理论知识的理解和对课外知识的扩展,从而提高以后工作的社会竞争力。

5、自己通过自己的努力而完成的作品会有一种巨大的成就感,会让自己更喜欢这门学科,从而以后更加好好学习这门学科。

2 设计的任务与要求

1、通过单片机实现对LED灯进行闪烁控制。

2、学会实物的设计和制作。

3、能够自己设计仿真电路。

4、通过电路方案的分析、论证和比较,设计计算和选取元器件,初步掌握简单实用电路的分析方法和工程设计方法,提高电子电路的设计和实验能力。

5、了解与课题有关的电子电路以及元器件的工程技术规范,能按设计任务书的要求,完成设计任务,正确地反映设计与实验的成果,正确地绘制电路图。

3 设计方案与论证

.本方案以AT89C52单片机作为主控核心,按键控制电路,流水灯显示电路以及单片机最小系统等模块组成的核心主控电路。利用软件编程烧录程序到单片机来实现对LED流水灯进行控制,首先搭建单片机最小系统,包括电源电路,手动复位电路,时钟电路。时钟电路才用内部时钟方式,手动复位电路采用按键电平复位方式。再根据要求在P2口串接12个发光二极管作为输出设备,分别通过限流电阻接电源,在P3口串接2个独立按键,作为输入设备。通过独立按键控制LED灯的闪烁和移动及速率变

化。同时在P1口连接一个数码管显示电路,用于自动计时,实现自动改变流水灯的样式。

程序部分设定T0为定时工作方式,T0每隔一定的时间扫描独立按键,当检测到某个键按下时,在主函数中执行相应的程序。

4 元器件介绍

4.1单片机

89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用ATMEL公司可靠的CMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。它结合了CMOS的高速和高密度技术及CMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于89C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。89C52内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。89C52有PDIP(40pin)和PLCC(44pin)两种封装形式。主要引脚:

P0口:P0口是一个8位漏极开路的双向I/O口。

P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,

P1输出缓冲器能驱动4个TTL逻辑电平。

P2口;P2口是具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。

P3口:P3口是一个具有内部上拉电阻的8 位双向I/O口,P3 输出缓冲器能驱动4个TTL 逻辑电平。

RST:复位输入,当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。

如图4-1AT89C52单片机

5 硬件电路设计

5.1 硬件系统

硬件系统是指构成微机系统的实体和装置,通常由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。单片机实质上是一个硬件的芯片,在实际应用中,通常很难直接和被控对象进行电气连接,必须外加各种扩展接口电路、外部设备、被控对象等硬件和软件,才能构成一个单片机应用系统。本设计选用以STC89C52单片机为主控单元。

5.2控制电路

如图5-2所示控制电路图

根据单片机的功能和性质,这次课程设计实现花样流水灯,实际上就是一个带有十六个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成

的。最小应用系统分为时钟电路和复位电路。从原理图中可以看出,如果要让接在P0.0口的D9亮起来,那么只要把P0.0口的电平变为低电平就可以了;相反,如果要接在P0.0口的D9熄灭,就要把P0.0口的电平变为高电平;同理,接在P0.1~P0.7口和P2.0~P2.7的其他15个LED的点亮和熄灭的方法同D9。

5.3 时钟电路

如图5-3时钟电路图

时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按序进行工作。

在STC89C52芯片内部有一个高增益反相放大器,其输入端为芯片引脚X1,输出端为引脚X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。此电路采用12MHz的石英晶体。

5.4 复位电路

电阻的作用是用于上电复位的,VCC以上电,由于电容两端

电压不能突变,所以RST上为高电平,然后电容放电,RST就为低电平了,还可以用手动复位,此电路应用自动复位。

如图5-4所示复位电路图

5.5显示电路

单片机显示电路LED彩灯显示电路,实际上是由8个发光二极管和8个电阻构成的电路。发光二极管与电阻对应串联,然后接在与之相对应的P0口上。通过软件编程对P0口输出高低电平来实现不同的闪烁花型。由于发光二极管的导通电压一般为1.7V以上,另外,他的工作电流根据型号不同一般为1mA到30mA,电阻选择范围100欧姆~3千欧姆在此我们这里选用300欧姆的电阻。

6 软件设计

6.1软件流程图

开始

P0.0-P0.7依次置为低电平

延时一秒

P2.0-P2.7依次置为低电平

延时一秒

P2.0-P2.7依次置为低电平

延时一秒

P0.0-P0.7依次置为低电平

延时一秒

图6.1 软件流程方框图

6.2软件设计

软件程序设计流水灯变化,使用的STC89C52单片机的P0口,点亮第一个发光二极管需要P0.0口置低电平,单片机上电后从0000H地址执行,跳转到主程序存放地址处,设置主程序开始地址,设置堆栈起始地址为60H,ACC中装入LED1亮的数据(二进制的11111110),将ACC的数据送入P0口,调用延时子程序,将数据再移动7次就完成一个8位流水过程,ACC中装入LED7亮的数据(二进制的10111111),将ACC的数据送P0口,调用延时子程序,将数据再移动5次就完成一个6位流水过程,ACC 中装入所有灯都亮的数据(二进制的00000000),ACC中装入所有灯都灭的数据(二进制的11111111),将ACC中的数据左移一位,把ACC移动过的数据送P0口显示,调用延时子程序,没有移动够7次继续移动,移动完7次后跳到START2,将ACC 中的数据右移一位,把ACC移动过的数据送P0口显示,调用延时子程序,没有移动够5次继续移动,移动完5次后跳到START3,把ACC移动过的数据送P0口显示,调用延时子程序,跳到START4,把ACC移动过的数据送P0口显示,调用延时子程序跳到START1,延时0.5S,子程序返回。

延时程序:MOV:这是一条指令,意思是传递数据。从指令MOV R7,#250中来分析,R7是一个接受者,250是被传递的数,传递者在这条指令中被省略了(注意:并不是每一条传递指令都会省的,事实上大部份数据传递指令都会有传递者)。它的意义也很明显:将数据250送到R7中去,因此执行完这条指令后,R7单元中的值就应当是250。在250前面有个#号,这个#就是用来

说明250就是一个被传递的东西本身,而不是传递者。DJNZ:DJNZ指令的执行过程是这样的,它将其后面的第一个参数中的值减1,然后看一下,这个值是否等于0,如果等于0,就往下执行,如果不等于0,就转移,转到第二个参数所指定的地方去,减一不为零转移指令(dec 1 jump if not zero)。DJNZ指令有两种格式:DJNZ Rn,rel和DJNZ direct,rel,前者为双字节指令,其中第二个字节存储rel的相对地址,范围是-128~+127,所以转移范围很窄,所以转移的位置为指令的当前PC值加上rel;第二条指令的第三个字节也是存储rel的,和第一条指令的转移方式相同,都是PC+rel。

DJNZ RN,REL 是一条件转移指令,先将工作寄存器Rn中的数减“1”,判断结果是否为“0”,不为“0”程序就跳转到行标为REL的地方执行,否则,为“0”就不转移,继续执行下一条指令。

需要注意的是,每执行一次DJNZ指令时,工作寄存器中的数会先减去1后,再判断是否返回。例如,DJNZ Rn 如果Rn中原来是2,则执行两次DJNZ后,就会去执行下面一行,执行这么多次同一条指令就是为了延时。

7 硬件的制作与调试

7.1硬件的制作

第一步,用编辑程序把编制的源程序按照一定的书写格式送到计算机中,编辑程序会根据使用人员的意图对源程序进行增、删或修改。

第二步,把送入的源程序翻译成机器语言,即用编译程序对源程序进行语法检查并将符合语法规则的源程序语句翻译成计算机

能识别的“语言”。如果经编译程序检查,发现有语法错误,那就必须用编辑程序来修改源程序中的语法错误,然后再编译,直至没有语法错误为止。

第三步,使用计算机中的连接程序,把翻译好的计算机语言程序连接起来,并扶植成一个计算机能真正运行的程序。在连接过程中,一般不会出现连接错误,如果出现了连接错误,说明源程序中存在子程序的调用混乱或参数传递错误等问题。这时又要用编辑程序对源程序进行修改,再进行编译和连接,如此反复进行,直至没有连接错误为止。

第四步,将修改后的程序进行试算,这时可以假设几个模拟数据去试运行,并把输出结果与手工处理的正确结果相比较。如有差异,就表明计算机的程序存在有逻辑错误。如果程序不大,可以用人工方法去模拟计算机对源程序的这几个数据进行修改处理;如果程序比较大,人工模拟显然行不通,这时只能将计算机设置成单步执行的方式,一步步跟踪程序的运行。一旦找到问题所在,仍然要用编辑程序来修改源程序,接着仍要编译、连接和执行,直至无逻辑错误为止。也可以在完成后再进行编译。

第五步,对分查找法。如果知道每个变量子程序内若干个关键点上的正确值,则可用赋值语句或输入语句在程序中的关键点附近“注入”这些变量的正确值,然后检查程序的输出。如果输出结果是正确的,则表示错误发生在前半部分,否则,不妨认为错误在后半部分。这样反复进行多次,逐渐逼近错误位置。

将写好的程序下载到单片机后,发现灯没有亮,检查程序没有问题,就用万能表测试,硬件部分,也没有连错,又从新下载程序,灯就按照预计的开始流水点亮。

8 总结

在本次设计的过程中,我们发现了很多问题,遇到了很多麻烦,有的问题其实很简单,主要是因为知识的掌握程度不够,拓展知识欠缺,这就要求我们在以后的学习中,应该注意到这一点,并且应该多读一些课外的文献,只靠课本上的知识远远不够,更重要的是我们要学会把书本中学到的知识和实际电路联系起来,用时间巩固理论,用理论优化实践,这不论是对我们以后的就业还是学习,都会起到很大的促进和帮助。在焊接过程中,我们意识到细心和严谨的精神是必不可少,通过本次课程设计,巩固了我们学过的专业知识,也使我们把理论与实践从真正意义上结合了起来,考验了我们借助互联网搜索,查阅相关文献资料,从中可以自我检测,认识到自己哪方面有欠缺,以便在日后的学习中得以改进,提高,我会记住这次经历,在以后的工作中一定会走得更远。

参考文献

[1]张毅刚.MCS-51单片机原理及应用[J].哈尔滨工业大学出版社,2003.9:33~45

[2]杨恢先.黄辉先.单片机原理与应用[M].人民邮电出版,2009.7:12~15

[3]朱定华.单片机原理与接口技术[M].电子工业出版社,2001.4:220~225

[4]王威.微控制器原理及应用[J].北京航空航天大学出版社,2007.10:45~50

[5]胡洪波.单片机原理与应用实验教程[J].湘潭大学出版社,2009.7:67~69

[6]胡汉才.单片机原理及其接口技术[M].清华大学出版社,2001.2:34~40

附录1:总体电路原理图

附录2:实物图

附录3:元器件清单

序号名称型号规格数量

1 单片机ATC89C5

2 1

2 电阻220Ω16

3 电容22PF 2

4 电解电容10UF 1

5 电阻10K 1

6 晶振12M 1

7 发光二极管16

8 导线若干

附录4:源程序

\#include

#define uchar unsigned char

#define uint unsigned int

uchar code Pattern_P0[]=

{

0xfc,0xf9,0xf3,0xe7,0xcf,0x9f

};

uchar code Pattern_P2[]=

{

0xf5,0xf6,0xfe,0x54,0x56,0x76,0xd7,0x49,0xa9,0xe4,0xc6 };

void DelayMS(uint x)

{

uchar t;

while(x--)

{

for(t=120;t>0;t--);

}

}

void main()

{

uchar i;

while(1)

{

for(i=136;i>0;i--)

{

P0=Pattern_P0[i];

P2=Pattern_P2[i];

DelayMS(150);

}

}

}

基于51单片机红外感应家用小夜灯的设计概要

本科毕业论文(设计) 题目: 基于51单片机红外感应家用小 夜灯的设计 院系:物理与电子信息科学系 专业:电子信息科学与技术 姓名: 学号: 指导教师:周鸿武 教师职称:讲师 填写日期:2011年5 月 10 日

摘要 本系统采用了热释电红外传感器,它的制作简单、成本低、安装比较方便,而且性能比较稳定,抗干扰能力强、灵敏度高、安全可靠。 人体都有恒定的体温,一般在37度左右,所以会发出特定波长的红外线,人体辐射的红外线的中心波长为9~10um,而热释电红外传感器的波长灵敏度在0.2~20um范围内几乎稳定不变,所以实际系统中常采用的是热释电红外传感器。热释电传感器主要是以非接触的形式对人体辐射的红外线进行检测,将检测到的红外光谱转变成微弱的电信号,然后通过放大电路将微弱的电信号放大,最后经单片机处理以达到驱动电路从而使感应灯发光的效果。 本设计主要包括硬件和软件设计两个部分。硬件部分包括单片机控制电路、红外探头电路、驱动执行发光电路、发光器控制电路等部分组成。软件部分主要是延时程序的设计,处理器采用51系列单片机AT89C51,整个系统是在系统软件的控制下工作的。 关键词:单片机;红外传感器;数据采集;发光电路

Abstract This system uses a pyroelectric infrared sensor, its make simple, low cost, installation are more convenient and more stable performance, strong anti-jamming capability, high sensitivity, safe and reliable. The human body has a constant temperature, be in commonly 37 degrees or so, so will issue certain wavelengths of infrared radiation infrared center for 9 ~ 10um wavelength, and pyroelectric infrared sensor sensitivity in the wavelength of 0.2 ~ 20um range almost constant, so actual system often USES is pyroelectric infrared sensors. Pyroelectric non-contact sensor is mainly by the form of human radiation of infrared testing, detect the infrared spectrum into a weak signal, and then by amplifying circuit will weak signal amplifier, finally SCM processing to achieve driving circuit is thus make induction lamp glow effect. This design includes two parts and the design of hardware and software. Hardware part includes single-chip microcomputer control circuit, infrared sensor circuit, drive execution shine circuit, lighter control circuit components. Software part mainly delay program design, the processor by 51 series microcontroller AT89C51, the whole system is under control work in the system software. Keywords: PIC, Infrared sensor, Data acquisition, Luminous circuit

双单片机控制流水灯(精)

案例8 双单片机通信控制流水灯 用串行工作方式进行单片机之间的通信,电路图如下图所示。两个89S51单片机通过串行口进行通信,设置U1使用的晶振频率是11.0592MHz,U2使用的晶振频率是22.1184MHz,U1的RXD接U2的TXD,U1的TXD接U2的RXD,U2接8个发光二极管,要求由U1向U2发送数据,使8个发光二极管按从左到右逐一点亮的流水灯效果。 MCS-51单片机之间的串行异步通信 1.串行口的编程串行口需初始化后,才能完成数据的输入、输出。其初始化过程如下: (1)按选定串行口的工作方式设定SCON的SM0、SM1两位二进制编码。 (2)对于工作方式2或3,应根据需要在TB8中写入待发送的第9位数据(地址为1,数据为0)。 (3)若选定的工作方式不是方式0,还需设定接收/发送的波特率。 (4)设定SMOD的状态,以控制波特率是否加倍。 (5)若选定工作方式1或3,则应对定时器T1进行初始化以设定其溢出率。 2.案例分析由于串行口通信时传输的“0”或者“1”是通过相对于“地”的

电压区分的,因此使用串行口通信时,必须将双方的“地”线相连以使其具有相同的电压参考点。需要注意的是,异步通信时两个单片机的串行口波特率必须是一样的。由于U1使用的晶振频率是11.0592MHz,U2使用的晶振频率是22.1184MHz,因此二者的串行口初始化程序不完全一样。假设使用240bit/s的波特率,使用串行工作方式1,Tl使用自动装载的方式2,则Ul的TH1应初始化为136,U2的TH1应初始化为16。 对应的程序完成如下功能:Ul和U2进行双工串行通信,Ul给U2循环发送流水灯控制字,U2收到控制字后送到P0口,点亮相应发光二极管,双方都用中断方式进行收发。 (1)单片机U1的源程序 #include unsigned char sdata=0xfe; void isr_uart(); void main() { TMOD=0X20; TH1=136; TL1=136; SCON=0x40; PCON=0; TR1=1; EA=1;ES=1; SBUF=sdata; while(1); } void isr_uart() interrupt 4 {

按键控制单片机改变流水灯速度

按键控制单片机改变流水灯速度 /*程序效果:有三个按键,按下其中任意一个流水灯的速度改变 */#includereg52.h //52 系列单片机的头文件#define uchar unsigned char//宏定义 #define uint unsigned intuchar count=40,flag=0; //定义刚开始的流水灯的速度,后 一个为标志变量void main(){uchar i=0;//定义局部变量EA=1; //打开总 中断ET0=1; //打开定时器TR0=1; //启动定时器TH0=(65536-50000) /256; //装初值TL0=(65536-50000)%256; P2=0xfe; //点亮第一个数码管, 为下次循环做准备while(1){ if(flag) //flag 被置位{ flag=0;//清零,为下次做准备P2=~P2; //取反P2=1; //左移一位P2=~P2; //取反i++; if(i==8) //移到第八个数码管,则从新装初值{ i=0; P2=0xfe; } } P0=0xf0; //赋初值if((P00xf0)!=0xf0) //判断是否有按键按下{ if(P0==0x70) //按下第一个按键count=60; //给count 从新赋值 if(P0==0xb0) count=20; if(P0==0xd0) count=10;} }}void time0() interrupt 1 //定时器0{static uchar cnt; //定义静态变量TH0=(65536-50000)/256;TL0=(65536-50000)%256; cnt++; //计数if(cnt==count){ cnt=0; //清零flag=1; //置标志位}} tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!

基于单片机的声光控制灯

基于单片机的声光控制模拟路灯 (程序部分) 前言:单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。本次我们采用at89c51单片机设计一种基于单片机控制的声光控制模拟路灯。该灯有声控,光控,声光同时控制楼道灯三种模式,经过调查,现在绝大多数小区的楼道灯都是纯电路形式实现声光控制的,这较之智能控制缺乏功能多样性,稳定性,而未来肯定是智能化的天下,所以我们用单片机模拟这一个多功能灯的系统。 关键字:单片机,at89c51,智能社区,楼道灯 目录: 一、设计目的 (2) 二、总体设计 (2) 方案选择: (2) 三、硬件设计 (3) 原理说明: (3) 四、软件设计 (3) 主要程序清单: (3) 程序框图: (5) 五、实验结果 (6) 六、总结 (6)

通过此次设计,主要是为了巩固我们的单片机相关知识及对单片机的相关应用,培养电子系统设计与实践的能力,学会设计使用简易的声、光传感器,并能用这些传感器设计一个声光控制的路灯(楼道灯)。 完成功能: 1)、声控灯模式。当传感器接收到声音信号时,单片机控制灯亮,并在5秒后灯自动熄灭。 2)、光控等模式。当光电传感器接收到为暗光时,灯自动点亮,接收到为亮光时,等自动熄灭。 3)、楼道灯模式。声光控制结合,即模拟当天暗并且楼道里有人走过的时候灯自动点亮5秒后熄灭。 二、总体设计 此次设计的声光控制灯包括三个基本模块,即声音处理模块、光处理模块、单片机小系统。总体设计框图如下: 图1、总体设计框图 方案选择: 1)、单片机部分。由于此次设计对单片机的要求较低,所以我们选择最为常用的at89c51单片机作控制部分。 2)、声控部分 一:选择专用的声音传感器模块来完成,能得到正确的波形、电压、频率等参数,且设计电路简单省事,但成本较高。 二:用驻极体话筒通过相应的信号处理电路对声音信号进行处理,成本较低,但电路设计麻烦。 综上所述:我们选择方案二,因为此次设计对声音信号的波形等参数要求较小,只要单片机接收到并能判断为高电平即可。 3)、光控部分 一:用光敏二极管作光电元件,光敏二极管对光转换为相应的电流。 二:用光敏电阻作光电元件,光敏电阻对光转换为相应的电阻。 综上所述:我们选用光敏电阻作光控部分的核心元件,因为光敏二极管转换成的是电流,而我们需要判断的是电压信号,将电流转换为电压信号的电路较复杂。

(完整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

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

井冈山大学 机电工程学院 单片机 课程设计报告 课程名称:单片机 设计题目:心形流水灯 姓名:玉红 专业:生物医学工程 班级: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

按键控制流水灯设计报告

按键控制流水灯设计报告 一、项目名称: 按键控制流水灯 二、目的: 通过对按键控制发光二极管项目的改变,设计出自己的方案,来加深对硬件技术的理解,同时锻炼关于硬件的编程技术,掌握keil等软件的使用。 三、硬件原理: 数码管与发光二极管硬件电路图: 芯片引脚电路图:

按键与导航按键:

四、软件原理: 变量Key1,Key2,Key3分别代表第一个、第二个、第三个按键,值为零时表示按下了该按键。那么可以写出一个判断条件,当这三个变量的值分别为1 时,就分别调用三个不同的函数,三个函数分别表示LED灯的三种不同的闪亮方式。 五、软件流程:

首先判断哪一个变量的值为1,即哪一个按键被按下,然后就调用相应的函数。 六、关键代码: void main() { Init(); P0=0x00; while(1){ //其他两个key通过中断实现 // if(Key3==0) // { // G_count=0; // while(G_count!=200);//延时10ms // while(!Key3)//等待直到释放按键 // { // P0=0x33; // } // } if(Key1==0)fun2(); if(Key2==0)fun3(); if(Key3==0)fun4();

} } 七、操作说明: 当把软件下载到电路板以后,给它插上电源,然后按下不同的按键,可以观察到LED灯亮。 八、存在的问题: 原先的main()函数中只有KEY3,并没有Key1和Key2,所以暂时不清楚如何感应到按键一和按键二什么时候按下。 九、后续设计计划: 可以设计更炫酷的亮灯方式。

单片机c语言编程控制流水灯

说了这么多了,相信你也看了很多资料了,手头应该也有必备的工具了吧!(不要忘了上面讲过几个条件的哦)。那个单片机究竟有什么 功能和作用呢?先不要着急!接下来让我们点亮一个LED(搞电子的应该知道LED是什么吧^_^) 我们在单片机最小系统上接个LED,看我们能否点亮它!对了,上面也有好几次提到过单片机最小系统了,所谓单片机最小系统就是在单片机 上接上最少的外围电路元件让单片机工作。一般只须连接晶体、VCC、GND、RST即可,一般情况下,AT89C51的31脚须接高电平。 #include //头文件定义。或用#include其具体的区别在于:后者定义了更多的地址空间。 //在Keil安装文件夹中,找到相应的文件,比较一下便知! sbit P1_0 = P1 ^ 0; //定义管脚 void main (void) { while(1) { P1_0 = 0;//低电平有效,如果把LED反过来接那么就是高电平有效 } } 就那么简单,我们就把接在单片机P1_0上的LED点亮了,当然LED是低电平,才能点亮。因为我们把LED的正通过电阻接至VCC。 P1_0 = 0; 类似与C语言中的赋值语句,即把0 赋给单片机的P1_0引脚,让它输出相应的电平。那么这样就能达到了我们预先的要求了。 while(1)语句只是让单片机工作在死循环状态,即一直输出低电平。如果我们要试着点亮其他的LED,也类似上述语句。这里就不再讲了。 点亮了几个LED后,是不是让我们联想到了繁华的街区上流动的彩灯。我们是不是也可以让几个LED依次按顺序亮呢?答案是肯定的!其 实显示的原理很简单,就是让一个LED灭后,另一个立即亮,依次轮流下去。假设我们有8个LED分别接在P1口的8个引脚上。硬件连接,在 P1_1--P1_7上再接7个LED即可。例程如下: #include sbit P1_0 = P1 ^ 0; sbit P1_1 = P1 ^ 1; sbit P1_2 = P1 ^ 2; sbit P1_3 = P1 ^ 3; sbit P1_4 = P1 ^ 4; sbit P1_5 = P1 ^ 5; sbit P1_6 = P1 ^ 6; sbit P1_7 = P1 ^ 7; void Delay(unsigned char a) { unsigned char i; while( --a != 0) {

单片机流水灯课程设计

单片机流水灯课程 设计

基于AT89C51单片机的流水灯 1 引言 1.1 课题简介 单片机全称叫单片微型计算机(Single Chip Microcomputer),是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。 当前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:在智能仪器仪表上的应用,例如精密的测量设备;在工业控制中的应用,用单片机能够构成形式多样的控制系统、数据采集系统,例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算

机联网构成二级控制系统等;在家用电器中的应用可从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。单片机在医用设备领域中的应用,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等;在各种大型电器中的模块化应用,如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。 本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发对计算器设计做了详细的分析和研究。本系统就是充分利用了8051芯片的I/O引脚。系统以采用MCS-51系列单片机Intel8051为中心器件来设计LED流水灯系统,实现8个LED霓虹灯的左、右循环显示,并实现循环的速度可调。 1.2 设计目的 (1) 学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调试能力。 (2) 掌握汇编语言程序设计方法。 (3) 培养实践技能,提高分析和解决实际问题的能力。 1.3 设计任务及要求 (1) 彩灯用8个发光二极管代替。 (2) 电路具有控制彩灯点亮右移、左移、全亮及全灭等功能。

花样流水灯设计

单片机课程设计 2014年 6月 15日 课 程 单片机课程设计 题 目 花样流水灯 院 系 电气工程及其自动化系 专业班级 1112班 学生姓名 温亿锋 学生学号 201111631227 指导教师 张瑛

一丶任务 设计一款以AT89C51单片机作为主控核心,按键控制电路、流水灯显示电路以及单片机最小系统等模块组成的核心主控制电路。 二丶设计要求 通过发光二极管显示不同的花样(至少有六种花样),并且可以通过按键来控制流水灯的速度。 三丶设计方案 本方案主要是通过对基于单片机的多控制、多闪烁方式的LED流水灯循环系统的设计,来达到本设计的要求。其硬件构成框图如下图所示,以单片机为核心控制,由单片机最小系统(时钟电路、复位电路、电源)、按键控制电路、LED 发光二极管和5V直流电源组成。 单片机流水灯循环控制系统硬件框图 此设计方案中单片机的P1口接5路按键控制电路,实现流水灯花型的切换功能;单片机的P3.7引脚接上一个按钮开关以实现对流水灯闪烁频率的控制,即实现了快慢两种节拍实现花型的变换;单片机上的P2口接八路LED发光二极管组成流水灯电路,显示流水灯循环情况。 四丶系统硬件设计 4.1 直流稳压电源电路

对于一个完整的电子设计来讲,首要问题就是为整个系统提供电源供电模块,电源电路的稳定可靠是系统平稳运行的前提和基础。电子设备除用电池供电外,还采用市电(交流电网)供电。通过变压、整流、滤波和稳压后,得到稳定的直流电。直流稳压电源是电子设备的重要组成部分。本项目直流稳压电源为+5V。 直流稳压电源的制作一般有3种制作形式,分别是分立元件构成的稳压电源、线性集成稳压电源和开关稳压电源。下图为稳压电源采用的是三端集成稳压器7805构成的正5V直流电源。 三端固定式集成稳压电源电路图 AT89C51单片机的工作电压范围:4.0V---5.5V,所以通常给单片机外接5V 直流电源。此处用3节1.5V的干电池供电。 4.2 单片机最小系统 要使单片机工作起来,最基本的电路的构成由单片机、时钟电路、复位电路等组成,单片机最小系统如图所示。 时钟电路:本系统采用单片机内部方式产生时钟信号,用于外接一个12MHz 石英晶体振荡器和2个30pF微调电容,构成稳定的的自激振荡器,其发出的脉冲直接送入内部的时钟电路。 复位电路:确定单片机工作的起始状态,完成单片机的启动过程。单片机系统的复位方式有上电自动复位和手动按键复位。本设计采用手动按键复位,该复位方式同样具有上电自动复位功能。

51单片机课程设计 声控灯

课程设计报告 华中师范大学武汉传媒学院 传媒技术学院 电子信息工程2011 仅发布百度文库,版权所有.

单片机课程设计 一、设计题目、要求 题目:声控灯设计 要求:A.使用单片机实现声控灯 B.当说话声音大于一定程度时,发光二极管显示,延时大于1秒 二、设计框图 1、硬件框图 三、方案设计 如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。 四、硬件原图设计

五、程序流程图 六、仿真图 仿真结果如下:当S2关闭

当S3关闭 七、制作

八、调试 流水灯制作完成后,我们对它进行了调试,一开始灯不停地闪,无法接受到声音信号。后来,我们对PCB进行了检查,发现有放大电路的集电极连接线断路了,导致声音信号没法被芯片接收到。我们迅速的电路进行了修复。修复后,电路能够顺利的进行工作了。 九、心得体会 回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功。 在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。比如在调试的时候,程序老是不稳定中断服务程序有时执行一次,有时又执行两次,开始我以为是板子受环境影响。后来在网上百度才知道是软件问题,是我忘了在执行中断服务程序时候把相应的中断关了,导致在执行中断服务程序时易受影响执行两次或两次以上。在这个发现问题之后,我在中断服务程序中关了相应的外中断之后。问题就解决了,下载程序到板子之后,运行就正常了。

基于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

单片机课程设计报告旗舰版

单片机原理及系统课程设计 评语: 考勤(10)守纪(10)过程(40)设计报告(30)答辩(10)总成绩(100) 专业:电气工程及其自动化 班级:电气1001班 姓名:周兴 学号: 201009018 指导教师:李红 兰州交通大学自动化与电气工程学院 2013 年 3 月 7 日

基于单片机的LED流水灯系统设计 摘要 本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发对计算器设计做了详细的分析和研究。本系统就是充分利用了8051芯片的I/O 引脚。系统以采用MCS-51系列单片机89C51为中心器件来设计LED流水灯系统,实现8个LED霓虹灯的左、右循环显示,并实现循环的速度可调。 关键词:单片机;LED流水灯;MCS-51 Abstract This design mainly to analyze calculator software and in the process of developing the steps, and from the practical experience of the calculator design has made the detailed analysis and research. This system is to make full use of the 8051 chip I/O pins. System to the MCS - 51 series microconteroller as the center Intel8C51 device to design LED running lights system, realize the eight LED neon light left and right cyclic display, and realize the circulation speed adjustable. Keywords: single chip microcomputer, LED running lights,MCS-51

流水灯控制实验报告及程序

实验三流水灯控制实验 姓名专业通信工程学号成绩 一、实验目的 1.掌握Keil C51 软件与protues软件联合仿真调试的方法; 2.掌握如何使用程序与查表等方法实现流水效果; 3.掌握按键去抖原理及处理方法。 二、实验仪器与设备 1. 微机1台 2. Keil C51集成开发环境 3. Proteus仿真软件 三、实验内容 1.用Proteus设计一流水灯控制电路。利用P1口控制8个发光二级管L1—L8。P3.3口接一按 键K1。参考电路如下图所示。其中74LS240为八反响三态缓冲器/线驱动器。 2.用中断或查询方式编写程序,每按动一次K1键,演示不同的流水效果。若用KEY表示按键的 次数,则其对应的流水效果如下: ① KEY=0: L1-L8全亮; ② KEY=1: L1-L8先全灭,然后自右向左单管点亮,如此循环; ③ KEY=2: L1-L8先全灭,然后自右向左依次点亮,如此循环; ④ KEY=3: L1-L8先全亮,然后自左向右依次熄灭,如此循环; ⑤ KEY=4: L1-L8先全灭,然后整体闪烁,如此循环; ⑥ KEY=5:自行设计效果。 以上移位及闪烁时间间隔均设置为0.3秒,按动5次按键后,再按键时,流水效果从头开始循环。 四、实验原理 1.按键去抖原理:通常按键所用的开关为机械弹性开关,当机械触点断开、闭合时,电压信号 波形如下图所示。由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定的接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。抖动时间的长短由按键的机械特性决定,一般为5~10ms。按键抖动会引起一次按键被误读多次。为了确保CPU对键的一次闭合仅做一次处理,必须去除按键抖动。在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。按键的抖动,可用硬件或软件两种方法消除。常用软件方法去抖动,即检测到按键闭合后执行一个5~10ms延时程序;让前沿抖动消失后,再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有按键按下。当检测到按键释放后,也要给5~10ms的延时,待后延抖动消失后,才能转入该键的处理程序。 2.74LS240:八反相三态缓冲器/线驱动器 引脚排列图:

基于单片机的楼道内声控灯及报警系统

摘要 本课题设计一款基于单片机的楼道内声控灯及报警系统,主要由声控灯和意外紧急报警两部分组成。声控灯部分是通过声音传感器进行声音检测,然后经单片机进行处理,实现灯的开关智能控制。报警部分主要由蜂鸣器和按键组成,当声控灯出现故障时,通过触动按键实现蜂鸣器报警进行维修提示。硬件电路包括单片机最小系统电路、声音传感器检测模块、按键模块、LED显示模块、蜂鸣器报警电路模块;软件部分主要通过C程序的编程实现等灯的亮灭,然后通过发光二极管显示出来,通过按键操作实现报警功能。设计中结合硬件、软件的分步调试,达到要求的控制效果。当有人走过楼梯通道,发出脚步声或其它声音时,楼道灯会自动点亮,提供照明。当人们进入家门或走出公寓,楼道灯延时几分钟后会自动熄灭。当出现故障时,可触动按钮,进行报警维修。声控延时开关不仅适用于住宅区的楼道,而且也适用于工厂、办公楼、教学楼等公共场所,它具有体积小、外形美观、制作容易、工作可靠等优点。 关键词:单片机;声控灯;报警系统;声音传感器;蜂鸣器

Abstract This project is based on single-chip design a voice-activated light and alarm system in the building, by voice-activated lights and emergency alarm which two key components.V oice-activated light partly through sound sensors for sound detection, and then single-chip processing, realization of intelligent control for the light switch.Alarm part consists mainly of beeper and keys, when voice-activated lights fail, through touches the pressed key realization light buzzer alarms for maintenance tips.The hardware circuit consists of single chip microcomputer minimum system circuit, sound sensors module, keys module, LED display module, a buzzer alarm circuit module;Software part mainly accomplished by programming of C programs such as destroy the light of lights, and then through the led display,Alarm functions are realized by key operation.In the design of combination of hardware and software debugging step by step, meet the requirements of control effect.When people walk through the stairs, when making footsteps or other sound, stair lights will automatically light up and lighting.When people enter the House or get out of the apartment, corridor lamp delay automatically turns off after a few minutes.When a failure occurs, you can touch a button and alarm servicing.V oice-activated inertia switch applies not only to the residential area of the building, but also to factories, office buildings, school buildings and other public places, it is of small size, pleasing in appearance, making easy, reliable and so on. Keywords:microcontroller; voice-activated light and alarm system; sound sensors; buzzer

最新五种编程方式实现流水灯的单片机c程序讲课教案

五种编程方式实现流水灯的单片机C程序 //功能:采用顺序结构实现的流水灯控制程序 /*此方式中采用的是字操作(也称为总线操作)*/ #include void delay(unsigned char i); //延时函数声明 void main() //主函数 { while(1) { P1 = 0xfe; //点亮第1个发光二极管,0.000389s delay(200); //延时 P1 = 0xfd; //点亮第2个发光二极管,0.155403s,0.1558 delay(200); //延时 P1 = 0xfb; //点亮第3个发光二极管 delay(200); //延时 P1 = 0xf7; //点亮第4个发光二极管 delay(200); //延时 P1 = 0xef; //点亮第5个发光二极管 delay(200); //延时 P1 = 0xdf; //点亮第6个发光二极管 delay(200); //延时 P1 = 0xbf; //点亮第7个发光二极管 delay(200); //延时 P1 = 0x7f; //点亮第8个发光二极管 delay(200); //延时 } } //函数名:delay //函数功能:实现软件延时 //形式参数:unsigned char i; // i控制空循环的外循环次数,共循环i*255次 //返回值:无 void delay(unsigned char i) //延时函数,无符号字符型变量i为形式参数{ unsigned char j, k; //定义无符号字符型变量j和k for(k = 0; k < i; k++) //双重for循环语句实现软件延时 for(j = 0; j < 255; j++); } //功能:采用循环结构实现的流水灯控制程序 //此方式中采用的移位,按位取反等操作是位操作 #include //包含头文件REG51.H void delay(unsigned char i); //延时函数声明 void main() //主函数

单片机课程设计报告-音乐花样灯

单片机课程设计报告名称:音乐盒 院系:惠州学院电子科学系 班级:05电气 学生姓名:陈文志 同组姓名:周俊锋、张少威 日期:2008年12月

1、设计方案 设计一个基于MCS-51系列单片机的音乐盒,利用试验板上的开关,按开关切换演奏出不同的乐曲。蜂鸣器发出某个音调,与之相对应的LED亮起。使用两个按键,一个用来切换歌曲,另一个切换八路LED的变化花样。 2、实现功能: 1)电路有两种工作模式:演奏音乐模式和花样灯模式。 演奏音乐模式:演奏完整的一首的歌曲,八路LED随着音乐变化。 花样灯模式:八路LED变化出各种花样,蜂鸣器随着发出“嘀嘀”声 2)按下按键1进入演奏音乐模式,再按切换歌曲,共两首歌曲。 3)按下按键2进入花样灯模式,再按切换LED花样,共四种花样。 此电路的程序只占用了1K左右,可编制更多的音乐和LED花样,使系统的功能更加强大。 3、硬件电路设计 电路原理图

由于51单片机的电流驱动能力较弱,而蜂鸣器的工作电流为几十MA,故驱动蜂鸣器需用一个pnp三极管。单片机给P3.0低电平,则蜂鸣器开;给高电平则蜂鸣器关。 LED接到单片机的P1口,拉低IO口,可使LED亮起。 两个按键的一端接单片机的IO口,另一端接地。不按下去时与按键相连的IO口被单片机内部上拉电阻拉高,按下则与之相连的IO口变成低电平,引发单片机中断。 4、软件设计 程序设置了两个标志——count1和count2,分别初始化为1和0。按键1使得count1在1和2之间切换,按键2使得count2在1~4之间切换。程序检测count1的值,count1等于1时播放第一首歌曲,等于2时播放第二首。另一方面根据count2的值来切换LED 的花样。Count1和count2的值是互斥的,设置count1等于1、2时,count2同时设置为0;设置count2等于1~4时,count1也同时设置为0。 歌曲简谱的编码规则: do re mi fa so la si分别编码为1~7,重音do编为8,重音re编为9,停顿编为0。播放长度以十六分音符为单位(在本程序中为165ms),一拍即四分音符等于4个十六分音符,编为4,其它的播放时间以此类推。音调作为编码的高4位,而播放时间作为低4位,如此音调和节拍就构成了一个编码。以0xff作为曲谱的结束标志。 举例1:音调do,发音长度为两拍,即二分音符,将其编码为0x18。 举例2:音调re,发音长度为半拍,即八分音符,将其编码为0x22 歌曲播放的设计。先将歌曲的简谱进行编码,储存在一个数据类型为unsigned char 的数组中。程序从数组中取出一个数,然后分离出高4位得到音调,接着找出相应的值赋给定时器0,使之定时操作蜂鸣器,得出相应的音调;接着分离出该数的低4位,得到延时时间,接着调用软件延时。 确定定时器0对应于音调的初值: 假设要得到500HZ的声音。500HZ的声音信号每个周期为2ms,即2000us。假设单片机采用12MHZ的晶振,每个机器周期的时间为12/12M=1 us。故单片机操作(对与蜂鸣器相连的IO口取反)一次蜂鸣器的时间间隔为2000us/1us/2=1000个机器周期,故给工作在方式1的定时器0赋的初值为TH0=(65536-1000)/256,TL0=(65536-1000)%256。

相关文档
最新文档