当前位置:文档之家› 基于51单片机光电对管智能小车从入门到精通全教程分解

基于51单片机光电对管智能小车从入门到精通全教程分解

基于51单片机光电对管智能小车从入门到精通全教程分解
基于51单片机光电对管智能小车从入门到精通全教程分解

电子科技协会--《电子实践制作教程》
目录
第九章、基于 51 单片机的红外循迹小车..................................................................................... 2 1、制作要求............................................................................................................................. 2 2、制作目的............................................................................................................................. 2 3、制作方案(硬件方面) ..................................................................................................... 2 3.1 系统概述.................................................................................................................... 2 3.2 单片机模块................................................................................................................ 3 3.3 指示灯原理图............................................................................................................ 4 3.4 红外对管原理图 ........................................................................................................ 4 3.5 电机驱动模块............................................................................................................ 5 4、制作方案(软件方面) ..................................................................................................... 7 4、 附录................................................................................................................................... 9 5.1 实物和效果展示 ........................................................................................................ 9 5.2 参考程序: ........................................................................................................... 9 5.3 基于 C51 控制红外循迹小车原理图 ................................................................. 17
1 / 18

电子科技协会--《电子实践制作教程》
第九章、基于 51 单片机的红外循迹小车
随着电子科技的迅猛发展, 人们对技术也提出了更高的要求。 汽车的智能化在提高汽车 的行驶安全性, 操作性等方面都有巨大的优势, 在一些特殊的场合下也能满足一些特殊的需 要。智能小车系统涉及到自动控制,车辆工程,计算机等多个领域,是未来汽车智能化是一 个不可避免的大趋势。 本次红外寻迹小车采用了 C51 单片机作为控制核心, 利用红外对管传 感器检测黑线达到循迹目的,自动寻迹,整体系统的电路结构简单,可靠性能高。
1、制作要求
使用 51 单片机作为控制芯片,自制一台可自行检测道路并行驶的简易智能小车。在这 一次的制作活动中将会接触到 51 单片机、红外对管、电机驱动模块、简单的 C 语言编程, 要求学会使用 51 单片机进行编程,入门单片机,能够独立的搭出单片机最小系统;了解红 外对管的工作原理、电路图,掌握电压比较器的使用方法,学会调试红外对管;了解电机驱 动的作用、工作原理;能够进行简单的 C 语言编程,给单片机编写程序使其能够正常工作。
2、制作目的
1、入门 51 单片机,进行简单的 C 语言编程; 2、掌握 51 单片机最小系统,中断,定时器/计数器等; 3、了解传感器的种类和原理,掌握红外传感器并学会调试; 4、学习 C 语言的基本语句,用 C 语言编写程序。
3、制作方案(硬件方面)
3.1 系统概述
智能循迹小车主要由单片机模块、红外检测模块、电机驱动模块组成。单片机为主控模 块,接受并判断各种信号,控制电机驱动。在智能循迹小车系统设计过程中,用 L293 驱动 两个电机, 产生信号驱动小车前进时,是通过循迹模块里的红外对管 ST188 是否检测到黑线 产生的电平信号通过 LM339 在返回到单片机,单片机再根据程序设计的要求作出相应的判 断送给电机驱动模块,以实现小车自动循迹的功能(可对应附录里的系统原理图) 。
红外传感器 黑线信号
单片机
简单的pwm
控制电机驱 动芯片L293 驱动电机
指示灯
图 9-3-1 小车工作图
2 / 18

电子科技协会--《电子实践制作教程》
3.2 单片机模块
单片机模块为此次小车系统的核心,是作为系统信号采集和输出控制的重要部分。51 单片机的种类繁多, 通常使用的是 AT51 单片机和 STC51 单片机, 其中 STC12 单片机自带 PWM, 可以直接使用。单片机模块为核心模块,其它由时钟、电源、串口 MAX232 与程序烧录、I/O 接口等组成。通过各结构的工作加上丰富的 I/O 接口,实现数据处理,进而对外部模块进行 控制。我们队设计方案主要分为两种: 设计一个包含电源、 串口与程序烧录、 外接 I/O 口组成, 实现现场的小车调试程序烧录。 本次制作智能循迹小车所需提供 9V 电源,一方面 9V 电源直接供给电机驱动,驱动电机直 接转停,另一方面 9V 经过稳压芯片,将 9V 电压稳压到 5V 直接给单片机模块、红外、指示灯 工作,才能使小车正常工作。 稳压芯片 7805 输出为+5V 稳定电压,最高输入极限电压 36,最低输入电压 7V,集成稳压 块的最佳工作状态是输入电压与输出电压间的压差在 3~4V 左右。压差太大可在输入前端串 联几个二极管降压,这样稳压块就不会很烫了。










图 9-3-2 电源供应
单 片 机 下 载 口

图 9-3-3 程序下载口








图 9-3-4 单片机最小模块
3 / 18





电子科技协会--《电子实践制作教程》
单片机系统作为循迹小车的核心控制器,起着控制小车所有运行状态的作用。控制方 法有许多,大部分采用单片机来控制。单片机将红外对管采集的道路信息进行处理。小车 进入循迹模式后,即不停的扫描与循迹模块相连接的 I/O 口,一旦检测到某个 I/O 口有信号 变化,程序进入判断程序,把相应的信号传给减速电机控制器 L293 从而纠正小车的状态。 单片机最小系统调试步骤: 方法一: 1.用万用表确定是否正常供电。 2.用示波器确定晶振是否起振。 3.单片机是否工作。比如,单片机一上电,它的有些管脚 ALE 引脚会输出脉冲,可以通 过示波器查看。 方法二: 1.查看是否可以烧录程序。 2.可以结合图上的指示灯电路点亮一个发光二级管。参考程序在右边。
3.3 指示灯原理图
本模块是用 4 个发光二极管作为指示灯显示模块,通过红外对管对道路进行检测后传 输信号给单片机,由单片机处理信号后,控制 P2 口的 LED1、LED2、LED3、LED4(小车总原 理图上) 的输出高、低电平,控制 NPN 三极管的通断,来控制指示灯的亮、灭。即以此来显 示小车对道路的检测情况。
图 9-3-5 指示灯电路
3.4 红外对管原理图
能够用来采集赛道数据的传感器有很多种,比如红外传感器、黑白线检测传感器、光电 传感器和摄像头等;但综合价格、性能、使用三方面来看,红外传感器是较为理想的。黑白 线传感器如 tk-20 虽然性能优秀,但价格较高;光电传感器则受环境的影响太大,摄像头能 很好的采集赛道数据,但使用起来不如前面几种传感器简单,且价格较贵;因此这次的小车 采用的是 ST188 红外传感器,其检测距离可调整的范围大,4-10mm 均可使用。如图所示为 st188 红外传感器。
4 / 18

