毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

单片机课程设计报告 第4页

更新时间:2014-9-11:  来源:毕业论文

单片机课程设计报告 第4页
RTAB2:
     MOV A,R1
     MOV DPTR,#TABLE1
     MOVC A,@A+DPTR
     MOV R2,A
TTAB2: MOV A,R1
     MOV DPTR,#TONE2
     MOVC A,@A+DPTR
     MOV R3,A
     INC R1
   MOV A,R1
   MOV DPTR,#TONE2
   MOVC A,@A+DPTR
   MOV R4,A
     SETB P2.4
LOOP2: MOV R5,#9BH
MAIN2:
      MOV TMOD,#01H
     MOV TL0,R4
     MOV TH0,R3
     SETB TR0
WAITR:JNB TF0,WAITR
     CLR TF0
     CPL P2.4
MAYA1:JB P3.3,MAYB1
      JB P3.5,MAYB1
      LJMP RB
MAYB1:JB P3.2,BACK
      JB P3.4,BACK
      LJMP MUSTART1
BACK:LJMP JIELI
RB:  DJNZ R5,MAIN2
     DJNZ R2,LOOP2
   
INC R0
INC R1
CJNE R1,#64,RTAB2
LJMP KEYP0
TONE2:
DB 0FBH,68H,0FDH,6EH,0FDH,45H,0FCH,0EFH,0FCH,8FH,0FCH,8FH,0FCH,8FH,0FCH,5BH,0FCH,8FH
DB 0FCH,0EFH,0FDH,45H,0FBH,68H,0FBH,68H,0FCH,8FH,0FCH,5BH,0FBH,0E9H,0FBH,68H,0FBH,68H
DB 0FAH,0DBH,0FAH,8CH,0F9H,21H,0FAH,8CH,0FAH,0D8H,0FBH,68H,0FBH,68H,0FBH,68H,0FBH,68H
DB 0FBH,0E9H,0FBH,0E9H,0FBH,68H,0FBH,0E9H,0FCH,5BH,0FAH,8CH,0FCH,8FH,0FCH,8FH,0FCH,5BH
DB 0FCH,8FH,0FCH,0EFH,0FCH,0EFH,0FCH,0EFH,0FCH,8FH,0FDH,45H,0FDH,6EH,0FCH,0EFH
TABLE1:
DB 04,04,04,04,04,04,04,04,04,04
DB 04,05,04,04,04,04,04,04,04,04
DB 04,04,04,06,04,04,04,07,04,04
DB 04,04,04,06,04,04,04,07,04,04
DB 04,04,04,04
 
END

C语言程序:

/*SB1 1音  SB2 2音   SB3 3音  SB4 4音 SB1SB2  5音   SB2SB3  6音   SB3SB4  7音   SB1SB4  i音   SB1SB3 第一首歌  SB2SB4  第二首歌 */
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit BEEP=P2^4;
sbit K1=P3^2;
sbit K2=P3^3;
sbit K3=P3^4;
sbit K4=P3^5;
sbit L=P2^3;
uchar th0_f; //在中断中装载的T0的值高8位
uchar tl0_f; //在中断中装载的T0的值低8位
uchar keyscan(uchar key);  //键盘输入函数
void delay(uint t);  //延时函数
void display(uint i);  //数码管显示函数

uchar table[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //共阳极数码管显示码
//                0    1    2    3    4    5    6    7    8    9    a    b    c    d    e    f 

uchar code freq[16]={
 0x21,0xF9,//262Hz,1
 0xE1,0xF9,//294Hz,2
 0x8C,0xFA,//330Hz,3
 0xD8,0xFA,//349Hz,4
 0x68,0xFB,//392Hz,5
 0xE9,0xFB,//440Hz,6
 0x58,0xFC,//494Hz,7
 0x8F,0xFC //523Hz,i
};
  uchar code freqgequ[18]={      //歌曲音调表
 0x00,0x00,
 0x44,0xFC,//1
 0xAE,0xFC,//2
 0x0A,0xFD,//3
 0x34,0xFD,//4
 0x82,0xFD,//5
 0xE2,0xFD,//6
 0x06,0xFE,//7
 0x22,0xFE//i
};

void play(uchar *diaodata,uchar *jiedata)
{
    uchar i,c=0;
    uint  n;

    TR0=1;
    for(i=0;diaodata[i]!=0;i++)
  {                         //逐个符号演奏
      tl0_f=freqgequ[diaodata[i]*2];    //取出对应的定时值送给T0
        th0_f=freqgequ[diaodata[i]*2+1];
        for(c=0;c<jiedata[i];c++)
    {   //按照音长延时,两首歌均为4/4拍,每拍延时为125ms
      for(n=0;n<8000;n++);       //单个音调的延时约2*8.6ms,乘上节拍
      if(K1==1&&K2==1&&K3==1&&K4==1)
    {                      //当按键松开,立即退出播放
         delay(20);
    if(K1==1&&K2==1&&K3==1&&K4==1)
    {
     TR0=0;
    }
    return;
      }
    }
        TR0=0;
        for(n=0;n<500;n++);    //音符间延时
     TR0=1;
    }
    TR0=0;
 L=1;
 BEEP=1;
}

//《祝你生日快乐》音符表
uchar code shengri[]={
1,1,2,1,4,3,1,1,2,1,5,4,1,1,8,6,4,3,2,8,7,8,7,6,4,5,4};

//《祝你生日快乐》节拍表
uchar code shengrijiepai[]={
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
};

上一页  [1] [2] [3] [4] [5] [6] 下一页

单片机课程设计报告 第4页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。