毕业设计日志8篇doc.docx
《毕业设计日志8篇doc.docx》由会员分享,可在线阅读,更多相关《毕业设计日志8篇doc.docx(28页珍藏版)》请在冰豆网上搜索。
毕业设计日志8篇doc
知识不仅是指课本的内容,还包括社会经验、文明文化、时代精神等整体要素,才有竞争力,知识是新时代的资本,五六十年代人靠勤劳可以成事;今天的香港要抢知识,要以知识取胜
广州大学松田学院
毕业论文日志薄
题目(中)基于单片机的公交站点显示系统的设计
(英)BasedonSCMtransitsitedisplaysystemdesign
姓名***
年级07级大四
班级07信工
(1)班
指导教师(签名)
二○一一年三月
广州大学松田学院
2011届本科生毕业论文日志
2011年2月28日第1周星期一
今天是做毕业设计的第一天
我做的题目是"基于单片机的公交站点显示系统的设计"
乍一看
题目很简单
因为"公交站点"和"显示"都是我们熟悉的字眼
可是真要动手去做
我还真是一头雾水...
首先
做毕业设计不光要把原理弄懂、吃透
还要理论结合实际
做出具有相应功能的实物来
其次
要把理论知识按毕业设计的格式和各种要求整理成Word文档
千头万绪
枝枝节节的很多东西要做
幸好
在毕业实习阶段我搜集了很多相关的资料
这为我下一步的行动奠定了良好的基础
我决定分步去实现我的计划
我以一篇类似的资料作为底稿
经过大体修改和增减确定了大体框架
明确了下一步我要做的事情
同时在这个过程中
我对毕业设计的一些格式要求和模块有了初步的了解
这使我想起了我国在大连改造的"瓦良格"号航母
此时此刻
我觉得自己也在改造一艘"航母"
并且要在这个基础上发明创造
开拓视野
立足新意
设计出一些新的东西来
融入新的思维和技巧
之后
我就大刀阔斧地开始了我的毕业设计历程
做毕业设计的前期
我专门学习了如何使用Word系统撰写和排版毕业论文
因为论文的质量包含着两个方面的内容
一方面是论文的构思、结构、内容及观点;另一方面就是论文的排版质量
其实论文的撰写和编辑是个比较麻烦的过程
因为在撰写过程中
我们需要不断地修改
还可能有论文排版格式的修改
往往由于某一部分的变动
使其他部分进行相应的变动
因而常因调整格式而烦恼
但是如果对MicrosoftWord编辑系统有充分的了解
就会得心应手地进行编辑
撰写和排版出有较高质量的论文
基于上面的想法
我系统地学习了用Word设置论文版面、使用样式功能、尾注的标识、分节、设定页码和页眉以及自动生成目录等功能的操作方法并且尝试着去编辑使用这些功能
功夫不负有心人
我终于成功地设定了三级标题和分节符等以前总让我头疼的环节
感觉这样让自己少了很多编辑过程中的烦恼
同时把学校要求的各种格式都涵盖进去了
现在
可以开始编辑论文了
毕业论文表面看起来烦琐
其实还是一目了然的
大体上分为标题、中文摘要、英文摘要、目录、正文、致谢和参考文献以及附录等部分
标题又分为论文总标题、各部分的标题以及正文的三级结构标题
各个部分标题都有不同的格式与字体要求
在正文中
三级标题下面需要分开的
我采用了
(1)、
(2)、(3)和①、②、③两种格式
编辑的方法已经准备就绪了
下一步要进行的就是论文的内容了
这并不能急着动手编辑
因为编辑倒是个简单的问题
关键是要学习并掌握各种知识和原理
并在这个基础上设计出具有实际功能的实物来
而编辑
只是对这个过程进行具体记录、表达与总结
可见
下一步并不是动手写
而是疏通整个论文的各个知识要点
掌握其大概原理
真是"汝果欲学诗
功夫在诗外"啊
但是
在学习具体的内容之前
我确定了各个章的大体分配
第一章是绪论
第二章是软件开发、编程语言与主要元器件介绍
第三章是系统硬件设计
第四章是系统软件设计
第五章是程序编译、烧录与系统调试
最后一章是结束语
在我看来
难点在第四章
因为程序设计难度相对比较大
也是我的薄弱点
但是我相信
在我的努力之下
一定能够战胜困难的
我们拭目以待
教师评语:
广州大学松田学院
2011届本科生毕业论文日志
2011年3月7日第2周星期一
现在
伴随着我的思绪
让我们进入这个论文题目的内部
去具体学习它的一些内容
其中有很多困难
也会有很多快乐
首先
我们来分解这个题目
基于单片机、公交站点、显示系统
也就是说
大体上应该分为三个部分
当然事实也是如此
要显示公交站点
必须要有控制它执行的按键
相比之下
我选择了STC89C52作为主控制芯片
用矩阵键盘作为输入控制端
用HJ12864M-1作为显示模块
现在
可以具体从这三个部分发展开去
进入论文的各个细节角落
整个系统就是由矩阵键盘、STC89C52单片机和HJ12864M-1显示器三个部分构成
功能要求很简单
就是每按一个键
在显示屏上要显示相应的公交站点的名称或其他提示内容
目标已经明确了
下一步就要具体掌握各个部分的内容
比如说矩阵键盘是如何实现的;为什么16个按键却只分配了8个I/O口;矩阵键盘的各个端口是连在单片机的哪些I/O口上;STC89C52单片机的各个管脚是怎样分布的;单片机怎样和矩阵键盘、HJ12864M-1显示器相连
它的接口原理图是怎样的;STC89C52单片机有什么功能特性;HJ12864M-1显示器里面的驱动器是什么;驱动器的功能与特性以及怎样按自己的想法设计驱动器的功能;系统框图以及整个系统的程序怎么写等等
很多问题需要一个一个解决
这样
才能一步一步把设计做出来
完成任务
想到这里
我明白了自己要做的事情还有许多
决不是从题目看起来那么简单的
说到这里
有必要明确一下
我使用的编程语言是单片机C语言
同时这也是学校要求的;整个程序的编译是在Keil的环境下完成的
同时也用到了Protel99SE作为画电路图的工具
所以
我又复习了画电路图以及Keil的相关知识
这对完成整个毕业设计来说
是必须的基本步骤
但是
怎样画流程图和时序图成了我一时的难题
许久没有解决
在很多难题面前
我开始通过各种途径继续搜集相关的资料
特别是通过中国知网()、google以及XX来解决各种问题
但是仍然有很多问题没有解决
比如HJ12864M-1带中文字库的液晶显示模块方面的资料比较缺乏
对于按键控制部分
我最初的设想是用家庭常用的电视遥控
在单片机用个红外接受的模块
接受按键信息并解码
但后来考虑用红外遥控对设备安装不方便
而且红外对人体也有辐射
于是选择用矩阵键盘进行控制
在液晶屏的选择问题上
我也尝试过很多想法
因为液晶屏有很多种
最常用的就有1602字符型液晶显示模块和我最终选用的12864带字库图形液晶模块
1602型只能显示2行共16个汉字
而且用它来显示汉字效果并不理想
不符合公交车上公众对视觉的要求;而12864型可以显示4行共32个汉字
也可完成图形显示
低电压功耗是其显著的特点
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比
硬件电路显示程序都要简洁得多
且该模块的价格也略低于相同点阵的图形液晶模块
对于单片机的型号
也是很多的
最常用的当然是AT89C51或AT89C52
同时也是我熟知的
但是我买来的单片机的型号却是STC89C52
这又让我疑惑了一阵子
于是我又开始学习关于单片机型号的知识
最后确定了STC89C52与AT89C52是完全兼容的
才长舒了一口气
心中暗暗庆幸
经过这些小波折
我认识到了我的单片机知识还是比较匮乏的
需要继续努力;也认识到了要完成此次毕业设计
任重而道远
教师评语:
广州大学松田学院
2011届本科生毕业论文日志
2011年3月14日第3周星期一
随着理论学习与实践的深入
我不断地遇到很多新的问题
都是我没有预料到的
比如在程序编译的时候
总是出现一种错误
诸如"missing;beforeU8"
但是在前面加个";"还是不对
或许根本就不是"在U8前缺少一个分号"的意思
这个问题让我无从着手
在网络上搜索也没得到答案
一时间
就卡在那儿了
还有一个严重的问题
就是感觉在编写程序的时候力不从心
这让我深深地体会到自己的编程能力十分有限
有时后甚至读不懂或不是很懂某段程序
更别说自己去设计编写新的程序了
临时抱佛脚
我只好对照着许多C语言的资料艰难地进行阅读和理解
但是遗憾的是
收获并不多
有时候自己都不敢肯定程序的正确性
稍微有一些灵活变化的程序
我就要花很多时间去消化
于是我开始系统地学习各种C语言的语法规则
结合实际的程序实例进行分析
并且化整为零
分别琢磨每一段程序的作用与功能以及它的具体含义
并且结合硬件系统的I/O口
各种功能管脚具体分析考虑
步步为营
力求突破重重难关
把程序写好
这其中最难理解的就是HJ12864M-1模块内嵌的STN7920驱动器
它涉及到很多指令
比如说复位指令、设置CGRAM指令、设置DDRAM地址指令、读"忙"标志、写显示数据到内部RAM指令和读显示数据指令以及许多扩展指令系统
纷繁复杂
一时不可尽数
对我而言
理解起来比较费力
但是又必须去面对
在知识疏通的过程中
我的设计一度走进了弯道里
转了一圈才发现自己做的工作其实是多余的
比如一开始我在考虑把要显示的汉字的字模提取出来
建立一个小字库
然后进行显示
这本来没有错
但是我没有想到我买的HJ12864M-1液晶显示屏是带中文字库的
既然带中文字库了
就说明常用的汉字里面都有了
那么就不用建立小字库了
之所以犯了一个这样的错误
是因为自己对"带中文字库"和"小字库"这些词理解地不够深
只是从字面意思上去理解
并没有思考它的作用
以为带了中文字库还必须要建立小字库的
不过
俗话说"吃一堑
长一智"
或许可以拿来安慰以下自己吧......
接下来是显示的问题
我虽然详细了解了STN7920的主要特点和功能
管脚功能以及读写时序
也系统地学习了STN7920的指令系统和扩展指令系统
但是怎么把"一串汉字"显示出来
我心里还是没主意
因为很少接触"液晶显示"的内容
而且也缺乏这方面的资料
没有具体的例子可供参考
所以这成了我的头号难题
我只好反反复复地去理解
去琢磨
同时也在网上寻找各种类似的资料
希望能解决我的疑惑
怎样显示汉字串的问题疑惑了我很久
而实际上
这恰好也许是一个最简单的问题
因为汉字在计算机内部是以"内码"形式存储的
就相英文字母在计算机内部是以"ASCII"码形式存储的一样
一个汉字的"内码"占两个字节
汉字串在计算机内部就是"内码"串
STN7920提供的字库就是以"内码"形式存储的国标字库
所以可以用汉字串来直接显示汉字
这就够简单了
如果用《信息交换用汉字编码字符集(基本集)》GB2312-80
想要在STN7920上显示汉字
由于该字符集是按区位码排列的
因此要把区位码变成"内码"才能在程序中使用
显示汉字的问题似乎得到了解决
但是具体怎么编程
还有很多问题等着要解决啊
让我们继续努力......
教师评语:
广州大学松田学院
2011届本科生毕业论文日志
2011年3月21日第4周星期一
毕业设计进入第四周
虽然大部分的工作已经做出了个大概的框架
但是要在这个基础上进行细化与具体化还有很多工作等着我去完成
汉字的显示原理就花了我很大的功夫去理解和琢磨
我原来的想法是用1602显示器的
再建立一个小字库
但是在这种显示器上只能显示两行共16个汉字
不能完全满足需要
于是我选择了12864型的图形液晶显示屏
这种显示屏可以显示四行共32个汉字
可以满足公交车提示用语等需要
可喜的是
带中文字库的显示屏显示汉字的时候不需要再建立小字库
省去了很多麻烦
现在我把汉字显示的原理作一个详细的介绍
无论是TurboC支持的各种显示器
还是单片机系统常用的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届本科生毕业论文日志
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前面少了个";"
但是加上一个";"以后又出现更多的错误
而且去XX搜索相关的问题
都没有得到相关的答案
很多人为这种错误而头疼
最后我发现还有一个警告
说是〈def.h〉头文件不能被打开
我想可能就是因为这个头文件出了问题吧
答案是肯定的
果然
在我把〈def.h〉定义的内容特别列出在程序中后不用〈def.h〉这个头文件
绕开了头文件不能被打开的问题
结果一箭双雕
把两个问题都解决了
欣喜之余
只是感觉有点纳闷
为什么头文件会打不开呢?
还有就是在把汉字输入到程序中的时候遇到一个莫名其妙的问题
就是在程序编辑状态下一输入汉字就显示空格
不能把汉字显示出来
让我的心一下子凉了半截
如果不能输入汉字
那我的程序可就要报废了
得重头来过
一开始我想是不是因为Keil这个软件没有带中文字库呢
但是很快我就否定了这个想法
因为在输入注释文字的时候是可以输入中文汉字的
幸好后来解决以后
发现问题并不大
是因为在程序编辑状态下输入汉字的时候需要先把两个引号都写出来
然后把光标移到两个引号的中间
这样就能输入汉字了
问题不大
但是如果不知道这样做
你必定束手无策
无可奈何
不禁感叹
自己的C语言学得马马虎虎了
现在的问题是一个关于显示函数的格式上的错误
因为缺少相关显示函数的实例
我一时间在这个问题上卡了壳
喊有就是一编译就说是显示函数被重新定义
我到处找错误
却一点突破都没有
我想这或许仍然是一个小问题
但是在没有解决之前
它仍然是一个大问题哦
教师评语:
广州大学松田学院
2011届本科生毕业论文日志
2011年4月4日第6周星期一
在程序编译这个问题上
还有很多的事情要做
虽说逐步解决问题是有效的方法
但是也不要就此认为
只要遵循这个步骤
每次都可以保证一下子就能得到正确的解决方案
验证是非常重要的
意味着解决问题的过程是不可小视的
也许第一次、第二次乃至第二十次的解决方法都是错误的
但是这至少说明这二十种解决办法是不可行的
我想
或许优秀的编程者和失败的编程者之间的差别就在于优秀者不会被最初的失败击倒
他们会找出缺点
并逐步休整方案
最后把问题解决
而失败者在遇到问题后就放弃了
这让我想到了世界上最有创造力的发明家爱迪生积极对待数以千计的失败实验的故事
也就是说明了一个事实:
失败是某方面无效、行不通的证明和有用的数据
现在把我在程序编译中遇到的其他几个问题总结如下:
①warningC206:
'displaystr':
missingfunction-prototype
说明displaystr()函数未作宣告或未作外部宣告所以无法给其他函数调用
解决方法将叙述uintdisplaystr(uchark1)写在程序的最前端作宣告
如果是其他文件的函数则要写成externuintdisplaystr(uchark1)
即作外部宣告
②errorC141:
syntaxerrornear'else'
说明语句else附近有错误
可以双击提示
便可知晓到底是源程序哪个else有误
当去掉了该else后面的';'后
再度编译错误就没了
③SHEJI.C(40):
errorC244:
'i':
can'tinitialize
badtypeorclass
说明在变量'i'前面的某个函数申明之后没有分号
将对应的函数申明后加上分号就好了
在程序的编译时
有2个编译符号需要分清楚
如果一个项目包含多个源程序文件
而仅对某一个文件进行了修改
而不用对所有文件进行编译
仅对修改过的文件进行编译
然后和已被编译过的文件连接处理
可选择Project/BuildTarget或者对所有源程序全部进行编译连接
选择Project/BuildallTargetFiles
一般来说
可以使用F7或单击快捷按钮(Project/BuildTarget对应的按钮)仅对修改过的文件进行编译连接的选择就可以满足了
编译是通过单击快捷按钮来进行的
如果源文件没有语法错误
将生成OBJ文件
同时如果设置正确
OH51.EXE文件会被调用来生成.HEX代码
但是源文件没有语法错误并不能保证就是正确可行的
能不能实现需要的功能还需要进行调试
调试也是一项复杂的工作
利用编程器将可执行的文件写入程序存贮区ROM
然后插入到目标硬件系统就可以执行该文件
编程器的种类是很多的
但是使用的方法大多是相同的
教师评语:
广州大学松田学院
2011届本科生毕业论文日志
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