单片机控制液晶显示模块

单片机控制液晶显示模块
单片机控制液晶显示模块

摘要

单片机具有控制功能强,集成度高、可靠性高、体积小,低电压、低能耗等特点,并且具有优异的性能价格比。自20世纪70年代问世以来,受到人们的广泛关注。几十年间,单片机的发展十分迅猛,在控制领域独占鳌头。在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。这次课程设计通过对它的学习、应用,以单片机为核心,辅以必要的电路,设计了一个简易的液晶屏显示地图的程序,它由直流电源供电,通过LCD显示出来。LCD还可以显示字母、数字符号、中文字型,具有绘图及文字画面混合显示功能。

现代社会对液晶屏显示一些字体和图形的应用十分普遍,比如公交车上的报站牌,建筑楼上的广告标语等等。本此课设所要求的是将单片机与LCD液晶屏相结合,并编写相应的程序在液晶屏上显示出辽宁省地图。

关键词:LCD液晶屏51单片机辽宁省地图

目录

摘要....................................................................................................................................I 1绪论 (1)

2总体方案设计 (2)

2.1OCMJ4X8C_3型液晶显示屏的工作原理 (2)

2.2串行接口与串行传输资料 (4)

2.3汉字图形显示步骤 (5)

3硬件设计 (6)

3.1电路设计 (6)

3.2LCD液晶屏外形尺寸图及坐标图 (6)

3.3功能模块设计 (7)

4软件设计 (9)

4.1主程序流程图 (9)

4.2LCD显示模块设计 (10)

5调试分析 (10)

6结论 (10)

7总结 (11)

附录一 (12)

附录二 (12)

1绪论

单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。

单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可......用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机、排烟罩、VCD 等等的家电里面都可以看到它的身影!它主要是作为控制部分的核心部件。

它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。单片机是靠程序的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!

由于单片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言,它是除了二进制机器码以上最低级的语言了,既然这么低级为什么还要用呢?很多高级的语言已经达到了可视化编程的水平为什么不用呢?原因很简单,就是单片机没有家用计算机那样的CPU,也没有像硬盘那样的海量存储设备。一个可视化高级语言编写的小程序里面即使只有一个按钮,也会达到几十K的尺寸!对于家用PC的硬盘来讲没什么,可是对于单片机来讲是不能接受的。单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用。一样的道理,如果把巨型计算机上的操作系统和应用软件拿到家用PC上来运行,家用PC的也是承受不了的。

可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称PC机。它由主机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。因为它体积小,通常都藏在被控机械的“肚子”里。它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。

在当今社会中,LCD液晶屏的使用非常广泛,在工业上可以通过液晶屏显示一些数值,比如测量电压表等;在生活中,可以通过液晶屏显示一些人们日常生活中所需的资料。但液晶屏显示的使用也非常方便,只需要工作人员很简单的操作、控制,人们就可以很直观的去查看一些信息。液晶屏的使用简单方便,本文介绍的是ocmj4x8c_3型号液晶显示屏,尺寸是128*64DOTS,通过51单片机以8位16进制转换的数据,在液晶屏上显示出来。此系统核心部件是MCS-51单片机、LCD显示器。

2总体方案设计

2.1OCMJ4X8C_3型液晶显示屏的工作原理

此模块可以显示字母、数字符号、中文字型及图形,具有绘图及文字画面混合显示功能。提供三种控制接口,分别是8位微处理器接口,4位微处理器接口及串行接口(OCMJ4X16A/B无串行接口)。所有的功能,包含显示RAM,字型产生器,都包含在一个芯片里面,只要一个最小的微处理系统,就可以方便操作模块。内置2M-位中文字型ROM(CGROM)总共提供8192个中文字型(16x16点阵),16K位半宽字型ROM(HCGROM)总共提供126个符号字型(16x8点阵),64x16位

字型产生RAM(CGRAM),另外绘图显示画面提供一个64x256点的绘图区域(GDRAM),可以和文字画面混和显示。提供多功能指令:画面清除(Display clear)、光标归位(Return home)、显示打开/关闭(Display on/off)、光标显示/隐藏(Cursor on/off)、显示字符闪烁(Displaycharacter blink)、光标移位(Cursor shift)、显示移位(Displayshift)、垂直画面卷动(Vertical line scroll)、反白显示(By_line reverse display)、待命模式(Standbymode)。

表-1OCMJ4X8C_3的引脚说明

引脚名称方向说明

1VSS-GND(0V)

2VDD-Supply Voltage For Logic(+5V)

3NC-Supply Voltage For LCD(悬空)

4RS(CS)I H:Data L:Instruction Code

5R/W(STD)I H:Read L:Write

6E(SCLK)I Enable Signal,高电平有效

7DB0I/O数据0

8DB1I/O数据1

9DB2I/O数据2

10DB3I/O数据3

11DB4I/O数据4

12DB5I/O数据5

13DB6I/O数据6

14DB7I/O数据7

15PSB I H:Parallel Mode L:Serial Mode

16NC-空脚

17/RST I Reset Signal,低电平有效

18NC-空脚

19LEDA-背光源正极(+5V)

20LEDK-背光源正极(0V)

图5液晶显示电路

2.2串行接口与串行传输资料

当PSB脚接低电位时,模块将进入串行模式。从一个完整的串行传输流程来看,一开始先传输启始字节,它需先接收到五个连续的〝1〞(同步位字符串),在启始字节,此时传输计数将被重置并且串行传输将被同步,再跟随的两个位字符串分别指定传输方向位(RW)及寄存器选择位(RS),最后第八的位则为〝0〞。在接收到同步位及RW和RS资料的启始字节后,每一个八位的指令将被分为两个字节接收到:较高4位(DB7~DB4)的指令资料将会被放在第一个字节的LSB部分,而较低4位(DB3~DB0)的指令资料则会被放在第二个字节的LSB部分,至于相关的另四位则都为0。串行传输讯号请参考下图说明:

图6液晶显示时序图

图7串行接口时序图

2.3汉字图形显示步骤

1、显示资料RAM(DDRAM)

显示数据RAM提供64x2个字节的空间,最多可以控制4行16字(64个字)的中文字型显示,当输入显示资料RAM时,可以分别显示CGROM,HCGROM与CGRAM的字型;本系列模块可以显示三种字型,分别是半宽的HCGROM字型、CGRAM字型及中文CGROM字型,三种字型的选择,由在DDRAM中写入的编码选择,在0000H~0006H的定字型,02H~7FH的编码中将选择半编码中将选择CGRAM的自宽英数字的字型,至于A1以上的编码将自动的结合下一个字节,组成两个字节的编码达成中文字型的编码。

BIG5(A140~D75F)GB(A1A0~F7FF),详细各种字型编码如下:

1).显示半宽字型:将8位资料写入DDRAM中,范围为02H~7FH的编码。2).显示CGRAM字型:将16位资料写入DDRAM中,总共有0000H,0002H,0004H,0006H四种编码。

3).显示中文字形:将16位资料写入DDRAM中,范围为A140H~D75FH的编码(BIG5),A1A0H~F7FFH的编码(GB)。将16位资料写入DDRAM方式为透过连写入两个字节的资料来完成,先写入高字节(D15~D8)再写入低字节(D7~D0)。

