北邮PIC单片机 实验音乐播放器
- 格式:docx
- 大小:14.00 KB
- 文档页数:4
北邮,单片机,实验报告,电子琴北邮单片机实验报告简易电子琴2014年小学期单片机设计实验报告题目:基于单片机的电子音乐发生器班级:班内序号:实验组号:学生姓名:指导教师:基于单片机的电子音乐发生器实验摘要此次本组制作的基于PIC单片机的电子音乐发生器是具有LCD显示屏提示的音乐简单演奏、播放、存储等功能的演示作品,拥有以下4种功能:1.按键演奏:即“电子琴”功能,可以用键盘上的“1”到“A”键演奏从低音sol到高音do等11个音;2.点歌功能:即按动“B”“C”键分别演奏两首乐曲(可以表现准确的音高和音长)。
3.存储音乐功能:即按右下角“F存储”键,然后按键演奏并存储,随后按“E”键结束,之后按“D键”就可以播放存储的乐曲了;4.液晶显示功能:即在开始时显示“hello!”,在点播时分别显示“song b”、“song c”,在存储时显示“saving”。
电子音乐发生器采用以Microchip公司的PIC16F877芯片为核心的简单控制系统,外部电路连接有喇叭、键盘、LCD液晶显示屏以及其他必要系统调节元件。
软件设计中涉及PORTB\PORTC\PORTD\PORTE用作普通数字I/O脚功能。
本实验用单片机PORTB\D接收来自键盘输入的指令信息,由此确定LCD液晶屏幕显示以及喇叭播放内容,再通过PORTC\D\E输出声音或字幕信息。
关键字单片机——microcontroller芯片——CMOS chip音乐发生器——music generator 分频——fractional frequency 一、实验论证与比较本设计的核心器件是单片机芯片和音频功放芯片。
单片机采用以Microchip公司的PIC16F87X系列中的PIC16F877芯片为核心构建简单控制系统,它完全可以满足本设计功能的需要。
此音乐发生器设计利用单片机的输入输出功能,当按下播放功能键时,单片机的输出功能使外部电路连接的喇叭和LCD液晶显示屏同时播放声音及显示文字,从而实现各种复杂音乐播放器的功能。
目录1、设计课题任务、功能要求说明及总体方案介绍1.1 设计课题任务 (1)1.2 功能要求说明 (1)1.3 设计课题总体方案介绍及工作原理说明 (1)2、设计课题硬件系统的设计2.1 设计课题硬件系统各模块功能简要介绍 (5)2.2 设计课题电路原理图、PCB图、元器件布局图 (5)2.3 设计课题元器件清单 (5)3、设计课题软件系统的设计3.1 设计课题使用单片机资源的情况 (7)3.2 设计课题软件系统各模块功能简要介绍 (7)3.3 设计课题软件系统程序流程框图 (7)3.4 设计课题软件系统程序清单 (7)4、设计结论、仿真结果、误差分析、教学建议等等4.1 设计课题的设计结论及使用说明 (10)4.2 设计课题的仿真结果 (10)4.3 设计课题的误差分析 (10)4.4 设计体会 (10)4.5 教学建议 (11)参考文献 (12)致谢 (13)附录 (14)第一章设计课题任务、功能要求说明及总体方案介绍1.1 设计课题任务设计一个具有特定功能的音乐播放器。
该音乐播放器上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
该音乐播放器可以播放多首音乐,曲目选择可以由键盘控制,曲目名称可以显示在显示器上。
1.2功能要求说明(1) 该音乐播放器上电后显示系统提示符“P.”。
(2) 在按下第一个键后就播放第一首歌曲,并在显示器上显示“1”。
(3) 在按下第二个键后就播放第二首歌曲,并在显示器上显示“2”。
(4) 在按下第三个键后就播放第三首歌曲,并在显示器上显示“3”。
(5) 在播放音乐的中间能切换歌曲,在放完一首歌后回到起始状态,下一步的动作由人控制。
1.3设计课题总体方案介绍及工作原理说明本设计由AT89C52 单片机,3*1独立键盘,数码管等构成。
总体方案图如图1.1所示图1.1 总体方案图(1)总体原理:乐曲中不同的音符,实质就是不同频率的声音。
通过单片机产生不同的频率的脉冲信号,由蜂鸣器放出,就产生了美妙和谐的乐曲。
2011211118班24号史婧聪单片机设计实验报告2013年小学期单片机设计实验报告题目:电子音乐发生器班级:班内序号:实验组号:学生姓名:指导教师:2011211118班24号史婧聪单片机设计实验报告2011211118班24号史婧聪单片机设计实验报告电子音乐发生器实验摘要我们小组制作的电子音乐发生器涵盖存储音乐播放、键盘演奏、录音三个基本功能。
在功能设计上分为四个模块:液晶屏显示模块、键盘模块、音乐发生模块、录音模块。
四个模块首先独立编程再进行整合连接。
整个系统中,音乐发声部分采用了Microchip公司的PIC16F877芯片实现,采用PORTD 作为控制液晶屏显示的端口,用PORTB和PORTD作为控制键盘操作的端口,用PORTC6作为控制蜂鸣器发声的端口。
录音模块采用的是ISD4002语音芯片,结合单片机中SPI串行通信实现的。
概括来说,本实验采用单片机接受用户指令来控制各个模块,达到音乐播放、键盘演奏、录放音的功能。
A b s t r a c tThe electronic music generator that our group made accomplishes the following three basic functions: music storage, music playing and sound recording. The functional design can be separated into four main modules: the liquid crystal display module, the keyboard module, the music producing module and sound recording module. The four modules were at first programmed independently and integrated later.In this system, the sound production module is based on PIC16F877 produced by MICROCHIP company. We use PORTD as the port to control the LCD display module, PORTB and PORTD as the port to get the input from the keyboard, and PORTC6 to control the sound of the buzzer phone. When it comes to the tape recording module, we use ISD4002 chip, combined with SPI serial communication enbeded in the PIC16F877.In general, the music generator use the mmicrochip to get the user’s instructions and bring them to relevant modules and accomplish the functions of music storage, music playing and sound recording.关键字单片机——microcontroller 液晶屏显示——LCD display2011211118班24号史婧聪单片机设计实验报告键盘——key panel 发声——sound production录音——recording SPI串行通信——SPI serial communication一.实验论证与比较1.液晶屏显示模块在整个程序中,液晶屏用于为用户显示说明及指令,实现交互可视性。
2013年小学期PIC单片机实验报告题目:蓝牙电子琴组号:班级:学号:姓名:老师:目录一摘要二论证与比较三原理1 蓝牙控制原理…………………………………………………..2 发音原理………………………………………………………3 中断控制………………………………………………………四硬件1 框图…………………………………………………………………………………2 原理图…………………………………………………………………………………五软件1 流程图………………………………………………………………………………2 程序…………………………………………………………………………………六实验总结七参考文献一摘要Microcontroller is known as the single chip microcomputer and single chip microcomputer. It is the central processing unit (CPU), random access memory (RAM), read-only memory (ROM), input/output port (I/O), etc. The main function of computer components are integrated on a chip microcomputer. Experiments using PIC16F877 single-chip microcomputer with a serial communication port (USART port), through the USART port with bluetooth module connection, you can through the mobile phone bluetooth bluetooth device to control the single-chip computer, also can realize the serial communication with other modules. PIC16F877 single chip microcomputer to control the corresponding port produce a certain frequency of square wave, amplification and then sent to the speakers can emit a certain frequency of sound. Interrupt to use bluetooth to real-time control MCU, thus realize the electric .单片机被称为单片微电脑或单片微型计算机。
单片机音乐播放器课程设计一、课程目标知识目标:1. 理解单片机的基础知识,掌握其内部结构与工作原理;2. 学会使用C语言编写单片机程序,实现音乐播放器的功能;3. 了解音乐播放器的基本组成部分,如音符产生、音调控制等;4. 掌握音乐理论知识,能将简单的乐谱转换为单片机程序。
技能目标:1. 能够运用所学知识,设计并实现一个具有基础音乐播放功能的单片机系统;2. 熟练使用编程软件进行单片机程序编写、调试与优化;3. 学会使用相关工具和仪器,进行电路搭建、测试与故障排查。
情感态度价值观目标:1. 培养学生对单片机及电子制作的兴趣,激发创新精神;2. 培养学生的团队协作能力,学会与他人共同解决问题;3. 增强学生的自信心,敢于面对挑战,勇于克服困难;4. 培养学生的责任心,关注环境保护,养成良好的操作习惯。
课程性质:本课程为实践性较强的课程,以项目为导向,结合单片机原理与应用,培养学生的动手能力和创新能力。
学生特点:本课程针对高中年级学生,学生具备一定的物理、数学基础,对电子制作有一定兴趣,但编程能力参差不齐。
教学要求:教师需结合学生特点,采用循序渐进的教学方法,注重理论与实践相结合,关注个体差异,提高学生的实践操作能力。
在教学过程中,注重引导学生思考,激发学生的学习兴趣,培养其创新精神。
通过课程学习,使学生能够独立完成一个简单的单片机音乐播放器设计。
二、教学内容1. 单片机基础知识:介绍单片机的内部结构、工作原理、性能特点,引导学生了解并掌握单片机的基本概念。
教材章节:第一章 单片机概述2. C语言编程基础:讲解C语言的基本语法、数据类型、运算符、控制结构等,为学生编写单片机程序奠定基础。
教材章节:第二章 C语言基础3. 单片机程序设计与调试:学习如何使用编程软件进行程序编写、调试与优化,掌握单片机程序的开发流程。
教材章节:第三章 单片机程序设计与调试4. 音频信号处理:介绍音频信号的基本知识,如音符、音调、节拍等,学习如何将乐谱转换为单片机程序。
单片机课程设计音乐播放器报告华北航空航天学院单片机课程设计报告课程设计作业学科名称讲师王晓职称音乐播放器设计副教授学生姓名张婷完成时间班级6.12年级B10Xxxx)* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *TAB5: DW 0A08H,0C08H,0C10H,0C08H,0A08H,0D08H,0E08H DW 0D08H,0D08H,0D08H,0D08H,0C08H,0F 0H,0F08H,0F08H DW 0F08H,0D08H,0D08H,0C40H,0A08H,0C08H,0C10H 256总示意图图4.1总示意图2。
元件清单AT89C52,晶振,电容,电阻,抑制,按键,数码管,二极管,蜂鸣器,三极管115,结论这款音乐播放器可以播放四首歌曲,并使用按键选择曲目,基本达到了设计要求用数据线连接计算机作为电源,将下载了程序的单片机插入插座,按下3.3键重复播放当前的曲子,按下3.4键播放前一首曲子,按下3.5键播放下一首曲子,按下REST键复位,从第一首曲子开始数码管显示歌曲曲目。
二极管作为游戏的一部分来增加兴趣6、体验课程设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问题、锻炼实践能力的重要环节。
这也是一个针对学生实际工作能力的具体训练和考核过程。
随着科学技术的发展,单片机已经成为当今计算机应用中前所未有的活跃领域,可以说在生活中无处不在。
因此,对于自动化专业的学生来说,掌握单片机的开发技术是非常重要的。
我的主题是音乐播放器的硬件和软件设计。
经过13周的单片机学习,我将自己设计一件作品。
这是一个测试。
提前很久,我们选择了题目,开始做准备工作,查阅资料,看了学生的小作品和计划的说明,我也对我的题目有了信心。
我学到了很多关于这门课程的设计,如何制定计划,如何实现计划,以及如何克服实施过程中的心理不良情绪。
PIC单片机实现音乐播放源程序:以下程序要用二个定时器资源,凡是有二个定时器的PIC单片机均可实现,该范例需要的MCU是MICROCHIP PIC16C62INCLUDE "D:\PIC\P16XX.EQU" ;该文件在MICROCHIP光盘中可找到;**************************************************#define BeepOut RC,4;**************************************************W_TEMP EQU 0X20 ;(0XA0)STATUS_TEMP EQU 0X21BeepCnt equ 30hTmrBak equ 31hBeepMode equ 32hSflag equ 33h;**************************************************CSTIME100MS equ .8;;**************************************************;SflagFg_100ms equ 0FgBeep equ 1;**************************************************ORG 000H;GOTO MAIN ; Skip over interrupt vecterORG 04H ; Interrupt VectorGOTO INTZ;**************************************************OkTab:movf BeepCnt,waddwf PCL,fretlw .255-.130;0xf6 ;1 ;retlw .255-.126;0xfa ;2 ;retlw .255-.119; 0xfd ;3 ;retlw 0;**************************************************WhisleTab:movf BeepCnt,waddwf PCL,fretlw .255-.239;523Hz ;0 ;retlw .255-.179;698Hz ;1 ;retlw .255-.159;784Hz ;2 ;retlw .255-.119;1046Hz ;3 ;retlw .0;************************************************** HangTab:movf BeepCnt,waddwf PCL,fretlw .255-.159; 784Hz ;0 ;retlw .255-.119; 1046Hz ;1 ;retlw .255-.150; 830Hz ;2 ;retlw .255-.112 ;1109Hz ;3 ;retlw .255-.142 ;880Hz ;4 ;retlw .255-.106;1174Hz ;5 ;retlw .255-.134;932Hz ;6 ;retlw .255-.100;1244Hz ;7retlw .255-.126;988Hz ;8;retlw .255-.94;1318Hz ;9;retlw .255-.119;1046Hz ;10 ;retlw .255-.89;1397Hz ;11 ;retlw .0;************************************************** WelcomTab:movf BeepCnt,waddwf PCL,fretlw .255-.89;1397Hz ;11 ;retlw .255-.119;1046Hz ;10 ;retlw .255-.94;1318Hz ;9;retlw .255-.126;988Hz ;8;retlw .255-.100;1244Hz ;7retlw .255-.134;932Hz ;6 ;retlw .255-.106;1174Hz ;5 ;retlw .255-.142 ;880Hz ;4 ;retlw .255-.112 ;1109Hz ;3 ;retlw .255-.150; 830Hz ;2 ;retlw .255-.119; 1046Hz ;1 ;retlw .255-.159; 784Hz ;0 ;retlw .0;************************************************** BeepModeJmp:addwf PCL,fb psWhisle ;0b psOk ;1b psHang ;2b psWelcom ;3;************************************************** IO_SET:MOVLW B'11001011'MOVWF TRISAMOVLW B'00001100'movwf TRISBMOVLW B'00000011'movwf TRISC ; Set Port_C to all outputsBANK0_RETURN;**************************************************SYS_SET:BANK1_MOVLW B'00000111' ; 1:256 TMR0分频MOVWF OPTION_RBSF PIE1,TMR2IE ;TMR2中断允许BANK0_MOVLW B'00000001' ;开TMR1MOVWF T1CONbsf INTCON,TOIE ;TMR0中断允许BSF INTCON,PEIE ;允许所有未被屏蔽之外围接口中断RETURN;**************************************************MAIN: ; Main rotationCALL IO_SETMOVLW B'00000000' ;关所有中断MOVWF INTCON;****************************CALL SYS_SET;****************************call PlayPsWelcom ;上电提示音MAINLOOP:bsf INTCON,GIE ;开所有中断CLRWDT ; Clear WDTcall BeepForB MAINLOOP;**************************************************INTZ:PUSH ; Push ;中断服务程序BTFSC PIR1,TMR2IF ;测试TMR2中断标志位b INT_TMR2 ;BTFSC INTCON,TOIF ;测试TMR0中断标志位GOTO INT_TMR0IntRet:POP ; Pop;************************************************** INT_TMR2:BCF PIR1,TMR2IF ;清TMR2中断标志位movf TmrBak,wmovwf TMR2CPL BeepOutBeeperEnd:b IntRet;************************************************** INT_TMR0: ;定时0中断BCF INTCON,TOIF ; clear INTFMOVLW .255-.38 ;10msMOVWF TMR0;====================decfsz T100ms,fb int_tmr0_retmovlw CSTIME100MSmovwf T100msbsf Sflag,Fg_100ms;=====================int_tmr0_ret:b IntRet;************************************************** PlayPsWhisle:bsf Fg,FgBeepclrf BeepCntmovlw .0movwf BeepModemovlw CSTIME100MSmovwf T100msretlw 0;************************************************** PlayPsOk:bsf Fg,FgBeepclrf BeepCntmovlw .1movwf BeepModemovlw CSTIME100MSmovwf T100msretlw 0;************************************************** PlayPsHang:bsf Fg,FgBeepmovlw .2movwf BeepModemovlw CSTIME100MSmovwf T100msretlw 0;************************************************** PlayPsWelcom:bsf Fg,FgBeepclrf BeepCntmovlw .3movwf BeepModemovlw CSTIME100MSmovwf T100msretlw 0;************************************************** ;音乐播放程序;BeepMode=0 : psWhisle;BeepMode=1 : psOk;BeepMode=2 : psHang;BeepMode=3 : psWelcom;************************************************** BeepFor:btfss Sflag,Fg_100msb BeepForEndbcf Sflag,Fg_100msbtfss Sflag,FgBeepb BeepForEndMOVLW B'00000101' ;开TMR2 1:4分频MOVWF T2CONmovf BeepMode,wb BeepModeJmppsWhisle:call WhisleTabb BeepPlaypsOk:call OkTabb BeepPlaypsHang:call HangTabb BeepPlaypsWelcom:call WelcomTabb BeepPlayincf BeepCnt,fmovwf TmrBakmovf TmrBak,fbtfsc status,zb BeepOffmovlw .1xorwf TmrBak,wbtfsc status,zb BeepStopb BeepForEndBeepOff:clrf BeepCntbcf Sflag,FgBeepbcf BeepOutbcf T2CON,TMR2ONb BeepForEndBeepStop:bcf T2CON,TMR2ON ;stopbcf BeepOutBeepForEnd:retlw 0;************************************************** END。
中州大学《单片机》课程设计报告报告题目:音乐播放器作者所在系部:工程技术学院作者所在专业:电气自动化作者所在班级:B10204作者姓名:张强作者学号:20104020416指导教师姓名:雷刚完成时间:2014年10月12日课程设计任务书课题名称音乐播放器的设计完成时间 6.12 指导教师王晓职称副教授学生姓名张婷班级B10204总体设计要求和技术要点利用单片机设计一个音乐播放器,并能够播放三种音乐,音乐自行设计。
一、设计目的1.掌握单片机定时器的使用方法2.掌握单片机扩展显示器、键盘的方法二、技术指标1.键盘设置3种音乐的播放切换;2.LED显示3种音乐的提示符;3. 流水灯闪烁工作内容及时间进度安排第14周:周1到周2查阅资料,确定设计方案周3到周4编写程序并进行proteus仿真周5焊接调试第17周:周1撰写实验报告周2验收课程设计成果1.与设计内容对应的软件程序与焊接实物2.课程设计报告书内容摘要本文的主要内容是用AT89C52单片机为核心控制元件,设计一个音乐播放器,以单片机作为主控核心、蜂鸣器等模块组成。
利用单片机产生不同频率来获得要求的音阶,最终可随意编写需要的程序,播放出音乐。
在此设计中我采用12MHz的晶振,产生的频率信号即音乐信号由P3.7口输出,信号经过放大后由喇叭发出声音。
设有四个按键,其中两个能实现多首音乐的选择,另一个能实现开始功能和单曲重播的功能,最后一个能实现复位和关闭歌曲的功能。
设有一位数码管,每选择一首曲子能在数码管上显示当前的曲目(只是数字)。
设十六个发光二极管,能随歌曲频率闪烁。
关键字:单片机音乐不同频率按键目录一、概述 (1)二、方案设计与论证 (1)1.硬件设计 (1)2.软件设计 (2)三、单元电路设计与分析 (3)1.单片机最小系统 (3)2. 数码管显示 (4)3.发光二级管和按键 (4)4.蜂鸣器发声 (5)5.软件部分程序和流程图 (5)四、总原理图及元器件清单 (11)1.总原理图 (11)2元器件清单 (11)五、结论 (12)六、心得体会 (12)七、参考文献 (12)一、概述作为单片机的重要硬件资源之一,利用定时器可以产生各种固定频率的方波信号,也可以产生包括“Do“、“Re“、“Me“--等音阶在内的各种频率声音。
20112111**班**号**单片机设计实验报告2013年小学期单片机设计实验报告题目:基于PIC32单片机的多功能音乐播放器班级:20112111**班班内序号:**实验组号:**学生姓名:**指导教师:***20112111**班**号**单片机设计实验报告基于PIC32单片机的多功能音乐播放器――20112111**班** 实验摘要本次我们制作的多功能音乐播放器是一个基于Microchip公司生产的PIC32MX795F512L 单片机的小型娱乐系统。
该系统可以实现利用单片机的I/O口产生一定频率的方波,驱动蜂鸣器发出不同的音调,从而演奏乐曲。
音乐播放器采用LCD1602显示信息。
开机时可以显示英文欢迎提示字符“WELCOME”,播放音乐时显示歌曲序号和名称。
可通过按4X4矩阵键盘上的不同键来选择播放乐曲或暂停、播放上一首或者下一首,并且该音乐播放器提供了顺序、随机、单曲循环三种播放模式供选择。
音乐播放器还可以利用三八线译码器74LS138和发光二极管,根据不同的音调发出不同颜色的光,色彩绚丽,显示效果很好。
与传统的单片机的音乐盒最大的不同是,我们制作的音乐播放器还具有电子琴的功能,可以根据使用者按下的不同键值发出不同音调的声音,并且单片机可以记录这一按键序列。
当使用者弹奏完,按下播放键,单片机可以把刚才弹奏出来的乐曲播放出来,即实现了电子琴弹奏和播放的功能。
整个系统非常贴近我们小时候玩的音乐盒以及电子琴,其界面十分界面友好,并且很全面地利用了所学单片机的知识。
在该多功能音乐播放器的实现中,我们使用了计时器等单片机技术,通过mplab编程软件实现音乐播放器的功能,并且在面包板上搭建好外部电路。
AbstractIn this experiment we made versatile music player is based on a Microchip microcontroller produced PIC32MX795F512L small entertainment system. The system can achieve the use of single-chip I / O ports have a certain frequency square wave drive buzzer sounded a different tone to play music.20112111**班**号**单片机设计实验报告Music player uses LCD1602 display information. Welcome boot prompt character can be displayed in English "WELCOME", playing music shows song number and name. 4X4 matrix by pressing different keys on the keyboard to select the song playback or pause, play on one or next, and the music player provides a sequential, random, single cycle three kinds of play modes to choose from. Music player can also use the military demarcation line decoder 74LS138 and light emitting diodes, according to the different tones emit different colors of light, colorful, showing good results.With traditional SCM Music Box biggest difference is that we have produced music player also has a keyboard function, based on the user presses different keys make different tones of voice, and the microcontroller can record this key sequence. When the user finished playing, press the play button, the microcontroller can just play out of tune play out, namely to achieve a keyboard play and playback functions. The entire system is very close to our child playing music boxes and organ, its interface is very user-friendly, and very comprehensive utilization of the knowledge learned microcontroller.In this multi-function music player implementation, we use a timer and other chip technology, through mplab programming software music player functions, and breadboard build a good external circuitry.关键字单片机——microcontroller 音乐播放器――music player译码器——decoder20112111**班**号**单片机设计实验报告一.实验论证与比较1.1显示屏模块:实验中我们使用的是LCD 1602显示屏,其实物图如图一所示。
#include<p32xxxx.h>
#include<plib.h>
#include<math.h>
#pragma config FNOSC = PRIPLL // Oscillator Selection
#pragma config FPLLIDIV = DIV_2 // PLL Input Divider (PIC32 Starter Kit: use divide by 2 only)
#pragma config FPLLMUL = MUL_20 // PLL Multiplier
#pragma config FPLLODIV = DIV_1 // PLL Output Divider
#pragma config FPBDIV = DIV_1 // Peripheral Clock divisor
#pragma config FWDTEN = OFF // Watchdog Timer
#pragma config WDTPS = PS1 // Watchdog Timer Postscale
#pragma config FCKSM = CSDCMD // Clock Switching & Fail Safe Clock Monitor
#pragma config OSCIOFNC = OFF // CLKO Enable
#pragma config POSCMOD = XT // Primary Oscillator
#pragma config IESO = OFF // Internal/External Switch-over
#pragma config FSOSCEN = OFF // Secondary Oscillator Enable
//调试模式选择,通过配置寄存器DEV_CONFIG0
#pragma config CP = OFF // Code Protect
#pragma config BWP = OFF // Boot Flash Write Protect
#pragma config PWP = OFF // Program Flash Write Protect
#pragma config ICESEL = ICS_PGx2 // ICE/ICD Comm Channel Select
#pragma config DEBUG = ON // Debugger Disabled for Starter Kit
int m=0;
int n=0;
int m1=0;n1=0;
int p;
int delay;
int ts,time,savetime;
int led1,led2;
int freq[]={1911,1703,1516,1332,1275,1136,1012,
915,851,758,670,638,568,506,
458,426,379,333,319,284,253};
int
detime[]={50,56,63,72,75,84,95,100,112,126,143,150,168,189,201,225,253,287,299,336,378}; int
a[]={512,522,422,324,322,421,325,322,422,322,422,322,221,125,2,122,322,522,623,622,521,52 2,222,222,421,325,2,122,322,522,624,622,621,523,222,222,422,322,422,322,222,125,2,222,322, 614,612,122,123,714,126,4,4,0};
int b[]={1,2,1,0,0,0};
int c[]={2,3,3,0,0,0};
int read(int a[],int i)
{
int k=a[i]/100;
int j=(a[i]-100*k)/10;
p=k+7*j-7;
if(p<0)
ts=0;
else
ts=floor(freq[p]*80/256);
time=a[i]-100*k-10*j;
return ts,time;
}
main()
{
AD1PCFG=0xffff;
TRISB=0;
T1CON=0x8030;
PR1=0xffff;
int q=0;
while(1)
{ read(a,q);
if(time!=0)
{ if(ts!=0)
{
for (m=0;m<time;m++)
{ for(n=0;n<detime[p];n++)
{
PORTBbits.RB8=1;
TMR1=0;
while(TMR1<ts)
{}
PORTB=0;
TMR1=0;
while(TMR1<ts)
{}
}
}
m1++;
n1=m1%8;
T2CON=0x8070;
PR2=0Xffff;
switch(n1)
{
case 0: PORTBbits.RB9=1; break;
case 1: PORTBbits.RB10=1; break;
case 2: PORTBbits.RB11=1; break;
case 3: PORTBbits.RB12=1; break;
case 4: PORTBbits.RB13=1; break;
case 5: PORTBbits.RB14=1; break;
case 6: PORTB=0xfe00; break;
case 7: PORTB=0; break;
case 8:PORTB=0xfe00; break;
default: PORTB=0xffff;
}
TMR2=0;
while(TMR2<25000)
{}
PORTB=0;
}
else
{
for (m=0;m<time;m++)
{ for(n=0;n<detime[p];n++)
{
PORTBbits.RB8=0;
TMR1=0;
while(TMR1<25)
{}
PORTB=0;
TMR1=0;
while(TMR1<25)
{}
}
}
}
q=q+1;
}
if(time==0)
q=0;
}
}。