【毕业设计】基于单片机的录音器设计与实现 - 物联网 嵌入式 stm32

文章目录

  • 1 简介
  • 2 绪论
    • 2.1 课题背景与目的
  • 3 系统设计
    • 3.1 系统架构
    • 3.2 硬件部分
    • 3.3 软件部分
      • 主程序流程
      • 录放声音程序设计
      • LCD12864 程序设计
      • DS1302 程序设计
    • 3.4 实现效果
    • 3.5 部分相关代码
  • 4 最后


1 简介

Hi,大家好,这里是丹成学长,今天向大家介绍一个 单片机项目


大家可用于 课程设计 或 毕业设计


单片机-嵌入式毕设选题大全及项目分享:

https://blog.csdn.net/m0_71572576/article/details/125409052


【毕业设计】基于单片机的录音器设计与实现 - 物联网 嵌入式 stm32_第1张图片

2 绪论

2.1 课题背景与目的

在近代电子工程应用中, 录音系统已经越来越多的以数字信号形式, 并运用数字电路技术来处理信息。 录音系统作为一种音频捕获设备在音频信息获取方面有着广泛的应用。 目前, 市面上的录音系统只能提供录音、 监听、 查询、 回放和管理等基本功能。 传统的录音设备无法满足野生动物保护等特殊场合对录音设备远程可控性的要求, 以及记者、 警察这类特殊人群对取证录音的加密保护需要。信息的安全性、 可控性已成为录音系统的重要研究内容。

【毕业设计】基于单片机的录音器设计与实现 - 物联网 嵌入式 stm32_第2张图片

实现数字录音技术、 移动通信控制技术和信息加密技术的基础上, 学长设计了一款基于 STM32 的专用数字录音系统, 实现了数字录音、 实时加密以及远程控制功能, 实现信息的安全性和可控性。

3 系统设计

3.1 系统架构

通过 51 单片机与语音功能集成芯片 ISD4004, 以及 LCD12864 液晶芯片进行设计, 由单片机控制 ISD4004 来实现语音的录制存储以及播放清除等功能。 并且通过 LCD12864 来实现良好的人机交互界面。 具体框图如下所示:

【毕业设计】基于单片机的录音器设计与实现 - 物联网 嵌入式 stm32_第3张图片

学长考虑到采用资源不多的 51 单片机, 这样节省了资源同时单片机运算速度已经足够用于检测按键, 以及控制录音笔进行各种操作, 而且这种设计无需对数字信号进行编码压缩的复杂的操作, 实现简单, 功耗不高, 相对而言成本也不高, 所以本设计采用了此方案

3.2 硬件部分

(略)

3.3 软件部分

主程序流程

系统接通电源后, 主程序初始化后进入开机界面然后进入主循环,首先是按键检测, 提示密码输入, 正确则进入主菜单选择界面, 否则重复输入, 有三次校正密码的机会, 三次输入密码错误则蜂鸣器提示报警系统必须手动重启, 正确进入菜单后, 进行所需的选择然后, 通过 12864显示出设计相关信息。

【毕业设计】基于单片机的录音器设计与实现 - 物联网 嵌入式 stm32_第4张图片

录放声音程序设计

ISD4004 通过单片机控制, 当检测到按下录音键, 单片机通过 SPI接口发送相应指令将输入的信号进行采样, 经过芯片内部的一系列处理, 保存在芯片的储存器中。 当检测到按下放音键时, 发送放音指令使其处于放音状态。 录放程序流程图如下:
【毕业设计】基于单片机的录音器设计与实现 - 物联网 嵌入式 stm32_第5张图片

LCD12864 程序设计

设计采用的是 LCD12864 液晶显示, 由于其本身带有驱动模块液晶屏, 所以对于该显示操作程序可以分为开显示, 设置显示初始行, 写数据和清屏等部分。 12864 的写命令程序, 写数据程序, 显示程序都以子程序的形式在 12864 库函数里, 方便程序函数之间调用。

【毕业设计】基于单片机的录音器设计与实现 - 物联网 嵌入式 stm32_第6张图片

DS1302 程序设计

在 DS1302 的时钟日历或者 RAM 进行数据传送时, DS1302 必须首先发送命令字节。 若进行单字节传送, 8 位命令字节传送结束之后,在下个 2SCLK 周期的上升沿输入数据字节, 或者在下 8 个 SCLK 周期的下降沿输出数据字节。