2、绘图RAM(GDRAM)

绘图显示RAM提供64x32个字节的记忆空间(由扩充指令设定绘图RAM地址),最

多可以控制256x64点的二维绘图缓冲空间,在更改绘图RAM时,由扩充指令设定GDRAM地址先设垂直地址再设水平地址(连续写入两个字节的数据来完成垂直与水平的坐标地址),再写入两个8位的资料到绘图RAM,而地址计数器(AC)会自动加一,整个写入绘图RAM的步骤如下:

1).先将垂直的字节坐标(Y)写入绘图RAM地址。

2).再将水平的字节坐标(X)写入绘图RAM地址。

3).将D15~D8写入到RAM中(写入第一个Bytes)。

4).将D7~D0写入到RAM中(写入第二个Bytes)。

3硬件设计

3.1电路设计

图1电路设计图

3.2LCD液晶屏外形尺寸图及坐标图

图2液晶屏外形尺寸图

3.3功能模块设计

根据分析整个系统主要划分两个主模块,即:51控制模块和LCD显示模块,

以及51控制模块中的调用子程序模块,功能模块图如图2所示。

图4系统功能模块图

(1)51控制模块

该模块实现提供控制字,发送数据和命令。

(2)LCD显示模块

该模块实现将数据扫描成地图在LCD上显示出来。

(3)调用子程序模块

①MOV A,#34H:34H--扩充指令操作

LCALL SEND_I:写指令子程序,扩充指令操作

②MOV A,#30H:30H--基本指令操作

LCALL SEND_I:写指令子程序,基本指令操作

③MOV A,#80H

LCALL SEND_I:设定绘图RAM地址

④MOVC A,@A+DPTR

LCALL SEND_D:查表指令,调用数据

⑤MOV A,#01H

LCALL SEND_I:待命模式

⑥MOV DPTR,#TAB5:显示图形

LCALL PHO_DISP

⑦A,#34H

LCALL SEND_I:调用count的数值

⑧MOV A,LCD_Y

LCALL SEND_I:输出Y轴值

⑨MOV A,LCD_X

LCALL SEND_I:输出X轴值

4软件设计

4.1主程序流程图

图8主程序流程图

4.2LCD显示模块设计

图9LCD显示模块设计图

5调试分析

在设计本系统的过程中,LCD液晶屏上的汉字显示出现乱码和字体不对齐的现象,经过研究,发现一个汉字代表两个byte,所以在源程序中改正对齐,最后显示的结果符合要求。

6结论

经过这五周的努力,反复的调试与修改,最终顺利的完成了本次课设,任务书上所要求的效果也在实验箱上实现出来,并通过了老师的检查。本程序可以实现辽宁省地图的图形显示。但编写的程序还是有些许不足,比如在调用子程序上就略显冗余不够精炼,反映出自己在处理一些细节方面的基本功不够扎实,如果今后有机会一定要做到更好。

7总结

为期五周的课程设计结束了,经过不断的努力,在老师的主导帮助下,终于完成了《液晶屏显示辽宁省地图》这个课程设计。在此期间,我学到了很多新的东西,让我更丰富了自己,经过这些课设的锻炼,发现自己的不足,并开始有意识的去找寻未知,更积极的去探索自己不足的东西,使我更渴望了对新事物的研究与学习。通过查看相关的资料和书籍,反复对比与摘取,把最精髓的部分挑出来用在实验中,让此程序最接近课设的要求。每一次否定自己先前的选择都是一种进步,我会告诉自己总会有更合适的方法使其达到同样的效果。不满足的心态也是我此次试验的一大收获。虽然过程很艰难,程序的调试也是很枯燥的,但当实验的效果出来时,我非常的开心,觉得再多的付出也是值得的。

虽然编写的程序不是很完美,但我相信,通过今后的磨练,自己会做的一次比一次好。这次做论文的经历也会使我终身受益,我感受到做设计是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程,是对自己所有努力的一个交代,不得有半点马虎。我感觉通过这次试验,使我更加体会到了程序的魅力,我会更加严谨的对待每次难得的提高自己的机会,相信以后自己会做的更好。

;******************OCM4x8C串口******************

RS EQU P3.0;接收信号

STD EQU P3.1;读写指令

SCLK EQU P3.2;时钟信号

PSB EQU P3.3;行列选

RST EQU P3.5;复位

RS_STU EQU20H.0

LCD_X EQU30H

LCD_Y EQU31H

COUNT EQU34H

COUNT1EQU35H

COUNT2EQU36H

COUNT3EQU37H

LCD_DATA EQU38H

LCD_DATA1EQU39H

LCD_DATA2EQU3AH

DA_IN EQU3BH

WR_COUNT1EQU3CH

WR_COUNT2EQU3DH

;***********************************************

ORG0000H

LJMP MAIN

ORG0100H

MAIN:NOP

NOP

MOV SP,#5FH

SETB RST

CLR PSB

;********************初始化**********************

LGS0:MOV A,#34H;34H--扩充指令操作LCALL SEND_I;写指令子程序,扩充指令操作MOV A,#30H;30H--基本指令操作

LCALL SEND_I;写指令子程序,基本指令操作MOV A,#01H;清除显示

;***********************************************

LGS3:MOV A,#34H

LCALL SEND_I

MOV A,#30H

LCALL SEND_I

MOV DPTR,#TAB3;显示汉字和字符

MOV COUNT,#40H

MOV A,#80H

LCALL SEND_I;设定绘图RAM地址LGS31:CLR A

MOVC A,@A+DPTR

LCALL SEND_D

INC DPTR

DJNZ COUNT,LGS31

LCALL DELAY3

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

LGS4:MOV A,#01H

LCALL SEND_I;待命模式

LCALL DELAY2

LCALL DELAY2

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

LGS5:MOV DPTR,#TAB5;显示图形LCALL PHO_DISP

LCALL DELAY3

LCALL DELAY3

LJMP LGS5

;*********************************************** PHO_DISP:MOV COUNT3,#02H;全屏显示图形子程序MOV LCD_X,#80H

PHO_DISP1:MOV LCD_Y,#80H

MOV COUNT2,#20H

PHO_DISP2:MOV COUNT1,#10H

LCALL WR_ZB

PHO_DISP3:CLR A

MOVC A,@A+DPTR

LCALL SEND_D

INC DPTR

DJNZ COUNT1,PHO_DISP3

INC LCD_Y

DJNZ COUNT2,PHO_DISP2

MOV LCD_X,#88H

DJNZ COUNT3,PHO_DISP1

MOV A,#36H

LCALL SEND_I;调用count2的数值MOV A,#30H

LCALL SEND_I;X轴坐标数值

RET

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

CLRRAM:MOV LCD_DATA1,#00H;GDRAM写0子程序MOV LCD_DATA2,#00H

RET

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

WR_ZB:MOV A,#34H

LCALL SEND_I;调用count的数值MOV A,LCD_Y

LCALL SEND_I;输出Y轴值

MOV A,LCD_X

LCALL SEND_I;输出X轴值

MOV A,#30H