电子科技协会--《电子实践制作教程》
图 9-3-6 红外对管外型 图 9-3-7 红外对管电路图 在焊接 st188 时应该注意其引脚的位置, 不要弄错了; 同时在使用时也要小心, 因为 st188 很容易烧掉,其价格在 2-3 元不等。焊接完成后,检测 st188 是否正常工作可以使用手机的 照相功能,若通过手机的照相功能能够观察到红光,则说明 st188 已经可以正常工作了。接 下来要调整可调电阻以达到一个合适的比较电压,可以使用示波器进行调整。 如图 9-3-7 所示,当有电流经过 R4 时,红外发射管发射红外线到轨道上,光线经过道路 反射,红外接收管接收到红外线 C 和 E 引脚就有电流通过,此时 C 引脚的电压近似为 0V。 若发射管发射的红外被黑线吸收,接收管接收不到,此时 C 和 E 之间可视为断开,此时 C 脚的电压为 5V。 红外对管的道路的检测越清楚,传输给单片机的信息越稳定,小车就能更好地循迹。而 红外循迹模块的调试首先要判定自己的红外对管用没有用,而红外对管的检测方案有: 1) :通过测量红外发光二极管的正反向电阻,还可以在很大程度上推测其性能的优劣。 把万用表拨在 R×100 或 R×1K 挡,黑表笔接红外发光二极管正极,红表笔接负极,测得正向电阻 应在 20≈40K;黑表笔接红外发光二极管负极,红表笔接正极,测得反向电阻应大于 500K 以上。 2) :先给红外对管通电,采用手机摄像功能查看红外发射管是否是好的。
图 9-3-8 LM339 内部结构图 LM339 电压比较器芯片内部装有四个独立的电压比较器, 如图 7 所示当同相输入端的电 压大于反相输入端时,输出正最大,此时 7 脚输出为 5v;若反相输入端的电压大于同相输 入端。
3.5 电机驱动模块
本次循迹小车的制作采用直流减速电机,直流减速电机转动力矩大,体积小、重量轻、 装配简单、使用方便。其内部由高速电机提供原动力,带动变速(减速)此轮组,产生较大 扭力。
5 / 18

电子科技协会--《电子实践制作教程》
驱动模块采用芯片 L293 为电机驱动芯片,L293 是一个具有高电压高电流的全桥驱动芯 片,响应频率很高。可以直流带动两个 12V 的直流电机。
L293 内部的原理图如下:
6V动力电源
图 9-3-9 L293 内部原理图 OUT1 与 OUT2 与小车的一个电机的正负极相连,OUT3 与 OUT4 与小车的另一个电机的正 负极相连,单片机通过控制 IN1 与 IN2,IN3 与 IN4 分别控制电机的正反转。ENA 与 ENB 分别 控制两个电机的使能(控制电机停转)。 表 9-3-1 L293 控制表 IN1 x 1 0 0 1 IN2 x 0 1 0 1 ENA 0 1 1 1 1 电机状态 停止 顺时针 逆时针 停止 停止
图 9-3-10 L293N 引脚图
6 / 18

电子科技协会--《电子实践制作教程》






