专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

基于8051单片机采用VP1410的工业语音提示器软件毕业设计(2)

作者:佚名   来源:本站原创   点击数:  更新时间:2008年09月27日   【字体:

此次毕业设计论文的下半部分,上半部分请打开http://www.51hei.com/mcu/608.html

4.2讲话子程序设计

4.2.1讲话子程序的几种模式处理

 此工业语音提示器软件设计讲13句话可以画出一个大的程序流程图,但画出来的流程图太大,因此我把这个大的流程图按画出的程序流程图的的模式可分为5种,同一种程序流程图模式中的一句话的程序流程图,变化里面的条件,即可以得到另一句话的程序流程图。

第一种模式为讲第1、2、3、6句话的程序流程图,下面以第1句话程序流程图为例,“见图4-3”。

第二种模式为讲第4、5句话时的程序流程图,下面以第4句话程序流程图为例,“见图4-4”。

第三种模式为讲第7、8句话时的程序流程图,下面以第7句话程序流程图为例,“见图4-5”。

第四种模式为讲第9、12、13句话时的程序流程图,下面以第9句话程序流程图为例,“见图4-6”。

第五种模式为讲第10、11句话时的程序流程图,下面以第10句话程序流程图为例,“见图4-7”。

图4-3 讲第1句话的流程图

4.2.2讲话判断程序设计

⑴ 讲第1句话判断

判断同一个计划炉号是否讲第1句话,已讲第1句话,就转去讲第2句话,如果同一个计划炉号是没讲第1句话,则判断是否符合讲第1句话的条件,即要满

图4-4 讲第4句话的流程图

足(1)推焦车的方向在连续3秒内都是对准(100)。(2)推焦没开始。只要任意一个

条件不符合,则转去讲第2句话,以上两个条件都符合,设置已讲第1句话标志,开始讲第1句话,,延时6ms后,关闭讲话。

图4-5 讲第7句话的流程图

图4-6 讲第9句话的流程图

所写程序如下:

JH1:   JB YJH1,JH2          ;已讲第1句话,就转去讲第2句话

图4-7 讲第10句话的流程图

MOV A,20H

ANL A,#07H

       CJNE A,#04H,JH2      ;T 车方向是否对准确100,没有就转去讲第2句话

       JB 04H,JH2           ;推焦开始不讲第1句话,转去讲第2句话

       SETB YJH1           ;设置已讲第1句话标志

       MOV P1,#41H         ;讲第1句话的控制值

CLR P1.6            ;开始讲

LCALL DELAY         ;调用延时程序

       SETB P1.6           ;关闭讲话

       MOV P1 ,#0FFH       ;关闭声音

⑵ 讲第2句话判断

判断同一个计划炉号是否讲第2句话,已讲第2句话,就转去讲第3句话,如果同一个计划炉号是没讲第2句话,则判断是否符合讲第2句话的条件,即要满足(1)拦焦车的方向在连续3秒内都是对准(100)。(2)推焦没开始。只要有任意一个条件不符合,则转去讲第3句话,以上两个条件都符合,设置已讲第2句话标志,开始讲第2句话,,延时6ms后,关闭讲话。

⑶ 讲第3句话判断

判断同一个计划炉号是否讲第3句话,已讲第3句话,就转去讲第4句话,如果同一个计划炉号是没讲第3句话,则判断是否符合讲第3句话的条件,即要满足(1)熄焦车的方向在连续3秒内都是对准(100)。(2)推焦没开始。只要有任意一个条件不符合,则转去讲第4句话,以上两个条件都符合,设置已讲每时3句话标志,开始讲第3句话,延时6ms后,关闭讲话。

⑷ 讲第4句话判断

判断同一个计划炉号是否讲第4句话,已讲第4句话,就判断装煤是否结束,不是就讲第5句话,装煤结束,则清已讲第4句话标志。

JHD4:   JNB 2BH,JH5          ;装煤没结束讲第5句话       

        CLR YJH4             ;装煤结束,清已讲第4句话标志

如果没讲第4句话,则判断同一个计划炉号是否符合讲第4句话的条件,即要满足(1)装煤车的方向在连续3秒内都是对准(100)。(2)装煤没开始。只要有任意一个条件不符合,则转去讲第5句话,以上两个条件都符合,设置已讲每时4句话标志,开始讲第4句话,延时6ms后,关闭讲话。

⑸ 讲第5句话判断

