找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5438|回復(fù): 6
收起左側(cè)

單片機(jī)生日快樂的8*8點(diǎn)陣顯示和電子琴

  [復(fù)制鏈接]
ID:650426 發(fā)表于 2020-5-9 16:51 | 顯示全部樓層 |閱讀模式
仿真開始后,8*8點(diǎn)陣先依次顯示牛、大、哥、生、日、快、樂,然后蜂鳴器播放祝你生日快樂的曲子。
PS:電子琴所要播放的樂曲,可以從網(wǎng)上找到相應(yīng)的樂譜,然后從我所上傳附件里的軟件輸入樂譜得到電子琴所需要的十六進(jìn)制數(shù)組。
3.png


仿真圖如下:
1.png


主程序代碼如下:
#include<reg51.h>
#include "SoundPlay.h"

#define u8 unsigned char //宏定義
#define u16 unsigned int

//void delay_1ms(u16 k)
//{
//        u16 i,j;
//        for(i=0;i<k;i++)
//        for(j=0;j<120;j++);
//}

void delay(u16 i) //延時(shí)函數(shù)
{
  u16 k;
  for(k=0;k<i;k++);
}

//***************************************Music********************************************

u8 Music_Code[]={ 0x0F,0x03, 0x0F,0x03, 0x10,0x02, 0x0F,0x02, 0x15,0x02,
                  0x11,0x01, 0x0F,0x03, 0x0F,0x03, 0x10,0x02, 0x0F,0x02,
                  0x16,0x02, 0x15,0x01, 0x0F,0x03, 0x0F,0x03, 0x19,0x02,
                  0x17,0x02, 0x15,0x02, 0x11,0x02, 0x10,0x02, 0x18,0x03,
                  0x18,0x03, 0x17,0x02, 0x15,0x02, 0x16,0x02, 0x15,0x02,
                  0x00,0x00 }; //生日快樂歌曲

//****************************************************************************************

//***************************************LED8*8********************************************

u8 code led[7][8]={{0x18,0x3e,0x48,0x7f,0x08,0x08,0x08,0x08},        //牛
                   {0x08,0x08,0x7f,0x08,0x08,0x14,0x22,0x41},        //大
                                   {0x3e,0x1a,0x1a,0x7f,0x1a,0x1a,0x06,0x02},        //哥
                                   {0x08,0x28,0x7f,0x88,0x1c,0x08,0x08,0x7f},        //生
                                   {0x00,0x3e,0x22,0x22,0x3e,0x22,0x22,0x3e},        //日
                                   {0x48,0x5e,0xea,0x7f,0x48,0x4c,0x52,0x61},        //快
                                   {0x18,0x28,0x48,0x7e,0x08,0x08,0x3a,0x49},        //樂
                  };//定義二維數(shù)組,依次顯示牛、大、哥、生、日、快、樂

//****************************************************************************************

void main()
{
        u8 w;
         u16 j,k,m;
        InitialSound();        
        while(1)
        {        
           for(k=0;k<7;k++)        //第一維下標(biāo)取值范圍為牛、大、哥、生、日、快、樂,7個(gè)字符
            {for(m=0;m<200;m++)        //每個(gè)字符掃描顯示200次,控制每個(gè)字符顯示漢字
                  {         w=0x01; //行初值
                     for(j=0;j<8;j++) //第二維下標(biāo)取值范圍為0~7,控制8行
                          {P3=w; //行控制
                           P0=~led[k][j]; //列控制,將指定數(shù)組元素取反后賦值給P0口,顯示碼
                           delay(60);
                           w<<=1; //行變量左移指向下一行
                           P0=0xff;
                          }
                  }
                }
                Play(Music_Code,0,3,360); //播放音樂
                delay(100000);
        }
}

88點(diǎn)陣和電子琴.zip (279.76 KB, 下載次數(shù): 118)

回復(fù)

使用道具 舉報(bào)

ID:84791 發(fā)表于 2020-10-8 04:01 | 顯示全部樓層
很不錯(cuò),我準(zhǔn)備把點(diǎn)陣改成16*16的,這樣顯示漢字就好看點(diǎn)。不過目前在學(xué)習(xí),把8*8搞清楚了再搞16*16的。
回復(fù)

使用道具 舉報(bào)

ID:887271 發(fā)表于 2021-3-1 14:15 | 顯示全部樓層
下了  但是點(diǎn)陣不行,8*8像素顯示漢字還是差了點(diǎn)
回復(fù)

使用道具 舉報(bào)

ID:1001969 發(fā)表于 2022-1-15 00:53 | 顯示全部樓層
請(qǐng)問為什么我燒錄進(jìn)去后沒有反應(yīng)呢
回復(fù)

使用道具 舉報(bào)

ID:262 發(fā)表于 2022-1-15 02:25 | 顯示全部樓層
本帖最后由 heicad 于 2022-1-15 02:27 編輯
Ariel_0926 發(fā)表于 2022-1-15 00:53
請(qǐng)問為什么我燒錄進(jìn)去后沒有反應(yīng)呢

估計(jì)是你io口不對(duì),或者是你電路沒搭建好解決方法是,先仿真,確定軟件有沒有問題,確定后,再檢查硬件連接
回復(fù)

使用道具 舉報(bào)

ID:1088576 發(fā)表于 2023-7-15 15:49 | 顯示全部樓層
老師,請(qǐng)教個(gè)問題,0x48,0x5e,0xea,0x7f,0x48,0x4c,0x52,0x61},        //快  這個(gè)16進(jìn)制,轉(zhuǎn)成2進(jìn)制后,怎么定義LED通電與否的? 謝謝。剛學(xué),麻煩您了
回復(fù)

使用道具 舉報(bào)

ID:1088383 發(fā)表于 2023-7-16 15:59 | 顯示全部樓層
zkmeng1 發(fā)表于 2023-7-15 15:49
老師,請(qǐng)教個(gè)問題,0x48,0x5e,0xea,0x7f,0x48,0x4c,0x52,0x61},        //快  這個(gè)16進(jìn)制,轉(zhuǎn)成2進(jìn)制后,怎 ...

這個(gè)要看原理圖的吧,我的是把P0口都拉成低電平,然后要亮哪一行就給哪一行高電平
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表