- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8人表决器
通信工程 122682013094 周培生
系统实现的功能及指标:
1. LCD1602显示统计反对,同意票数.显示最终结果。
2表决系统有两种按键,分别是反对和同意,模拟用户投票。
3.投票成功有蜂鸣器提示,每次投票每人只能投一次。
4.管理员可以复位投票器。
电路调试及问题分析
在做本次的设计中,遇到了很多的问题。无论是硬件问题还是软件在制作过程中都出现了不少问题,但最后还是把问题一一解决了,而且这个过程使我学到了不少的知识。使无论软件和硬件方面都得到很大的提高。做好硬件电路之后要测试一下硬件电路有无出现问题,首先检测一下单片机硬件电路工作是否正常,单片机正常工作三个基本的条件就是:单片机时钟有无起振,二复位电路是否正常,电源电压是否正常。为了测试单片机的硬件是否正常我通常是一个确定是正常的单片机,然后编写一些简单的程序来测试单片机是否正常工作,这个测试很重要的,若不进行这一步。而你的毕业设计一开始就不正常,你就不知道是软件问题还是硬件电路。致于其它硬件电路就根据具件器件来检测了它是否正常工作。当所有硬件都没有问题的时候,就可以正式编写软件。下面是我在整个制作的过程中遇见的主要问题。
单片机上电不能正常工作
焊好板之后,装好器件,把之前写好的简单的让I/O口输出一个低电平的程序下载到单片机,发现在目标板上的对应的I/O并没有输出低电平,我想了一下难道是我的程序的问题?我把单片机插到一个能正常使用的51学习板上。发现对应的I/O输出了低电平,这说明我的程序是没有问题的,问题出现在硬件,通电测试单片机电源是否正常,万用表显示5伏。电源正常,复位引脚电压为0伏也正常。那是什么原因呢,51单片机还有一个特有的重要引脚EA,单片机要从内部ROM开始执行程序的话,要让EA接高电平。检查了一下EA引脚电压为5伏,也正常。我关了电源再通电,发现对应的I/O输出了低电平了,程序开始执行了,我再关电源的再通电,单片机又不执行了。唉是什么原因啊。折腾好久还是没有找出来,后来在网上论谈找了一个经验丰富的工程师,向他讲诉了这个问题,他后来告诉我可能是复位电路有问题,我再检复位电路,发现在复位电容用了0.1UF,而AT89C52单片PDF文件里推荐电容值为10UF,差别很大,有可能复位高电平持续的时间不够引脚的。我换了10UF的电容,再反复通电几次发现单片都可以正常运行。这个问题终于解决了。
读键不正常
在调试读键程序时,我也遇到了一些问题,刚开始是不能进行读键,无论按哪个键都没有反映,检查了电路板,没有发现有问题,检查了程序端口的定义也没有问题,为尽快找到问题出处我只读取一个按键,拿万用表测读入脚的电压,结果一直为低电平,即无论按不按键都为低电平,这显然是不行的,我检查电路板上读入脚有无跟地短路,但并没有短路,那只有一个可通就是读键之前肯定读键口肯定是赋值为低电平,我用查找对读键引脚赋值的那条语句,结果发现在初始时给读键口赋了低电平。改好之后再通电,测试可以正常读键了。
在按下按键时显示暗亮
在这个设计中,按键与显示的引脚是复用的,刚开始写程序的时候,单片机的P1引脚是按普通输出方式(准双向口)设置的,没有按下按键时,显示一切正常,但是在按下按键时,LCD的有一段会出错,即本来不亮的,会亮起来。经过分析发现是引脚复用引起的问题,将P1口设置为强输出口方式,问题解决,不会出现按下按键有暗亮的情况。
软件编程心得
在毕业设计期间我还有遇到很多问题这里就不一一列举了。比如在矩阵式键盘扫描时我也遇到不少题,最后还是被我一一解决了,提高了我的分析能力,积累了不少经验,这无凝对我以后软件硬件的开发有重要意义。
延时程序的处理:
(1)对于可以设置系统时钟的单片机,延时程序统一先把系统时钟设频率置为最低,然后按这个最低时钟频率写延时函数,这样的好处:第一,统一了不同系统时钟下的延时;第二,降低功耗
(2)对于单片机系统,不同的外部时钟,延时程序对应的时间不同,为了方便使用,加入预编译指令#ifdef/#else/ #endif? 这样如果预定义了一个系统时钟,则选择相应的延时参数进行编译,而延时程序主体不变,只是里面有一个延时参数,根据预定义选择相应参数。
for循环的处理:
用for(i=XX,i0,i--) 而不用for(i=0;iXX,i++)? 速度快,对于两层或多层for循环,频繁的循环放在内层,减少循环间跳转花费的时间
对外设的操作:
可以把外设作为一个文件来操作,比如液晶,就可以把液晶看作一个文件,往液晶打印字符串或者数据,就可以用fprintf()来做,(51的C标准库不支持,但是可以自己写一个文件操作的库)。只要是输入输出设备,都试着用文件操作的方法去操作。 设计总结
通过这次对《基于单片机五人表决系统的设计》的设计
文档评论(0)