判断同一个计划炉号是否讲第5句话,已讲第5句话,再判断装煤是否结束,没结束,则讲转去讲第6句话,结束了,则清讲第5句话标志。如果同一个计划炉号是没讲第5句话,则判断是否符合讲第5句话的条件,即要满足(1)除尘车的方向在连续3秒内都是对准(100)。(2)装煤没开始。只要有任意一个条件不符合,则转去讲第5句话,以上两个条件都符合,设置已讲每时5句话标志,开始讲第5句话,延时6ms后,关闭讲话。

⑹ 讲第6句话判断

判断同一个计划炉号是否讲第6句话,已讲第6句话,就转去讲第7句话,调用延时程序,看计划推焦时间与标准时间是否相差5分钟,不是则讲第7句话,是的话就判断是否为推焦开始,是就讲第第7句话,不是就设置已讲每时6句话标志,开始讲第6句话,延时6ms后,关闭讲话。

⑺ 讲第7句话判断

判断同一个计划炉号是否讲第7句话,已讲第7句话,就转去讲第8句话,没有讲的话就判断是否为推焦开始,是就设置已讲每时7句话标志,开始讲第7句话,延时6ms后,关闭讲话。否则转去讲第8句话。

⑻ 讲第8句话判断

    判断同一个计划炉号是否讲第8句话,已讲第8句话,就转去讲第9句话,没有讲的话就判断是否为推焦结束,是就设置已讲第8句话标志,开始讲第8句话,延时6ms后,关闭讲话。否则转去讲第9句话。

⑼ 讲第9句话判断

不要讲第9句话,就转去讲第10句话,要讲第9句话,则清要讲第9句话标志, 开始讲第9句话,延时6ms后,关闭讲话。

⑽ 讲第10句话判断

判断同一个计划炉号是否讲第10句话,已讲第10句话,则判断是否装煤结束,是的话就讲第10句话,否则讲第11句话,没有讲第10句的话就判断是否为装煤开始,不是则讲11句话,是就设置已讲第10句话标志,开始讲第10句话,延时6ms后,关闭讲话。

⑾ 讲第11句话判断

    判断同一个计划炉号是否讲第11句话,已讲第11句话,则判断是否装煤开始,是的话就讲第11句话,否则讲第12句话,没有讲第11句的话就判断是否为装煤结束,不是则讲12句话,是就设置已讲第11句话标志,开始讲第11句话,延时6ms后,关闭讲话。

⑿ 讲第12句话判断

    不要讲第12句话,就转去讲第13句话,要讲第12句话,则清要讲第12句话标志, 开始讲第12句话,延时6ms后,关闭讲话。

⒀ 讲第13句话判断

不要讲第13句话,就去接收下一次报文,要讲第13句话,则清要讲第13句话标志, 开始讲第13句话,延时6ms后,关闭讲话,并去接收下一次报文。

以上这个软件设计每一次只能讲一句话,假如同时接收到二句话,那么按这个软件设计则按先后顺序只能讲最先收到的一句话,后来收到的第二句话则没有讲了,而是转去讲下一次接收到的要讲的第1句话了,因此这个软件设计还存在不足之处,我个人认为如果设置一个可以变化的标志量,用来保存每一次接收到要讲话的个数,当讲完一句话后,这个标志量就减1,依此循环下去,当标志量的值为0时,开始讲下一次接收到要讲的话,直到不接收为止。

4.3 时间比较子程序设计

图4-8 时间比较子程序流程图

该子程序是为讲第6句话:“推焦时刻快到,请各车加快准备。”而用的,因为讲话条件是:计划推焦时间提前5分钟时才讲。因此要计算:计划推焦时间一标准时间=5分钟。注意:要考虑跨天,例如:00:01—23:56=5。先把计划推焦时间(时)与标准时间(时)进行比较,看是否相等,相等的话,则计划推焦时间(分)减去5分钟后与标准时间(分)相比较,相等,则置相等标志为1(即讲第6句话标志),不相等则不讲第6句话。如果计划推焦时间(时)与标准时间(时)不相等,则看计划推焦时间(时)是否为0时(即考虑跨天),如果不为0时,则计划推焦时间(时)减去1小时,再与标准时间(时)比较,相等则计划推焦时间(分)加60分钟后再减去5分钟与标准时间(分)相比较,相等,则置相等标志为1,不相等则不讲第6句话。如果计划推焦时间(时)减去1后与标准时间(时)不相等,则不讲第6句话。如果计划推焦时间(时)是为0时,则计划推焦时间(时)加24小时,把计划推焦时间(时)减去1小时,再与标准时间(时)比较,相等则计划推焦时间(分)加60分钟后再减去5分钟与标准时间(分)相比较,相等,则置相等标志为1,不相等则不讲第6句话,计划推焦时间(时)减去1小时与标准时间(时)不相等,则不讲第6句话。

