电子显示屏设计

上传人:F****n 文档编号:104680357 上传时间:2019-10-10 格式:DOC 页数:22 大小:208KB
返回 下载 相关 举报
电子显示屏设计_第1页
第1页 / 共22页
电子显示屏设计_第2页
第2页 / 共22页
电子显示屏设计_第3页
第3页 / 共22页
电子显示屏设计_第4页
第4页 / 共22页
电子显示屏设计_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《电子显示屏设计》由会员分享,可在线阅读,更多相关《电子显示屏设计(22页珍藏版)》请在金锄头文库上搜索。

1、河南工程学院单片机课程设计电子显示屏课程设计系部:电信信息工程系班级:电气工程及其自动化0942姓名:郑明月(主力)、金英、王广宇指导老师:翁嘉民时间:2011年11月7日至2011年11月18日电子显示屏课程设计一、设计要求(1)、用单片机控制液晶显示屏,使液晶显示屏上显示时间(时、分、秒),且屏幕上所显示的时间可以由按键调节。(2)、可以用按键控制液晶显示屏自动刷新循环显示(每隔三秒自动刷新一次),或者停留着当前页面。(3)、可以用按键复位,显示第一页。二、系统方案 按照系统所要实现的功能要求,我组决定控制系统采用单片机AT89C52、液晶显示屏12864。液晶电子屏显示系统设计方案框图如

2、图1所示: AT89C51 P0 P2P1 P3上电复位12864液晶显示屏晶振电路按键控制 图1 单片机P0口输出显示数据,P1口连接按键,P2口连接液晶显示屏的功能控制口; 第一行中间显示时间(起始时间默认为12:00:00),用定时器T0控制秒;按键1、按键2、按键3分别对时个位,分个位,秒个位做加1操作; 第二行,第三行,第四行显示汉字;若按键4按下,定时器T1开始定时,汉字开始每隔三秒自动刷新,并循环显示;若按键5按下,汉字停止自动刷新,停留当前页面,定时器T1关闭。三、硬件电路设计(1)电路原理图 图2 我组设计的电子显示屏由单片机控制电路、按键控制电路和液晶显示三部分组成,其原理

3、图如上图所示;(2)单片机控制模块 采用12MHZ的晶振,机器周期满足大于520KHZ液晶执行时间的要求,使读写没有时间间隔感;因12864内自带驱动电路,故无需外部设置驱动,使设计更为简单;单片机EA接高电平,使单片机能够使用内部程序;单片机复位端RST通过阻容电路接高电平,且并接一个按键,使其能实现复位功能。(3)按键控制电路 我组设计的电子显示屏共有五个按键,除了单片机复位按键外,其余皆为显示控制按键。因默认显示时间为12:00:00,按键1、按键2、按键3分别对时个位,分个位,秒个位做加1操作,从而调整时间。按键4为汉字开始循环显示控制按键。当按键4按下后,定时器T1启动,每隔3秒汉字

4、会自动刷新,并循环显示。按键5为刷新停止控制键,当按键5被按下后,定时器T1停止启动。因P1口默认电平为1,故输入数据前无需置1操作。(4)液晶显示模块 带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;可以显示84行1616点阵的汉字. 也可完成图形显示.通讯方式:串行、并口可选 、内置DC-DC转换电路,无需外加负压 、无需片选信号,简化软件设计、工作温度: 0 - +55 ,存储温度: -20 - +60。0V为对比度亮度调节,接滑动变阻器。RS、R/W控制指令和数据的读写,分别接P20,P21。RS=

5、0,R/W=0时写指令;RS=0,R/W=1时读指令;RS=1,R/W=0时写数据;RS=1,R/W=1时读数据;E为12864并行的使能端,接P22,当E由0变成1时,允许执行写操作;当E=1时,允许执行读操作;DB0-DB7为液晶的输入端,接单片机的P0口;因本次设计采用8位并行接口方式,在液晶的第一行显示时间,后三行显示汉字,故显示屏的控制端PSB接高电平。NC为空脚;RST为液晶的复位脚,低电平有效;A、K为背光的正负电源接口;其中汉字显示坐标如下图3所示:80H81H82H83H84H85H86H87H90H91H92H93H94H95H96H97H88H89H8AH8BH8CH8D