图 9-3-11 电机驱动电路 L293 有两路电源分别为逻辑电源和动力电源, 上图中 6V 为逻辑电源, 12V 为动力电源。 J4 接入逻辑电源,J6 接入动力电源,J1 与 J2 分别为单片机控制两个电机的输入端,J3 与 J5 分别与两个电极的正负极相连。ENA 与 ENB 直接接入 6V 逻辑电源也就是说两个电机时刻 都工作在使能状态, 控制电机的运行状态只有通过 J1 与 J2 两个接口。 由于我们使用的电机 是线圈式的, 在从运行状态突然转换到停止状态和从顺时针状态突然转换到逆时针状态时会 形成很大的反向电流, 在电路中加入二极管的作用就是在产生反向电流的时候进行泄流, 保 护芯片的安全。
4、制作方案(软件方面)
本次小车制作系统主控芯片为 AT89S52,程序主要分为以下几个模块: 1、 主函数;作为整个程序的开始,与结束。Check_Load()、Deal_Message_of_Load()作为子 程序可在后调用。例: void main(void) { Timer_Init(); while(1) { Check_Load(); Deal_Message_of_Load(); } } 2、 赛道信息采集函数;对地面信号进行一个采集后,具体地对 Load_Size 进行赋值,以便 赛道处理按函数,对信号进行处理。例: void Deal_Message_of_Load(void) { switch(Load&0X0F) { case 0X01: Load_Size = 0X01; break; //0001 case 0x02: Load_Size = 0X02; break; //0010 case 0X03: Load_Size = 0X03; break; //0011
7 / 18



电子科技协会--《电子实践制作教程》
case 0x04: Load_Size = 0X04; case 0X06: Load_Size = 0X05; case 0x08: Load_Size = 0X06; case 0X0C: Load_Size = 0X07; case 0X00: Load_Size = 0X08; case 0x0f: Load_Size = 0X09; default: break; } P2 = Load&0X0F; }
break; break; break; break; break; break;
//0100 //0110 //1000 //1100 //0000 //1111
//点亮指示灯
3、 赛道处理函数;通过对赛道信息采集后,进行判断,并做出相应的指令控制电机转动。 例: void Control_Wheels(void) { if(Load_Size == 0x01) { IN1 = !IN1; Time_Count1++; if(Time_Count1/20 == 0) { IN3 = 1; } else { IN3 = 0; } if(Time_Count1 == 255) { Time_Count1 = 0; } } 4、 定时器初始化函数;顾名思义就是对时间进行计数,以方便中断的执行。 void Timer_Init(void) { TMOD = 0x11; //设定定时器 T0 和 T1 为工作方式 1,为 16 位定时器/计数 器 TH0 = (65536-60000)/256; TL0 = (65536-60000)%256; TR0 = 1; IE = 0X8A; IN1 = 1; IN2 = 0; IN3 = 1;
8 / 18

电子科技协会--《电子实践制作教程》
IN4 = 0; ENA = 1; ENB = 1; } 5、 延时函数;对时间进行控制,使在一定时间后执行需要执行的指令。例: void Delay(uchar Time) { uchar i=0,j=0; for(i=Time;i>0;i--) for(j=100;j>0;j--); } 6、 定时器中断 T0 服务函数;暂停当前程序的执行,优先执行中断函数里的程序。例: void Timer0() interrupt 1 { Time_Count2++; ENA = 0; ENB = 0; if(Time_Count2==2) { ENA = 1; ENB = 1; TH0 = (65536-60000)/256; TL0 = (65536-60000)%256; Control_Wheels(); Time_Count2 = 0; } }
4、附录
5.1 实物和效果展示
图 9-5-1 实物图
图 9-5-2 效果图
5.2 参考程序:
9 / 18

这里为 主程序: #include #include #include #define uchar unsigned char #define uint unsigned int void main(void) { Timer_Init(); while(1) { //定时器初始化配置
Check_Load(); //获取当前赛道信息 Deal_Message_of_Load(); //小车只能转弯 } }
下面为程序中的头文件函数,作为子程序起到解释作用。 #ifndef _CHECK_LOAD_H_ #define _CHECK_LOAD_H_ #include #define uchar unsigned char #define uint unsigned int /*************全局变量声明*********************/ uchar Load=0; //赛道信息存储变量 uchar Load_Size=0; //赛道类型存储变量 /***********************************************/ /**************************************** 函数功能:提取赛道信息 入口参数:无 出口参数:无 ****************************************/ void Check_Load(void) { P1 = 0XFF; //释放 P1 端口,此语句可以省略 Load = P1; //读取 P1 端口,初步提取赛道信息 } /****************************************

电子科技协会--《电子实践制作教程》
函数功能:处理赛道信息 入口参数:Load 出口参数:无 备 注:誰誰 2012 2 17 *****************************************/ void Deal_Message_of_Load(void) { switch(Load&0X0F) { case 0X01: Load_Size = 0X01; break; case 0x02: Load_Size = 0X02; break; case 0X03: Load_Size = 0X03; break; case 0x04: Load_Size = 0X04; break; case 0X06: Load_Size = 0X05; break; case 0x08: Load_Size = 0X06; break; case 0X0C: Load_Size = 0X07; break; case 0X00: Load_Size = 0X08; break; case 0x0f: Load_Size = 0X09; break; default: break; } P2 = Load&0X0F; } #endif
//0001 //0010 //0011 //0100 //0110 //1000 //1100 //0000 //1111
//点亮指示灯
下面为头文件也和上面的头文件一样,作为子程序。 #ifndef _CHANGE_DERECTION_H_ #define _CHANGE_DERECTION_H_ sbit IN1=P0^0; sbit IN2=P0^1; sbit IN3=P0^2; sbit IN4=P0^3; sbit ENA=P0^4; sbit ENB=P0^5; uchar Time_Count1=0; uchar Time_Count2=0; void Delay(uchar Time); /******************************************* 函数功能:控制左右车轮的转动,实现小车的智能循迹 控制思想:当 Load_Size = 0x01 时,说明小车最右边的光电对管采到黑线,故小车应该 往右边转,应使得小车的左轮转得比右轮多,依此类推
11 / 18
//位定义

电子科技协会--《电子实践制作教程》
入口参数:无 出口参数:无 *******************************************/ void Control_Wheels(void) { /*按照赛道处理的结果(Load_Size)对应的处理左右轮子的转速实现转弯*/ if(Load_Size == 0x01) { IN1 = !IN1; Time_Count1++; if(Time_Count1/20 == 0) //20 { IN3 = 1; } else { IN3 = 0; } if(Time_Count1 == 255) { Time_Count1 = 0; } } else if(Load_Size == 0x02) { IN1 = !IN1; Time_Count1++; if(Time_Count1/10 == 0) { IN3 = 1; } else { IN3 = 0; } if(Time_Count1 == 255) { Time_Count1 = 0; } } else if(Load_Size == 0x03) {
12 / 18
//10

电子科技协会--《电子实践制作教程》
IN1 = !IN1; Time_Count1++; if(Time_Count1/15 == 0) { IN3 = 1; } else { IN3 = 0; } if(Time_Count1 == 255) { Time_Count1 = 0; } } else if(Load_Size == 0x04) { IN3 = !IN3; Time_Count1++; if(Time_Count1/10 == 0) { IN1 = 1; } else { IN1 = 0; } if(Time_Count1 == 255) { Time_Count1 = 0; } } else if(Load_Size == 0x06) { IN3 = !IN3; Time_Count1++; if(Time_Count1/10 == 0) { IN1 = 1; } else {
//15
13 / 18

电子科技协会--《电子实践制作教程》
IN1 = 0; } if(Time_Count1 == 255) { Time_Count1 = 0; } } else if(Load_Size == 0x07) { IN3 = !IN3; Time_Count1++; if(Time_Count1/15 == 0) { IN1 = 1; } else { IN1 = 0; } if(Time_Count1 == 255) { Time_Count1 = 0; } } else if((Load_Size == 0x05)||(Load_Size == 0x08)) { IN1 = !IN1; IN3 = !IN3; } else {;} } /******************************************* 函数功能:定时器初始化 入口参数:无 出口参数:无 ********************************************/ void Timer_Init(void) { TMOD = 0x11; //设定定时器 T0 和 T1 为工作方式 1,为 16 位定时器/计数 器
14 / 18

电子科技协会--《电子实践制作教程》
TH0 = (65536-60000)/256; TL0 = (65536-60000)%256; TR0 = 1; IE = 0X8A; IN1 = 1; IN2 = 0; IN3 = 1; IN4 = 0;
//初始化定时器高 8 位 //初始化定时器低 8 位 //启动定时器 T0 //开定时器 T0 中断,开总中断 //初始化 L293 的 IN1~IN4 引脚。
ENA = 1; //使能 OUT1、OUT2 ENB = 1; //使能 OUT3、OUT4 } /********************************************* 函数功能:延时 入口参数:Time 出口参数:无 备注:誰誰 2012 2 18 *********************************************/ void Delay(uchar Time) { uchar i=0,j=0; for(i=Time;i>0;i--) for(j=100;j>0;j--); } /********************************************* 函数功能:定时器 T0 中断服务函数(已验证) 入口参数:无 出口参数:无 备注:誰誰 2012 2 18 *********************************************/ void Timer0() interrupt 1 { Time_Count2++; ENA = 0; ENB = 0; if(Time_Count2==2) { ENA = 1; ENB = 1; /*设定时器初始值为 60000*/ TH0 = (65536-60000)/256; //重新载入定时器 TH0 初始值 TL0 = (65536-60000)%256; //重新载入定时器 TL0 初始值 Control_Wheels(); //控制轮子转速以实现转弯 Time_Count2 = 0;
15 / 18

电子科技协会--《电子实践制作教程》
} } /********************************************* 函数功能:定时器 T1 中断服务函数(已验证) 入口参数:无 出口参数:无 备注:誰誰 2012 2 18 *********************************************/ /*void Timer1() interrupt 3 { IN3 = !IN3; } */ #endif
16 / 18























5.3 基于 C51 控制红外循迹小车原理图


电子科技协会--《电子实践制作教程》
17 / 18
排 针 排 针 小 系 统 红 外 检 测 模 块 基 于 红 外 循 迹 小 车 原 理 图 指 示 灯 模 块
























电子科技协会--《电子实践制作教程》
18 / 18

基于51单片机两种音乐编码的比较及用法