LCALL SEND_I;X轴坐标数值

RET

;*********************************************** SEND_D:SETB RS_STU;写数据子程序MOV DA_IN,A

LCALL SERIAL_WR

RET

SEND_I:CLR RS_STU;写指令子程序

MOV DA_IN,A

LCALL SERIAL_WR

RET

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;DA_IN:数据或指令

;RS_STU:数据指令选择

;WR_COUNT1:计数器1

;WR_COUNT2:计数器2

SERIAL_WR:PUSH ACC

MOV A,DA_IN

SETB CS

MOV WR_COUNT1,#05H

SETB STD;1

SERIAL_WR1:CLR SCLK

SETB SCLK

DJNZ WR_COUNT1,SERIAL_WR1

CLR STD;RW

CLR SCLK

SETB SCLK

JNB RS_STU,CLR_RS

SETB STD;写数据

SJMP SETB_RS

CLR_RS:CLR STD;写指令

SETB_RS:CLR SCLK

SETB SCLK

CLR STD;0

CLR SCLK

SETB SCLK

MOV WR_COUNT1,#02H

SERIAL_WR2:MOV WR_COUNT2,#04H

SERIAL_WR21:RLC A

MOV STD,C

CLR SCLK

SETB SCLK

DJNZ WR_COUNT2,SERIAL_WR21

MOV WR_COUNT2,#04H

CLR STD;0

SERIAL_WR22:CLR SCLK

SETB SCLK

DJNZ WR_COUNT2,SERIAL_WR22

DJNZ WR_COUNT1,SERIAL_WR2

CLR SCLK

CLR CS

LCALL DELAY2

POP ACC

RET

;*********************************************** DELAY3:MOV R5,#16H

DEL31:MOV R6,#0FFH

DEL32:MOV R7,#0FFH

DEL33:DJNZ R7,DEL33

DJNZ R6,DEL32

DJNZ R5,DEL31

RET

DELAY2:MOV R6,#06H

DEL21:MOV R7,#18H

DEL22:DJNZ R7,DEL22

DJNZ R6,DEL21

RET

;***********************************************

TAB3:DB'辽宁省地图'

DB''

DB''

DB''

TAB5:

DB00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00

DB00,00,00,00,00,00,00,00,00,00,3EH,00,00,00,00,00 DB00,00,00,00,00,00,00,00,00,00,23,80,00,00,00,00

DB00,00,00,00,00,00,00,00,00,00,0C0H,7EH,00,00,00,00 DB00,00,00,00,00,00,00,00,00,00,80,03,07,80,00,00

DB00,00,00,00,00,00,00,00,00,00,80,00,8CH,0C0H,00,00 DB00,00,00,00,00,00,00,00,00,00,80,00,0C8H,40,00,00 DB00,00,00,00,00,00,00,00,00,07,00,00,70,40,00,00

DB00,00,00,00,00,00,00,00,00,18,00,00,00,70,00,00

DB00,00,00,00,00,00,00,00,00,10,00,00,00,18,00,00

DB00,00,00,00,00,00,00,07,01,F0,00,00,00,06,00,00

DB00,00,00,00,00,00,00,06,0FEH,00,00,00,00,01,00,00 DB00,00,00,00,00,00,00,3EH,00,00,00,00,00,01,00,00 DB00,00,00,00,00,00,07,0E0H,00,00,00,00,00,00,0E0H,00 DB00,00,00,00,00,00,04,00,00,00,00,00,00,00,20,00

DB00,00,00,00,00,00,0FCH,00,00,00,00,00,00,00,1EH,00 DB00,00,00,00,00,0FH,80,00,00,00,00,00,00,00,04,00 DB00,00,00,00,00,10,00,00,00,00,00,00,00,00,18,00

DB00,00,00,00,00,60,00,00,00,00,00,00,00,00,10,00

DB00,1CH,00,00,0FH,80,00,00,00,00,00,00,00,00,08,00 DB00,74,00,00,30,00,00,00,00,00,00,00,00,00,08,00

DB00,83,0E0H,03,0C0H,00,00,00,00,00,10,00,00,00,07,00 DB00,0E0H,10,02,00,00,00,00,00,00,10,00,00,00,00,80 DB00,20,18,1EH,00,00,00,00,00,00,00,00,00,00,00,0C0H DB00,20,0CH,30,00,00,00,00,00,00,00,00,00,00,00,60 DB00,60,06,60,00,00,00,00,00,00,00,00,00,00,00,10

DB00,40,02,80,00,00,00,00,00,00,00,00,00,00,00,0EH DB00,20,01,80,00,00,00,00,00,00,00,00,00,00,00,02

DB00,20,00,00,00,00,00,00,00,00,00,00,00,00,00,02

DB00,30,00,00,00,00,00,00,00,00,00,00,00,00,00,06

DB00,08,00,00,00,00,00,00,00,00,00,00,00,00,00,0EH DB00,10,00,00,00,00,00,00,00,00,00,00,00,00,00,01

DB00,30,00,00,00,00,00,00,00,00,00,00,00,00,00,0EH DB00,40,00,00,00,00,00,00,00,00,00,00,00,00,00,10

基于单片机的液晶显示

滨江学院 学年论文 题目基于单片机的液晶显示 院系自动控制系 专业电气工程与自动化学生姓名 学号 指导教师 二零一三年十二月二十五号

目录 1.引言 (1) 2.现状 (1) 3.主要目的 (2) 4.实现方案和步骤 (2) 4.1 KS0108 (2) 4.1.1 KS0108特点 (2) 4.1.2 KS0108的引脚功能 (3) 4.1.3 KS0108的指令系统 (4) 4.2 图形点阵式液晶显示控制 (5) 4.3汉字编码原则 (8) 4.4程序实现流程 (9) 5.实验结果及结果讨论 (10) 6.结论 (11) 7.参考文献 (11) 8.附件 (12)

南京信息工程大学滨江学院学年论文 基于单片机的液晶显示 南京信息工程大学滨江学院自动控制系,南京 210044 摘要:本文围绕设计以单片机作为LCD液晶显示系统控制器为主线,基于单片机8051,采用的液晶显示控制器的芯片是SED1520,主要实现中文显示、滚屏以及左右移动功能。同时也对部分芯片和外围电路进行了介绍和设计,并附以系统结构框图加以说明,着重介绍了本系统应用的各硬件接口技术和各个接口模块的功能及工作过程,并详细阐述了程序的各个模块。 关键字:单片机、液晶显示、8051、SED1520 1、引言 单片机液晶显示系统主要是指单片机以及由单片机驱动的点阵式液晶显示屏所组成的一个显示系统[1]。我们在许多地方可以看到LCD显示屏的应用,例如空调,车内广告,冰箱和显示仪表盘等等,它们都是一个小型的单片机控制液晶显示系统。在日常生活中,我们也可以看到一些类似的由单片机控制的显示系统,如火车站售票大厅的候车信息显示屏,在这些屏幕上,可以显示各种不同的图形、汉字等,并且可以实现上下滚屏与左右移动等。这就是在现代工业控制和一些智能化仪器仪表中,越来越多的场所需要用点阵图形显示器显示汉字,需要能够显示更丰富信息和通用性较强的显示器,便于开发和应用,并要求其体积小、重量轻、功耗小。图形点阵式LCD不仅可以显示字符、数字,还可以显示各种图形、曲线及汉字,并且可以实现屏幕画面滚动等功能,是信息处理、信息输出的重要手段之一,具有广泛的应用前景[2]。我选择的单片机液晶显示系统的开发,是基于KS0108液晶显示控制器,在C8051F020单片机实验系统上实现KS0108是点阵型液晶显示控制器,利用单片机控制液晶显示系统的原理,完成单片机液晶显示系统的设计。 2、现状 液晶显示器具有功耗低、体积小、重量轻、超薄等许多其它显示器无法相比的优点。近年来被广泛用于单片机控制的智能仪器、仪表和低功耗电子产品当中。液晶显示器分为字符型LCD显示模块和点阵型LCD显示模块。字符型LCD是一种用5×7点阵图形来显示字符的