4.4 延时子程序设计

单片机的晶振频率为11.059MHz,则1个机器周期是1us,一条DJNZ指令为2个机器周期,因此执行一条DJNZ指令时间为2us。

延时程序如下:

DELAY: MOV R7,#0CH

      DL:   MOV R6,#0FFH

      DL1:  DJNZ R6,DL1

            DJNZ R7,DL

RET

执行小循环时所需要的时间为:255×2=510us

执行大循环时所需要的时间为:510us×103×12=6ms

5 语音提示器软件调试

5.1 模拟仿真调试

5.1.1 介绍MEDWIN

    MEDWIN是万利电子有限公司Insight®系列仿真开发系统的高性能集成开发环境,集编辑、编译/编汇、在线及模拟调试为一体,VC风格的用户界面,支持Franklinklin/Keil C扩展OMF格式文件,支持所有变量类型及表达式,配合Insight®系列仿真器,是开发80C51系列单片机的理想开发工具。    

5.1.2 用MEDWIN汇编

⑴ 如果你在外部编辑时,要采用写字板或记事本,汇编程序后缀要ASM。如果是用WORD编辑的,一定要粘贴到写字板或记事本上,如果只改名,则汇编出错,错误信息是一行太长。我是用记事本里编写源程序代码:点击开始→所有程序→附件→记事本,在记事本编辑程序代码,并以扩展名.ASM保存在桌面上。

⑵ 用PMEDWIN模拟仿真调试:在网上下载PmedWin,双击PmedWin压缩文件,在出现在文件中找到medWin.exe,双击medWin.exe,出现的下图“见图5-1”。

图5-1 模拟仿真

在图 5-1中点击模拟仿真,出现下图“见图5-2”。

点击文件→打开(如打开12这个文件)出现如下图“见图5-3”

点击打开,出现图5-2所示的界面,并在界面的编辑窗口内所编辑的程序代码。

用MEDWIN汇编,是为产生机器码,在程序的编写中,可能会出现语法错误和警告。点击项目管理→产生代码,将提示你程序代码的错误,当你改正一处错误后,你可以再点击项目管理→重新产生全部代码,将提示你程序代码的错误,当你把所有的错误都改正后,才能进行调试。点击调试→开始调试,将在程序开始的第一行出现一个箭头,按F8将一步一步执行程序,点击查看→数据区Idata,在数据区Idata内可以修改地址内的值。再点击查看→数据区Bit查看结果是否正确。

              

图5-2 打开MEDWIN

点击文件→打开(如打开12这个文件)出现如下图“见图5-3”

 
 
 

 


 

图5-3 打开文件

⑶在汇编中出现的问题,解决办法及最后出现结果

在这我只列出了部分程序的在汇编中出现的问题、解决办法及最后出现的结果。

点击项目管理→产生代码,提示你程序代码的错误如下:

Translating JH.ASM...

    --------- 80C51宏汇编器,版本V1.05 ---------

   版权所有(C) 万利电子有限公司 2001-2002

   汇编过程中发现: 警告(1), 错误(59)。汇编结束!

在第一次调试时,出现了59个语法错误,1个警告,例如其中部分错误为:

   ERROR #7 IN 1 (JH.ASM, LINE 1): 符号没有定义

   ERROR #20 IN 6 (JH.ASM, LINE 6): 期待位段符号

   WARNING IN 90 (JH.ASM, LINE 90): 期待“END”语句

 Translate complete and find errors!

说明: 这个错误在文件名为JH.ASM中的第1行,符号没有定义。

         这个错误在文件名为JH.ASM中的第6行,期待位段符号。

         这个警告在文件名为JH.ASM中的第90行期待“END”语句。

部分错误纠正为在程序的开始部分,加上

YJH1 BIT 70H

YJH2 BIT 71H

把16行和24行,32行ANL A,#O7H都改成ANL A #07H,因为在全角下输入的字母不能识别,所以是错误的。

把第47行CLR YHJ4改成CLR YJH4

再点击项目管理→产生代码,则没有其它的错误出现,只是有期待位段符号,是因为其它的几个程序没和这个程序连在一起。