【毕业设计】基于单片机的录音器设计与实现 - 物联网 嵌入式 stm32_第7张图片

3.4 实现效果

【毕业设计】基于单片机的录音器设计与实现 - 物联网 嵌入式 stm32_第8张图片

3.5 部分相关代码


/************************************************
 
 作者:丹成学长,Q746876041
************************************************/

void ISD_SPI_Send8( uchar addr_8 ); //spi 串行发送, 8 位数据
void ISD_SPI_Send16( uint addr_16 ); //spi 串行发送, 16 位数据
uint ISD_SPI_Rowadd(void); //读取 16 位行地址
void ISD_Stop(void); //发送 stop 指令
void ISD_PowerUp(void); // 上电 0X20
void ISD_PowerDown(void);  //掉电 0X10
void ISD_Play(void); //发送当前地址放音指令
void ISD_SetPlay(uint add); //发送指定地址放音指令
void ISD_Rec(void); //发送当前地址录音指令
void ISD_SetRec(uint add); //发送指定地址录音指令
void PLAY_now(uchar add_set); //按指定地址段开始播放
void REC_now(uchar add_set); // 按指定地址段开始录音
void isd_voice_year(uchar i1,uchar i2,uchar i3,uchar i4,uchar i5,uchar
i6); //播报年月日
void isd_voice_hour(uchar i1,uchar i2,uchar i3,uchar i4,uchar i5,uchar
i6); //播报时分秒
void isd_voice_baoshi(void);  //播报"报时"
void isd_rec_play(void); //录音放音一体化
void addr_display(uint addr,uchar flag); //录放音地址显示

void main_menu(void);//主菜单
void main_menu1(void);
void main_menu2(void);
void start(void);//开始界面
void start1(void);
void initialize(void); //初始化
void write_com(uchar com);  //写指令
void write_dat(uchar dat);  //写数据
void CGRAM(void); // CGRAM 自定义显示字符
void init_photo(void);  //图片初始化
void photo(uchar *address);//图片显示
void photo2(void);
void display1(void);  //登陆界面
void display2(void);  //欢迎界面
void display3(void);
void display_design(void);

void write_ds1302_byte(uchar dat); //写操作写入一个字节
void write_ds1302(uchar address,uchar dat);//DS1302 写入数据
uchar read_ds1302_byte(uchar address);  //单字节读数据操作
void set_rtc(void);  //校对时间
void read_ds1302(void);  //读 ds1302 所有数据
void time_deal(void); //处理数据, bcd 转换成十进制
void ds1302_display(void); //显示界面
void ds1302_display_data(void);  //显示年星期月日时秒分数据
void ds1302_main(void); //时间主函数

void write_ds1302_byte(uchar dat); //写操作写入一个字节
void write_ds1302(uchar address,uchar dat);//DS1302 写入数据
uchar read_ds1302_byte(uchar address);  //单字节读数据操作
void set_rtc(void);  //校对时间
void read_ds1302(void);  //读 ds1302 所有数据
void time_deal(void); //处理数据, bcd 转换成十进制
void ds1302_display(void); //显示界面
void ds1302_display_data(void);  //显示年星期月日时秒分数据
void ds1302_main(void); //时间主函数

void init_ds18b20(void); //初始化
void delay(uint t);//延时
void write_byte(uchar dat);//  DS18B20 写 1 个字节函数
uchar read_byte(void);//  DS18B20 读 1 个字节函数
uchar read_temperature(void);//读温度
uint read_temperature1(void);  //读温度, 两位小数处理
void display(uchar temp,uint temp1);//温度显示
void ds18b20_tem(void); //温度显示
void ds18b20_1302(void);  //ds1302 里的温度显示
void voice_temperature(uchar i1,uchar i2);//播报温度




<br/>

**单片机-嵌入式毕设选题大全及项目分享:** 

[https://blog.csdn.net/m0_71572576/article/details/125409052](https://blog.csdn.net/m0_71572576/article/details/125409052)

<br/>



4 最后

你可能感兴趣的:(物联网,单片机,毕业设计,单片机,物联网,stm32,录音机,毕业设计)