《2022年课程方案报告 .pdf》由会员分享,可在线阅读,更多相关《2022年课程方案报告 .pdf(6页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、个人资料整理仅限学习使用课程设计报告 单片机节拍器课程名称单片机节拍器小组成员王滨龙 徐金龙 许卓课题背景对于音乐爱好者来说,一个精准的节拍器是必须的 .然而 .常见的机械式节拍器不仅体型庞大,不便于携带 ,并且价格昂贵,动辄数百元 ,频率调节范围也有限.因此我们用单片机制作了一台电子节拍器. 主要功能使用单片机产生节拍及调节频率硬件设计思想 :精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 6 页个人资料整理仅限学习使用PD0 5 接按键,控制 LED的加减。 LED用来显示频率。蜂鸣器输出节拍。软件设计/ICC-A VR appli
2、cation builder : 2009-6-16 16:18:48 / Target : M16 / Crystal: 4.0000Mhz #include #include char led10=0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F。char a3=0,0,0,code=0 。void port_init(void PORTA = 0 x00。 DDRA = 0 x0F 。 PORTB = 0 x00 。 DDRB = 0 xFF 。 PORTC = 0 x00 。 /m103 output only DD
3、RC = 0 x01 。 PORTD = 0 xFF 。 DDRD = 0 x00 。 /初始化void init_devices(void /stop errant interrupts until set up 端口初始化PORTA作为输出控制LED PD0PD5连接按键调节LED显示数值PC0接蜂鸣器精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 6 页个人资料整理仅限学习使用 CLI( 。 /disable all interrupts port_init( 。 MCUCR = 0 x00 。 GICR = 0 x00 。 TI
4、MSK = 0 x00 。 /timer interrupt sources SEI(。 /re-enable interrupts /all peripherals are now initialized /延时子程序void delay(int n char j。 while(n-0 for(j=0 。j 。 /是否有键盘按下子程序char pressed(void if(PIND!=0 xFFreturn 1。 return 0。 /键盘扫描子程序char keyscan(void char keycode。 if(pressed display( 。 keycode=PIND 。 wh
5、ile(pressed(display( 。 display( 。 return keycode。 /按键处理子程序void codedeal(void switch(code case 0b11111110: a2+ 。 break。延时子程序 delay 延时 N毫秒检测是否有按键按下并扫描按键按键处理子程序精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 6 页个人资料整理仅限学习使用 case 0b11111101: a2- 。 break。 case 0b11111011: a1+ 。 break。 case 0b1111011
6、1: a1- 。 break。 case 0b11101111: a0+ 。 break。 case 0b11011111: a0- 。 break。 case 0b10111111: a2+ 。 break。 case 0b01111111: a2- 。 break。 /LED 显示子程序void display(void char i。 for(i=0 。i PORTB=ledai 。 PORTA=(BIT(0。 delay(3。 PORTA=0 xFF 。 void main(void float kk,j,n 。 init_devices( 。 while(1 j=0。LED 显示子程
7、序主程序按照现实的数值产生节拍精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 6 页个人资料整理仅限学习使用 code=keyscan(。 codedeal(。 display( 。 kk=60000/(100*a2+10*a1+a0。 PORTC|=BIT(0 。 display( 。 PORTC&=BIT(0 。 n=kk/1-2.1 。 while(j&(pressed(=0 display( 。j+ 。 设计参数分析频率是 120/min 时测定 200拍的时间并调成程序内参数,最终测定n=kk/1-2.1 实物图成员组成及分工王滨龙 负责软件设计及调试精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 6 页个人资料整理仅限学习使用徐金龙 硬件设计,部分焊接及论文写作徐卓部分焊接,论文写作及材料采购精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 6 页
限制150内