久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5927|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

16*16滾動(dòng)點(diǎn)陣屏+音樂盒C語言源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:76127 發(fā)表于 2015-4-18 00:07 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
這個(gè)東西是剛學(xué)單片機(jī)時(shí)做的,基于51單片機(jī)。點(diǎn)陣屏用 的是一個(gè)集成好的模塊,就是四個(gè)595兩兩級(jí)聯(lián)分別控制行和列,屏可能有點(diǎn)老,所以不是很亮。字摸直接用網(wǎng)上的字摸提取軟件就能提取。另外用定時(shí)計(jì)數(shù)器產(chǎn) 生方波做了一個(gè)音樂播放器(用了一個(gè)運(yùn)放),放的是天空之城的音樂,同時(shí)用一個(gè)兩位數(shù)碼管顯示當(dāng)前的音樂音階(第一位數(shù)碼管表示高中低音)。感覺里面用了 不少51的資源,挺好的程序,現(xiàn)在完全開源的給大家分享出來
作品圖片:


(原文件名:6e22b1dah96f5f7411290&690.jpg)
程序不大,我直接貼在這了
#include<reg51.h>
sbit RCK=P2^2;
sbit SRCK_1=P2^3;
sbit SRCK_2=P2^4;
sbit SER_IN_1=P2^5;
sbit SER_IN_2=P2^6;
sbit DIG1=P2^0;
sbit DIG2=P2^1;
sbit buz=P2^7;
unsigned char num=13;--字幕有多少個(gè)字

unsigned int speed=85;--每狀態(tài)持續(xù)時(shí)間,數(shù)字越小,字幕速度越快

unsigned int  song_num=136;--音節(jié)個(gè)數(shù)


unsigned char code song[]=--中音前綴為1,低音為0,高音為2+后位為歌譜
{
  16,17,21,17,21,23,17,13,13,16,15,16,21,15,10,13,13,14,13,14,21,
  10,13,01,21,21,21,17,14,14,17,17,10,16,17,21,17,21,23,17,10,13,13,16,15,16,21,
  15,10,13,14,21,17,17,21,22,22,23,21,10,21,17,16,16,17,15,16,10,21,22,23,22,23,
  25,22,10,15,15,21,17,21,23,23,10,10,16,17,21,17,22,22,21,15,15,10,24,23,22,21,
  23,23,10,23,26,25,25,23,22,21,10,21,22,21,22,22,25,23,10,23,26,25,23,22,21,10,
  21,22,21,22,22,17,16,10,16,17,16
};


unsigned char code song_speed[]=--節(jié)拍,數(shù)目越大聲音持續(xù)時(shí)間越長,與各曲譜位置對應(yīng)
{
  40,60,120,80,100,100,300,40,60,120,80,100,100,200,100,50,50,120,80,80,120,100,200,25,25,
  25,25,120,80,105,95,200,100,50,50,120,80,100,100,200,100,50,50,120,80,100,100,300,50,50,
  100,40,50,110,100,33,33,33,100,100,120,80,50,50,100,100,200,100,50,50,120,80,100,100,
  200,100,50,50,110,90,100,100,200,100,100,45,55,100,100,50,50,110,80,110,100,100,100,100,100,
  400,200,100,100,200,100,100,50,50,100,50,50,100,45,55,100,100,200,100,100,200,200,120,80,
  200,50,50,100,60,40,50,100,200,100,50,50,400
};


