基于单片机的音频播放器及文本浏览器设计 - 图文(6)

2019-04-14 16:11

青岛大学本科生毕业论文(设计)

3.8 电源模块原理图

电源部分是一个产品设计的关键,对系统工作的稳定性至关重要,本设计电源从电脑USB口取电(其他5V直流电源也可),经过REG1117-3.3V电压芯片转换,可以输出5V或3.3V两种规格电压。其中10μF和470μF电容为高、低频滤波电容。

图3.8 电源模块原理图

21

青岛大学本科生毕业论文(设计)

第4章 软件设计

4.1 开发环境简介

本设计采用C51语言编写程序,实现单片机对各种功能模块的控制。在单片机早期开发的时候,汇编语言比较很流行,由于介于高级语言和机器语言之间,它可以直接操作硬件,而且指令的执行速度虽然很快,对于早期资源贫乏的单片机来说,是比较理想的开发语言。但其指令格式比较难记忆,编写的程序晦涩难懂,不便于调试、维护和移植,而且受硬件系统的限制比较大,目前已经很少使用。现在单片机硬件运算性能较过去有了显著的提高,单片机的执行速度已经不是首要因素,如今单片机应用的开发过程中时,需要更好的移植和维护,更加注重程序本身的编写效率,所以C51已成为目前主流的单片机开发软件工具[11]。

本设计开发环境采用美国Keil Software公司出品的Keil uVision4,Keil uVision4软件提供了丰富且功能强大的库函数,并且集编辑、编译、连接、调试、仿真等完整的开发流程于一体。编程者仅使用该工具即可完成整个开发过程。具体开发流程如下:

(1)创建一个新工程( Project),并设置工程环境; (2)在该工程下创建C源文件,编写C51程序;

(3)编译、链接程序,按照编译器提示找出错误进行修改,; (4)调试、仿真,检查无误后最后生成.hex文件;

(5)下载单片机可运行目标代码到单片机上的程序ROM中。

4.2 模块化程序设计

整个系统设计较为复杂,因此采用模块化编程思想,具体分为以下几个模块:FAT32文件系统底层驱动、12864液晶驱动、VS1003驱动、SD卡驱动、串口驱动、DS1302和DS18B20驱动、以及其他功能子函数等。

22

青岛大学本科生毕业论文(设计)

LCD12864DS1302 VS1003 按 键 MCU DS18B20 串口调试 STC12C5A60S2 用户接口 FAT32文件系统 底层接口驱动 存储介质:SD卡

图4.1 程序模块设计

4.2.1 FAT32文件系统

FAT32文件系统是WINDOWS操作系统中常用的一种文件系统,由于FAT32文件系统在8位单片机上实现过程较为复杂,这里就不用大篇幅讲述底层接口驱动,因此罗列几个用户接口函数如下[12]:

void FAT32_Device_Init()

//SD卡设备初始化

void FAT32_Init(void) //文件系统初始化

UINT32 FAT32_Get_Total_Size(void); //获取总容量 UINT32 FAT32_Get_Remain_Cap(void);

//获取剩余容量

UINT32 FAT32_Enter_Dir(CONST INT8 *path); //进入目录

UINT8 FAT32_Open_File(struct FileInfoStruct *pfi,CONST INT8 *filepath,UINT32 item,UINT8 is_file);

//打开文件,支持通配

UINT8 FAT32_Seek_File(struct FileInfoStruct *pfi,UINT32 offset); //文件定位

UINT32 FAT32_Read_File(struct FileInfoStruct *pfi,UINT32 offset,UINT32 len,UINT8 *pbuf);

//读取文件数据

UINT32 FAT32_Read_FileX(struct FileInfoStruct *pfi,UINT32 offset,UINT32 len,void (*pfun)(UINT8));

//读取文件数据并进行数据处理

23

青岛大学本科生毕业论文(设计)

UINT32 FAT32_Add_Dat(struct FileInfoStruct *pfi,UINT32 len,UINT8 *pbuf); //向文件追加数据

UINT8 FAT32_Create_Dir(CONST INT8 *dirpath,UINT8 *ptd); //创建目录,支持创建时间 UINT8 FAT32_Create_File(struct FileInfoStruct *pfi,CONST INT8 *filepath,UINT8 *ptd); //创建文件,支持创建时间

UINT8 FAT32_Del_File(CONST INT8 *filepath); *pArg2,CONST

INT8

*sfilename,CONST

INT8

//删除文件 *tfilename,UINT8

*file_buf,UINT32

unsigned char FAT32_XCopy_File(struct FAT32_Init_Arg *pArg1,struct FAT32_Init_Arg buf_size,unsigned char *pt); //文件拷贝,支持多设备中文件互拷

UINT8 FAT32_File_Close(struct FileInfoStruct *pfi); //文件关闭

UINT8 FAT32_Rename_File(CONST INT8 *filename,CONST INT8 *newfilename); 重命名

//文件

4.2.2 12864液晶驱动

//检查忙位 void chk_busy()

//写指令到LCD

void write_com1(uchar cmdcode)

//写数据到LCDvoid write_data(uchar Dispdata) //向液晶发送一个字符串,长度64字符之内 void lcm_w_word(uchar *s)

//清屏函数 void lcm_clr(void)

//初始化LCD屏 void lcm_init()

//使用绘图的方法让一个16*16的汉字符反白 //形式参数:uchar x,uchar y,uchar wide,uchar bkcor

24

青岛大学本科生毕业论文(设计)

//行参说明:坐标水平位置,坐标垂直位置,反白行数,要反白还是清除(1:反白,0:清除) void write1616GDRAM(uchar x,uchar y,uchar sign,uchar *bmp)

//函数功能:显示16X16图形

void set1616pic(uchar x,uchar y,uchar sign,uchar tt)

//函数功能:显示16X32图形

void write1632GDRAM(uchar x,uchar y,uchar *bmp)

//函数功能: 在程写GDRAM时序初始化 void init_12864_GDRAM()

//函数功能:清屏函数

void Clean_12864_GDRAM(void)[13]

4.2.3 VS1003驱动

//写入两个字节(从高位先写)到VS1003B的功能寄存器

void VS_Write_Reg(unsigned char addr,unsigned char hdat,unsigned char ldat)

//读取两个字节(从高位先读)从VS1003B的功能寄存器 unsigned int VS_Read_Reg(unsigned char addr)

//软复位及初始化VS100B(设置时钟频率及音量等) void VS_Reset()

//写入播放的数据,即写入一字节的音频数据到VS1003B void VS_Send_Dat(unsigned char dat)

//清空VS1003B的数据缓冲区,即向VS1003B写入2048个0 void VS_Flush_Buffer()

//正弦音测试,测试VS1003B芯片是否正常

25


基于单片机的音频播放器及文本浏览器设计 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:测量学读书笔记

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: