完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1 简介
Hi,大家好,今天向大家介绍一个 单片机项目 2 绪论 2.1 课题背景与目的 在近代电子工程应用中, 录音系统已经越来越多的以数字信号形式, 并运用数字电路技术来处理信息。 录音系统作为一种音频捕获设备在音频信息获取方面有着广泛的应用。 目前, 市面上的录音系统只能提供录音、 监听、 查询、 回放和管理等基本功能。 传统的录音设备无法满足野生动物保护等特殊场合对录音设备远程可控性的要求, 以及记者、 警察这类特殊人群对取证录音的加密保护需要。信息的安全性、 可控性已成为录音系统的重要研究内容。 实现数字录音技术、 移动通信控制技术和信息加密技术的基础上, 学长设计了一款基于 STM32 的专用数字录音系统, 实现了数字录音、 实时加密以及远程控制功能, 实现信息的安全性和可控性。 3 系统设计 3.1 系统架构 通过 51 单片机与语音功能集成芯片 ISD4004, 以及 LCD12864 液晶芯片进行设计, 由单片机控制 ISD4004 来实现语音的录制存储以及播放清除等功能。 并且通过 LCD12864 来实现良好的人机交互界面。 具体框图如下所示: 学长考虑到采用资源不多的 51 单片机, 这样节省了资源同时单片机运算速度已经足够用于检测按键, 以及控制录音笔进行各种操作, 而且这种设计无需对数字信号进行编码压缩的复杂的操作, 实现简单, 功耗不高, 相对而言成本也不高, 所以本设计采用了此方案 3.2 硬件部分 (略) 3.3 软件部分 主程序流程 系统接通电源后, 主程序初始化后进入开机界面然后进入主循环,首先是按键检测, 提示密码输入, 正确则进入主菜单选择界面, 否则重复输入, 有三次校正密码的机会, 三次输入密码错误则蜂鸣器提示报警系统必须手动重启, 正确进入菜单后, 进行所需的选择然后, 通过 12864显示出设计相关信息。 录放声音程序设计 ISD4004 通过单片机控制, 当检测到按下录音键, 单片机通过 SPI接口发送相应指令将输入的信号进行采样, 经过芯片内部的一系列处理, 保存在芯片的储存器中。 当检测到按下放音键时, 发送放音指令使其处于放音状态。 录放程序流程图如下: LCD12864 程序设计 设计采用的是 LCD12864 液晶显示, 由于其本身带有驱动模块液晶屏, 所以对于该显示操作程序可以分为开显示, 设置显示初始行, 写数据和清屏等部分。 12864 的写命令程序, 写数据程序, 显示程序都以子程序的形式在 12864 库函数里, 方便程序函数之间调用。 DS1302 程序设计 在 DS1302 的时钟日历或者 RAM 进行数据传送时, DS1302 必须首先发送命令字节。 若进行单字节传送, 8 位命令字节传送结束之后,在下个 2SCLK 周期的上升沿输入数据字节, 或者在下 8 个 SCLK 周期的下降沿输出数据字节。 3.4 实现效果 3.5 部分相关代码 /************************************************ 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);//播报温度 |
|
|
|
只有小组成员才能发言,加入小组>>
3314 浏览 9 评论
2995 浏览 16 评论
3494 浏览 1 评论
9059 浏览 16 评论
4088 浏览 18 评论
1178浏览 3评论
605浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
599浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2335浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1896浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 04:27 , Processed in 1.241562 second(s), Total 79, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号