单片机之LCD显示原理

5.自制单片机之五LCD1602的驱动 LCD1602已很普遍了,具体介绍我就不多说了,市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,定义如下表所示: 字符型LCD的引脚定义 HD44780内置了DDRAM、CGROM和CGRAM。 DDRAM就是显示数据RAM,用来寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下表: 也就是说想要在LCD1602屏幕的第一行第一列显示一个"A"字,就要向DDRAM的00H地址写入“A”字的代码就行了。但具体的写入是要按LCD模块的指令格式来进行的,后面我会说到的。那么一行可有40个地址呀?是的,在1602中我们就用前16个就行了。第二行也一样用前16个地址。对应如下: DDRAM地址与显示位置的对应关系 我们知道文本文件中每一个字符都是用一个字节的代码记录的。一个汉字是用两个字节的代码记录。在PC上我们只要打开文本文件就能在屏幕上看到对应的字符是因为在操作系统里和BIOS里都固化有字符字模。什么是字模?就代表了是在点阵屏幕上点亮和熄灭的信息数据。例如“A” 字的字模: 01110 ○■■■○ 10001 ■○○○■ 10001 ■○○○■ 10001 ■○○○■ 11111 ■■■■■ 10001 ■○○○■

10001 ■○○○■ 上图左边的数据就是字模数据,右边就是将左边数据用“○”代表0,用“■”代表1。看出是个“A”字了吗?在文本文件中“A”字的代码是41H,PC收到41H的代码后就去字模文件中将代表A字的这一组数据送到显卡去点亮屏幕上相应的点,你就看到“A”这个字了。 刚才我说了想要在LCD1602屏幕的第一行第一列显示一个"A"字,就要向DDRAM的00H地址写入“A”字的代码41H就行了,可41H这一个字节的代码如何才能让LCD模块在屏幕的阵点上显示“A”字呢?同样,在LCD模块上也固化了字模存储器,这就是CGROM和CGRAM。 HD44780内置了192个常用字符的字模,存于字符产生器CGROM(Character Generator ROM)中,另外还有8个允许用户自定义的字符产生RAM,称为CGRAM(Character Generator RAM)。下图说明了CGROM和CGRAM与字符的对应关系。 从上图可以看出,“A”字的对应上面高位代码为0100,对应左边低位代码为0001,合起来就是01000001,也就是41H。可见它的代码与我们PC中的字符代码是基本一致的。因此我们在向DDRAM写C51字符代码程序时甚至可以直接用P1='A'这样的方法。PC在编译时就把“A”先转为41H代码了。 字符代码0x00~0x0F为用户自定义的字符图形RAM(对于5X8点阵的字符,可以存放8组,5X10点阵的字符,存放4组),就是CGRAM了。后面我会详细说的。 0x20~0x7F为标准的ASCII码,0xA0~0xFF为日文字符和希腊文字符,其余字符码(0x10~0x1F及0x80~0x9F)没有定义。 那么如何对DDRAM的内容和地址进行具体操作呢,下面先说说HD44780的指令集及其设置说明,请浏览该指令集,并找出对DDRAM的内容和地址进行操作的指令。 共11条指令: 1.清屏指令 功能:<1> 清除液晶显示器,即将DDRAM的内容全部填入"空白"的ASCII码20H; <2> 光标归位,即将光标撤回液晶显示屏的左上方; <3> 将地址计数器(AC)的值设为0。 2.光标归位指令 功能:<1> 把光标撤回到显示器的左上方; <2> 把地址计数器(AC)的值设置为0; <3> 保持DDRAM的内容不变。

单片机实验lcd显示实验

实验19 LCD显示实验 一、实验目的: 学习液晶显示的编程方法,了解液晶显示模块的工作原理。 掌握液晶显示模块与单片机的接口方法。 二、所需设备 CPU挂箱、8031CPU模块 三、实验内容 编程实现在液晶显示屏上显示中文汉字“北京理工达盛科技有限公司”。四、实验原理说明 五、实验步骤 1、实验连线 8255的PA0~PA7接DB0~DB7,PC7接BUSY,PC0接REQ,CS8255接CS0。 2、运行实验程序,观察液晶的显示状态。 六、程序框图 七、程序清单

八、附:点阵式LCD模块 点阵式LCD模块由一大一小两块液晶模块组成。两模块均由并行的数据接口和应答信号接口两部分组成,电源由接口总线提供。 (1)OCMJ2×8液晶模块介绍及使用说明 OCMJ中文模块系列液晶显示器内含 GB 2312 16*16点阵国标一级简体汉字和ASCII8*8(半高)及8*16(全高)点阵英文字库,用户输入区位码或 ASCII 码即可实现文本显示。 OCMJ中文模块系列液晶显示器也可用作一般的点阵图形显示器之用。提供有位点阵和字节点阵两种图形显示功能,用户可在指定的屏幕位置上以点为单位或以字节为单位进行图形显示。完全兼容一般的点阵模块。 OCMJ中文模块系列液晶显示器可以实现汉字、ASCII 码、点阵图形和变化曲线的同屏显示,并可通过字节点阵图形方式造字。 本系列模块具有上/下/左/右移动当前显示屏幕及清除屏幕的命令。一改传统的使用大量的设置命令进行初始化的方法,OCMJ 中文模块所有的设置初始化工作都是在上电时自动完成的,实现了“即插即用”。同时保留了一条专用的复位线供用户选择使用,可对工作中的模块进行软件或硬件强制复位。规划整齐的10个用户接口命令代码,非常容易记忆。标准用户硬件接口采用REQ/BUSY 握手协议,简单可靠。 1)表—1:OCMJ2X8(128X32)引脚说明 硬件接口 接口协议为请求/应答(REQ/BUSY)握手方式。应答BUSY 高电平(BUSY =1)表示 OCMJ 忙于内部处理,不能接收用户命令;BUSY 低电平(BUSY =0)表示 OCMJ 空闲,等待接收用户命令。发送命令到 OCMJ可在BUSY =0 后的任意时刻开始,先把用户命令的当前字节放到数据线上,接着发高电平REQ 信号(REQ =1)通知OCMJ请求处理当前数据线上的命令或数据。OCMJ模块在收到外部的REQ高电平信号后立即读取数据线上的命令或数据,同时将应答线BUSY变为高电平,表明模块已收到数据并正在忙于对此数据的内部处理,此时,用户对模块的写操作已经完成,用户可以撤消数据线上的信号并可作模块显示以外的其他工作,也可不断地查询应答线BUSY是否为低(BUSY =0?),如果BUSY =0,表明模块对用户的写操作已经执行完毕。可以再送下一个数据。如向模块发出一个完整的显示汉字的命令,包括坐标及汉字代码在内共需5个字节,模块在接收到最后一个字节后才开始执行整个命令的内

基于51单片机1602液晶显示简易计算器设计

#include #include #define uint unsigned int #define uchar unsigned char #define PI 3.141592 sbit RS = P2^0; sbit RW = P2^1; sbit EN = P2^2; sbit led=P2^4; sbit speek=P3^7; uchar table0[]={"Welcome to use"}; uchar table1[]={"made by Ms. Li"}; uchar table2[]={"error"}; uchar count; void main(void) { uchar error=0,i,first=0,dot1,dot2,dot1_num,dot2_num,minus1,minus2;//错误标志、第一次清屏标志、小数点标志以及小数点个数负号标志、负号个数 uchar Sin,Cos,Tan,ln; uchar Key_num,last_key_num; //键号 uchar flag=0,equal_flag; //运算符、等于符 double num1=0,num2=0,num=0,result=0,save_result; //第一个数、第二个数、计算结果

uchar first_num=0,Ans=0,second_num=0; InitLcd(); EA=1; ET0=1; TMOD=0X01; TH0=(65536-500)/256; TL0=(65536-500)%256; write_com(0x80+0x40+15); write_Dat('0'); write_com(0x80); while(1) { while(key_scan()==0xff); TR0=1; if(first==0) { first=1; write_com(0x01); } Key_num=key_scan(); switch(key_scan()) { case 1: if(last_key_num!=Key_num) { write_Dat('l'); write_Dat('n'); ln=1; }break; case 2: if(last_key_num!=Key_num) { write_Dat('s'); write_Dat('i'); write_Dat('n'); Sin=1; }break; case 3: if(last_key_num!=Key_num) { write_Dat('c'); write_Dat('o'); write_Dat('s'); Cos=1;

根据C51单片机的键盘及LCD显示

基于C51单片机的键盘及LCD显示 一、实验目的 1.掌握矩阵式键盘的数字键和功能键的编程方法。 2.掌握LCD的接口技术和编程方法。 3.掌握仪器监控程序设计和调试方法。 二、预习与参考 1. 结合ST7920 控制器系列中文图形液晶模块有关资料手册,详细了解ST7920接口设计技术。 2. 参考资料 1)实验板说明书 2)ST7920 控制器系列中文图形液晶模块资料手册 三、设计指标 利用实验板上提供的键盘电路,LCD显示电路,设计一人机界面,能实现以下功能: 1.LCD上显示“重庆科技学院” 2.按键至少包括0-9的数字键 3.LCD显示按键值 4.电子钟显示:时,分,秒(选作) 四、实验要求 1.以单片机为核心,设计4*4非编码键盘及LCD的硬件电路,画出电路原理图。 2.设计4*4非编码键盘及LCD的控制软件,画出流程图,编写控制程序。

五、实验仪器设备和材料清单 单片机实验板、连接导线、ST7920图形液晶模块、PC机; Keil c51软件 六、实验设计及实施的指导 1.实验课前布置实验任务,提出实验要求,预习相关资料,完成硬件草图设计和软件流程图备查。 2.经指导教师检查,预习达到要求者进入实验室实验。 3.按照设计的电路连线,构建键盘及显示系统,经检查无误方可进入下一步。 4.在指导教师指导下调试LCD显示程序。 5.在指导教师指导下调试按键程序。 6.综合调试直到满足设计要求。 七、实验成绩评定方法 实验成绩包括预习、实验完成质量、实验报告质量4部分组成,各部分所占比例分别为30%、30%、40%。 八、实验报告要求 1.实验报告格式: 一.实验名称 二.实验目的 三.实验内容 四.设计思想 五.硬件设计 六.程序代码

基于51单片机的LCD1602显示程序模块

这个是我自己编写的基于51单片机控制lcd602显示的库函数,请下载我的头文件,在网上本人还分享了很多热门模块的库函数,都是现成的,欢迎下载!!!! /************************************************************************ 1,先初始化1602:lcd_init(); 2,调整显示位置:lcd_pos(hang,lie); 3,送显示:lcd_wdat(uchar dat);显示字符 lcd_show(uchar dis[]);显示字符串 4,清屏为:lcd_wcmd(0x01); //清除lcd内容 delay12_ms(2); 注: 显示的时候必须传送对应的ASK码 显示字符串的时候如果超过本行显示范围不会自动跳到第二行占用了P0和P25,P26,P27 同时包含delay.c文件必须 ************************************************************************/ #include "myconfig.h" #include "delay.h" #define LCD_RS P26 //1602的命令和数据选择端 #define LCD_RW P25 //1602的读写控制端 #define LCD_EP P27 //1602是能信号 #define LCD_DATE P0 //1602的数据传输或命令端口 /****************(外部不操作)测忙程序************************/ uchar lcd_bz() { uchar result; LCD_RS =0; LCD_RW =1; LCD_EP =1; _nop_(); _nop_(); _nop_(); _nop_(); result =(P0 &0x80); LCD_EP =0; return result;//返回结果,1为忙,0位空闲 } /****************(外部不操作)写命令函数************************/ void lcd_wcmd(int cmd) { while(lcd_bz()); LCD_RS =0; LCD_RW =0;

基于单片机的电子时钟设计报告(LCD显示)

单片机原理及应用课程设计任务书 题目:电子时钟(LCD显示) 1、设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间: 使用字符型LCD显示器显示当前时间。显示格式为“时时:分分:秒秒”。用3个功能键操作来设置当前时间。功能键K1~K4功能下。 K1—设置小时。 K2—设置分钟。 K3—设置秒。 程序执行后工作指示灯LED发光,表示程序开始执行,LCD显示“23:59:00”,然后开始计时。 2、工作原理 本课题难点在于键盘的指令输入,由于每个按键都具有相应的一种功能,程序中有较多的循环结构用以判断按键是否按下,以及判断按键是否抬起,以及LCD显示器的初始化。 3、参考电路 硬件设计电路图如下图所示: 硬件电路原理图 单片机原理及应用课程设计任务书

题目:电子时钟(LCD显示) 1、设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间: 使用字符型LCD显示器显示当前时间。显示格式为“时时:分分:秒秒”。用3个功能键操作来设置当前时间。功能键K1~K4功能下。 K1—设置小时。 K2—设置分钟。 K3—设置秒。 程序执行后工作指示灯LED发光,表示程序开始执行,LCD显示“23:59:00”,然后开始计时。 2、工作原理 本课题难点在于键盘的指令输入,由于每个按键都具有相应的一种功能,程序中有较多的循环结构用以判断按键是否按下,以及判断按键是否抬起,以及LCD显示器的初始化。 3、参考电路 硬件设计电路图如下图所示: 硬件电路原理图 基于AT89C51单片机的电子时钟设计报告

一、设计要求与目的 1)设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间。 2)、使用字符型LCD显示器显示当前时间。显示格式为“时时:分分:秒秒”。3)、用3个功能键操作来设置当前时间。 4)、熟悉掌握proteus编成软件以及keil软件的使用 二、本设计原理 本设计以AT89C51单片机为核心,通过时钟程序的编写,并在LCD显示器上显示出来。该编程的核心在于定时器中断及循环往复判断是否有按键操作,并对每个按键的操作在LCD显示器上作出相应的反应。由于LCD显示器每八位对应一个字符,故把秒、分、时的个位和十位分开表示。 该课题中有三个控制开关KM1、KM2、KM3分别控制时、分、秒的调整,时间按递增的方式调整,每点一次按钮则相应的时间个位加以,且时间调整不干扰其他为调整时间的显示。 三、硬件设计原理(电路) 硬件电路原理图

