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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2910|回復: 14
打印 上一主題 下一主題
收起左側

單片機播放音樂的同時顯示點陣漢字,求思路

[復制鏈接]
跳轉到指定樓層
樓主
ID:887271 發表于 2021-3-1 22:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
由于本論壇禁止直接求程序,禁止伸手黨,所以向大家請教一下大致的實現方法與思路,理清頭緒后我自己來寫程序去實現

用蜂鳴器 播放音樂  和點陣循環顯示 生日快樂 漢字 都弄好了
現在想播放音樂的時候 點陣也顯示  
怎么實現呢
用中斷嗎

birth.zip

76.02 KB, 下載次數: 16

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:387856 發表于 2021-3-2 09:23 | 只看該作者
定時器用來做顯示,主程序里播放音樂
回復

使用道具 舉報

板凳
ID:887271 發表于 2021-3-2 10:26 | 只看該作者
liuhailan5757 發表于 2021-3-2 09:23
定時器用來做顯示,主程序里播放音樂

你看我程序 附件就是   不行啊   跳到顯示字符 音樂就停了
回復

使用道具 舉報

地板
ID:387856 發表于 2021-3-2 10:33 | 只看該作者
暈哦  你定時器里還加了delay  還用了for循環   哎呀 你這個看了教不了了
回復

使用道具 舉報

5#
ID:387856 發表于 2021-3-2 10:38 | 只看該作者
還有就是  你8乘以8的點陣可以顯示 牛哥生日快樂 ,顯示漢子 至少的8乘以12的點陣,一般是16乘以16的才用來顯示漢字
回復

使用道具 舉報

6#
ID:387856 發表于 2021-3-2 10:39 | 只看該作者
我都沒注意看,你定時器中斷里還用了while(1)。人才啊
回復

使用道具 舉報

7#
ID:887271 發表于 2021-3-2 10:41 | 只看該作者
liuhailan5757 發表于 2021-3-2 10:38
還有就是  你8乘以8的點陣可以顯示 牛哥生日快樂 ,顯示漢子 至少的8乘以12的點陣,一般是16乘以16的才用來 ...

你沒仔細看  點陣顯示已經測試好了 現在就是同時進行音樂和字符顯示
回復

使用道具 舉報

8#
ID:887271 發表于 2021-3-2 10:41 | 只看該作者
liuhailan5757 發表于 2021-3-2 10:39
我都沒注意看,你定時器中斷里還用了while(1)。人才啊

剛學兩天  不會啊  隨便寫的
回復

使用道具 舉報

9#
ID:887271 發表于 2021-3-2 10:43 | 只看該作者
liuhailan5757 發表于 2021-3-2 10:39
我都沒注意看,你定時器中斷里還用了while(1)。人才啊

給我修改下吧
回復

使用道具 舉報

10#
ID:390416 發表于 2021-3-2 11:20 | 只看該作者
cdqwin 發表于 2021-3-2 10:41
剛學兩天  不會啊  隨便寫的

https://pan.baidu.com/s/1qY6X3eG這個是百度盤,如果需要點陣,可以看看我發的貼子
回復

使用道具 舉報

11#
ID:693038 發表于 2021-3-2 12:10 | 只看該作者
首先一個,函數實現一般都是放在.c,放.h的一般都是宏和聲明,中斷不宜處理過多東西,更不宜做延時,你要掃描點陣,可以算一下你多久發一次數據,把定時器,設成發送一次數據間隔的時間去掃描,你2MS發送一次的話就做成2MS中斷,循環掃,發完數據立馬跳出中斷,在中斷里面太久會影響主程序和其他中斷運行,先把這些基本框架整理好,才好往下調...
回復

使用道具 舉報

12#
ID:57657 發表于 2021-3-2 13:46 | 只看該作者
lincheng15 發表于 2021-3-2 12:10
首先一個,函數實現一般都是放在.c,放.h的一般都是宏和聲明,中斷不宜處理過多東西,更不宜做延時,你要掃 ...

不是不能在中斷內太久,是中斷內停留絕對不能超過2MS。
回復

使用道具 舉報

13#
ID:387856 發表于 2021-3-2 14:24 | 只看該作者
//我大概給你寫了個框架,要你自己去調節音符,
//顯示也是現成的了,你自己添加字進來就行
//你這個8乘以8的 要顯示字很難
#include<reg51.h>
#include<intrins.h>
#define duo  12                //這里定義哆來咪,就是聲音的頻率,你要自己去調,要改這里的參數得到正確的哆來咪
#define rui  11
#define mi  10
#define fa  9
#define suo  8
#define la  7
#define xi  6
sbit spk = P1^0;
unsigned char t1 = 0;//顯示中用到的變量
unsigned char zhi = 0;//顯示第幾個字
unsigned char t2 = 0;//每一個字的段位,要8段才湊成一個字
unsigned int dis_time = 0;//每一個字顯示的時間
unsigned char yp = 0;//聲音的頻率寄存器         就是音階
code unsigned char num[3][8]={{0x80,0x84,0x44,0x34,0x0f,0x34,0x44,0xc4}, //大
                                                      {0x84,0x94,0x94,0xff,0x94,0x95,0x86,0x8c}, //生
                                                          {0x00,0xff,0x49,0x49,0x49,0x49,0xff,0x00},};//日
