本篇文章将介绍一个基于51单片机的电子贺卡,本作品可用于课程设计、毕业设计的参考。其所用到的外设硬件以及程序的代码量都是相对较少的,对于51单片机的初学者,通过本设计熟悉51单片机的使用是非常好的选择。

目录

一、实现功能

二、硬件准备

三、项目设计

(一)基本原理

(二)原理图

(三)程序设计

四、图片展示

五、总结

资料下载: 基于51单片机的电子贺卡设计,课程设计,毕业设计


一、实现功能

  1. 通过喇叭播放《世上只有妈妈好》音乐曲调;
  2. 通过0.96寸的OLED显示图片;
  3. 通过按键切换图片

二、硬件准备

  1. 主控芯片:STC89C52(安装在最小系统板上)
  2. 显示装置:0.96寸4针OLED显示屏(IIC接口)
  3. 播放装置:喇叭、三极管
  4. 其他:杜邦线、电阻若干、按键*1

三、项目设计

(一)基本原理

图片的显示是通过0.96寸的OLED显示屏实现的,这个显示屏虽然小,但是显示内容相对较多,而且使用方便,连接非常简单,资料例程较为全面。通过IIC进行通信,本设计中时钟线定义为P1^0,数据线定义为P1^1。

音乐的播放是通过一个三极管放大电路驱动一个喇叭实现的,当我们改变IO口的高低电平切换频率喇叭就会播放不同的曲调。本设计中喇叭控制端口我们定义为了P1^7,不同的音乐网上会有不同的数据,这个读者可自行参考。

切换图片用一个按键即可。

(二)原理图

  • 51单片机最小系统基本原理图

  • 三极管放大电路

  • 显示电路

(三)程序设计

  • 定义必要的变量的数组
#define uchar unsigned char
unsigned char a, i, j, k;
int b;
int key = 0;
sbit speaker = P1 ^ 7;
unsigned char timer0h, timer01, time;
code unsigned char sszymmh1[] = {6, 2, 3, 5, 2, 1, 3, 2, 2, 5, 2, 2, 1, 3, 2, 6, 2,1, 5, 2, 1, 6, 2, 4, 3, 2, 2, 5, 2, 1, 6, 2, 1, 5, 2, 2, 3, 2, 2, 1, 2, 1, 6, 1, 1, 5, 2, 1, 3, 2, 1, 2, 2, 4, 2, 2, 3, 3, 2, 1, 5, 2, 2, 5, 2, 1, 6, 2, 1, 3, 2, 2, 2, 2, 2, 1, 2, 4, 5, 2, 3, 3, 2, 1, 2, 2, 1, 1, 2, 1, 6, 1, 1, 1, 2, 1, 5, 1, 6, 0, 0, 0
};
code unsigned char sszymmh[] = {6, 2, 3, 5, 2, 1, 3, 2, 2, 5, 2, 2, 1, 3, 2,6, 2, 1, 5, 2, 1, 6, 2, 4, 3, 2, 2, 5, 2, 1,6, 2, 1, 5, 2, 2, 3, 2, 2, 1, 2, 1, 6, 1, 1,5, 2, 1, 3, 2, 1, 2, 2, 2, 2, 3, 3, 2, 1, 5,2, 2, 5, 2, 1, 6, 2, 1, 3, 2, 2, 2, 2, 2, 1, 2, 4, 5, 2, 3, 3, 2, 1, 2, 2, 1, 1, 2, 1,6, 1, 1, 1, 2, 1, 5, 1, 6, 0, 0, 0
};
code unsigned char FREQH[] = {0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xF9,0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC, 0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0XFF
};code unsigned char FREQL[] = { 0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6, 0x21, 0xE1, 0x8C,0xD8, 0x68, 0xE9, 0x5B, 0x8F, 0xEE, 0x44, 0x6B, 0xB4, 0xF4,0x2D, 0x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16
};
  • 延时函数
void delay(unsigned char t)
{unsigned char t1;unsigned long t2;for (t1 = 0; t1 < t; t1++)for (t2 = 0; t2 < 8000; t2++);
}
void lcddelay(unsigned char c)
{unsigned char a, b;for (; c > 0; c--)for (b = 142; b > 0; b--)for (a = 2; a > 0; a--);
}
  • 音乐播放函数
void t0int() interrupt 1
{TR0 = 0;speaker = !speaker;TH0 = timer0h;TL0 = timer01;TR0 = 1;
}
void song()
{TH0 = timer0h;TL0 = timer01;TR0 = 1;delay(time);
}
  • 按键中断函数
void int0() interrupt 0
{EX0 = 0;lcddelay(40);EX0 = 1;key = !key;
}
  • 主函数
int main(void)
{    unsigned char k, i;OLED_Init();            //初始化OLEDOLED_DrawBMP(0,0,128,8,BMP2);  //图片显示(图片显示慎用,生成的字表较大,会占用较多空间,FLASH空间8K以下慎用)Delay_1ms(3000);OLED_Clear();TMOD = 1; ET0 = 1;EA = 1;EX0 = 1;IT0 = 1;  while(1) {if (key == 0){OLED_Clear();OLED_DrawBMP(0,0,128,8,BMP2);  //图片显示(图片显示慎用,生成的字表较大,会占用较多空间,FLASH空间8K以下慎用)i = 0;while (i < 100 && key == 0){k = sszymmh[i] + 7 * sszymmh[i + 1] - 1;timer0h = FREQH[k];timer01 = FREQL[k];time = sszymmh[i + 2];i = i + 3;song();}}else{OLED_Clear();OLED_DrawBMP(0,0,128,8,BMP1);  //图片显示(图片显示慎用,生成的字表较大,会占用较多空间,FLASH空间8K以下慎用)i = 0;while (i < 100 && key == 1){k = sszymmh1[i] + 7 * sszymmh1[i + 1] - 1;timer0h = FREQH[k];timer01 = FREQL[k];time = sszymmh1[i + 2];i = i + 3;song();}}}
}

