设计(论文)专用纸 PCON|=0X80; TH0=0XFE; TL0=0X7F; }
void WaitTF0(void) //标志位判断 {while(!TF0);
TF0=0; //重装数值 TH0=0XFE; TL0=0X7F; }
void WByte(uchar input) //发送数据函数 { uchar j=8; TR0=1;
newTXD=(bit)0; //发送起始位 WaitTF0(); while(j--)
{newTXD=(bit)(input&0x01); //先传低位 WaitTF0(); input=input>>1; }
newTXD=(bit)1; //发送结束位 WaitTF0();
25
设计(论文)专用纸 TR0=0; }
void Sendata() //发送数据
{for(i=0;i void main() {UartInit(); //调用初始函数 while(1) //循环 if(key1==0) //按键检测 { while(key1==0); Sendata(); //按键按下发送数据 } } 四、调试过程 调试过程是通过分块调试,分为单片机LCD、双机LCD、单片机SX6228A和整体调试四个步骤。 1、单片机LCD调试 26 设计(论文)专用纸 调试中出现LCD没有显示,只是显示的背光灯亮着,经测试单片机不工作,通过检查发现单片机的最小系统出错,错把P0.7作为EA脚焊接,经改正,LCD正常显示。 加载程序后发现显示会出现乱码,后查出由于显示调用问题,在主程序中启用按键检测前的调用程序,问题得到解决。 // display(count,z1); if(key1==0) {Delayms(1); while(key1==0); count++; z1++; if(count>9) { count=1;} display(count,z1); SBUF=1; while(TI==0); TI=0; } 2、双机LCD调试 其调试主要内容为按键的加减显示是否合理,调试发现1号单片机按键按下排队人数加了两次,通过老师指导修改,优化程序,使按键按下时自加1,并通过C2传递给显示函数。2号单片机按键可以出现一直加数,没能实现用一号机的排队人数控制2号机的加数上限,出现了调试误区。 改为启用display(count,z1); 27 设计(论文)专用纸 取号为4,而叫号为5。 3、SX6228A调试 3.1、串口SX6228A调试 通过串口调试SX6228A,可以得出SX6228A可以直接驱动0.5W8欧的喇叭,且顺利演示了语音合成。调试如图: 3.2、单片机SX6228A调试 单片机载入程序,接好电路后发现SX6228A模块的BUSY一直闪烁,出现忙状态,经查阅发现,程序一直处于发送状态,使得合成过忙,BUSY一直闪烁,通过程序修改该错误消除。 结论 时间过得很快通过10多周的毕业设计也接近尾声,在老师精心的督促和指导下,基本完成了设计中的基本功能,虽然没能够像各大服务业中的排队叫号系统哪样完善,可是我的设计也有一定的设计意义和参考价值,由于其成本小、便于携带、简单操作。实物电路图如下: 28 设计(论文)专用纸 实现的基本功能为:按键取号,并通过一号显示屏显示所取到的号和前面所排队的人数;按键叫号,通过二号显示屏显示所教到的号和到几号窗口、语音播报显示的内容。虽然能够实现,但是还不够完善,比如多个窗口服务、暂停服务、贵宾服务等多元化服务功能没有。 由于时间仓促,加上个人水平有限,论文里面难免有不足之处,望老师和读者批评指出,不甚感激! 总结与体会 本次的毕业设计是自进入校园到现在这四年来的第一次真正意义的亲自动手实践,理论知识远不能满足新世纪大学生的要求,这次的设计给我们提供了一次很好的理论联系实际的机会,使得我对单片机的功能以及应用有了更深刻的了解和认识。对于电路的理解分析能力也有了很大提高,为走上工作岗位打下了良好的基础。 本次毕业设计是我做过的相对难度较大的一次设计。硬件电路简单是这次设计的最大特点,不过程序设计是本次设计的一个难点,由于对指令的运用不够熟练使得在编程时屡屡碰壁。特别对于一些中断程序,因涉及到一些标志位而使得编程难度更高,虽然通过查资料以及老师同学的指导解决了这些问题,但编程方面的欠缺还是很大的,在以后我应加强这方面的练习以提高自己。 这次设计的另一收获就是锻炼了我的意志,因为我在设计的过程中屡屡碰壁,但却坚持了下来,这本身就是对自己的一次挑战。希望这种精神能伴随我到工作环境中。 29