基于51单片机的两种音乐编码方法的比较及用法 (建议对这方面有兴趣的朋友们要先看懂了解音乐简谱,包括高音、中音、低音,节拍、延时,及各个音调的频率,网上有很多资料) 1方法:用51单片机音乐编码器软件(Music encode) 输出十六进制数表示: 曲谱存贮格式unsigned char code MusicName{音高,音长,音高,音长...., 0,0}; 末尾:0,0 表示结束(Important) (其实软件“关于”里的源代码有使用方法的介绍) 音高由三位数字组成: 个位是表示1~7 这七个音符 十位是表示音符所在的音区:1-低音,2-中音,3-高音; 百位表示这个音符是否要升半音: 0-不升,1-升半音。 音长最多由三位数字组成: 个位表示音符的时值,其对应关系是: |数值(n): |0 |1 |2 |3 | 4 | 5 | 6 |几分音符: |1 |2 |4 |8 |16 |32 |64 音符=2^n 十位表示音符的演奏效果(0-2): 0-普通,1-连音,2-顿音 百位是符点位: 0-无符点,1-有符点 2方法:编码为十六进制(高四位表示音调编码,低四位表示节拍编码)(各音调频率及初值计算定时器初值网上有,在此不叙说) do re mi fa so la si分别编码为1~7,重音do编为8,重音re编为9,停顿编为0。 如0x24,表示低音LA、1拍。以此类推 表4.4简谱对应的简谱码、T值、节拍数 简谱发音简谱码T值节拍码节拍数 5 低音SO 1 64260 1 1/4拍 6 低音LA 2 64400 2 2/4拍 7 低音TI 3 64524 3 3/4拍 1 中音DO 4 64580 4 1拍 2 中音RE 5 64684 5 1又1/4拍 3 中音MI 6 64777 6 1又1/2拍 4 中音FA 7 64820 8 2拍 5 中音SO 8 64898 A 2又1/2拍 6 中音LA 9 64968 C 3拍 7 中音TI A 65030 F 3又3/4拍 1 高音DO B 65058 2 高音RE C 65110 3 高音MI D 65157 4 高音FA E 65178 5 高音SO F 65217

(完整版)基于51单片机的电子八音盒详细设计步骤

一、设计目的 利用8052单片机结合内部定时器设计一个八音盒,按下单键可以演奏预先设置的歌曲旋律。 二、设计要求 其基本功能为:1,使用LED显示器来显示目前演奏的歌曲编号;2,具有8个按键操作来选择演奏哪一首歌曲;3,内建8首歌曲旋律,按下单键可以演奏歌曲。 三、设计器材 T89C52单片机、晶振、八个按键、二位一体共阳极数码管、电阻电容若干、导线。 四、设计方案及分析 设计思路: (1)选择8052单片机,通过T0定时中断,并配合P2.0引脚输出音频频率。 (2)P2.0引脚输出接蜂鸣器。 (3)通过P0口接LED。 (4)P1口接键盘,输入歌曲号。 音符产生方法: 不同的音调有不同的频率。频率不同,音调也就不同。 利用定时器,使其工作在模式1,定时中断,然后控制P2.0引脚的输出每次取反,就可以在P2.0的引脚输出相应的方波频率。改变计数初值,就改变了频率。定时器的定时时间等于半个周期,定时时间到就输出脉冲取反,重复此过程,就可在P2.0引脚得到一音频的脉冲。 如:中音1的频率=523HZ,周期T=1/523=1912us; 定时器的定时时间为:T/2=1912/2us=956us; 计算得TH0,TL0的计数初值THTL=64580 下面是个音符计数初值

节拍产生方法: 音乐中的节拍用延时时间产生。假设1/4拍执行一次延时程序,这1/2拍就执行两次延时程序,所以只要求出1/4延时时间,其余的节拍就是他的倍数。为方便记谱,将节拍数也进行编码,如下: 建立曲谱编码表: 编谱用8位编码,高4位代表音符,低4位代表节拍。如5 6中音5,中音6,都是1/2拍,则编码为:82H 92H 程序清单: #include #define uchar unsigned char #define uint unsigned int #define ulong unsigned long sbit SPEAK = P2^0;//接蜂鸣器管脚 uchar th0_f; uchar tl0_f;

51单片机蜂鸣器播放音乐代码

/*生日快乐歌曲*/ #include <> #define uint unsigned int #define uchar unsigned char sbit beep = P1^5; uchar code SONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159, 212,212,106,126,159,169,190,119,119,126,159,142,159,0}; uchar code SONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24, 9,3,12,12,12,12,12,9,3,12,12,12,24,0}; //延时 void DelayMS(uint x) { uchar t; while(x--) for(t=0;t<120;t++); } void PlayMusic() { uint i=0,j,k; while(SONG_LONG[i]!=0||SONG_TONE[i]!=0) { //播放各个音符,SONG_LONG 为拍子长度 for(j=0;j // 这是单片机音乐代码生成器生成的代码 #define uchar unsigned char sbit beepIO=P1^5; // 输出为可以修改成其它 IO 口uchar m,n;

基于AT89S51单片机的智能超声波避障小车

基于 AT89S51 单片机的智能 超声波避障小车
姓名: 班级: 学号:
钟洋 08 电子二班 200810330219 张儒
指导老师:

目录
摘要...........................................3 一、总体方案概述.......................................3 二、总体电路原理图....................................3 三、各模块功能介绍.................................4 (一) 、超声波测距模块................................4 (二) 、数码管显示模块................................4 (三) 、步进电机控制模块..............................6 (四) 、语音提示模块..................................7 (五) 、速度自控模块..................................8 (六) 、信号提示模块..................................8 (七) 、单片机控制模块...............................8 四、系统软件设计..................................9 五、元件清单.....................................10 六、应用前景.....................................10 六、参考文献.....................................11
2

基于51单片机数字音乐盒的设计

单片机实物设计 题目: 单片机音乐盒设计 班级: K0312416-17 姓名:湛俊朱斌杨裕庆 学号:K031241705 K031241632 K031241737

摘要 本设计是一个基于STC89C51RC系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒。该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。本音乐盒共有四首歌曲,用4个按键控制。播放歌曲时,蜂鸣器发出某个音调。本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS 仿真软件对硬件进行仿真调试,节约了设计时间。 【关键词】STC89C51RC 按键蜂鸣器 LCD1602液晶