单片机实验LCD显示实验

实验19L C D显示实验 一、实验目的: 学习液晶显示的编程方法,了解液晶显示模块的工作原理。 掌握液晶显示模块与单片机的接口方法。 二、所需设备 CPU挂箱、8031CPU模块 三、实验内容 编程实现在液晶显示屏上显示中文汉字“北京理工达盛科技有限公司”。 四、实验原理说明 五、实验步骤 1、实验连线 8255的PA0~PA7接DB0~DB7,PC7接BUSY,PC0接REQ,CS8255接 CS0。 2、运行实验程序,观察液晶的显示状态。 六、程序框图 八、附:点阵式LCD 模块 点阵式LCD模块 由一大一小两块液晶 模块组成。两模块均 由并行的数据接口和 应答信号接口两部分 组成,电源由接口总 线提供。 (1)OCMJ2×8液晶 模块介绍及使 用说明 OCMJ中文模块系列液晶显示器内含 GB 2312 16*16点阵国标一级简体汉字和 ASCII8*8(半高)及8*16(全高)点阵英文字库,用户输入区位码或 ASCII 码即可实现文本显示。 OCMJ中文模块系列液晶显示器也可用作一般的点阵图形显示器之用。

提供有位点阵和字节点阵两种图形显示功能,用户可在指定的屏幕位置上以点为单位或以字节为单位进行图形显示。完全兼容一般的点阵模块。 OCMJ中文模块系列液晶显示器可以实现汉字、ASCII 码、点阵图形和变化曲线的同屏显示,并可通过字节点阵图形方式造字。 本系列模块具有上/下/左/右移动当前显示屏幕及清除屏幕的命令。一改传统的使用大量的设置命令进行初始化的方法,OCMJ 中文模块所有的设置初始化工作都是在上电时自动完成的,实现了“即插即用”。同时保留了一条专用的复位线供用户选择使用,可对工作中的模块进行软件或硬件强制复位。规划整齐的10个用户接口命令代码,非常容易记忆。标准用户硬件接口采用REQ/BUSY 握手协议,简单可靠。 硬件接口 接口协议为请求/应答(REQ/BUSY)握手方式。应答BUSY 高电平(BUSY =1)表示 OCMJ 忙于内部处理,不能接收用户命令;BUSY 低电平(BUSY =0)表示 OCMJ 空闲,等待接收用户命令。发送命令到 OCMJ可在BUSY =0 后的任意时刻开始,先把用户命令的当前字节放到数据线上,接着发高电平REQ 信号(REQ =1)通知OCMJ请求处理当前数据线上的命令或数据。OCMJ模块在收到外部的REQ高电平信号后立即读取数据线上的命令或数据,同时将应答线BUSY变为高电平,表明模块已收到数据并正在忙于对此数据的内部处理,此时,用户对模块的写操作已经完成,用户可以撤消数据线上的信号并可作模块显示以外的其他工作,也可不断地查询应答线BUSY是否为低(BUSY =0?),如果BUSY =0,表明模块对用户的写操作已经执行完毕。可以再送下一个数据。如向模块发出一个完整的显示汉字的命令,包括坐标及汉字代码在内共需5个字节,模块在接收到最后一个字节后才开始执行整个命令的内部操作,因此,最后一个字节的应答BUSY 高电平(BUSY =1)持续时间较长,具体的时序图和时间参数说明查阅相关手册。

实验八单片机液晶显示实验

实验八单片机液晶显示实验 一、实验目的 1、了解液晶显示屏的控制原理及方法。 2、了解点阵汉字的显示原理。 二、实验说明 1、利用实验上的液晶显示屏电路,编写程序控制显示,输出汉字。 2、本实验仪采用的液晶显示屏内置控制器为SED1520,点阵为122x32,需要两片SED1520组成,由E1、E2分别选通,以控制显示屏的左右两半屏。图形液晶显示模块有两 种连接方式。一种为直接访问方式,一种为间接控制方式。本实验仪采用直接控制方式。 三、实验仪器 计算机 伟福实验箱(lab2000P ) 四、实验内容 1、利用实验上的液晶显示屏电路,编写程序控制显示,输出汉字。 2、本实验仪采用的液晶显示屏内置控制器为SED1520,点阵为122x32,需要两片SED1520组成,由E1、E2分别选通,以控制显示屏的左右两半屏。图形液晶显示模块有两 种连接方式。一种为直接访问方式,一种为间接控制方式。本实验仪采用直接控制方式。 3、直接控制方式就是将液晶显示模块的接口作为存储器或I/O设备直接挂在计算机总线上。计算机通过地址译码控制E1和E2的选通;读/写操作信号R/W由地址线A1控制;命令/数据寄存器选择信号AO由地址线A0控制。实际电路如上图所示。地址映射 如下(地址中的X由LCD CS决定,可参见地址译码部分说明) 五、思考题 1、显示自己的班级和姓名; 2、可以动态显示,上下或者左右移动; 六、源程序修改原理及其仿真结果 CWADD1 EQU 08000H ;写指令代码地址(E1) DWADD1 EQU 08001H ;写显示数据地址(E1) CRADD1 EQU 08002H ;读状态字地址(E1) DRADD1 EQU 08003H ;读显示数据地址(E1) CWADD2 EQU 08004H ;写指令代码地址(E2) DWADD2 EQU 08005H ;写显示数进地址(E2) CRADD2 EQU 08006H ;读状态字地址(E2) DRADD2 EQU 08007H ;读显示数据地址(E2) PD1 EQU 3DH ;122/2 分成左右两半屏122x32 COLUMN EQU 30H PAGE_ EQU 31H ;页地址寄存器D1,DO:页地址 CODE_ EQU 32H ;字符代码寄存器 COUNT EQU 33H ;计数器 DIR equ 34h dtp1 equ 35h

基于51单片机的液晶显示屏控制系统设计

