单片机课程设计(语言报数计数器).doc

上传人:大米 文档编号:557459044 上传时间:2022-09-29 格式:DOC 页数:20 大小:434.01KB
返回 下载 相关 举报
单片机课程设计(语言报数计数器).doc_第1页
第1页 / 共20页
单片机课程设计(语言报数计数器).doc_第2页
第2页 / 共20页
单片机课程设计(语言报数计数器).doc_第3页
第3页 / 共20页
单片机课程设计(语言报数计数器).doc_第4页
第4页 / 共20页
单片机课程设计(语言报数计数器).doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《单片机课程设计(语言报数计数器).doc》由会员分享,可在线阅读,更多相关《单片机课程设计(语言报数计数器).doc(20页珍藏版)》请在金锄头文库上搜索。

1、 单片机应用课程设计 课程设计报告系 别: 信息科学与技术系 专业班级: 通信工程0702班 学生姓名: 指导教师: (课程设计时间:20 年 月 日20 年 月 日)华中科技大学武昌分校 目录1.课程设计目的22.课程设计题目描述和要求23.课程设计报告内容23.1 课题分析23.2 选择课题33.3 根据课题发放硬件33.4 硬件制作43.5 硬件调试63.6 软件功能模块设计63.7 软件调试84.总结145.参考文献151. 课程设计目的(1) 明确学习目的,端正学习态度,提高对课程设计重要性的认识,以积极认真的态度参加课程设计工作,按要求完成规定的设计任务。(2) 培养正确的设计思想

2、,严谨的工作作风,提高对所学知识应用和分析能力、解决问题的能力,提倡独立思考、刻苦钻研和创新的精神。2. 课程设计题目描述和要求课题三:语言报数计数器制作要求:用80C51/52单片机和语音芯片ISD1420构成的编程控制的语言报数计数器小系统。3. 课程设计报告内容3.1 课题分析课题三:语言报数计数器1) 一:制作要求:用80C51/52单片机和语音芯片ISD1420构成的编程控制的语言报数计数器小系统。2) 二:硬件结构:电路见硬件电路图3) 三:软件思路:流程图及软件清单。4) 四:语音报数系统 单片机语音报数系统,是一种专用系统,软硬件资源都得到充分利用。此系统按硬件、软件系统分述如

3、下: (一)硬件系统 单片机报数系统是由三块电路组成的。它们是: 1单片机系统 语音报数系统是在单片机控制下,对产品实行自动报数的一种应用方式,因此无须键盘和显示装置。片内收RAM足以够用,也无须外接RAM芯片。所以此语音报数系统所使用的单片机系统属于单片机最小系统类型。它所使用的芯片是:CPU为89C51/52从芯片种类特征上看,单片机系统内有4-8K FLISH程序存储器,足够存放下监控程序。 电路中还包含复位电路和时钟电路。 2语音系统 语音系统采用的语音电路板,构成单片机控制下的语音系统。从硬件电路图中看到,809C51的 P10P17 8根口线与语音芯片的AOA7地址线相连,控制录放

4、的起始地址,实施分段建库等功能。P35口线控制录放。P34口线与红外接收电路的输出端相连,用于处理产品探测系统的输出信号,实施计数功能。 3产品探测系统 单片机语音报数系统电路图如附录三中收发二极管对完成检测产品脉冲信号,由反向器非门将信号送入89C51-P3.4计数口T0。 (二)软件系统25476 软件是根据硬件特点和要求进行编写的。软件系统分录音系统和放音系统。这两个系统编程依据都和语音ISD1420芯片的性能有直接的关系。 第一,该语音芯片录入时间只有20秒,在这20秒的时间里,不可能将所有的十进制数,由小到大全部录进去。解决的办法建立语音库,也就是说,只要录进“0、1、2、3、4、5

5、、6、7、8、9、拾。百、千、万、亿、零”这些语音信号,然后再将这些语音相互组合,就可以报出任意大小数字。 第二,一个语音信号录多长时间,时间太短听不清楚(音乐除外),时间太长,造成浪费,根据实验,以05秒录一个语音适中,这样20秒可录40个不同的音,这对于一个报数系统富富有余。 第三,若以05秒录一个语音信号,每一个语音地址应怎样计算,这和语音芯片本身性能有关。关于地址计算,参看语音管脚介绍部分。 第四,放音时按什么顺序才能正确放音?通过实验,必须先提供语音的地址然后再提供放音电平,再给出放音时间,放音结束后,撤掉放音电平,并置相反状态,做好下一次放音准备。本录音系统具有录、试听、满意与否的