目录 前言 ................................................................................................................................. 第一章工作原理 .............................................................................................................. 1.1设计目标 ............................................................................................................... 第二章软件设计与分析................................................................................................... 2.1 软件设计的组成................................................................................................... 2.2 各部分软件分析 ................................................................................................. 2.2.1 延时165MS,即十六分音符子函数 .......................................................... 2.2.2 延时1MS子函数...................................................................................... 2.2.3 定时器0中断子函数 .............................................................................. 2.2.4 播放音乐子函数...................................................................................... 2.5 定时器1中断子函数.................................................................................. 2.6 按键扫描子函数 ......................................................................................... 2.2.7 主函数..................................................................................................... 2.3 总源程序 ............................................................................................................ 第三章软件仿真 .............................................................................................................. 3.仿真图...................................................................................................................... 3.1 元件清单 ............................................................................................................... 总结 ..................................................................................................................................... 参考文献..............................................................................................................................

51单片机实现的音乐闹钟程序代码

功能描述:产品可以显示时间和日期,时间格式为 hh mm ss 日期格式为 yy.mm.dd 时间和日期轮流显示。时间显示5S 日期显示3S。 可以设置5个闹铃,闹铃音乐可以设置两种:毛驴和童年。 三个按键对时间和闹铃进行设置,六个LED进行显示。 计时采用DS1307。继电时间不丢失,设置过的闹铃也不丢失。 闹铃音乐由单片机的两个定时器去产生频率实现。 部分程序如下: //************************************************* //************************************************ //*********************************************** //程序名:DS1307 时钟程序 //功能描述:用六个八段LED 轮流显示时间 // 和日期。有6个闹钟。上电时从DS1307中读出 // 当前时间、日期、闹钟。 // // // // // #include #include #define uchar unsigned char #define uint unsigned int #define LED P2 #define LEDBit P0 #define nop _nop_(>

#define LightCount 40 #define LightMax 80 sbit SCL=P3^1。 sbit SDA=P3^0。 sbit ModeKey=P1^0。 sbit UpKey=P1^1。 sbit DownKey=P1^2。 sbit Speak=P3^6。 code uchar LCD_NUM[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09}。 //0x25, //uchar Clock[]={0x88,0x88,0x88}。 code uint Music_Sound_Long1[]={4,8,4,8,8,4,8,4,4,4, /*童年*/ 8,4,8,4,4,4,4,4,16,4, 4,8,4,4,4,4,4,8,4,4, 4,8,4,4,4,4,4,4,16,4, 4,8,4,4,4,4,4,8,4,4, 4,8,4,4,4,4,4,4,16,4, 8,4,8,4,4,4,8,8,4,4, 4,4,4,4,4,4,4,4,4,16, 4,8,4,8,8,4,8,4,4,4, 8,4,8,4,4,4,4,4,16,4, 8,4,8,8,4,8,4,4,4,8, 4,8,4,4,4,4,4,16,0}, Music_Sound_Long2[]={4,4,4,4,4,4,4,4,4,4, /*小毛驴*/ 4,4,16,4,4,4,4,4,4 ,4, 4,4,4,4,4,8,4,4,4,4, 4,4,4,4,4,4,4,4,4,16, 4,4,4,4,2,2,2,2,4,4, 4,4,4,4,16,0}, Music_Sound_Tone1[]={379,379,379,379,425,477,477,477,425,477, 568,637,637,637,568,637, 425,379,477,719, 637,63 7,719,637,568,568,506,568,568,568, 637,477,477,477,477,568,477,568,637,719, 637,637,719,637,568,568,506,568,568,568, 637,477,477,477,477,568,568,477,851,318,

51单片机控制智能小车解析

单片机项目 报 告 班级:自动化21091 姓名:邸维汉刘会丽石钱坤学号:1020103304 2010103215 2010103122 智能小车控制

目录 一、前言 二、方案设计与论证 1)控制器模块选取 2)电机模块选取 3)电机驱动器模块选取 4)电源模块选取 三、硬件设计 1)主控系统 2)电机模块 3)电机驱动模块 4)电源模块 5)按键模块 四、软件设计 1)直行设计 2)转弯设计 3)调速设计 五、调试中存在的问题 六、参考文献

一、前言: 随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。全国电子大赛和省内电子大赛几乎每次都有智能小车这方面的题目,全国各高校也都很重视该题目的研究。可见其研究意义很大。本设计就是在这样的背景下提出的,指导教师已经有充分的准备。本题目是结合科研项目而确定的设计类课题。我们设计的智能电动小车该具有圆形运行、三角形运行、矩形运行和三者一起运行的功能。都是运行一循环自动停车。 根据题目的要求,确定如下方案:在现有玩具电动车的基础上,加了四个按键,实现对电动车的运行轨迹的启动,并将按键的状态传送至单片机进行处理,然后由单片机根据所检测的各种按键状态实现对电动车的智能控制。 这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。本设计采用STC89C52单片机。以STC89C52为控制核心,利用按键的动作,控制电动小汽车的轨迹。实现四种运行轨迹。STC89C52是一款八位单片机,它的易用性和多功能性受到了广大使用者的好评。 二、方案设计与论证 1)控制器模块选取 我们采用STC公司的STC89S52单片机作为主控制器,STC公司的单片机内部资源比起ATMEL公司的单片机来要丰富的多,它在5V供电情况下,最多支持80M晶振、且内部有512B的RAM数据存储器、片内含8k空间的可反复擦些1000次的Flash只读存储器、1K的EEPROM、8个中断源、4个优先级、3个定时器、32个IO口、片机自带看门狗、双数据指针等。但是不兼容Atmel。 从方便使用的角度考虑,我们选择了此方案 2)电机模块选取 采用普通直流电机。直流电机运转平稳,精度有一定的保证。直流电机控制的精确度虽然没有步进电机那样高,但完全可以满足本题目的要求。通过单片机的PWM输出同样可以控制直流电机的旋转速度,实现电动车的速度控制。并且直流电机相对于步进电机价格经济。 3)电机驱动器模块选取

用51单片机演奏音乐

单片机演奏音乐 一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。 在音乐中所谓“音调”,其实就是我们常说的“音高”。在音乐中常把五线谱中央C 上方的A 音定为标准音高,其频率f=440Hz。当两个声音信号的频率相差一倍时,也即f2=2f1时,则称f2比f1 高一个倍频程, 在音乐中1与.1(1前面的点应在1的上面),2与 .2……正好相差一个倍频程,在音乐学中称它相差一个八度音。在一个八度音内,有12个半音。以1—i 八音区为例,12 个半音是:1—#1、#1—2、2—#2、#2—3、3—4、4—#4,#4—5、5 一#5、#5—6、6—#6、#6—7、7—i。其中“#”表示半音,用于升高或降低半个音。这12 个音阶的分度基本上是以对数关系来划分的。如果我们只要知道了这十二个音符的音高,也就是其基本音调的频率,我们就可根据倍频程的关系得到其他音符基本音调的频率。 知道了一个音符的频率后,常采用的方法就是通过一个延时程序,延时对应频率周期的二分之一周期(即t=1/2f)后,将单片机上连接蜂鸣器的I/O (P3.7)口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将不同的延时时间值t赋给延时程序即可实现。例:我门以440Hz的声音频率来计算,其对应的时间 t=1/2f=1/2*440=1136us 但在实际程序中常采用查表的方式来取的t 值,而为了节约存储器空间则将t值以字节来进行存储,由于大部分t值都大于256。所以,需将t值除以一个常数(t/x)使其小于256。那么,在查表取得t 值后就要再乘上该常数后再赋给延时程序。 以下为常用音符对应的频率和二分之一周期值t :