基于51单片机的液晶显示屏控制系统设计 1 概述 1.1系统背景 液晶显示器件在中国已有二十余年的发展历史。二十余年来,液晶显示器件从实验室走向大规模生产集团,形成了独立的产业部门。现在,液晶显示几乎已经应用于生产,生活的各个领域,人们几乎时时处处都要与这一神奇而又普通的面孔打交道。 液晶显示是集单片机技术、微电子技术、信息处理于一体的新型显示方式。由于液晶显示器具有低压低功耗,显示信息量大易于彩色化,无电磁辐射,长寿命,无污染等特点。LCD是目前显示产业中发展速度最快,市场应用最广的显示器件,成为众多显示媒体中的佼佼者,在越来越多的领域中发挥作用,是目前显示器件中一个理想的选择。 LCD在监控系统中的应用:目前大多数监控系统自带的显示系统为LED数码管显示,这样显示效果比较单一,只能显示监控系统的测量值。而LCD液晶显示器不仅可以显示数值、汉字等,并且可以显示文本和图形。利用LCD和键盘实现人机交互,使监控系统独立工作成为可能。通过监控系统对现场的单回路控制器进行参数设置,对各个单回路控制器的工作进行监控。 LCD在时钟中的应用:在日常生活中我们会经常看到时间的显示,这些显示大都是采用液晶显示器来显示的,而对其中的汉字无法用显示来解决。我们利用LCD液晶模块制成的小屏幕实现了时间的显示,显示格式为“时时:分分:秒秒”。另外,可以增加闹钟功能,时间到了则产生音乐声;还可以增加万年历显示“年月日”等多项功能。 LCD在大屏幕显示中的应用:大屏幕显示的应用范围极广,随着社会发展,公众生活的加强,人们对能够面向广大公众传递信息的显示装置越来越感到必需。使用液晶投影显示大屏幕,不仅有投影仪,指挥用大屏幕,还有液晶投影彩色电视。它可以用一个体积很小的系统装置,实现100英寸以上的非常漂亮的大屏幕电视显示。它与传统的显示媒体相比,具有分辨率极高,透过性好,显示内容丰富,彩色易于控制等优点。 随着计算机技术及电子通信技术的发展,LCD显示屏作为一种新的传媒工具,现已经应用到商业、军事、车站、宾馆、体育、新闻、金融、证券、广告以及交通运输等许多行业,大到几十平方米的大屏幕,小到家庭影院用的图文显示屏,以及政府部门应用的电子黑板,证券、银行等部门用的信息数字混合屏。LCD显示屏带来广泛的社会效益和经济效益,具有良好的发展前景。

单片机LED点阵显示方法与程序代码

单片机LED点阵显示方法与程序代码 点阵的接法有共阴和共阳两种(共阳指的是对每一行LED来讲是共阳)。 由于51单片机驱动能力有限,亮度不够,所以一般需要三极管驱动,下图为一个8X8点阵原理图,仅仅是仿真,如果需要接实物的话,加上三极管才足够亮。 显示的方法有两种: 1、逐列扫描方式。如下图所示,P1口输出列码决定哪一列能亮(相当于位码),P2口输出行码(列数据)决定列上哪些LED亮(相当于段码),能亮的列从左向右扫描完8列(相当于位码循环移位8次)即显示出一帧完整的图像。 2、逐行扫描方式,与逐列扫描调换,即P2口输出位码,P1口输出段码,扫描完8行显示出一帧图像。 以逐行扫描为例,从上图可以很明了的知道点阵的显示原理了(红色表示高电平,绿色表示低电平),当把扫描速度加快,人的视觉停留,看见的就是一幅图或一个字了,如下图所示。

一、行扫描静态显示, 用51单片机实现上图静态显示的程序如下: #include #define uchar unsigned char #define uint unsigned int uchar code TAB[]={0x81,0xFD,0xFD,0xC1,0xBF,0xBF,0xBD,0xC3}; uchar i,t; delay(uchar t) { while (t--) {;} } void main(void) { while(1) { P2=0x01; for(i=0;i<8;i++) { P1=TAB; delay(100); P2=P2<<1|P2>>7; } } } 二、行扫描翻页显示 字码取模方式为逐行 第一次从字码数组中取出第1~8个数据置于列上,行扫描顺序为1~8行,显示一帧,第二次取第9~16个数据,行扫描顺序仍为1~8行,显示第二帧,第三次取第17~24个数据,…… 实现图显示效果的程序如下:

基于单片机的多功能液晶显示数字时钟设计

基于单片机的多功能液晶显示数字时钟设计 摘要 计算机的产生加快了人类改造世界的步伐,但是它毕竟体积大。单片机在这种情况下诞生了。截止今日,单片机应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机。 单片计算机即单片微型计算机。是集CPU,RAM,ROM,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。而51系列单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。 本文通过对一个基于单片机的能实现定时,秒表,闹钟等功能的多功能电子时钟的设计学习,详细介绍了单片机应用中的数据转换显示,液晶显示原理,键盘扫描原理。从而达到学习、了解单片机相关指令在各方面的应用。系统由AT89C51、温度检测芯片、时钟芯片、液晶显示器等部分构成,能实现时钟日历显示的功能,能进行时、分、秒的显示和实时温度显示。也具有时钟、日历的校准,定时时间的设定和闹铃等功能。文章后附有电路原理图、PCB板图和程序清单,以供读者参考。因水平有限,难免有疏落不足之处,敬请老师和同学能给与批评指正。 关键字:AT89C51 定时秒表闹钟

Designs of LCD digital clock based on MCS-51 Abstract Computers have accelerated the transformation of the world's human pace, but it is after all bulky. SCM in this case was born. As of today, SCM application rapid development of technology, looking around us now in all spheres of life, from missiles, navigation equipment, to the various instruments on the aircraft control from a computer network communications and data transmission, industrial automation to real-time process control and data processing, and our lives extensive use of the smart card, electronic pets, which is inseparable from the microcontroller. Monolithic single-chip micro-computer or computer. That is the set of CPU, RAM, ROM, the timing, number and variety of interface integrated microcontrollers. Its small size, low cost, high performance, which are widely used in smart industries, and industrial automation. And 51 Series SCM SCM is the most typical and the most representative one. The graduation design Through the study, and thereby achieve the study, design, development hardware and software capabilities. Based on a microcontroller based on the will to achieve timing, stopwatch, alarm clocks, and other functions of a multi-functional electronic clock design study, in detail, the computer application of data conversion, Principle LCD, keyboard scanning principle. Thereby achieve studying and understanding the relevant directives SCM in all aspects of the application. By AT89C51 system, temperature detection chip, the clock chips, liquid crystal displays of components, to achieve clock calendar display function can be carried out, hours seconds of the show and real-time temperature display. Also calculated with the calendar and clock, calendar calibration, regular hours and set the alarm function. The article attached circuit diagram, the PCB plans and procedures checklist for the reference of our readers. Due to limited, and it will inevitably be lighter inadequate, locations will give teachers and students correction and criticism. Key words: AT89C51; timing; stopwatch; alarm clocks

单片机电子时钟LCD显示

单片机电子时钟L C D 显示 Pleasure Group Office【T985AB-B866SYT-B182C-BS682T-STT18】

