ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:453.22KB ,
资源ID:3325859      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-3325859.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(生产实习报告单片机电子琴Word文档下载推荐.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

生产实习报告单片机电子琴Word文档下载推荐.docx

1、单排插针(4针) 1六角自锁开关 30pF瓷片电容210K电阻晶振11.0592M 导线 若干10uf电解电容 万能版编程接口板 杜邦线40脚IC座LED(红色)8双位数码管三极管805031K电阻14排阻1.5器件清单 表1-1 器件清单(1)1.6程序流程图 图 主程序流程图 图 数码管子程序 1.7程序代码#include#define uint unsigned int#define uchar unsigned charuchar code table= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;uchar code leds

2、1=0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f; /P0口控制8位LEDuchar code leds2=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xbf,0xdf, 0xef,0xf7,0xfb,0xfd; sbit le1=P35; /左边数码管位选 sbit le2=P34; /右边数码管位选 sbit feng=P37; /蜂鸣器控制位 sbit key1=P20; /模式切换 sbit key2=P21; /暂停和开始 sbit key3=P22; /功能复位 uint ti,count,shi1,ge1,

3、k; uint flag=1; void delay() /延时固定时间 int i,j; for(i=500;i0;i-) for(j=100;jj-); void delayms(uint ms) /延时ms毫秒 int i,j; for(i=ms; for(j=110; void keyscan() if(key2=1) delayms(10); if(key2=1) while(key2) ; TR0=!TR0; P2=0x00; if(key1=1) while(key1) ; flag=!flag; /flag=1为默认模式1,为0为模式2 if(key3=1) if(key3=1

4、) while(key3); count=0; P0=0xfe; void init() P0=0xfe; /二极管 P2=0x00; /按键 le1=0; le2=0; feng=0; TMOD=0x01; /设置定时器1工作模式 设置T0/T1 TH0=(65536-45872)/256; /给定时器装入初值 TL0=(65536-45872)%256; EA=1; /打开中断 ET0=1; /打开定时器中断 TR0=0;void display(uint shi,uint ge) /数码管扫描 uint i,j; i=shi; j=ge; P1=tablei; le1=1; delaym

5、s(10); P1=tablej; le2=1;int main() init(); while(1) if(feng=1&TR0=0&k=0) delay(); shi1=count/10; ge1=count%10; keyscan(); display(shi1,ge1);void timer() interrupt 1 /定时时间为1s,公式 ti+; if(ti=20) /每累加到20的时间为1秒 ti=0; /ti标志置0 count+; if(count=100) count=0; if(flag=1) k=count%8; P0=leds1k; if(k=0) feng=1;

6、else feng=0; else k=count%14; P0=leds2k;2提高部分2.1设计任务在基础项目的前提下设计电子琴,让电子琴可以播放简单的歌曲,可以用按键进行简单的弹奏。在弹奏过程中,led灯会根据不同的按键,点亮不同的灯。2.2设计思路根据自己的板子的实际情况安排布线画出PCB图,并依据PCB图进行焊接。焊接完成之后根据设计任务设计程序流程图,再根据流程图编写程序,下载到单片机之后根据硬件情况进行调试。直到完成设计任务为止。2.3原理图2.4PCB图2.5器件清单 表2-1 器件清单(2)数量 18 LED 8 蜂鸣器92.6程序流程图2.7程序代码2.7.1头文件#ifn

7、def _SOUNDPLAY_H_REVISION_FIRST_#define _SOUNDPLAY_H_REVISION_FIRST_/*#define SYSTEM_OSC 11059200 /定义晶振频率12000000HZ#define SOUND_SPACE 4/5 /定义普通音符演奏的长度分率,/每4分音符间隔#define play 1#define stop 0sbit BeepIO = P37; /定义输出管脚unsigned int code FreTab12 = 262,277,294,311,330,349,369,392,415,440,466,494 ; /原始频率

8、表unsigned char code SignTab7 = 0,2,4,5,7,9,11 ; /17在频率表中的位置unsigned char code LengthTab7= 1,2,4,8,16,32,64 ; unsigned char Sound_Temp_TH0,Sound_Temp_TL0; /音符定时器初值暂存 unsigned char Sound_Temp_TH1,Sound_Temp_TL1; /音长定时器初值暂存char state_song;void InitialSound(void) BeepIO = 0; Sound_Temp_TH1 = (65535-(1/1

9、200)*SYSTEM_OSC)/256; / 计算TL1应装入的初值 (10ms的初装值) Sound_Temp_TL1 = (65535-(1/1200)*SYSTEM_OSC)%256; / 计算TH1应装入的初值 TH1 = Sound_Temp_TH1; TL1 = Sound_Temp_TL1; TMOD |= 0x11; ET0 = 1; ET1 = 0; EX0 = 1; EX1 = 1; TR0 = 0; TR1 = 0; EA = 1; IT0 = 1; IT1 = 1;void int0() interrupt 0 state_song =stop;void BeepTi

10、mer0(void) interrupt 1 /音符发生中断 BeepIO = !BeepIO; TH0 = Sound_Temp_TH0; TL0 = Sound_Temp_TL0;void int1() interrupt 2 state_song =play;void Play(unsigned char *Sound,unsigned char Signature,unsigned Octachord,unsigned int Speed) unsigned int NewFreTab12; /新的频率表 unsigned char i,j; unsigned int Point,LD

11、iv,LDiv0,LDiv1,LDiv2,LDiv4,CurrentFre,Temp_T,SoundLength; unsigned char Tone,Length,SL,SH,SM,SLen,XG,FD; for(i=0;i 11) j = j-12; NewFreTabi = FreTabj*2; NewFreTabi = FreTabj; if(Octachord = 1) NewFreTabi=2; else if(Octachord = 3) NewFreTabi SoundLength = 0; while(SoundSoundLength != 0x00) /计算歌曲长度 So

12、undLength+=2; Point = 0; Tone = SoundPoint; Length = SoundPoint+1; / 读出第一个音符和它时时值 LDiv0 = 12000/Speed; / 算出1分音符的长度(几个10ms) LDiv4 = LDiv0/4; / 算出4分音符的长度 LDiv4 = LDiv4-LDiv4*SOUND_SPACE; / 普通音最长间隔标准 TR1 = 1; while(Point = 2; /低音 if (SM=3) CurrentFre /高音 Temp_T = 65536-(50000/CurrentFre)*10/(12000000/S

13、YSTEM_OSC);/计算计数器初值 Sound_Temp_TH0 = Temp_T/256; Sound_Temp_TL0 = Temp_T%256; TH0 = Sound_Temp_TH0; TL0 = Sound_Temp_TL0 + 12; /加12是对中断延时的补偿 SLen=LengthTabLength%10; /算出是几分音符 XG=Length/10%10; /算出音符类型(0普通1连音2顿音) FD=Length/100; LDiv=LDiv0/SLen; /算出连音音符演奏的长度(多少个10ms) if (FD=1) LDiv=LDiv+LDiv/2; if(XG!=

14、1) if(XG=0) /算出普通音符的演奏长度 if (SLen=4) LDiv1=LDiv-LDiv4; else LDiv1=LDiv*SOUND_SPACE; LDiv1=LDiv/2; /算出顿音的演奏长度 LDiv1=LDiv; if(SL=0) LDiv1=0; LDiv2=LDiv-LDiv1; /算出不发音的长度 if (SL! TR0=1; for(i=LDiv1;i-) /发规定长度的音 while(TF1=0); TH1 = Sound_Temp_TH1; TL1 = Sound_Temp_TL1; TF1=0; if(LDiv2! TR0=0; BeepIO=0; f

15、or(i=LDiv2;i-) /音符间的间隔 Point+=2; Tone=SoundPoint; Length=SoundPoint+1;/*#endif2.7.2程序#include #include soundplay.h#define uchar unsigned char uchar code table =0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71;uchar temp;uint i,j;void delay(uint x) uint i;x;i+);void dou

16、() uint x=150; while(x-) delay(120); BeepIO=1;void re() delay(115); void mi() delay(110);void fa() delay(105);void so() delay(100);void la() delay(95);void si() delay(90);void doo() delay(85);void dou2() delay(80);void re2() delay(75);void mi2() delay(70);void fa2() delay(65);void so2() delay(60);vo

17、id la2() delay(55);void si2() delay(50);void doo2() delay(45);void Delay1ms(unsigned int count) unsigned int i,j;count;i+) for(j=0;j120;j+);/*Music*/生日快乐unsigned char code Music_Girl= 0x19,0x67, 0x19,0x04, 0x1A,0x02, 0x19,0x02, 0x15,0x02, 0x1B,0x01, 0x19,0x67, 0x19,0x04, 0x1A,0x02, 0x19,0x02, 0x20,0

18、x02, 0x1F,0x01, 0x19,0x67, 0x19,0x04, 0x23,0x02, 0x21,0x02, 0x1F,0x02, 0x1B,0x0C, 0x1A,0x02, 0x18,0x67, 0x18,0x04, 0x21,0x02, 0x1F,0x02, 0x20,0x02, 0x1F,0x01, 0x00,0x00;/一只哈巴狗unsigned char code Music_Same= 0x15,0x02, 0x15,0x02, 0x15,0x02, 0x16,0x02, 0x17,0x16, 0x17,0x02, 0x17,0x02, 0x17,0x02, 0x18,0x02, 0x19,0x16, 0x1A,0x02, 0x1A,0x02, 0x19,0x02, 0x18,0x02, 0x17,0x16, 0x19,0x02, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x15,0x16, 0x15,0x02, 0x15,0x02, 0x15,0x02, 0x16,0x02, 0x19,0x16, 0x17,0x02, 0x17,0x02, 0

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2