6、控制功能,每个语音与其对应地址自动生成。3.2 选择课题 选择课题三:语言报数计数器3.3 根据课题发放硬件 1)单片机系统语音报数系统是在单片机控制下,对产品实行自动报数的一种应用方式,因此无须键盘和显示装置。片内收RAM足以够用,也无须外接RAM芯片。所以此语音报数系统所使用的单片机系统属于单片机最小系统类型。它所使用的芯片是:CPU为89C51/52从芯片种类特征上看,单片机系统内有4-8K FLISH程序存储器,足够存放下监控程序。 电路中还包含复位电路和时钟电路。2)语音系统语音系统采用的语音电路板,构成单片机控制下的语音系统。从图中看到,89C51的 P10P17 8根口线与语音芯

7、片的AOA7地址线相连,控制录放的起始地址,实施分段建库等功能。P35口线控制录放。P34口线与红外接收电路的输出端相连,用于处理产品探测系统的输出信号,实施计数功能。3)产品探测系统单片机语音报数系统电路图中收发二极管对完成检测产品脉冲信号,由反向器非门将信号送入89C51-P3.4计数口T0。3.4 硬件制作课程三硬件电路图89C51单片机,8031内核,4K可反复擦写的程序存储器,32条I/O口,5V工作ISD1420语音芯片,音质优异的模拟存储技术,可反复录放,20秒钟,可分160段,有手动录放接口,5V供电NE5532运算放大器。ISD1420是平衡输出方式,而常用音量调节、功放电路

8、都是基于非平衡方式,因此用运放作平衡非平衡转换。LM386功率放大器,0.5W驱动24C01(选配件)I2C总线串行存储器。驻极体话筒(MIC)、话筒放大器、音量电位器、发光管等部件。1) 性能参数外接电源电压:5V(稳压)外接喇叭:416欧姆,0 .5W工作电流:2530mA ( 录音),5080mA (放音)静态电流:1mA2) 开发板已有功能:A. 录音按住“REC”键不放,指示灯亮即可对着板上话筒讲话录音,松键时录音停止并形成一段。B. 放音按一下“PE”键将一段录音全部播放出来,一段结束后自动停止放音。按住“PL”键即放音,松键即停止。3) 地址ISD1420的地址线有8位,全部接到

9、了89C51的P1口,在未接单片机时全部通过短路插对地短路,即A0A7全部为低电平。如接入了单片机,P1口的短路插应全部去掉。3.5 硬件调试3.6 软件功能模块设计录音程序流程图如下图所示 放音程序流程图如下所示 对录、放程序作如下说明: 录音程序: 执行录音程序,只有按下WRI键,才能录音,时间半秒钟,录完后,试听(按下RD键),不满意,再次按下WRI键,在原地址上重新录音,在试听后,觉得满意,按一下RD键,再按WRI键,才能对下一个地址进行录音。放音程序:00C0H00D3H地址范围内单元中的内容为语音地址,语音与地址对应如下 语音地址对应表语音123456789拾百千万亿地址003H0

10、6H09H0CH0FH13H16H19H1CH1FH23H26H29H2CH3.7 软件调试程序及分析:/*=语音报数系统=*/*功能:本程序实现的功能是产品报数 系统报数范围在0-999之间 */*=*/#include #define uchar unsigned char #define uint unsigned int sbit ji_shu=P34;sbit PLAYL=P35;void Begain();void Play(uint a);void ji_shu_red();void delay(uint i);void zu_he();uint flag=00,flag1=0,

11、flag2=0,flag3=0,flag4=0;uchar Insert=0x29,0x2E,0x32, 0x37, 0x41; / 谢谢,欢迎,再见,开始计数,音乐uchar Data=0x00,0x03,0x06,0x09,0x0C,0x0F,0x12,0x15,0x18,0x1B,0x1E,0x21,0x23,0x25; / 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 拾, 百, 千, 万/*=主程序=*/main() Begain(); while(1) ji_shu_red(); zu_he(); /*=*/*-初始化-*/void Begain() P1=0X00;

12、 PLAYL=1; /音乐 P1=Insert4; delay(10000); PLAYL=0; delay(20000); PLAYL=1; delay(600); PLAYL=1; /语音播报“欢迎” P1=Insert1; delay(100); PLAYL=0; delay(1200); PLAYL=1; delay(600); P1=Insert3; /语音播报“开始计数” delay(200); PLAYL=0; delay(2400); PLAYL=1; delay(600);/*-红外计数-*/void ji_shu_red() /*下面两句为计数核心部分*/ while(ji_shu=1); /没有被遮断时,等待。 while(ji_shu=0); /被遮断时,等待遮断物拿开/*=*/ flag+; flag1=flag; flag2=flag1%10; /分离个位 flag3=flag1/10%10; /分离十位 flag4=flag1/100%10; /分离百位/*-组合播报-*/void zu_he() if(flag1000) /计数最大值不超过1000 if(flag4=0&flag3=0) /当百位十位都为0

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号