基于 单片机设计智能避障小车

单片机设计智能避障小车 摘要 利用红外对管检测黑线与障碍物,并以STC89C51单片机为控制芯片控制电动小汽车的速度及转向,从而实现自动循迹避障的功能。其中小车驱动由L298N 驱动电路完成,速度由单片机输出的PWM波控制。本文首先介绍了智能车的发展前景,接着介绍了该课题设计构想,各模块电路的选择及其电路工作原理,最后对该课题的设计过程进行了总结与展望并附带各个模块的电路原理图,和本设计实物图,及完整的C语言程序。 关键词:智能小车;51单片机;L298N;红外避障;寻迹行驶 abstract Using infrared detection black and obstacles to the line and STC89C51 microcontroller as the control chip to control the speed of the electric car and steering, so as to realize the function of automatic tracking and obstacle avoidance. Which the car driven by the L298N driver circuit is completed, the speed of the microcontroller output PWM wave control. This article first introduces the development of the intelligent car prospect, then introduces the design idea, the subject selection of each module circuit and working principle of the circuit, the design process of the subject is summarized and prospect with each module circuit principle diagram, and the real figure design, and complete C language program. Key words: smart car; 51 MCU; L298N; infrared obstacle avoidance; track driving

基于某51单片机的智能小车控制系统

工业职业技术学院 毕业设计 课题名称基于51与单片机的智能小车控制系统 系(院)名称电气工程系 专业及班级 学生 学号 指导教师

完成日期年11 月19 日

摘要 随着我国科学技术的进步,智能化作为现代社会的新产物开始越来越普及,各种高科技也广泛应用于智能小车和机器人玩具制造领域,使智能机器人越来越多样化。智能小车是一个多种高薪技术的集成体,它融合了机械、电子、传感器、计算机硬件、软件、人工智能等许多学科的知识,可以涉及到当今许多前沿领域的技术。 整个小车平台主要以51单片机为控制核心,通过无线遥控实现前进后退和转向行驶,通过红外线传感器,实现小车的自适应巡航、避障等功能。设计采用对比选择,模块独立,综合处理的研究方法。通过翻阅大量的相关文献资料,分析整理出有关信息,在此基础上列出不同的解决方案,结合实际情况对比方案优劣选出最优方案进行设计。从电机车体,最小系统到无线遥控,红外线对管的自动寻迹再到红外线自动避障和语音控制,完成各模块设计。通过调试检测各模块,得到正确的信号输出,实现其应有的功能。最后将各个调试成功的模块结合到小车的车体上,结合程序,通过单片机的控制,将各模块有效整合在一起,达到所预期的目标,完成最终设计与制作,能使小车在一定的环境中智能化运转。 关键字:智能小车,单片机,红外传感器。

目录 第一章绪论.............................................................................................................................- 1 - 1.1.1智能循迹小车概述........................................................................................................- 1 - 1.1.2课题研究的目的和意义 ...............................................................................................- 2 - 1.1.3智能循迹小车智能循迹分类.......................................................................................- 3 - 1.1.4智能循迹小车的应用....................................................................................................- 3 - 第二章方案设计 ..........................................................................................................................- 5 - 2.1 主控系统.........................................................................................................................- 5 - 2.2单片机最小系统 ...............................................................................................................- 6 - 2.2.1 STC89C52简介...................................................................................................- 6 - 2.2.2 时钟电路...............................................................................................................- 8 - 2.2.3复位及复位电路....................................................................................................- 8 - 2.3 电机驱动模块................................................................................................................ - 10 - 2.4 循迹及避障模块............................................................................................................ - 11 - 2.5 机械系统......................................................................................................................... - 11 - 2.6电源模块......................................................................................................................... - 11 - 第三章硬件设计 ..................................................................................................................... - 12 - 3.1总体设计......................................................................................................................... - 12 - 3.1.1主板设计框图..................................................................................................... - 12 - 主板设计框图如图3-1,所需原件清单如表3-1 .................................................. - 12 -

基于51单片机的音乐播放器设计

题目:音乐播放器 课程设计(论文)任务书

摘要 随着电子技术的发展和计算机越来越普遍的使用,单片机作为这两项技术的有机结合也得到了广泛的应用,在某些领域具有不可替代的作用。音乐播放功能随处都会用到,如,在开发儿童智力的玩具中,等等。目前,基于单片机实现音乐播放,其体积小、价格低、编程灵活等特点在这一领域独领风骚。 单片机的英文名称为single chip microcomputer,最早出现在20世纪70年代,国际上现在已逐渐被微控制器(Microcontroller Unit 或MCU)一词所取代。它体积小,集成度高,运算速度快,运行可靠,功耗低,价格廉,因此在数据采集、智能化仪表、通讯设备等方面得到了广泛应用。而8051单片机在小到中型应用场合很常见,已成为单片机领域的实际标准。随着硬件的发展,8051单片机系列的软件工具也有了C级编译器和实时多任务操作系统RTOS,为单片机编程使用C语言提供了便利的条件;并针对单片机常用的接口芯片编制通用的驱动函数,可针对常用的功能模块,算法等编制相应的函数;C语言模块化程序结构特点,可以使程序模块大家共享,不断丰富,这样就使得单片机的的程序设计更简单可靠,实时性强,效率高。作为测控技术与仪器的学生,掌握8051单片机硬件基础及其相关软件操作,将其应用于现代电子产品中是必要而且重要的,这次课程设计我们的题目是用单片机实验箱系统制作音乐播放器。 本次课程设计主要内容是通过单片机C51语言进行编程,以产生乐曲音符和节拍,把乐谱翻译成计算机语言(音符转换诚成相对应的方波频率即定时器装载初值,节拍转换成相对应的延长时间),并将其预先存储到单片机里,然后根据按键调用再由单片机进行信息处理,在经过信号放大,由喇叭放出乐曲声,实现音乐播放的功能。其主要表现在可以播放十首歌曲,可以用十个数字键控制播放的歌曲,并且能在LCD液晶屏显

51单片机-循迹小车项目报告材料(完整)

职业技术学院 《单片机系统设计》 项目设计报告 项目设计题目:智能寻迹小车 系部:电子信息与控制工程系班级:电子 XXXX 班 组号:第四组 小组成员:XXX 指导教师:XXX 2017年10月10日

目录 一、引言 (3) 二、方案论证 (4) 三、小车车体设计 (7) 四、硬件系统设计 (8) 1、单片机最小系统 (8) 2、循迹电路 (9) 3、电机驱动电路 (9) 五、软件系统设计 (12) 六、系统的制作、仿真与调试 (14) 七、总结 (15)

一、引言 当今世界,传感器技术和自动控制技术正在飞速发展,机械、电气和电子信息已经不再明显分家,自动控制在工业领域中的地位已经越来越重要,“智能”这个词也已经成为了热门词汇。现在国外的自动控制和传感器技术已经达到了很高的水平,特别是日本,比如日本本田制作的机器人,其仿人双足行走已经做得十分逼真,而且具有一定的学习能力,还据说其智商已达到6岁儿童的水平。作为机械行业的代表产品—汽车,其与电子信息产业的融合速度也显著提高,呈现出两个明显的特点:一是电子装置占汽车整车(特别是轿车)的价值量比例逐步提高,汽车将由以机械产品为主向高级的机电一体化方向发展,汽车电子产业也很有可能成为依托整车制造业和用车提升配置而快速成为新的增长点;二是汽车开始向电子化、多媒体化和智能化方向发展,使其不仅作为一种代步工具、同时能具有交通、娱乐、办公和通讯等多种功能。无容置疑,机电一体化人才的培养不论是在国外还是国,都开始重视起来,主要表现在大学生的各种大型的创新比赛,比如:亚洲广播电视联盟亚太地区机器人大赛(ABU ROBCON)、全国大学生“飞思卡尔”杯智能汽车竞赛等众多重要竞赛都能很好的培养大学生对于机电一体化的兴趣与强化机电一体化的相关知识。但很现实的状况是,国不论是在机械还是电气领域,与国外的差距还是很明显的,所以作为电子专业学生,必须加倍努力,为逐步赶上国外先进水平并超过之而努力。为了适应机电一体化的发展在汽车智能化方向的发展要求,提出简易智能小车的构想,目的在于:通过独立设计并制作一辆具有简单智能化的简易小车,获得项目整体设计的能力,并掌握多通道多样化传感器综合控制的方法。所以立“智能循迹小车”一题作为尝试。此项设计是在以小为基础,采用AT89C52单片机作为控制核心,实现能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。

STC89C51单片机的数字音乐盒设计(含代码)

HEFEI UNIVERSITY FPGA综述报告 系别电子信息与电气工程系任课教师汪济洲 班级 姓名 成绩 日期

数字音乐盒设计 摘要:本设计是一个基于STC89C51系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能音乐盒。该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。使用两个按键控制音乐盒,一个用来切换歌曲,另一个用来切换8路LED的变化花样,本音乐盒共有两首歌曲,花样灯花样共计4种。播放歌曲时,蜂鸣器发出某个音调,与之对应的LED亮起。本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间。 关键字:音乐盒 STC89C51单片机 KEIL PROTEUS 音调

目录 1概述 (3) 1.1设计方案 (3) 1.2研究内容 (3) 1.3音乐盒的功能结构图 (3) 2硬件设计 (4) 2.1总体设计框图 (4) 2.2各部分硬件设计及其原理 (4) 2.2.1 STC89C51简介 (4) 2.2.2 LED显示电路设计与原理 (5) 2.2.3 时钟振荡电路 (5) 2.3硬件电路图及功能 (6) 3软件设计 (7) 3.1音调、节拍以及编码的确定方法 (7) 4.1.1 音调的确定 (7) 4.1.2 节拍的确定 (8) 4.1.3 编码 (9) 4.2软件程序设计 (10) 4.2.1 程序流程图及相应代码块 (10) 4.2.2 程序源代码(见附录A) (14) 5调试 (14) 5.1检查硬件连接 (14) 5.2检查软件系统 (14) 5.3测试结果 (14) 5.3.1.总体运行图 (14) 5.3.2.花样灯4种花样图 (15) 参考文献 (16) 附录A 程序源代码及注释 (16)

51单片机循迹小车项目方案报告(完整)

宜宾职业技术学院 《单片机系统设计》 项目设计报告 项目设计题目:智能寻迹小车 系部:电子信息与控制工程系班级:电子XXXX 班组号:第四组 小组成员:XXX 指导教师:XXX 2017年10月10日

目录 一、引言 (3) 二、方案论证 (4) 三、小车车体设计 (7) 四、硬件系统设计 (8) 1、单片机最小系统 (8) 2、循迹电路 (9) 3、电机驱动电路 (9) 五、软件系统设计 (12) 六、系统的制作、仿真与调试 (14) 七、总结 (15)

一、引言 当今世界,传感器技术和自动控制技术正在飞速发展,机械、电气和电子信息已经不再明显分家,自动控制在工业领域中的地位已经越来越重要,“智能”这个词也已经成为了热门词汇。现在国外的自动控制和传感器技术已经达到了很高的水平,特别是日本,比如日本本田制作的机器人,其仿人双足行走已经做得十分逼真,而且具有一定的学习能力,还据说其智商已达到6岁儿童的水平。作为机械行业的代表产品—汽车,其与电子信息产业的融合速度也显著提高,呈现出两个明显的特点:一是电子装置占汽车整车(特别是轿车)的价值量比例逐步提高,汽车将由以机械产品为主向高级的机电一体化方向发展,汽车电子产业也很有可能成为依托整车制造业和用车提升配置而快速成为新的增长点;二是汽车开始向电子化、多媒体化和智能化方向发展,使其不仅作为一种代步工具、同时能具有交通、娱乐、办公和通讯等多种功能。无容置疑,机电一体化人才的培养不论是在国外还是国内,都开始重视起来,主要表现在大学生的各种大型的创新比赛,比如:亚洲广播电视联盟亚太地区机器人大赛(ABU ROBCON)、全国大学生“飞思卡尔”杯智能汽车竞赛等众多重要竞赛都能很好的培养大学生对于机电一体化的兴趣与强化机电一体化的相关知识。但很现实的状况是,国内不论是在机械还是电气领域,与国外的差距还是很明显的,所以作为电子专业学生,必须加倍努力,为逐步赶上国外先进水平并超过之而努力。为了适应机电一体化的发展在汽车智能化方向的发展要求,提出简易智能小车的构想,目的在于:通过独立设计并制作一辆具有简单智能化的简易小车,获得项目整体设计的能力,并掌握多通道多样化传感器综合控制的方法。所以立“智能循迹小车”一题作为尝试。此项设计是在以小为基础,采用AT89C52单片机作为控制核心,实现能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。

基于80C51单片机的音乐演奏器设计

单片机课程设计报告 音 乐 演 奏 器 姓名: 学号: 专业:

基于80C51单片机的音乐演奏器设计 设计原因: 随着科技的进步,各种高科技玩具应运而生,各种智能玩具层出不穷。如果给玩具添加更多功能,那么,此种玩具就具有更强的竞争力。故此,给玩具添加音乐演奏功能不失为良策。此外,音乐演奏器还可以应用于多种领域,比如可应用于门铃、闹铃等各种系统。总之,音乐演奏器有广泛的用途,且具有很强的生命力。用单片机来实现音乐演奏的功能,既简单轻便,又易于实现,并且成本比古典乐器低廉许多。最重要的是,基于单片机控制的音乐演奏器能发出一般乐器难以实现的音效。在网上搜各种曲谱均可以用单片机来实现其音效。 系统工作过程: 音乐演奏器的主体由单片机构成,通过控制定时器时间的不同可以产生不同频率的方波,用于驱动喇叭发出不同的音符,再利用延时来控制发音时间的长短,即可控制节拍,把乐谱中的音符和相应的节拍变换成时常数和延迟常数,做成数据表格存放在存储器中。由程序查表得到定时常数和延迟常数,分别用以控制定时器产生方波的频率和发出该方波的持续时间。当延迟时间到时,再查下一个音符的定时常数好延迟常数,依次进行下去。 利用定时器T1以方式1工作,产生各音符对应频率的方波,由P1.0输出驱动喇叭发音。节拍控制通过改变调用延时子程序D200(延时200ms)的次数来实现,以每拍800ms为例,一拍需循环调用D200延时子程序4次,同理,半拍就需要调用两次,设晶振频率为6Mhz,乐曲中的音符、频率、定时常数的关系可以参照有关表格。 系统硬件组成: 1、89C51单片机一个 2、晶振6MHz立式一个。 3、起振电容30pF瓷片电容2个 4、复位电容22uF 16V电解电容1个 5、电阻100欧、1K欧、4.7K欧各一个

基于51单片机的音乐程序

基于51单片机的按键切换播放音乐 原理图: 引脚说明:共5个按键,分别接51单片机的P0~P4引脚,前4个按键控制播放设置好的四首音乐,第5个按键用来关闭音乐。按键采用中断方式,任意时刻按下任意按键则立即进入所按按键的功能;蜂鸣器接单片机的P3.6口。 仿真说明:使用proteus仿真,晶振:12MHZ。 程序代码如下: /*12Mhz晶振工作*/ #include #define uint unsigned int #define uchar unsigned char sbit voice=P3^6; uchar code sound1[]={0xff, 0x40,0x80,0x30,0x40,0x2b,0x40,0x26,0x80,0x24,0x10,0x26,0x40,0x30,0x40, 0x2b,0x80,0x30,0x40,0x39,0x40,0x30,0xc0,0x40,0x80,0x30,0x40,0x2b,0x40, 0x26,0x40,0x26,0x20,0x24,0x20,0x20,0x40,0x30,0x40,0x24,0x80,0x26,0x10,

0x20,0x40,0x19,0x40,0x19,0x80,0x1c,0x10,0x1c,0x80,0x20,0x40,0x20,0x20, 0x1c,0x20,0x19,0x40,0x1c,0x20,0x20,0x20,0x26,0xc0,0x24,0x80,0x24,0x10, 0x20,0x40,0x1c,0x40,0x20,0x40,0x24,0x20,0x26,0x20,0x2b,0x80,0x33,0x40, 0x33,0x20,0x39,0x20,0x40,0x40,0x39,0x40,0x30,0xc0,0x18,0x80,0x1c,0x80, 0x24,0x80,0x20,0x10,0x1c,0x80,0x19,0x40,0x19,0x20,0x19,0x20,0x19,0x40, 0x1c,0x20,0x20,0x20,0x26,0xc0,0x18,0x80,0x1c,0x80,0x24,0x80,0x20,0x10, 0x1c,0x80,0x1c,0x40,0x1c,0x20,0x1c,0x20,0x1c,0x40,0x24,0x20,0x26,0x20, 0xff,0x20,0x00};//同一首歌*/ uchar code sound2[]={0xff, 0x18,0x40,0x1c,0x20,0x18,0x20,0x13,0x40,0x13,0x20,0x15,0x20,0x13,0x20, 0x15,0x20,0x13,0x20,0x15,0x20,0x18,0x20,0x19,0x20,0x1c,0x20,0x20,0x20, 0x1c,0x40,0x19,0x20,0x18,0x20,0x15,0x40,0x10,0x80, 0x13,0x10,0x10,0x40,0x15,0x10,0x13,0x10,0x18,0x10,0x1c,0x10,0x26,0x10, 0x13,0x10,0x18,0x10,0x1c,0x10,0x26,0x10,0x13,0x10,0x18,0x10,0x1c,0x10, 0x26,0x10,0x13,0x10,0x18,0x10,0x1c,0x10,0x26,0x10,0x15,0x10,0x19,0x10, 0x20,0x10,0x2b,0x10,0x15,0x10,0x19,0x10,0x20,0x10,0x2b,0x10,0x15,0x10, 0x19,0x10,0x20,0x10,0x2b,0x10,0x15,0x10,0x19,0x10,0x20,0x10,0x2b,0x10, 0x18,0x10,0x1c,0x10,0x24,0x10,0x30,0x10,0x18,0x10,0x1c,0x10,0x24,0x10, 0x30,0x10,0x19,0x10,0x20,0x10,0x2b,0x10,0x19,0x10,0x19,0x10,0x20,0x10, 0x2b,0x10,0x19,0x10,0x18,0xc0,0xff,0x40,0x40,0x10,0x39,0x20,0x30,0x20, 0x2b,0x20,0x30,0x20,0x2b,0x20,0x26,0x20,0x26,0x20,0x26,0x20,0x26,0x20, 0x26,0x20,0x2b,0x20,0x30,0x20,0x2b,0x20,0x26,0x20,0x26,0x20,0x26,0x20, 0x26,0x20,0x26,0x20,0x2b,0x20,0x30,0x20,0x2b,0x40,0x30,0x10,0x30,0x20, 0x39,0x20,0x30,0x40,0x2b,0x10,0x2b,0x20,0x26,0x20,0x26,0x80,0x40,0x10, 0x39,0x20,0x30,0x20,0x2b,0x20,0x30,0x20,0x2b,0x20,0x30,0x20,0x30,0x20, 0x20,0x20,0x20,0x20,0x26,0x20,0x2b,0x20,0x26,0x20,0x2b,0x20,0x30,0x20, 0x30,0x20,0x26,0x20,0x26,0x20,0x26,0x20,0x2b,0x20,0x30,0x20,0x2b,0x40, 0x2b,0x10,0x2b,0x20,0x2b,0x20,0x2b,0x40,0x30,0x10,0x30,0x20,0x39,0x20,

相关主题
文本预览
相关文档 最新文档