久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
avr單片機定時與中斷做的電子琴(仿真+程序)
[打印本頁]
作者:
jinsheng7533967
時間:
2018-12-13 18:23
標題:
avr單片機定時與中斷做的電子琴(仿真+程序)
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
定時與中斷做的電子琴.jpg
(411.75 KB, 下載次數: 70)
下載附件
2018-12-13 18:21 上傳
avr單片機源碼:
#include <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
#define LED1_ON() PORTA=0xFE
#define LED2_ON() PORTA=0xF7
#define LED3_ON() PORTA=0xBF
#define LED4_ON() PORTA=0x7F
uchar key_0=16;
uint Fr[]= {0,262*8,294*8,330*8,349*8,392*8,440*8,
494*8,523*8,587*8,659*8,698*8,784*8,880*8,988*8 ,1046*8};
uchar SEG_CODE[]=
{ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E
};
uint Tone_Delay_Table[] =
{ 64021,64103,64260,64400,64524,64580,64684,64777,
64820,64898,64968,65030,65058,65110,65157,65178};
uchar spe1_Tone[] = { 3,5,5,3,2,1,2,3,5,3,
2,3,5,5,3,2,1,2,3,2,1,1,0xFF };
uchar spe1_Time[] =
{ 2,1,1,2,1,1,1,2,1,1,1,2,1,1,2,1,1,1,2,1,1,1,0xFF };
uchar spe2_Tone[] =
{ 1,3,3,3,3,5,4,2,5,3,7,6,5,5,7,4,4,3,6,7,2,1,0xFF };
uchar spe2_Time[] =
{ 2,1,1,2,1,1,1,2,1,1,3,2,1,1,2,4,1,1,2,1,1,1,0xFF };
uchar spe3_Tone[] = { 0,1,2,3,4,5,5,6,7,8,9,10,11,12,13,14,15,
15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0xFF};
uchar spe3_Time[] =
{ 1,1,1,1,1,1,1,1,1,1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1,1,1,1,1,1,1,1,1,1,0xFF};
uchar spe4_Tone[] =
{ 1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,4,3,1,5,6,
5,4,3,1,1,5,1,1,5,1,0xFF };
uchar spe4_Time[] =
{ 2,1,1,1,2,1,1,1,2,1,1,2,1,1,3,0.5,0.25,0.5,0.25,1,1,
0.5,0.25,0.5,1,1,1,1,3,1,1,3,0xFF };
uchar *spe_Tone_Ptr[]={
spe1_Tone,spe2_Tone,spe3_Tone,spe4_Tone},
*spe_Time_Ptr[]=
{spe1_Time,spe2_Time,spe3_Time,spe4_Time};
uint Tone_Idx = 0;
uint i = 0,j=1,spe_Idx = 0;
uint FALSE = 0, TRUE = 1, Pause = 1;
void delay_1ms(void)
{
uint i;
for(i=1;i<(uint)(153*143-2);i++)
;
}
void delay(unsigned int n)
{
unsigned int i;
for(i=0;i<n;i++)
delay_1ms();
}
uchar KeyMatrix_Down()
{
DDRB=0XF0;
PORTB=0X0F;
delay(1);
return PINB!=0x0f? 1:0;
}
void Keys_Scan()
{
switch(PINB)
{
case 0B00001110: key_0=0; break;
case 0B00001101: key_0=1; break;
case 0B00001011: key_0=2; break;
case 0B00000111: key_0=3; break;
default:key_0=0xFF;
}
DDRB=0x0F;
PORTB=0xF0;
delay(1);
switch(PINB)
{
case 0B11100000: key_0+=0; break;
case 0B11010000: key_0+=4; break;
case 0B10110000: key_0+=8; break;
case 0B01110000: key_0+=12; break;
default: key_0= 0xFF;
}
}
int main()
{
DDRB=0xFF;
PORTB=0xFF;
DDRA=0xFF;
PORTA=0xFF;
DDRC=0xFF;
PORTC=0xBF;
DDRD|=BIT(PD7);
PORTD&=~BIT(PD7);
DDRD=~(BIT(PD2)|BIT(PD3));
PORTD=BIT(PD2)|BIT(PD3);
MCUCR=0x82;
GICR=BIT(INT0)|BIT(INT1);
TCCR1A=0x00;
TCCR1B=0x09;
SREG=0x80;
while(1)
{
if(KeyMatrix_Down()==0)
{
if(Pause)
{
continue;
}
TCCR1B=0x01;
Tone_Idx=spe_Tone_Ptr[spe_Idx][i];
if(Tone_Idx==0xFF)
{
delay(200);
i=0;
continue;
}
TIMSK=BIT(TOIE1);
delay(spe_Time_Ptr[spe_Idx][Tone_Idx]*200/26);
TIMSK=0x00;
i++;
}
else
{
if(Pause==0)
{
continue;
}
if(key_0==0 || key_0>16);
continue;
PORTC=SEG_CODE[key_0];
OCR1A=153/2/Fr[key_0];
TCNT1=0;TIMSK|= BIT(OCIE1A);
while(KeyMatrix_Down());
TIMSK &=~BIT(OCIE1A);
}
}
}
#pragma interrupt_handler timer1_ovf_isr:9
void timer1_ovf_isr(void)
{
if(Tone_Idx==0xFF)return;
TCNT1=Tone_Delay_Table[Tone_Idx];
PORTD^= BIT(PD7);
}
#pragma interrupt_handler int0_isr:2
void int0_isr(void)
{
TIMSK=0x00;
if(spe_Idx==3)spe_Idx=0;
else spe_Idx++;
i=0;
switch(spe_Idx)
{
case 0:LED1_ON();PORTC=SEG_CODE[1]; break;
case 1:LED2_ON(); PORTC=SEG_CODE[2];break;
case 2:LED3_ON(); PORTC=SEG_CODE[3];break;
case 3:LED4_ON(); PORTC=SEG_CODE[4];break;
}
delay(10);
}
#pragma interrupt_handler int1_isr:3
void int1_isr(void)
{
Pause= !Pause;
if(Pause)
{
PORTC=0xFF;
PORTA=0xFF;
TIMSK=0x00;
}
}
}
#pragma interrupt_handler timer1_compa_isr:7
void timer1_compa_isr(void)
{
PORTD^=BIT(PD7);
}
復制代碼
全部源碼附件中
定時與中斷做的電子琴.zip
(14.79 KB, 下載次數: 52)
2018-12-13 18:22 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
chaoer123
時間:
2020-4-27 22:45
程序不難可以
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
久久久久国产精品一区三寸
|
国产成人免费
|
97精品久久
|
最新高清无码专区
|
999久久久
|
一区二区三区小视频
|
国产精品欧美一区二区
|
久久另类
|
一区在线观看视频
|
91av在线视频观看
|
精品一区二区三区中文字幕
|
中国一级毛片免费
|
日韩成人一区二区
|
国内精品一区二区三区
|
成人免费高清
|
欧美一区免费
|
一区二区三区精品在线
|
日韩在线播放一区
|
一级毛片成人免费看a
|
国产精品成人一区二区三区夜夜夜
|
另类 综合 日韩 欧美 亚洲
|
91香蕉
|
99热国产在线播放
|
91精品国产综合久久福利软件
|
国产午夜精品一区二区三区嫩草
|
99久久夜色精品国产亚洲96
|
日本一区二区三区免费观看
|
国产在线成人
|
色视频网站免费
|
天天操网
|
午夜天堂精品久久久久
|
久久成人精品视频
|
视频在线一区
|
国产精品99久久久久久宅男
|
欧美日韩在线视频一区二区
|
中文字幕精品一区二区三区在线
|
国产一级片免费在线观看
|
国产精品日韩欧美一区二区三区
|
www,黄色,com
|
精品精品视频
|
91人人在线
|