如果文件取名为时间比较程序.ASM,虽然汇编可以通过,但不能进入开始调试,把文件名改成SHIJIAN.ASM,文件名是汉字命名的将汇编不完整。改名之后汇编完整。

把几个程序全连在一起,可以通过汇编,但点击调试,不能进入开始调试,是因为没有接收到报文,所以要在报文接收前加一条LJMP LSLS 而在报文处理后的第一行加一条:LSLS: NOP指令,再保存。

点击项目管理→产生代码,出现如下的提示:

汇编过程中发现: 警告(0), 错误(0)。汇编结束!

说明:最后汇编时有0个警告,0个错误。而且可以进入调试。

5.1.2 用MEDWIN模拟调试

点击调试→开始调试,将出现一个箭头,点击查看→数据区Idata,“见图5-4”。

图5-4 数据图

设定你所要地址单元的内容,如按F8单步执行并可观察及地址中内容的变化,例1:在地址10H、11H、12H、13H中设置内容为03、09、03、06,如图:

图5-5 输入数据时数据图

按F8单步执行,地址内的内容变化为如图:

图5-6 按单步执行后的数据图

再点击查看→数据区Bit查看结果是否正确,“见图5-7”。

结果正确,因为计划推焦时间为03时09分,而标准时间为03时06分,计划焦时间减去标准时间不等于05分钟,所以时间等于标志(7f单元内容)为0。

图5-7 按单步执行后的数据区Bit图

5.2 实际设备调试

5.2.1 写片

先把芯片插入RP3000中,按前面提到的模拟调试步骤执行到出现图5-1中点击仿真器,在项目管理器→产生代码并装入→擦除→读并装入→完成。

5.2.2 实际调试

把芯片装入机子上,开始检查是否能达到你所需要的效果。出现下见图:

 
 
 

 


 

图5-8 设备调试发送数据图

在上图中设置你所要的报文,则根据你设定的报文开始讲话。如你设定了一个计划炉号,并把推焦方向对准100,推焦开始设为0,则开始讲“推焦车已到计划炉号,准备工作完毕”。当你变了计划炉号又开始讲这句话,如果你的计划炉号没变化将不讲这句话。计划推焦时间与标准时间相差5分钟,则讲“推焦时刻到,请各车加快准备”。推焦结束设为1,则讲“推焦顺利完成,请按计划到新炉号推焦”。经过很多次测验,所写的程序能达到所需要的要求。

6 结束语

通过这几个月对单项片机的学习,熟悉了单片机程序的调试步骤,使我对单片机有了更深一步的了解,同时也增强了我独立处理问题的能力,使我对单片机产生了浓厚兴趣,同时培养了我对问题全面考虑,对我以后的工作、生活、学习有很大的帮助。

参考文献

[1] 张毅刚,彭喜元等.新编MCS-51单片机应用设计[M].哈尔滨:工业大学出版社,2003.

[2] ATMEL 8-Bit Microcontroller with 4K Bytes Flash AT89C51 In-circuit Programming. WWW.ATMEL.COM下载

[3] ATMEL 8-Bit Microcontroller with 4K Bytes Flash AT89C51. WWW.51HEI.COM下载

[4] VP-1410A Digital Voices Processor.WWW.MAXIM-IC.COM下载

[5] 刘雨时.语音处理芯片VP1410的工作原理及应用[M].电子技术,2000.9

[6] Low-Cost,uP Supervisory Circuits.WWW.MAXIM-IC.COM下载

[7] 童本敏.标准TTL集成电路数据手册[M]. 北京:电子工业出版社,1989-05.

[8]童本敏.标准CMOS集成电路数据手册[M]. 北京:电子工业出版社,1992-10.

[9] 李华主编.MCS-51系列单片机实用接口技术[M].北京:航空航天大学出版社,1999.

[10] 李朝青主编著.单片机原理及接口技术[M].北京: 航空航天大学出版社,1999.

[11] 童诗白主编.模拟电子技术基础[M].高等教育出版社,1998.

[12]京辉热点工作室编著.Prote199电路设计实有指南[M].电子工业出版社,2003.

    谢

      本论文是在陈进老师和千盟公司工作人员的的悉心指导和热情关怀下完成的。陈老师的严谨细致、一丝不苟的作风一直是我工作、学习中的榜样,他循循善诱的教导和不拘一格的思路给予我无尽的启迪这将使我终身受益。千盟公司工作人员的友善,让我学会了怎样与人沟通,同时,我还要感谢答辩老师,他将给我人生中一个新的起点。

     在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!

关闭窗口