字每篇本科生毕业设计(论文)日志

上传人:每**** 文档编号:46392874 上传时间:2021-12-13 格式:DOC 页数:21 大小:46.50KB
返回 下载 相关 举报
字每篇本科生毕业设计(论文)日志_第1页
第1页 / 共21页
字每篇本科生毕业设计(论文)日志_第2页
第2页 / 共21页
字每篇本科生毕业设计(论文)日志_第3页
第3页 / 共21页
点击查看更多>>
资源描述
2011年 2 月 28 日 第 1 周 星期 一 今天是做毕业设计的第一天,我做的题目是“基于单片机的公交站点显示系统的设计”。乍一看,题目很简单,因为“公交站点”和“显示”都是我们熟悉的字眼,可是真要动手去做,我还真是一头雾水首先,做毕业设计不光要把原理弄懂、吃透,还要理论结合实际,做出具有相应功能的实物来。其次,要把理论知识按毕业设计的格式和各种要求整理成Word文档。千头万绪,枝枝节节的很多东西要做。幸好,在毕业实习阶段我搜集了很多相关的资料,这为我下一步的行动奠定了良好的基础。我决定分步去实现我的计划。我以一篇类似的资料作为底稿,经过大体修改和增减确定了大体框架,明确了下一步我要做的事情,同时在这个过程中,我对毕业设计的一些格式要求和模块有了初步的了解。这使我想起了我国在大连改造的“瓦良格”号航母,此时此刻,我觉得自己也在改造一艘“航母”,并且要在这个基础上发明创造,开拓视野,立足新意,设计出一些新的东西来,融入新的思维和技巧。之后,我就大刀阔斧地开始了我的毕业设计历程。做毕业设计的前期,我专门学习了如何使用Word系统撰写和排版毕业论文。因为论文的质量包含着两个方面的内容,一方面是论文的构思、结构、内容及观点;另一方面就是论文的排版质量。其实论文的撰写和编辑是个比较麻烦的过程,因为在撰写过程中,我们需要不断地修改,还可能有论文排版格式的修改。往往由于某一部分的变动,使其他部分进行相应的变动,因而常因调整格式而烦恼。但是如果对Microsoft Word 编辑系统有充分的了解,就会得心应手地进行编辑,撰写和排版出有较高质量的论文。基于上面的想法,我系统地学习了用Word 设置论文版面、使用样式功能、尾注的标识、分节、设定页码和页眉以及自动生成目录等功能的操作方法并且尝试着去编辑使用这些功能。功夫不负有心人,我终于成功地设定了三级标题和分节符等以前总让我头疼的环节。感觉这样让自己少了很多编辑过程中的烦恼,同时把学校要求的各种格式都涵盖进去了。现在,可以开始编辑论文了。毕业论文表面看起来烦琐,其实还是一目了然的。大体上分为标题、中文摘要、英文摘要、目录、正文、致谢和参考文献以及附录等部分,标题又分为论文总标题、各部分的标题以及正文的三级结构标题,各个部分标题都有不同的格式与字体要求。在正文中,三级标题下面需要分开的,我采用了(1)、(2)、(3)和请预览后下载!、两种格式。编辑的方法已经准备就绪了,下一步要进行的就是论文的内容了。这并不能急着动手编辑,因为编辑倒是个简单的问题,关键是要学习并掌握各种知识和原理,并在这个基础上设计出具有实际功能的实物来。而编辑,只是对这个过程进行具体记录、表达与总结,可见,下一步并不是动手写,而是疏通整个论文的各个知识要点,掌握其大概原理。真是“汝果欲学诗,功夫在诗外”啊。但是,在学习具体的内容之前,我确定了各个章的大体分配。第一章是绪论,第二章是软件开发、编程语言与主要元器件介绍,第三章是系统硬件设计,第四章是系统软件设计,第五章是程序编译、烧录与系统调试,最后一章是结束语。在我看来,难点在第四章。因为程序设计难度相对比较大,也是我的薄弱点。但是我相信,在我的努力之下,一定能够战胜困难的,我们拭目以待。请预览后下载!2011年 3 月 7 日 第 2 周 星期 一 现在,伴随着我的思绪,让我们进入这个论文题目的内部,去具体学习它的一些内容。其中有很多困难,也会有很多快乐。首先,我们来分解这个题目。基于单片机、公交站点、显示系统,也就是说,大体上应该分为三个部分,当然事实也是如此。要显示公交站点,必须要有控制它执行的按键,相比之下,我选择了STC89C52作为主控制芯片,用矩阵键盘作为输入控制端,用HJ12864M-1作为显示模块。现在,可以具体从这三个部分发展开去,进入论文的各个细节角落。整个系统就是由矩阵键盘、STC89C52单片机和HJ12864M-1显示器三个部分构成。功能要求很简单,就是每按一个键,在显示屏上要显示相应的公交站点的名称或其他提示内容。目标已经明确了,下一步就要具体掌握各个部分的内容,比如说矩阵键盘是如何实现的;为什么16个按键却只分配了8个I/O口;矩阵键盘的各个端口是连在单片机的哪些I/O口上;STC89C52单片机的各个管脚是怎样分布的;单片机怎样和矩阵键盘、HJ12864M-1显示器相连,它的接口原理图是怎样的;STC89C52单片机有什么功能特性;HJ12864M-1显示器里面的驱动器是什么;驱动器的功能与特性以及怎样按自己的想法设计驱动器的功能;系统框图以及整个系统的程序怎么写等等,很多问题需要一个一个解决,这样,才能一步一步把设计做出来,完成任务。想到这里,我明白了自己要做的事情还有许多,决不是从题目看起来那么简单的。说到这里,有必要明确一下,我使用的编程语言是单片机C语言,同时这也是学校要求的;整个程序的编译是在Keil的环境下完成的,同时也用到了Protel 99SE作为画电路图的工具。所以,我又复习了画电路图以及Keil的相关知识,这对完成整个毕业设计来说,是必须的基本步骤。但是,怎样画流程图和时序图成了我一时的难题,许久没有解决。在很多难题面前,我开始通过各种途径继续搜集相关的资料,特别是通过中国知网()、 google以及百度来解决各种问题,但是仍然有很多问题没有解决,比如HJ12864M-1带中文字库的液晶显示模块方面的资料比较缺乏。对于按键控制部分,我最初的设想是用家庭常用的电视遥控,在单片机用个红外接受的模块,接受按键信息并解码。但后来考虑用红外遥控对设备安装不方便,而且红外对人体也有辐射,于是选择用矩阵键盘进行控制。在液晶屏的选择问题上,我也尝试过很多想法。因为液晶屏有很多种,最常用的就有1602字符型液晶显示模块和我最终选用的12864带字库图形液晶模块。1602型只能显示2行共16个汉字,而且用它来显示汉字效果并不理想,不符合公交车上公众对视觉的要求;而12864型可以显示4行共32个汉字,也可完成图形显示。低电压功耗是其显著的特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,硬件电路显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。请预览后下载!对于单片机的型号,也是很多的,最常用的当然是AT89C51或AT89C52,同时也是我熟知的,但是我买来的单片机的型号却是STC89C52,这又让我疑惑了一阵子。于是我又开始学习关于单片机型号的知识,最后确定了STC89C52与AT89C52是完全兼容的,才长舒了一口气,心中暗暗庆幸。经过这些小波折,我认识到了我的单片机知识还是比较匮乏的,需要继续努力;也认识到了要完成此次毕业设计,任重而道远。请预览后下载!2011年 3 月 14 日 第 3 周 星期 一 随着理论学习与实践的深入,我不断地遇到很多新的问题,都是我没有预料到的,比如在程序编译的时候,总是出现一种错误,诸如“missing ; before U8”,但是在前面加个“;”还是不对,或许根本就不是“在U8前缺少一个分号”的意思。这个问题让我无从着手,在网络上搜索也没得到答案。一时间,就卡在那儿了。还有一个严重的问题,就是感觉在编写程序的时候力不从心,这让我深深地体会到自己的编程能力十分有限,有时后甚至读不懂或不是很懂某段程序,更别说自己去设计编写新的程序了。临时抱佛脚,我只好对照着许多C语言的资料艰难地进行阅读和理解,但是遗憾的是,收获并不多,有时候自己都不敢肯定程序的正确性,稍微有一些灵活变化的程序,我就要花很多时间去消化。于是我开始系统地学习各种C语言的语法规则,结合实际的程序实例进行分析,并且化整为零,分别琢磨每一段程序的作用与功能以及它的具体含义,并且结合硬件系统的I/O口,各种功能管脚具体分析考虑,步步为营,力求突破重重难关,把程序写好。这其中最难理解的就是HJ12864M-1模块内嵌的STN7920驱动器,它涉及到很多指令。比如说复位指令、设置CGRAM指令、设置DDRAM地址指令、读“忙”标志、写显示数据到内部RAM指令和读显示数据指令以及许多扩展指令系统,纷繁复杂,一时不可尽数。对我而言,理解起来比较费力,但是又必须去面对。在知识疏通的过程中,我的设计一度走进了弯道里,转了一圈才发现自己做的工作其实是多余的。比如一开始我在考虑把要显示的汉字的字模提取出来,建立一个小字库,然后进行显示。这本来没有错,但是我没有想到我买的HJ12864M-1液晶显示屏是带中文字库的,既然带中文字库了,就说明常用的汉字里面都有了,那么就不用建立小字库了。之所以犯了一个这样的错误,是因为自己对“带中文字库”和“小字库”这些词理解地不够深,只是从字面意思上去理解,并没有思考它的作用,以为带了中文字库还必须要建立小字库的。不过,俗话说“吃一堑,长一智”,或许可以拿来安慰以下自己吧接下来是显示的问题,我虽然详细了解了STN7920的主要特点和功能,管脚功能以及读写时序,也系统地学习了STN7920的指令系统和扩展指令系统,但是怎么把“一串汉字”显示出来,我心里还是没主意。因为很少接触“液晶显示”的内容,而且也缺乏这方面的资料,没有具体的例子可供参考,所以这成了我的头号难题。我只好反反复复地去理解,去琢磨,同时也在网上寻找各种类似的资料,希望能解决我的疑惑。请预览后下载!怎样显示汉字串的问题疑惑了我很久。而实际上,这恰好也许是一个最简单的问题。因为汉字在计算机内部是以“内码”形式存储的,就相英文字母在计算机内部是以“ASCII”码形式存储的一样,一个汉字的“内码”占两个字节。汉字串在计算机内部就是“内码”串,STN7920提供的字库就是以“内码”形式存储的国标字库。所以可以用汉字串来直接显示汉字。这就够简单了。如果用信息交换用汉字编码字符集(基本集)GB2312-80,想要在STN7920上显示汉字,由于该字符集是按区位码排列的,因此要把区位码变成“内码”才能在程序中使用。显示汉字的问题似乎得到了解决,但是具体怎么编程,还有很多问题等着要解决啊。让我们继续努力请预览后下载!2011年 3 月 21 日 第 4 周 星期 一 毕业设计进入第四周,虽然大部分的工作已经做出了个大概的框架,但是要在这个基础上进行细化与具体化还有很多工作等着我去完成。汉字的显示原理就花了我很大的功夫去理解和琢磨。我原来的想法是用1602显示器的,再建立一个小字库,但是在这种显示器上只能显示两行共16个汉字,不能完全满足需要,于是我选择了12864型的图形液晶显示屏,这种显示屏可以显示四行共32个汉字,可以满足公交车提示用语等需要。可喜的是,带中文字库的显示屏显示汉字的时候不需要再建立小字库,省去了很多麻烦。现在我把汉字显示的原理作一个详细的介绍。无论是Turbo C支持的各种显示器,还是单片机系统常用的LCD,它们的分辨率都是以像素为单位的,一个像素就是LCD屏上的一个可以显示的最小单位,也就是常说的点。因此,要在LCD屏上显示一个汉字或图形就必须将汉字或图形用点来表示,这些表示某种图形的点的集合就是所说的点阵。如嵌入式控制系统中最常用的汉字是16*16点阵,它是由每行列各16个点,共256个点组成的点阵图案。每行的16个点在内存中占两个字节,一个16*16点阵汉字共16行,在内存中占32个字节。根据这些字节在内存中存放的顺序,第一行的第一个字节称“0”号字节,第二个字节称“1”号字节;第二行的第一个字节称“2”号字节,第二个字节称“3”号字节。依此类推,最后一行的第一个字节称“30”号字节,第二个字节称“31”号字节,每个字节高位在前,低位在后,即D7在一个字节的最左侧,D0在最右侧。不同的汉字各字节数据不同,在点阵中,每一个小方格代表字节中的一位(也叫一个bit),黑色的点bit值等于1,白色的点bit值等于0。这样,在计算机内部,每两个“字节”可组成一个16位的“字”,32个“字节”是以16个“字”的形式储存的。如要在LCD屏的X行Y列位置显示一个字,则可以从点(X,Y)开始将0号字节和1号字节的内容输出到LCD屏上;然后行加1,列再回到Y,输出2号字节和3号字节,依此类推,16个循环即可完成一个汉字的显示。输出一个字节数据时,该字节中“位”( bit)为1时,在该“位”位置绘点,为0时该“位”位置打空白。当然,不同类型点阵的字节排列方式是不同的,在本次设计中的汉字点阵都是16*16型的,另外有24*24型和12*16型等不同的几种类型。请预览后下载!每个汉字在字库中都是以点阵字模形式存储的,如一般采用的16*16点阵形式。每个点用一个二进制bit位表示,bit=1的点,当显示时,就可以在LCD屏显示一个亮点;bit=0的点,则在LCD屏不显示,这样把某个字的16*16点阵信息直接用来在显示器上按上述原则显示,则将出现对应的汉字。请预览后下载!2011年 3 月 28 日 第 5 周 星期 一 毕业设计已经进行到关键的时候了,开始进入查漏补缺和难点攻关的阶段,战胜了这些困难,我将赢来毕业设计的最后胜利。但是目前,还是有很多的问题摆在面前,一时难以解决。比如程序的编译。这是一个让我感觉很棘手的问题,因为在程序的编译过程中难免会出现各种各样的错误,而由于缺少这方面的经验和知识,要找到这些错误出现的原因还是有很大的难度的。而且改正一个错误以后,有可能出现更多的错误,如果没有形成一种正确的思维和拥有足够的C语言方面的知识基础,这将是很难过的一大难关。我在编译我写的程序的时候就出现了很多错误。刚开始的时候,我在头文件中同时写了at89c52.h和reg52.h,结果出现了几十个错误,经搜索才知道是因为头文件重复被包含导致的。后来我选择了reg52.h,一编译,错误少了很多,但是仍然有一些最基本的诸如P0、P1等I/O口没有被定义的错误,这让我纳闷了很久。我原以为at89c52.h或reg52.h等头文件是可以通用的,但是事实让我意识到我犯了个常识性的错误。正是因为对头文件的知识知道得比较少,才到处碰壁。在改用at89c52.h头文件以后,I/O口没有被定义的错误就完全解决了。但是仍然有其他的错误,比如有一个missing “;”before “COM”的错误让我无从下手,从字面意思理解,似乎是在COM前面少了个“;”,但是加上一个“;”以后又出现更多的错误,而且去百度搜索相关的问题,都没有得到相关的答案,很多人为这种错误而头疼。最后我发现还有一个警告,说是def.h头文件不能被打开,我想可能就是因为这个头文件出了问题吧。答案是肯定的。果然,在我把def.h定义的内容特别列出在程序中后不用def.h这个头文件,绕开了头文件不能被打开的问题,结果一箭双雕,把两个问题都解决了。欣喜之余,只是感觉有点纳闷,为什么头文件会打不开呢?还有就是在把汉字输入到程序中的时候遇到一个莫名其妙的问题,就是在程序编辑状态下一输入汉字就显示空格,不能把汉字显示出来,让我的心一下子凉了半截。如果不能输入汉字,那我的程序可就要报废了,得重头来过。一开始我想是不是因为Keil这个软件没有带中文字库呢,但是很快我就否定了这个想法。因为在输入注释文字的时候是可以输入中文汉字的。幸好后来解决以后,发现问题并不大。是因为在程序编辑状态下输入汉字的时候需要先把两个引号都写出来,然后把光标移到两个引号的中间,这样就能输入汉字了。问题不大,但是如果不知道这样做,你必定束手无策,无可奈何。不禁感叹,自己的C语言学得马马虎虎了。请预览后下载!现在的问题是一个关于显示函数的格式上的错误,因为缺少相关显示函数的实例,我一时间在这个问题上卡了壳。喊有就是一编译就说是显示函数被重新定义,我到处找错误,却一点突破都没有,我想这或许仍然是一个小问题,但是在没有解决之前,它仍然是一个大问题哦。请预览后下载!2011年 4 月 4 日 第 6 周 星期 一 在程序编译这个问题上,还有很多的事情要做。虽说逐步解决问题是有效的方法,但是也不要就此认为,只要遵循这个步骤,每次都可以保证一下子就能得到正确的解决方案。验证是非常重要的,意味着解决问题的过程是不可小视的,也许第一次、第二次乃至第二十次的解决方法都是错误的,但是这至少说明这二十种解决办法是不可行的。我想,或许优秀的编程者和失败的编程者之间的差别就在于优秀者不会被最初的失败击倒,他们会找出缺点,并逐步休整方案,最后把问题解决,而失败者在遇到问题后就放弃了。这让我想到了世界上最有创造力的发明家爱迪生积极对待数以千计的失败实验的故事,也就是说明了一个事实:失败是某方面无效、行不通的证明和有用的数据。现在把我在程序编译中遇到的其他几个问题总结如下: warning C206: displaystr: missing function-prototype说明displaystr()函数未作宣告或未作外部宣告所以无法给其他函数调用。解决方法将叙述uint displaystr (uchar k1)写在程序的最前端作宣告,如果是其他文件的函数则要写成extern uint displaystr (uchar k1),即作外部宣告。 error C141: syntax error near else说明语句else附近有错误,可以双击提示,便可知晓到底是源程序哪个else有误。当去掉了该else后面的;后,再度编译错误就没了。 SHEJI.C(40): error C244: i: cant initialize, bad type or class说明在变量i前面的某个函数申明之后没有分号。将对应的函数申明后加上分号就好了。在程序的编译时,有2个编译符号需要分清楚。如果一个项目包含多个源程序文件,而仅对某一个文件进行了修改,而不用对所有文件进行编译,仅对修改过的文件进行编译,然后和已被编译过的文件连接处理,可选择Project/Build Target或者对所有源程序全部进行编译连接,选择Project/Build all Target Files。一般来说,可以使用F7或单击快捷按钮(Project/Build Target对应的按钮)仅对修改过的文件进行编译连接的选择就可以满足了。请预览后下载!编译是通过单击快捷按钮来进行的,如果源文件没有语法错误,将生成OBJ文件,同时如果设置正确,OH51.EXE文件会被调用来生成.HEX代码。但是源文件没有语法错误并不能保证就是正确可行的,能不能实现需要的功能还需要进行调试。调试也是一项复杂的工作。利用编程器将可执行的文件写入程序存贮区ROM,然后插入到目标硬件系统就可以执行该文件。编程器的种类是很多的,但是使用的方法大多是相同的。请预览后下载!2011年 4 月 11 日 第 7 周 星期 一 我的毕业设计已经即将进入尾声,现在大部分的设计工作已经基本完成,目前主要面临的问题就是程序编译与硬件调试了,在实现了公交站点显示的功能之后,设计任务就完成了。但是由于缺乏HJ12864M-1带中文字库的液晶显示模块方面的资料,如何把汉字串显示出来仍然是目前工作的重点,虽然从网上和图书馆收集的相关资料有一大堆,但是还是要经过认真的学习进行消化以后才能自己进行设计的,怎样修改程序,每一步都是需要十分谨慎的。特别是显示函数的参数和显示汉字子程序的设计以及汉字串数组的定义怎样处理我还没有吃透,所以导致了设计进度一度拖后。另外就是STN7920的基本指令系统与扩展指令系统也是一个难点。需要理解的知识比较多,涉及STN7920的全部功能设置和状态处理,以及过程动态处理。STN7920的指令系统的主要指令总结如下。 清除显示指令功能是将DDRAM清0(填满“20H”),DDRAM地址计数器ACC清0,DB0=1是该命令的标志。 复位指令功能是设定DDRAM地址计数器的ACC为0,光标回到原点,DB1=1是该命令的标志。 功能设定指令功能是设定在读写数据时光标移动的方向和显示内容的移位情况。I/的,光标右移,DDRAM地址计数器ACC加1。I/D=0,光标左移,DDRAM地址计数器ACC减1。S=1,LCD屏显示内容移位,移位方向与光标移动方向相反;S=0,LCD屏显示内容不移动。 显示状态设定功能是D=1时,整体显示开;D=0时,整体显示关。C=1时,光标显示;C=0时,光标不显示。B=1,光标反白显示开;B=0时,光标反白显示关。请预览后下载! 光标和显示移位控制S/C=0,R/L=0,光标向左移动,AC=AC-1;S/C=0,R/L=1,光标向右移动,AC=AC+1;S/C=1,R/L=0,显示向左移动,AC=AC;S/C=1,R/L=1,显示向右移动,AC=AC。 扩展功能设定DL=1,8位并行模式;DL=0,4位并行模式。RE=1,扩展指令系统;RE=0,基本指令系统。G=1,绘图显示ON;G=0,绘图显示OFF。请预览后下载!2011年 4 月 18 日 第 8 周 星期 一 我的毕业设计即将完成,回想这段时间,从拿到题目开始到设计完成,经历了很多困难和磨练,但总的来说,设计还是成功的,而且,在整个设计的努力过程中,我感觉自己在实践与动手能力方面得到了很大的提高,学会了怎样运用自己所学的知识去设计一个产品出来的整个过程。同时,也发现了很多的不足,给将来的工作与继续学习生涯敲响了警钟。现在,我就自己所做的这个设计作一个简单而又综合的介绍,让别人了解我做的这个产品到底是一个什么样的东西。首先,我毕业设计的题目是“基于单片机的公交站点显示系统的设计”,我只做了显示系统和单片机以及矩阵键盘组合的系统,考虑到时间有限、能力不足,并没有加入“语言系统”。也就是说,这个设计与现实生活中的“显示系统”结合“语音报站系统”实现日常公交报站的综合系统比较的话,这里只是其中的一个模块。其次,我选择的控制芯片是STC89C52单片机,这种型号的单片机与AT89C52是兼容的,而且功能更加强大。一般而言,可以简单地认为两种型号没有什么区别,方便我们理解。显示系统选用的是HJ12864M-1点阵图形液晶显示模块,里面的驱动器是STN7920。这种类型的显示屏可以显示字符、汉字以及图片,可以充分地满足公交车上的日常需要。再者,由于单片机的I/O资源是有限的,所以我选用了矩阵键盘来实现用8个I/O口控制16个键,这样可以很好地节省I/O资源,便于大型系统的I/O分配。由于该型号显示屏是带中文字库的,所以在程序中并没有建立小字库,而是直接从大字库中寻找汉字的字模实现汉字的显示。寻找具体汉字的位置用的是内码,而由于计算机内部汉字是以内码形式储存的,所以,在程序中汉字是以汉字串的形式存在的。它主要实现的功能是进行公交站点的显示,通过按键进行人工操作,可以存放较多的站点名和广告词,可以根据不同的需要修改具体内容以便更新公交路线更改或桥梁维修等因素造成的公交站名变化的内容。是一款简单易行且控制方便的实用型显示系统。显示的站点名选择了广州黄埔文冲站到广州火车站途中的实际公交站点名,感觉上更加贴近现实,具有仿真意味。请预览后下载!程序全部用C语言进行编写,用计算机作为辅助开发工具,用Keil软件进行编译,设计中的电路图用Protel 99SE完成。整个设计参考了通过不同途径得来的各种资料,有许多借鉴之处,同时在这个基础上进行了创新性研发,是一款结合了自己的努力的新成果。 (注:可编辑下载,若有不当之处,请指正,谢谢!) 请预览后下载!
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!