unsigned char code hanzi[]=--字模提取BADC,右旋90度
{
0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFF,0xFF,0x80,0x40,0x80,0x40,0xA0,0x23,--長
0x90,0x04,0x88,0x08,0x84,0x10,0x86,0x20,0x80,0x60,0xC0,0x20,0x80,0x00,0x00,0x00,

0x20,0x04,0x22,0x04,0x2A,0x02,0x2A,0x01,0xAA,0xFF,0x6A,0x49,0x3A,0x49,0x2F,0x49,--春
0x2A,0x49,0x6A,0x49,0xAA,0xFF,0x2A,0x01,0x2A,0x02,0x22,0x06,0x20,0x02,0x00,0x00,

0x44,0x10,0x44,0x30,0xFC,0x1F,0x46,0x08,0x44,0x48,0x00,0x48,0xFE,0x44,0x92,0x44,--理
0x92,0x44,0xFE,0x7F,0x92,0x44,0x92,0x46,0xFF,0x44,0x02,0x60,0x00,0x40,0x00,0x00,

0x00,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0xFC,0x3F,--工
0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x06,0x20,0x04,0x30,0x00,0x20,0x00,0x00,

0x80,0x00,0x80,0x40,0x40,0x40,0x20,0x4A,0x50,0x52,0x48,0x62,0x44,0x42,0xC3,0x7F,-- 姓   0x44,0x42,0x68,0x62,0x50,0x52,0x20,0x4A,0x40,0x60,0xC0,0x40,0x40,0x00,0x00,0x00,

0x10,0x00,0x10,0x80,0x10,0x40,0x10,0x30,0x10,0x0C,0x90,0x23,0x7F,0x20,0x10,0x10,-- 名0xF0,0x3F,0x12,0x44,0x14,0x42,0x10,0x41,0xD0,0x40,0x18,0x40,0x10,0x78,0x00,0x00,

0x80,0x00,0x40,0x00,0x20,0x00,0xF8,0xFF,0x87,0x00,0x40,0x00,0x30,0x00,0x0F,0x00,--作
0xF8,0xFF,0x88,0x08,0x88,0x08,0xC8,0x08,0x88,0x0C,0x0C,0x08,0x08,0x00,0x00,0x00,

0x00,0x00,0x00,0xFF,0x00,0x41,0x7E,0x41,0x22,0x41,0x22,0x41,0xA2,0xFF,0x22,0x01,--品
0x22,0xFF,0x22,0x41,0x22,0x41,0x7F,0x41,0x02,0x41,0x80,0xFF,0x00,0x01,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x7C,0x3B,0xFE,--!
0x3B,0xFE,0x10,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,-圖
0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,

0x00,0x01,0x40,0x00,0x10,0x00,0x04,0x00,0x01,0x00,0x04,0x00,0x10,0x00,0x40,0x00,
0x00,0x01,0x00,0x04,0x00,0x10,0x00,0x04,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,

0x00,0x01,0x40,0x00,0x10,0x00,0x04,0x00,0x01,0x00,0x04,0x00,0x10,0x00,0x40,0x00,-案
0x00,0x01,0x00,0x04,0x00,0x10,0x00,0x04,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,

0xF0,0x00,0x08,0x01,0x14,0x02,0x52,0x04,0x12,0x08,0x12,0x10,0x24,0x22,0x58,0x55,
0x88,0x68,0x04,0x20,0x12,0x10,0x12,0x08,0x52,0x04,0x14,0x02,0x08,0x01,0xF0,0x00
};


unsigned char code  saomiao[]=--字幕掃描數(shù)組
{
  0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x80,
  0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x80,0x00
};
unsigned char tone_l_h[]={0xf0,0xf9,0xf9,0xfa,0xfa,0xfb,0xfb,0xfc};--底音高8位頻率
unsigned char tone_l_l[]={0xf0,0x21,0xe0,0x8b,0xd7,0x68,0xe8,0x5b};--底音低8位頻率
unsigned char tone_m_h[]={0xf0,0xfc,0xfc,0xfd,0xfd,0xfd,0xfd,0xfe};--中音高8位頻率
unsigned char tone_m_l[]={0xf0,0x8f,0xef,0x45,0x6c,0xb5,0xf5,0x2e};--中音低8位頻率
unsigned char tone_h_h[]={0xf0,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xff};--高音高8位頻率
unsigned char tone_h_l[]={0xf0,0x47,0x77,0xa2,0xb6,0xda,0xfa,0x16};--高音低8位頻率
unsigned char code number[]={0xc0,0xf9,0xa4,0xb0,0X99,0X92,0X82,0Xf8,0X80,0X90};--數(shù)碼管顯示0~9
unsigned char tone_yin[]={0xf7,0xbf,0xfe};--低中高音節(jié)數(shù)碼管顯示
unsigned char *s=saomiao,*h=hanzi,*w,*t,flog1=0,flog2=0,x,m,count,TH_M0,TL_M0,n;
unsigned int cx;

void delay(unsigned int num)--普通延時(shí)函數(shù),用于調(diào)整音調(diào)
{
  unsigned int z;
  for(z=0;z<num;z++)
  {;}
}

delay_1()--倒計(jì)時(shí)延時(shí)函數(shù),可控制執(zhí)行次數(shù),用于控制字幕滾動(dòng)速度
{
  cx--;
  if(cx!=0) return(1);
  if(cx==0) return(0);
  }

void write_1(unsigned char byte)--字模寄存器寫入(根據(jù)點(diǎn)陣特點(diǎn),調(diào)整輸出次序)
{
  unsigned char i;
  for(i=0;i<8;i++)
   {
    SRCK_1=0;
    if((byte&0x01)==0)
      SER_IN_1=0;
    else SER_IN_1=1;
     SRCK_1=1;
     byte=byte>>1;
   }
  SRCK_1=0;
}


void write_2(unsigned char byte)--掃描行寄存器寫入
{
  unsigned char i;
  for(i=0;i<8;i++)
   {
    SRCK_2=0;
    if((byte&0x80)==0)
         SER_IN_2=0;
    else SER_IN_2=1;
    SRCK_2=1;
    byte=byte<<1;
    }
  SRCK_2=0;
}


void scan()--執(zhí)行一次,掃描一行
  {
    unsigned char j;
    flog1++;
    if(flog1==17)
      {
        flog1=1;
        s=saomiao;
      }
    for(j=0;j<2;j++)
      {
        write_2(*(s++));
      }
   
  }

