基于单片机的智能电子贺卡设计设计(原理图、PCB、设计文档、源代码、proteus)

基于单片机的智能电子贺卡设计设计(原理图、PCB、设计文档、源代码、proteus)
基于单片机的智能电子贺卡设计设计(原理图、PCB、设计文档、源代码、proteus)
全套设计资料
原理图
PCB
设计文档
源代码
proteus请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

/*
*  基于单片机的智能电子贺卡设计
*  CPU:STC89C52RC
*  晶振:11.0592MHZ
*
*  接线:
*  // LCD12864
*    
*/

#include "Main.h"
#include "LCD12864.h"
#include "Music.h"
#include "Key.h"
#include "Digitron.h"

// 音乐 刀剑如梦
extern uchar code musicDJRM[][2];
// 音乐 青花瓷
extern uchar code musicQHC[][2];
// 音乐 森林狂想曲
extern uchar code musicSLKXQ[][2];
// 音乐 茉莉花
extern uchar code musicMLH[][2];

// 当前正在播放的音乐
uchar **currentMusic=musicDJRM;

extern unsigned char code BriImg[];
extern unsigned char code DuanQiaoImg[];
extern unsigned char code JZhouImg[];
extern unsigned char code MoLiHuaImg[];
extern unsigned char code NewYearImg[];

// 控制音乐的一些变量
extern uchar music_m, music_n, music_i;

// 按键 枚举
enum KEYVALUE Key_Value = B_NoKey;

// 页面 枚举
enum ViewPage nowPage = BriPage;

// 表示 1-播放/0-暂停
uchar MusicStatus=1;

// 延时 z ms
void delay_ms(uint z)
{
	uint x, y;
	for (x = z; x>0; x--)
        for (y = 114; y>0; y--);
}

int main(void)
{
    // 初始化音乐的定时器
    InitMusic();
    
    // 初始化液晶
    LCD_Init();

    // 清屏
    LCD_Clear_Screen();
    
    // 显示主页
    LCD_Write_string(2, 0, "智能电子贺卡设计");
    LCD_Write_string(3, 4, "第十八组");
    delay_ms(1000);
    while(1)
    {
        Key_Value = keyScan();
        if (Key_Value != B_NoKey)
        {
            TR0 = 0;    // 按下按键后停止音乐
            if (Key_Value == B_NEXT)
                nowPage = (++nowPage)%NoPage;
            else if (Key_Value == B_LAST)
                nowPage = (nowPage+NoPage-1)%NoPage;    // 将减法转化为加法,防止数据溢出.
            else if (Key_Value == B_PAUSE)
            {
                MusicStatus = !MusicStatus; // 状态翻转
                continue;   // 如果按下的是暂停键,不刷新界面显示
            }
            
            // 按下非暂停键 清空当前的播放进度
            music_m=0;music_n=0;music_i=0;
            
            // 每次按下,只更新一次界面显示,减少界面刷新频率.
            switch (nowPage)
            {
                // 生日快乐
                case BriPage:
                    currentMusic = musicDJRM;
                    Display_Img(BriImg);
                    break;

                // 断桥残雪
                case DuanQiaoPage:
                    currentMusic = musicQHC;
                    Display_Img(DuanQiaoImg);
                    DisplayDigitron(2);
                    break;

                // 
                case JZhouPage:
                    currentMusic = musicSLKXQ;
                    Display_Img(JZhouImg);
                    DisplayDigitron(2);
                    break;

                // 茉莉花
                case MoLiHuaPage:
                    currentMusic = musicMLH;
                    Display_Img(MoLiHuaImg);
                    DisplayDigitron(2);
                    break;
                
                // 新年快乐
                case NewYearPage:
                    Display_Img(NewYearImg);
                    break;
                
                default:
                    break;
            }
        }
        if (MusicStatus == 1)
            PlayMusic(currentMusic);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cqtianxingkeji

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值