delay1(1); /*
PORTC|=0x04;//0000,0100 e=1 PC2=1 delay1(10);
PORTC&=0xfb;//1111,1011 e=0 PC2=0 delay1(2);
PORTC|=0x02;//0000,0010 rw=1 PC1=0 PORTC&=0xfe;//1111,1110 rs=0 PC0=0 */ }
如果上述函数正确执行,则使用万用表测得的结果应为:PC0=0、PC1=0、PC2=0、PC3=0、PC4=0、PC5=0、PB0=0、PB1=1、PB2=1、PB3=0、PB4=0。然而,发现测得的结果与预期结果不同,所以发现了问题。经仔细检查程序,发现将write函数中的‘&’写成了‘&&’,导致程序编译时正确,但将程序写入芯片时,LCD却不能显示汉字。经过改正后,重新向ATMEGA8中下载程序,结果LCD显示出汉字,程序调试成功。
26
6实物与实测效果展示
6.1实物展示
图6.1(a) 硬件实物图
图6.1(b) AVR开发板实物图
27
6.2实测效果展示
图6.2 显示汉字
28
结论
本设计主要是设计一个微处理器控制的点阵式液晶显示器的控制电路。所以,经过认真分析和结合以前所学知识,我采用ATMEGA8作为MPU来控制KXM12864模块显示汉字。在本次设计中,经过多次调试与检错,最终实现了显示汉字的功能。
本设计要实现的功能并不复杂。简而言之,就是使用一个单片机来控制LCD液晶模块显示汉字。然而,我认为本设计较为复杂之处就是硬件电路的焊接。其中最重要的就是ATMEGA8芯片的焊接,由于该芯片是贴片式的,以前接触较少,所以焊接时发生了短路及虚焊等错误。其次就是LCD模块的20个引脚的焊接,由于这些引脚相邻间隔小,导致焊接出现短路情况。然而,经过改正,焊接正常。之后,就是AVR开发板的其它电路元件的焊接,由于之前做过焊接的实验,所以,这部分焊接较熟练。最后,就是软件设计,该部分采用C语言设计,由于实现功能较为简单,因此,设计时也较易完成。
客观地说,本设计较为容易,虽然实现了最基本的显示汉字的功能,但并没有更多的展示出单片机对LCD模块控制的效果。这样,本设计给人的感觉较为单一,不能丰富多彩的展示单片机对LCD模块控制的优势。所以,为了更多地展示出单片机的强大功能,可以给单片机增加输入设备如按键等,增加文字和字符的显示效果,如滚动、闪烁等。这样可以根据按键按下的键来显示相应的效果。同时,还需要编写相应的程序来实现这些效果。
29
感言
当我的硬件焊接完成,同时软件调试成功,当将程序下载到单片机上,LCD模块显示出汉字时,我觉得很有成就感。因为,终于凭借着自己的努力,我完成了本次毕业设计的实物制作部分。虽然,这个过程中出现了这样或那样的问题,但是经过认真分析和改正都顺利地解决了。
毕业设计接近尾声,我感触很多。回想当初,当刚看到毕业设计题目时,我有一些迷茫,不知从何处开始做起。但是,当询问了指导老师后,我对该题目有了初步的认识。之后,就结合以前所学知识,对该设计进行认真分析。最后确定使用ATMEGA8单片机作为微控制器来控制KXM12864模块显示汉字来诠释本课题。
当我真正开始硬件设计图的设计时,发现我对Protel99se 软件的使用已经生疏。所以,我又重新查看了有关该软件使用的资料。之后,发现本设计就是对各科知识的综合应用,其中主要使用了模拟电子技术和单片机原理方面的知识。当电路图设计出之后,就是对电路板的焊接。虽然,在以前的课程中都做过焊接的实验,但是由于动手能力不强,对于硬件焊接,仍然比较困难。但在老师的帮助下,我最终完成了硬件的焊接工作。接着就是编写程序,由于要实现的功能较为简单,所以,这一部分很快就完成了。
但是当我将程序下载到单片机时,则没有出现预期的结果。所以就开始对硬件和软件进行调试,最终发现设计的硬件和软件方面均存在问题。改正后,则出现了正确的结果。因此,我认为,其实按部就班地做设计并不困难,困难的是当没有出现预期结果时怎样找到用来发现问题、分析问题和解决问题的方法。比如,在程序编写中测试函数的编写和测试,这就是我用来发现问题的方法。经过本设计,我更加明白了发现问题、分析问题和解决问题重要性。同时,经过本设计,提高了我的动手能力和编程能力,使我对软件和硬件的结合有了更进一步的理解。还有,这次毕业设计,锻炼了我的耐心,使我明白了当设计没有达到预期结果时,应该沉着、冷静地检查、分析、调试,不能急躁。只有这样,才能最快速地发现和解决问题、完成设计。所以,综上所述,我从本次毕业设计中受益匪浅。
30