}
Set_column(0); for(i=0;i<64;i++) { }
SelectScreen(2); Set_page(j); Set_column(0); for(i=0;i<64;i++) {
write_LCD_data(a[2*j+1][i]);//每隔一行取一次数组中的数据 write_LCD_data(a[2*j][i]);//每隔一行取一次数组中的数据
}
}
4 软件仿真
4.1 Proteus简介
Proteus软件是英国Labcenter electronics公司开发的EDA工具软件。它实现了从原理图设计、代码调试到单片机与外围电路的协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计,是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,可编译汇编语言,同时支持IAR、Keil和MPLAB等多种编译器。
该软件资源丰富,其中元器件资源有:数字和模拟、交流和直流等数千种元器件,有30多个元件库;仪表资源有:示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表等。除了现实存在的仪器外,Proteus还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。这些都尽可能减少了仪器对测量结果的影响。 4.2 汉字显示
20
汉字显示如图12所示,汉字滚动显示如图13所示。
图12 汉字显示 图13 汉字滚动显示
4.3 图形显示
图形显示如图14所示,图形滚动显示如图15所示。
图14 图形显示 图15 图形滚动显示
5 结论
本次论文的写作和设计的制作虽然没有特别的复杂,但是由于初次涉及这样的设计,没有任何的经验,过程还是倍感吃力的。首先就是LCD的选择,因为之前没有学习过这样的器件,算是一个新的概念,所以认识不全,有些不知所措。其次就是软件的编写,要得到正确的汉字以及图片的地址信息,花费了较长时间才找到相匹配的取模软件。然后研究如何获取正确的参数,其中图片的取模就很令我苦恼,最后在老师的辅导下才得以提取正确。程序有了之后,再进行相关的变换,最终得到新颖的效果。
在这次的毕业论文写作过程中虽然尝到了论文写作的困难,但是更重要的是让我感受到了它的魅力,不知不觉的就学到了很多平时未尝涉及的知识,特别是成功仿真后,着实有一种成就感。在此次过程中不仅巩固了我对Word及单片机的使用,同时也让我对LCD显示以及取模软件有了一个较为清晰的了解,弥补了我的一个盲区,使我有了知识和精神双方面的收获。
参考文献
[1] 徐晨,陈继红等.微机原理及应用[M].北京:机械工业出版社,1998: 167-169. [2] 阎焕忠, 王长涛, 马斌. 单片机控制里程转速表的设计[J].沈阳建筑工程学院学报(自
然科学版),2002,4:145-148.
21
[3] 张义和,陈敌北.例说8051[M].北京:人民邮电出版社,2006:146-161. [4] 周越.单片机技术实验实训教程[M].上海:中国水利水电出版社,2007. 112-113.
[5] 赵建领.Protel电路设计与制版宝典[M].上海:电子工业出版社,2007. 58-59. [6] 郭振民,丁红.电子设计自动化EDA[M].上海:中国水利水电出版社,2009. 267-268. [7] 张毅刚,彭喜源. MCS-51单片机应用设计[M].哈尔滨工业大学出版社,1997. 88-90. [8] 丁元杰.单片机原理及应用[M].北京:机械工业出版社,1998. 24-25.
[9] 张毅刚.单片机原理及接口技术[M].哈尔滨:哈尔滨工业大学出版社,1990 .267-268. [10] 余锡存,曹国华.单片机原理及接口技术[M].西安:西安电子科技大学出版社,2000 . 35-36.
[11] 彭伟.单片机C语言教程设计实例[M].北京:电子工业出版 社,2009.126-127. [12] 郭天祥.51单片机C语言教程[M].北京:电子工业出版社,2009.351-353. [13] 郭文川.单片机原理与接口技术[M].北京:中国农业出版社,2007 .45-46. [14] 张齐.显示技术及单片机应用系统设计技术[M].北京:电子工业出版社 ,2004(2):284-285.
[15] Adel S Sedra,Kenneth C Smith.Microelectronic Circuits (6th ed) [M].New York:
Oxford University Press,2010:96-101.
[16] U Tietze,Ch Schenk.Electronic Circuits-Design and Application [M].New York:
Cambridge University Press,2004:89~102.
[17] Intel.MCS-51 Family of Single Chip Microcomputers Users Manual[M].1990:58~162.
致谢
在本论文的写作过程中,指导教师马占卿老师倾注了大量的心血,从选题到开题报告,从写作提纲到一遍又一遍地指出每稿中的具体问题,他都严格把关、循循善诱。在此我表示衷心地感谢。同时我还要感谢在我学习期间给我极大关心和支持的各位老师以及关心和帮助过我的同学和朋友。
附录
#include
22
#define uchar unsigned char #define uint unsigned int
#define LCD_databus P0 //LCD12864的8位数据口
sbit RS=P1^0; sbit RW=P1^1; sbit EN=P1^2;
//RS为0---命令;1----数据 //RW为1---写;0---读 //使能端
sbit CS1=P2^1; //片选1低电平有效,控制左半屏 sbit CS2=P2^0; //片选1低电平有效,控制右半屏 sbit KEY1=P3^0; sbit KEY2=P3^1; sbit KEY3=P3^2;
sbit KEY4=P3^3; //四个按键控制口
void delay(uint i) { }
void Read_busy()//读“忙”函数-----数据线的最高位DB71则busy {
P0=0x00;
while(--i);
RS=0; RW=1; }
void write_LCD_command(uchar command) //写命令函数
23
EN=1;
while(P0 & 0x80); EN=0;
{
Read_busy(); RS=0; RW=0;
//对LCD的每次读写都要读忙
//选择命令 //读操作
LCD_databus=command; EN=1; _nop_(); _nop_(); EN=0; }
/***********************写命令左***********************/ void write_cmd_1(uchar command) {
CS1=1;CS2=0;
Read_busy();
//对LCD的每次读写都要读忙
//EN由1----0锁存有效数据
RS=0; RW=0;
LCD_databus=command; _nop_(); _nop_(); EN=1;
//EN由1----0锁存有效数据
_nop_(); _nop_(); EN=0; }
/***********************写命令右***********************/ void write_cmd_2(uchar command) {
CS1=0;CS2=1;
24