《LCD几何图形显示课程设计(共9页).doc》由会员分享,可在线阅读,更多相关《LCD几何图形显示课程设计(共9页).doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上目 录第1章 LCD几何图形显示设计的研究背景及目的要求1.1 研究背景在程序设计方面,凌阳十六位单片机还具有易学易用的效率较高的一套指令系统和集成开发环境。在此环境中,支持标准C语言,可以实现C语言与凌阳汇编语言的互相调用。显示器的核心液晶显示器控制器品种繁多,各种控制芯片在控制电路逻辑、控制指令、指标参数等方面各有差异。 但对于已带有控制电路的平板点阵式图形液晶显示器,使用者无需关心其控制核心的集成芯片、控制电路等, 就可方便地利用它进行开发。1.2 设计目的熟悉利用SPLC501液晶显示模组显示几何图形的API函数。掌握利用液晶显示器显示几何图形的方法。1.3
2、硬件选择装有window系统和仿真环境和PC机一台,十六位单片机实验箱一个。SPCE061A核心及周边电路模块(包含 32 个 I/O 口),LCD显示模组模块。1.4 设计内容LCD显示器上一个实心圆,在实心圆的横向直径画一条横线,并在实心圆上叠加显示汉字:“凌阳科技”,最后向上滚屏。在LCD显示器实现实心圆和汉字的叠加显示。利用 SPLC501 液晶显示模组显示英文(ASCII)字符时,需要对 LCD 进行初始化操作,以初始化 LCD 内部的供电方式、驱动设置等; 在凌阳大学计划提供的 SPLC501 液晶显示模组的驱动程序中,提供了对 SPLC501 液晶显示模组的初始化程序,除了完成前
3、面所述的操作外,该函数还可以初始化液晶的显示。 初始化 SPLC501 液晶显示模组后,驱动程序默认设置图形显示模式为覆盖模式,ASCII 字符的字型默认为 816 的大小,如果需要修改这些参数可以调用对应的函数进行设置。主程序利用C语言编写,调用驱动程序(调动程序已提供在IDE的安装路SPCE061Aexamplemodel_ExadriverSPLC501driver)。第2章LCD几何图形显示的设计方案及基本原理2.1 方案驱动程序文件SPLC501User.c同样定义了显示几何图形的API函数,在驱动程序文件SPLC501User.h同样定义了显示几何图形的API函数,SPLC501U
4、ser.h文件里也对这些函数进行了申明。void LCD501_Init(unsigned int InitialData) void LCD501_ClrScreen(unsigned int Mode) void LCD501_SetPaintMode(unsigned ModeCode) unsigned int LCD501_GetPaintMode(void) void LCD501_FontSet(unsinged int Font) /选择显示字符的字体大小unsigned int LCD501_FontGet(void) /获得显示字符的字体大小void LCD501_Bitm
5、ap(unsigned int x,unsigned int y,unsigned int *word) void LCD501_PutPixel(unsigned int x,unsigned int y) void LCD501_Line(unsigned int x,unsigned int y,unsigned int e_x,unsigned int e_y) /画直线void LCD501_Circle(unsigned int x,unsigned int y,unsigned int r,unsigned int Mode) /画圆void LCD501_Rectangle(u
6、nsigned left, unsigned top,unsigned right, unsigned bottom, unsigned Mode) void LCD501_ScrollUp(unsigned Rows) /屏幕向上滚动前面七个函数在前面实验里都有详细说明,这里介绍后面四个函数:1)【API 格式】C:void LCD501_PutPixel(unsigned int x,unsigned int y) 【功能说明】在液晶显示器上画一个点【参数】x 表示要画点的 x 坐标; y 表示要画点的 y 坐标;【返回值】无2)【API 格式】C:void LCD501_Line(uns
7、igned int x,unsigned int y,unsigned int e_x,unsigned int e_y)【功能说明】在液晶显示器上画一条直线;【参数】x 表示要画的线的 x 起点坐标; y 表示要画的线的 y 起点坐标;e_x 表示要画的线的 x终点坐标;e_y 表示要画的线的 y 终点坐标。【返回值】无3)【API 格式】C:void LCD501_Circle(unsigned int x,unsigned int y,unsigned int r,unsigned int Mode) 【功能说明】在液晶显示器上画一个圆【参数】x 表示要画的圆心的 x 坐标;y 表示要画
8、的圆心的 y 坐标;r 表示要画的圆的半径;Mode 表示绘点模式,其中 Mode = M_DOT_CLEAR(0) 画圆框;Mode = M_DOT_SET 【返回值】无4)【API 格式】C:void LCD501_Rectangle(unsigned left, unsigned top,unsigned right, unsigned bottom,unsigned Mode)【功能说明】在液晶显示器上画一个矩形【返回值】无2.2 基本原理IOB9IOB4 IOB5IOB6IOA8SPCE061A IOA9 IOA10IOA11IOA12IOA13IOA14IOA15/CSAOR/WE
9、PD0D1 SPLC501液晶D2 显示模组D3D4D5D6D7图2-1硬件连接框图 硬件连接如上图。分别用实验箱跳线连接IOB4与AO,IOB5与RWP,IOB6与EP,IOB9与/CS,IOA8IOA15与D0D7:VR、C86和PS都与V3短接,把SPLC501液晶显示模组的时序选择为6800时序。即用跳线把实验箱JP6的所有引针全部短接。第3章 LCD几何图形显示的程序设计3.1 主程序流程图从(0,30)开始到(128,30)结束延时,清看门狗显示汉字延时,清看门狗屏幕向上滚动延时,清看门狗延时,清看门狗设置为叠加模式在圆心为(30,30)延时,清看门狗初始化清屏开 始图3-1主程序
10、流程图 主程序流程图如下图:初始化LCD;清屏,延时;在圆心为(30,30)处画一个半径为30的实心圆,延时;设置图象显示模式为异或显示模式;从(0,30)开始到(128,30)结束画一条直线,延时;显示汉字“凌”、“阳”、“科”、“技”、“凌”显示在(0,15)位置,“阳”显示在(16,15)位置。凌阳大学计划为 SPLC501 液晶显示模组提供了显示驱动程序,由五个文件组成,底层驱动程序文件:SPLC501Driver_IO.inc、SPLC501Driver_IO.asm;用户 API 功能接口函数文件:SPLC501User.h、SPLC501User.c、DataOSforLCD.a
11、sm。3.2 设计程序代码由于程序过多,如附录所示。第4章 调试结果与分析4.1 调试结果图4-1设计结果图4.2 结果分析本次课程设计要求设计LCD几何图形显示器。应用所学的知识及在图书馆搜集的资料,对题目的要求进行了设计。1、设计了LCD几何图形显示器,此显示器能满足题目中的要求。2、在方案的设计中,用到了SPLC061A 液晶显示模组显示几何图形的 API 函数,和中断,延时等子程序。3、根据任务要求对相关参数进行了计算,并对相关元件进行了选择。结论与体会设计多种方案进行对比,方案用到了C语言编写。在LCD显示器实现实心圆和汉字的叠加显示。最后看到LCD显示器上一个实心圆,在实心圆的横向
12、直径画一条横线,并在实心圆上叠加显示汉字:“凌阳科技”,最后向上滚屏。本次课程设计设计的是LCD几何图形显示,要求熟悉利用 SPLC501 液晶显示模组显示几何图形的 API 函数。通过这次课程设计让我对单片机理论有了更加深入的了解, 更深刻的懂得了SPCE061A单片机驱动内置式SPLC501液晶显示模块的在显示几何图形方式。利用SPCE061A单片机丰富的I/O囗资源驱动液晶模块,简化了电路设计。 我突然发现,如果总是止步于书本上学习单片机,会觉得很抽象, 无法理解也不会有兴趣,但是当理论知识和实践结合到一起之后,就会非常有趣, 而且还会印象深刻富有成就感。所以我很珍惜这次的设计学习,我以
13、后会多加练习。 参考文献1 黄正瑾.综合电子设计与实践M.东南大学出版社,2002-3. 2 罗亚非.凌阳16位单片机应用基础M.北京航空航天大学出版社,2005.3 张念维.USB总线接口开发指南M.北京:电子出版社,2002.4 周立功.单片机实验与实践M.北京:北京航空航天大学出版社,2004.5 周航慈.单片机应用程序设计技术M.北京:航空航天大学出版社,2002.6 袁勤勇.嵌入式系统构件M.北京:北京机械工业出版社,2002.附录专心-专注-专业文件名称:main.c功能描述:LCD几何图形显示#include SPCE061A.h#define GREEN 0x00ff#defi
14、ne RED 0xff00#include SPLC501User.h#include Chinese_Table.h#define P_Watchdog_Clear(volatile unsigned int *)0x7012#defineP_SystemClock (volatile unsigned int *)0x7013 int main(void)inti,j,dd; LCD501_Init(0x00); *P_SystemClock=0x0088; LCD501_Circle(30,30,30,1);for(j=0;j=7;j+) for(i=0;i0x15ff;i+)*P_Wa
15、tchdog_Clear = 0x0001; LCD501_SetPaintMode(3);LCD501_Line(1,30,127,30);for(j=0;j=7;j+) for(i=0;i0x15ff;i+)*P_Watchdog_Clear = 0x0001; LCD501_Bitmap(0,15,(unsignedint *)encoding_00);LCD501_Bitmap(16,15,(unsigned int *)encoding_01);LCD501_Bitmap(32,15,(unsigned int *)encoding_02);LCD501_Bitmap(48,15,(unsigned int*)encoding_03);while(1)*P_Watchdog_Clear = 0x0001;for(dd=0;dd64;dd+) LCD501_ScrollUp(1); for(j=0;j=7;j+) for(i=0;i0x5fff;i+) *P_Watchdog_Clear = 0x0001;