单片机综合实验报告 题目:电子时钟(LCD)显示 班级: 0310405班 学号: 学生姓名:张金龙 指导老师:高林 2013年 6 月 17 日 一、实验内容: 以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间: ●使用字符型LCD显示器显示当前时间。 ●显示格式为“时时:分分:秒秒”。 ●用4个功能键操作来设置当前时间,4个功能键接在~引脚上。 功能键K1~K4功能如下。 ●K1—进入设置现在的时间。 ●K2—设置小时。 ●K3—设置分钟。 ●K4—确认完成设置。 程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:00:00”,然后开始计时。

二、实验电路及功能说明 1)单片机主控制模块 以AT89C51单片机为核心进行一系列控制。 2)时钟显示模块 用1602为LCD显示模块,把对应的引脚和最小系统上的引脚相连,连接后用 初始化程序对其进行简单的功能测试。测试成功后即可为实验所用,如图: 3)时间调整电路 用4个功能键操作来设置当前时间,4个功能键接在~引脚上。功能键K1~ K4功能如下。K1—进入设置现在的时间。K2—设置小时。K3—设置分钟。 K4—确认完成设置。如图: 三、实验程序流程图: 主程序: 时钟主程序流程 子程序:

四、实验结果分析

实验结果及分析:单片机的晶振可以根据要求设定。6MHZ为和现实时间显示相同。实验采用12MHZ晶振采用方式1定时,选取50ms采用20次中断达到一秒,采用查表方式控制LCD显示。当烧入程序后开始运行,根据初始值设定可以观察到显示的时间,这里为了更明显观察显示数据变化把起始值设为 23:59:50 运行后显示 ,K1为进入现在设置时间,当按下K1后显示 ,和实验要求相比较,实现了按下K1进入现在时间设置,按下K4确认完成时间设置的功能;不同之处: 当进入时间设置时在按下K1设置小时,再次按下K1是设置分钟。增加功能:进入时间设置并选择设置位置后K2键位数字增加功能,K3键为数字减小功能。根据仿真结果能够确定编程正确,基本实现了所有功能,而且有所改进。 五、心得体会 每次做单片机实验都会有不同的等收获,而这次的实验让我感觉收获更大。这次的实验让我巩固了以往所学,而且锻炼了自己发现问题解决问题的能力。在编程过程,发现自己对C语言很生疏,很多 技巧和函数运用都不会,通过参考资料和询问同学终于让我完成了程序,并实现了程序的功能。这不仅提高了自己动手能力,也培养了自己的思考能力。 这次在编程过程中学到了很多新东西,特别是LCD的显示,在设定的显示字符后,正确编译后显示各种设定值,LCD显示16位字 符,在最初编程时编译正确但是LCD上的显示字符有缺失,显示不 完整,经过不断调试发现空格同样占据字符,只有所有字符不超过 16位且位置正确时才能完整正确显示。时间的显示需要每一个显示 的位子有定义,而且要给“:”留下特定位子。同时编程时发现还可以显示其他如日期。但本实验不需要且很难完成最终没实现。

51单片机控制1602LCD显示程序

LCD显示电路 #include sbit RS=P3^7; //寄存器选择位,将RS位定义为P2.0引脚 sbit RW=P3^6; //读写选择位,将RW位定义为P2.1引脚 sbit E=P2^7; //使能信号位,将E位定义为P2.2引脚 sbit BF=P0^7; //忙碌标志位,将BF位定义为P0.7引脚 #define Lcd_Data P0 #include #include //包含_nop_()函数定义的头文件 unsigned char code string1[ ]= {0x77,0x75,0x20,0x79,0x61,0x6E,0x67,0x20,0x79,0x61,0x6E,0x67,0x20,0x20,0x20,0x20}; //第一行显示的字符 void Lcd_delay1ms() // 函数功能:延时1ms //注:不同单片机不同晶振需要对此函数进行修改 { unsigned char i,j; for(i=0;i<90;i++) for(j=0;j<33;j++); } void Lcd_delay(unsigned int n) // 函数功能:延时若干毫秒,入口参数:n { unsigned int i; for(i=0;i

/***************************************************** 函数功能:判断液晶模块的忙碌状态 返回值:result。result=1,忙碌;result=0,不忙 ***************************************************/ bit Lcd_BusyTest(void) { bit result; RS=0; //根据规定,RS为低电平,RW为高电平时,可以读状态 RW=1; E=1; //E=1,才允许读写 _nop_(); //空操作 _nop_(); _nop_(); _nop_(); //空操作四个机器周期,给硬件反应时间 result=BF; //将忙碌标志电平赋给result E=0; return result; } /***************************************************** 函数功能:将模式设置指令或显示地址写入液晶模块 入口参数:dictate ***************************************************/ void Lcd_WriteCom (unsigned char dictate) { while(Lcd_BusyTest()==1); //如果忙就等待 RS=0; //根据规定,RS和R/W同时为低电平时,可以写入指令RW=0; E=0; //E置低电平(写指令时就是让E从0到1发生正跳变,所以应先置"0" _nop_(); _nop_(); //空操作两个机器周期,给硬件反应时间 Lcd_Data=dictate; //将数据送入P0口,即写入指令或地址 _nop_(); _nop_(); _nop_(); _nop_(); //空操作四个机器周期,给硬件反应时间 E=1; //E置高电平 _nop_(); _nop_(); _nop_(); _nop_(); //空操作四个机器周期,给硬件反应时间 E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令} /***************************************************** 函数功能:指定字符显示的实际地址 入口参数:x

LCD与单片机的连接电路图和LCD显示程序

LCD与单片机的连接电路图和LCD显示程序/LCD测试程序 3.2.5 LCD显示电路 液晶显示器简称LCD显示器,它是利用液晶经过处理后能改变光线的传输方向的特性来显示信息的。要使用点阵型LCD显示器,必须有相应的LCD控制器、驱动器来对LCD显示器进行扫描、驱动,以及一定空间的ROM和RAM来存储写入的命令和显示字符的点阵。现在往往将LCD控制器、驱动器、RAM、ROM和LCD显示器连接在一起,称为液晶显示模块。 液晶显示模块是一种常见的人机界面,在单片机系统中的应用极其广泛。液晶显示模块既可以显示字符,又可以显示简单的图形。本系统采用的是1602的LCD接口。1602是一种点阵字符型液晶显示模块,可以显示两行共32个字符。根据LCD型号的不同,所需要的背光电阻大小会不同,可自行调节。 本系统采用的LCD为RT-1602C,其主要引脚的功能如下: RS:数据/命令选择端,高电平时选择数据寄存器,低电平时选择指令寄存器。 RW:读/写选择端,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时,可以写入指令或者显示地址;当RS为低电平、RW为高电平时,可以读忙信号;当RS 为高电平、RW为低电平时,可以写入数据。 E:使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 图3-9 LCD显示电路 LCD测试程序 #include <> /********IO引脚定义***********************************************************/ sbit LCD_RS=P2^7;//定义引脚 sbit LCD_RW=P2^6; sbit LCD_E=P2^5; /********宏定义***********************************************************/ #define LCD_Data P0 #define Busy 0x80 //用于检测LCD状态字中的Busy标识 /********数据定义*************************************************************/ unsigned char code uctech[] = {"Happy every day"}; unsigned char code net[] = {""};

相关文档
最新文档