6、H8EH8FH98H99H9AH9BH9CH9DH9EH9FH 图3 可以根据坐标,把汉字写在任意位置上。 分析12864的并行接口时序图可知,当进行写操作时,应先设置RS为1/0,R/W为0,然后给P0口赋值,再打开并行使能端E,然后再关闭使能端。进行读操作时,同样应先设置RS为1/0,R/W为1,然后给P0口赋值,再打开并行使能端E 。四、程序设计 (1)主程序 刚上电时,液晶第一行中间显示默认时间12:00:00,第二行显示“电子显示屏设计”,第二行显示“设计成员:郑明月”,第三行显示“、金英、王广宇”。每隔一秒,秒个位加1。主程序在调用按键子程序和显示之程序之间循环,主程序流程图如图4

7、:开始 显示屏初始化定时器T0、T1赋值开启定时器T0调用液晶显示子程序 扫描按键是否按下,并调用相应子程序 图4定时器T0在主程序中启动,是为了控制时间显示,主程序在按键扫描和液晶显示子程序中不断循环,以便及时捕捉是否有按键按下,及时更新显示信息。 (2)显示子程序(图5)开始 判忙?显示汉字显示时间按键5?按键6?按键1/2/3?启动T0关闭T1 按键5按下后定时器T1启动,每隔三秒,显示相应的汉字;按键6 按下后定时器T1关闭,显示停留在当前页面。 (3)源程序#include#define uchar unsigned char #define uint unsigned intsbi

8、t PSB=P23; sbit Enable=P22; /使能sbit Di=P20; /数据/命令选择(RS)sbit RW=P21; /读/写信号sbit Rst=P25;/复位脚sbit k1=P12;sbit k2=P13;sbit k3=P14;sbit k4=P15;sbit k5=P16;uchar counts=0;/定义全局变量,分别控制时钟的时个位uchar s=0;/*定义全局变量 时十位*/uchar countm=0;/*定义全局变量 分个位*/uchar m=0;/*定义全局变量 分十位*/uchar counth=2;/*定义全局变量 秒个位*/uchar h=1

9、;/*定义全局变量 秒十位*/uchar count=0;/*全局变量count控制时钟刷新*/uchar side=0; /*全局变量 控制整个屏幕自动刷新的次数*/uchar ds=0;/*全局变量ds控制屏幕自动刷新的间隔时间*/uchar code tab=:;uchar code hz1=电子显示屏设计;uchar code hz2=设计成员:郑明月;uchar code hz3=、金英、王广宇;uchar code hz4=锦瑟;uchar code hz5=锦瑟无端五十弦,;uchar code hz6=一弦一柱思华年。;uchar code hz7=庄生晓梦迷蝴蝶,;uchar

10、 code hz8=望帝春心托杜鹃。;uchar code hz9=沧海月明珠有泪,;uchar code hz10=蓝田日暖玉生烟。;uchar code hz11=此情可待成追忆,;uchar code hz12=只是当时已惘然。;uchar code hz13=显示完毕;uchar code hz14= ;void delay(uchar z) /延时函数 uchar x,y; for(x=z;x0;x-) for(y=110;y0;y-);bit busy_12864() /*忙碌检测。=1忙,需等待;=0不忙,可以执行操作*/bit result; Di=0;RW=1;Enable=

11、1;delay(5);result=(bit)(P0&0x80);Enable=0;return result;void write_com(uchar c) /写指令 while(busy_12864(); Di=0; RW=0; P0=c; /*写入指令*/ delay(5); Enable=1; /*开使能端*/ delay(5); Enable=0; /*关使能端*/ void write_data(uchar Dispdata) /写数据 while(busy_12864(); Di=1; RW=0; P0=Dispdata; /*输出给定数据*/ delay(5); Enable=

12、1; delay(5); Enable=0;void init()/初始化函数delay(10);PSB=1; /并口方式 write_com(0x30);delay(5);/*从第一行的第一个地址开始写*/ write_com(0x08);delay(5);/*关屏幕显示*/ write_com(0x01);delay(5);/*清零*/ write_com(0x0c);delay(5);/*开屏幕显示*/ void display1() /时间显示函数write_com(0x82);/*从第一行的第三个地址开始写*/ write_data(tabh);/*写时十位*/ write_data

13、(tabcounth);/*写时个位,可以用按键控制*/ write_data(tab10);/*写符号“:”*/ write_data(tabm);/*写分十位*/ write_data(tabcountm);/*写分个位,可以用按键控制*/ write_data(tab10);/*写符号“:”*/ write_data(tabs);/*写秒十位*/ write_data(tabcounts);/*写秒个位,可以用按键控制*/ void display2() /汉字显示函数 uchar i; if(side=0) write_com(0x90); /*从第二行的第一个地址开始写*/ i=0; while(hz

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号