四、图片展示

五、总结

笔者水平有限,必定有错误不当之处,希望大家不吝指正,共同进步,共同学习!博客到这里完成了~

如果此文章对你有帮助,欢迎点赞 关注 收藏 转发.

资料下载: 基于51单片机的电子贺卡设计,课程设计,毕业设计

基于51单片机的课程设计(毕业设计)——电子贺卡相关推荐

  1. stc89c51单片机音乐盒系统设计_基于51单片机音乐盒课程设计1.doc

    基于51单片机音乐盒课程设计1 课程名称: 微机原理课程设计 题 目: 基于单片机的音乐盒设计 摘要 随着人类社会的发展,人们对视觉.听觉方面的享受提出了越来越高的要求.小小的音乐盒可以给人们带来美好 ...

  2. c语言 计步算法,基于51单片机的计步器设计

    基于51单片机的计步器设计(任务书,开题报告,外文翻译,论文15000字) 摘  要 随着科技发展和国民健康意识的提高,许多检测健康状态的电子产品开始普及.电子计步器作为一种越来越流行的平民锻炼检测装 ...

  3. 用计算机设计电路图,基于51单片机的计算器设计(含电路图,程序)

    基于51单片机的计算器设计(含电路图,程序)(课题申报表,任务书,开题报告,中期检查表,外文翻译,论文11200字,程序,答辩PPT) 摘 要 计算器一般是指"电子计算器",能进行 ...

  4. 基于51单片机信号发生器仿真设计

    本设计 基于51单片机信号发生器仿真设计 (仿真+程序源码+设计说明书) 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0015 目录标题 ...

  5. 基于51单片机自行车码表设计

    [毕设课设]基于51单片机自行车码表设计 ​效果图 Proteus仿真: 功能简介: 文件内容: 程序框架: 网盘链接: ​效果图 更多内容请关注@WENJIE电子科技 ​ 基于51单片机proteu ...

  6. 基于51单片机的温度报警器设计

    目 录 前言.............................................................................................. ...

  7. 51单片机综合课程设计多功能电子秤(显示时间、温度、存储、串口、报警装置等)

    51单片机综合课程设计----多功能电子秤 关键词:proteus仿真.51单片机.DS1302时钟芯片.DB18B20温度芯片.AT24C02存储芯片.LCD1602液晶屏.ADC0832芯片等,文 ...

  8. 基于51单片机数字电压表的设计 仿真、程序、原理图(转发)

    摘 要 数字电压表简称DVM,数字电压表基本原理是将输入的模拟电压信号转化为数字信号,再进行输出显示.而A/D转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器基本结构是由采样保持,量化,编 ...

  9. 基于51单片机 数控恒流源设计 可调电流源

    设计硬件组成: 基于51单片机 数控恒流源设计 可调电流源基于单片机可调电流源设计  项目定制觉得选题不错 分享一下 由51单片机+LCD1602液晶+变压器+整流桥+开关电源LM2596+TLC56 ...

最新文章

  1. “No module named ‘vtk.util‘;‘vtk‘ is not a package”问题完美解决
  2. WebBrowser 操作(从网上收集)
  3. linux下cat命令详解
  4. mysql 视图 分页_mysql查看所有存储过程,函数,视图,触发器,表,分页
  5. 用java里的junit框架_使用Java JUnit框架里的@SuiteClasses注解管理测试用例
  6. Linux安全加固之账号密码安全策略
  7. 蓝桥杯_Fibonacci数列(Java)
  8. mysql 数据入库去重_MySQL中去重 distinct 的用法 ,数据库去重distinct
  9. 基础学习——MySQL基础
  10. 消息:阿里巴巴落户山东济南,注册资本1亿元
  11. 二进制+位操作 总结
  12. 石墨笔记,Onenote,Effie哪个更适合记者?
  13. 测试时代新推出《测试员》特刊之软件测试基础
  14. 荣耀10的android在哪,荣耀10详细配置参数,你想知道的都在这里
  15. (附源码)小程序 长沙县图书馆图书导览系统 毕业设计 170900
  16. 也谈般若波罗密多心经与计算机世界
  17. 中国的银行英文缩写趣解
  18. IAR中Error[Pe007]: unrecognized token
  19. CSS中如何制作出小三角形?
  20. 数据安全--7--数据安全风险管控浅析

热门文章

  1. 世界标准时间yyyy-MM-dd‘T‘HH:mm:ss.SSSXXX详解
  2. vivo手机插了卡显示无服务器,vivo手机卡1能正常使用,卡2打不通电话,用卡2往出打电话就显示无法访问移动网络,是怎么回事??...
  3. 个人邮箱怎么填写?微信如何设置自己的邮箱?怎么收邮件通知?
  4. 随机森林调参 - python
  5. 预见2021:《2021年中国新零售产业全景图谱》
  6. 优思学院:六西格玛中的水平对比方法是什么?
  7. 【技术】word2016下划线只显示一半,如何显示末尾空格的下划线
  8. 在链式存储结构建立二叉树排序树
  9. 千千静听声控精灵(语音识别)
  10. JAVA 修饰符笔记