电子显示屏设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子显示屏设计
电子显示屏课程设计
系
部
:
电
信
信
息
工
程
系
班级:电气工程及其自动化0942
姓名:郑明月(主力)、金英、王
广宇
指导老师:翁嘉民
时间:2011年11月7日至2011年11月18日
电子显示屏课程设计
一、设计要求
(1)、用单片机控制液晶显示屏,使液晶显示屏上显示时间(时、分、秒),且屏幕上所显示的时间可以由按键调节。
(2)、可以用按键控制液晶显示屏自动刷新循环显示(每隔三秒自动刷新一次),或者停留着当前页面。
(3)、可以用按键复位,显示第一页。
二、系统方案
按照系统所要实现的功能要求,我组决定控制系统采用单片机AT89C52、液晶显示屏12864。
液晶电子屏显示系统设计方案框图如图1所示:
图1
单片机P0口输出显示数据,P1口连接按键,P2口连接液晶显示屏的功能控制口;
第一行中间显示时间(起始时间默认为12:00:00),用定时器T0控制秒;按键1、按键2、按键3分别对时个位,分个位,秒个位做加1操作;
第二行,第三行,第四行显示汉字;若按键4按下,定时器T1开始定时,汉字开始每隔三秒自动刷新,并循环显示;若按键5按下,汉字停止自动刷新,停留当前页面,定时器T1关闭。
三、硬件电路设计
(1)电路原理图
图2
我组设计的电子显示屏由单片机控制电路、按键控制电路和液晶显示三部分组成,其原理图如上图所示;
(2)单片机控制模块
采用12MHZ的晶振,机器周期满足大于520KHZ液晶执行时间的要求,使读写没有时间间隔感;因12864内自带驱动电路,故无需外部设置驱动,使设计更为简单;单片机EA接高电平,使单片机能够使用内部程序;单片机复位端RST通过阻容电路接高电平,且并接一个按
键,使其能实现复位功能。
(3)按键控制电路
我组设计的电子显示屏共有五个按键,除了单片机复位按键外,其余皆为显示控制按键。因默认显示时间为12:00:00,按键1、按键2、按键3分别对时个位,分个位,秒个位做加1操作,从而调整时间。按键4为汉字开始循环显示控制按键。当按键4按下后,定时器T1启动,每隔3秒汉字会自动刷新,并循环显示。按键5为刷新停止控制键,当按键5被按下后,定时器T1停止启动。因P1口默认电平为1,故输入数据前无需置1操作。
(4)液晶显示模块
带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;可以显示8×4行16×16点阵的汉字. 也可完成图形显示.通讯方式:串行、并口可选、内置DC-DC转换电路,无需外加负压、无需片选信号,简化软件设计、工作温度: 0℃ - +55℃ ,存储温度: -20℃ - +60℃。0V为对比度亮度调节,接滑动变阻器。RS、R/W控制指令和数据的读写,分别接P2^0,P2^1。RS=0,R/W=0时写指令;RS=0,R/W=1时读指令;RS=1,R/W=0时写数据;RS=1,R/W=1时读数据;E为12864并行的使能端,接P2^2,当E由0变成1时,允许执行写操作;当E=1时,允许执行读操作;DB0-DB7为液晶的输入端,接单片机的P0口;因本次设计采用8位并行接口方式,在液晶的第一行显示时间,后三行显示汉字,故显示屏的控制端PSB接高电平。NC为空
脚;RST为液晶的复位脚,低电平有效;A、K为背光的正负电源接口;其中汉字显示坐标如下图3所示:
图3
可以根据坐标,把汉字写在任意位置上。
分析12864的并行接口时序图可知,当进行写操作时,应先设置RS为1/0,R/W为0,然后给P0口赋值,再打开并行使能端E,然后再关闭使能端。进行读操作时,同样应先设置RS为1/0,R/W为1,然后给P0口赋值,再打开并行使能端E 。
四、程序设计
(1)主程序
刚上电时,液晶第一行中间显示默认时间12:00:00,第二行显示“电子显示屏设计”,第二行显示“设计成员:郑明月”,第三行显示“、金英、王广宇”。每隔一秒,秒个位加1。主程序在调用按键子程序和显示之程序之间循环,主程序流程图如图4:
图4
定时器T0在主程序中启动,是为了控制时间显示,主程序在按键扫描和液晶显示子程序中不断循环,以便及时捕捉是否有按键按下,及时更新显示信息。
(2)显示子程序(图5)
按键5按下后定时器T1启动,每隔三秒,显示相应的汉字;按键6 按下后定时器T1关闭,显示停留在当前页面。
(3)源程序
#include
#define uchar unsigned char
#define uint unsigned int
sbit PSB=P2^3;
sbit Enable=P2^2; //使能
sbit Di=P2^0; //数据/命令选择(RS)
sbit RW=P2^1; //读/写信号
sbit Rst=P2^5; //复位脚
sbit k1=P1^2;
sbit k2=P1^3;
sbit k3=P1^4;
sbit k4=P1^5;
sbit k5=P1^6;
uchar counts=0; //定义全局变量,分别控制时钟的时个位
uchar s=0; /*定义全局变量时十位*/
uchar countm=0; /*定义全局变量分个位*/
uchar m=0; /*定义全局变量分十位*/
uchar counth=2; /*定义全局变量秒个位*/
uchar h=1; /*定义全局变量秒十位*/
uchar count=0; /*全局变量count控制时钟刷新*/
uchar side=0; /*全局变量控制整个屏幕自动刷新的次数*/ uchar ds=0; /*全局变量ds控制屏幕自动刷新的间隔时间*/ uchar code tab[]={"0123456789:"};
uchar code hz1[]={"电子显示屏设计"};
uchar code hz2[]={"设计成员:郑明月"};
uchar code hz3[]={"、金英、王广宇"};
uchar code hz4[]={"《锦瑟》"};