void gundong(unsigned char n)--每次賦值是輸入2個(gè)值,n從1開始,產(chǎn)生滾動(dòng)
{
  unsigned char j;
  if(flog2==0)
    {
     t=&hanzi[2*(n-1)];
     if(n<=((num-1)*16+1))
       {
         w=&hanzi[2*(n-1)+32];
       }
      else
       {
         w=&hanzi[2*(n-1)-2*(num-1)*16];--每次只顯示16位,32個(gè)字節(jié),w是尾地址
       }
     h=t;
     flog2++;
    }
     if(h==w)--他和下面的IF不可調(diào)換次序
    {
     h=t;
    }
    if(h==(hanzi+num*32))
    {
     h=hanzi;
    }
  for(j=0;j<2;j++)
    {
     write_1(*(h++));
    }
}


main()
{
  unsigned char i;
  cx=speed;
  SRCK_1=0;
  SRCK_2=0;
  RCK=0;--清零很重要???
  n=0;
  EA=1;--打開中斷
  ET0=1;
  ET1=1;--易錯(cuò)點(diǎn),定時(shí)器打開,中斷也得開
  TMOD=0x11;--打開定時(shí)器
  TR0=1;
  TR1=1;
  PT0=1;--優(yōu)先級(jí)設(shè)定
  while(1)
    {
     for(i=0;i<song_num;i++)
       {
         x=song[ i];
         m=song/10;
         switch(m)--分中底高位賦值
           {
             case 0:{TH_M0=tone_l_h[x];TL_M0=tone_l_l[x];break;}
             case 1:{TH_M0=tone_m_h[x];TL_M0=tone_m_l[x];break;}
             case 2:{TH_M0=tone_h_h[x];TL_M0=tone_h_l[x];break;}
           }
         TH0=TH_M0;
         TL0=TL_M0;
         delay(song_speed*20);--節(jié)奏控制
      }
   }
}

void play_music(void) interrupt 1 --輸出音樂函數(shù)+數(shù)碼輸出函數(shù)
{
TH0=TH_M0;
TL0=TL_M0;
if(x!=0) buz=!buz;
if(x==0) buz=0;
count++;
if(count==1)
  {
   DIG1=0;
   DIG2=1;
   P0=tone_yin[m];
  }
if(count==2)
{
  count=0;
  DIG1=1;
  DIG2=0;
  P0=number[x];
}
}

void play(void) interrupt 3

{
  if(n==(num*16))
    {
     n=0;
    }
  n++;   
  while(delay_1())
    {
     gundong(n);
     scan();   
     RCK=0;
     RCK=1;   
    }
  flog1=0;
  flog2=0;
  cx=speed;
  s=saomiao;
  TL1=0xEF;
  TH1=0xEF;--放后面,防止不準(zhǔn)
  
  TF1=0;
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:77439 發(fā)表于 2015-4-19 13:25 | 只看該作者
有沒有電路圖呀,想做一下
回復(fù)

使用道具 舉報(bào)

板凳
ID:152916 發(fā)表于 2016-12-15 16:59 | 只看該作者
帶仿真電路是最好的,謝謝啦,能直接跑仿真學(xué)習(xí)效果應(yīng)該是最好的,謝謝啦
回復(fù)

使用道具 舉報(bào)

地板
ID:155163 發(fā)表于 2016-12-16 00:08 來自手機(jī) | 只看該作者
牛逼了我的哥
回復(fù)

使用道具 舉報(bào)

5#
ID:260639 發(fā)表于 2017-12-12 20:28 | 只看該作者
新手報(bào)到,能說下和C51連線嗎?
回復(fù)

使用道具 舉報(bào)

6#
ID:718536 發(fā)表于 2021-2-23 21:36 | 只看該作者
膜拜大佬啊!
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: av一区二区三区四区 | 91精品一区二区三区久久久久 | 爱爱爱av | 久久国产精品99久久久久 | 亚洲 中文 欧美 日韩 在线观看 | 国产一区二区在线播放 | 欧美中文一区 | 亚洲一区日韩 | 国产九九av | 成人黄色网址大全 | 中文字幕黄色大片 | 天堂va在线观看 | 日韩五月天 | 在线播放中文字幕 | 亚洲免费在线观看 | 一区观看 | 玖玖操| 在线播放国产一区二区三区 | 国产欧美日韩在线一区 | 久久精品成人热国产成 | 噜噜噜噜狠狠狠7777视频 | 午夜私人影院在线观看 | 国产精品一区在线 | 国产亚洲精品久久久久久牛牛 | 午夜99| 一区二区国产在线观看 | 亚洲精品乱码久久久久久蜜桃91 | 久久精品国产久精国产 | 一区二区中文字幕 | 日韩高清一区二区 | 国产在线精品一区二区 | 高清人人天天夜夜曰狠狠狠狠 | 亚洲人在线播放 | 国产一区二区在线视频 | 久视频在线 | 日本五月婷婷 | 国产精品久久久久久久久久久久 | 五月综合激情婷婷 | 自拍中文字幕 | 亚洲精品一区二区网址 | 欧美视频一区二区三区 |