code unsigned char wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //掃描的段位
void delay(unsigned int time)
{
while(time--);
}
void timer0() interrupt 1
{
if(t1<2)
{
  P3 = num[zhi][t2];
  P0 = wei[t2];
}
if(t1==2)
{
  P0 = 0xff;
  P3 = 0x00;
  }
t1++;
if(t1==3)
{
  t1 = 0;
  t2++;
  if(t2==8)
  {
   t2 = 0;
   dis_time++;
   if(dis_time==100)
   {
    dis_time = 0;
    zhi++;
    if(zhi==3)
     zhi = 0;
   }
  }
}
}
void timer1() interrupt 3
{
unsigned char i;
i++;
if(i==yp)
{
  i = 0;
  spk^=1;
  }
}
void main()
{
P0 = 0x00;
P3 = 0xff;
TMOD = 0x00;                                //模式0
TL0 = 0xfe;                                 //65536-11.0592M/12/1000
TH0 = 0xff;
TR0 = 1;                                    //啟動定時器
ET0 = 1;                                    //使能定時器中斷
TL1 = 0xfe;                                 //
TH1 = 0xff;
TR1 = 0;                                    //啟動定時器
ET1 = 1;                                    //使能定時器中斷
EA = 1;
while(1)
{
  TR1=1;
  yp = duo;
  delay(50000);//這些延時是控制歌曲的節奏的,就是拍子。你自己根據生日快樂的歌曲的譜子去做節奏延時
  delay(50000);
  yp = rui;
  delay(50000);
  delay(50000);
  yp = mi;
  delay(50000);
  delay(50000);
  yp = fa;
  delay(50000);
  delay(50000);
  yp = suo;
  delay(50000);
  delay(50000);
  yp = la;
  delay(50000);
  delay(50000);
  yp = xi;
  delay(50000);
  delay(50000);
  TR1 = 0;                 //
  spk = 0;                 //
  delay(50000);         //
  delay(50000);         //這4句 就是擲音符,這里的延時就是擲音的長度
  TR1 = 1;
  yp = xi;
  delay(50000);
  delay(50000);
  yp = la;
  delay(50000);
  delay(50000);
  yp = suo;
  delay(50000);
  delay(50000);
  yp = fa;
  delay(50000);
  delay(50000);
  yp = mi;
  delay(50000);
  delay(50000);
  yp = rui;
  delay(50000);
  delay(50000);
  yp = duo;
  delay(50000);
  delay(50000);
  TR1 = 0;
  spk = 0;
  delay(50000);
  delay(50000);
}
}
回復

使用道具 舉報

14#
ID:57657 發表于 2021-3-2 16:41 | 只看該作者
你可以按照這個去修改 http://www.zg4o1577.cn/bbs/dpj-53492-1.html
回復

使用道具 舉報

15#
ID:517951 發表于 2021-3-2 20:23 | 只看該作者
定時中斷處理函數要簡潔精悍,否則會假死,我遇到過,精簡之后就功能正常了。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产日韩精品一区 | 欧美综合视频在线 | 欧美男人天堂 | 中文字幕视频在线免费 | 午夜视频网站 | 日韩中文一区二区三区 | 国产一级免费视频 | 成人免费视频网站在线看 | 久久综合一区 | 亚洲夜射 | 亚洲精品欧美 | 午夜视频网站 | av免费入口 | 欧美一级片在线 | 精品久久久久久久久久久 | 亚洲视频自拍 | 国产精品99久久久久久久vr | 国产综合精品一区二区三区 | 国精日本亚洲欧州国产中文久久 | 日韩不卡在线 | 亚洲一区二区视频 | 天天搞天天搞 | 国产高清视频一区 | 亚洲网站免费看 | 日本超碰 | 大乳boobs巨大吃奶挤奶 | 中文字幕第一页在线 | 中文字幕不卡在线观看 | 日韩日韩日韩日韩日韩日韩日韩 | 亚洲国产精品一区二区久久 | 亚洲精品成人免费 | 中文字幕一区二区三区在线观看 | 日韩免费高清视频 | 国产男女猛烈无遮掩视频免费网站 | 欧美精品在线一区二区三区 | 99精品福利视频 | 一区二区三区亚洲 | 久草在线 | 精品1区2区 | 91www在线观看 | 99视频在线免费观看 |