❶ 显示器接口VGA.DVI.HDIM有什么不一样
目前在高清设备中,主要的接口有DVI、HDMI、VGA接口,其中VGA传输的是模拟视频信号,DVI传播的是数字视频信号,HDMI可以同时传输数字视频信号和数字音频信号。在现在的计算机和电视等设备中,我们经常可以看到这三种接口,很多用户存在疑问,这三种接口之间有什么区别呢?
DVI接口是在1999年推出的接口标准。DVI接口的传输信号采用全数字格式。DVI接口有多种规格,DVI一共分为5种标准。其中DVI-D和DVI-I分为“双通道”和“单通道”两种类型。
DVI-A是一种模拟传输标准,晚期的大屏幕专业CRT中能看见。不过由于和VGA没有本质区别,性能也不高,因此DVI-A事实上已经被废弃了。至于DFP接口,这是一种已经被废弃的。18+5和24+5这种规格都属于DVI-I,多出来得4根线用于兼容传统VGA模拟信号。DVI双通道接口可支持不同的刷新率以及更高的分辨率,单通道的接口刷新率之固定在60Hz。
(18+1)
(24+1)
(24+5)
DVI-I 18+5(单通道) 支持最大分辨率1920*1200 60Hz
DVI-I 24+5(双通道) 支持最大分辨率2560*1600 60Hz 1920*1200 120Hz
DVI-D 18+1(单通道) 支持最大分辨率1920*1200 60Hz
DVI-D 24+1(单通道) 支持最大分辨率2560*1600 60Hz 1920*1200 120Hz
VGA接口应用范围非常广泛,是三种接口中最先推出的标准,VGA接口,也叫D-Sub接口。虽然液晶显示器可以直接接收数字信号,但很多低端产品为了与VGA接口显卡相匹配,因而采用VGA接口。VGA接口是一种D型接口,上面共有15针空,分成三排,每排五个。VGA接口是显卡上应用最为广泛的接口类型,绝大多数的显卡都带有此种接口。
HDMI,常被称作高清晰度多媒体接口,是终结以往影音分离传输的全新接口,其最大传输速度可达5Gb/s,除影像数据外,更可同时传输高达8声道的音讯信号。这种非压缩式的数字数据传输,可有效降低数/类转换所造成的信号干扰与衰减。HDMI是首个支持在单线缆上传输,不经过压缩的全数字高清晰度、多声道音频和智能格式与控制命令数据的数字接口。HDMI源于DVI接口技术,它们主要是以美国晶像公司的TMDS信号传输技术为核心,这也就是为何HDMI接口和DVI接口能够通过转接头相互转换的原因。
VGA和DVI的区别:
VGA模拟信号的传输比较麻烦,首先是将电脑内的数字信号转换为模拟信号,将信号发送到LCD显示器,由显示器再将该模拟信号转换为数字信号,形成画面展示在大家面前。正因为如此,中间的信号丢失严重,虽然可以通过软件的方法修复部分画面,但是随着显示器的分辨率越高画面就会越模糊。一般模拟信号在超过1280×1024分辨率以上的情况下就会出现明显的误差,分辨率越高越严重。但DVI接口考虑的对象是PC,对于笔记本、平板电视的兼容能力一般。
另外DVI接口出于兼容性考虑,预留了不少引脚以支持模拟设备,造成接口体积较大,效率很低
DVI与HDMI区别
1、新增了对新型无损压缩数字音频格式Dolby TrueHD和DTS-HD Master Audio的支持。
2、更高的刷新率:在同样1920x1080分辨率的模式下,HDMI1.3提供165Hz刷新率比双通道DVI接口的120Hz刷新率更高。
3、以太网络通道:HDMI规格1.4在缆线中增加了数据通路, 来达成双向高速的传送。有此功能的设备在连结后,将可用以太线100Mb/秒的速度发送和接收数据, 并使这些设备立即成为IP基础的设备。HDMI以太网络通道可让集成互联网功能的HDMI设备,无需使用其他以太网络线缆,即可与其他HDMI设备共享其互联网连线。此一新功能同时也提供HDMI设备间共享内容所需的互连架构。
4、更高的分辨率:支持3840×2160 24Hz/25Hz/30Hz;4096×2160 24Hz分辨率。新规格支持4096×2160分辨率,使得HDMI界面得以用许多数字影院所采用的同等标准分辨率的内容传输。而双通道DVI接口只能支持到2560x1600分辨率。
VGA与HDMI区别
HDMI除以上的特点和是数字信号传输外,标准HDMI接口大小(宽约14MM,高约4.5MM)比VGA(宽:16MM,高约:7.9MM)更省空间,但HDMI线材制造价格更高。
❷ DOS 打开显示器什么命令
dos命令
dos下各种常见命令索引
▲ dir
▲ attrib
▲ cd
▲
▲ x
▲ del
▲ undelete
▲ deltree
▲ dos=high
▲ doskey
▲ emm386.exe
▲ fc
▲ format
▲ unformat
▲ interlnk
▲ intersvr
▲ memmaker
▲ memitem等
▲ mscdex
▲ msd
▲ prompt
▲ ramdrive
▲ subst
▲ mem
▲ "> < >> <<"工具
▲ move
▲ append
▲ call
▲ defrag
▲ device
一、DIR 命令的格式:
dir [D:][PATH][NAME][[/A][:attrib]][/o:[sorted][/s][/b][/l][/c[h]
(1)dir /a:attrib 缺省包含所有文件(系统文件.隐含文件)
attrib[:][h/-h]只显示隐含文件或非隐含文件.
[r/-r]只显示只读文件或非只读文件
[s/-s]只显示系统文件或非系统文件
[a/-a]只显示要归档文件或非归档文件
(2)/o[:]sorted:缺省完全按字母顺序,子目录显示在文件之前
/o[n/-n]:按字母顺序或按文件名顺序/反向显示
[e/-e]:按扩展名字母顺序/反向显示
[d/-d]:按时间顺序/反向显示
[s/-s]:按大小从大到小或/反向显示
[g/-g]:按子目录先于文件或文件先于子目录
(3)/s 参数:对当前目录及其子目录中所有文件进行列表
列名:dir /s/a/o:n c:\>PRN
将c盘上的所有子目录和文件按隶属关系并根据子目录和文件字母顺序打印输出
(4)/B 参数:将只显示文件名与扩展名
(5)/L 参数:将全部用小写字母对文件或子目录进行列表
训练:
dir /a 列当前目录所有文件(含隐含及系统文件)
dir /ah 列隐含文件(包含子目录(隐含的) dir /a-h
dir /as 列系统文件 dir /a-s
dir /ad 列子目录 dir /a-d
dir /o 按字母顺序
dir /B 只显示文件名与扩展名
二、attrib [+r|-r] [+a|-a] [+s|-s] [+h|-h] [d: ] [name] [/s]
缺省 attrib name 显示文件的(文件)属性
attrib io.sys (或子目录)
shr c:\ io.sys 指定为系统(s) 隐含(h) 只读(r)文件
也可以attrib *.sys 显示扩展名为sys的文件属性
参数 [+r|-r] 将文件属性设置或解除 只读属性
[+a|-a] 将文件属性设置或解除 归档属性
[+h|-h] 将文件属性设置或解除 隐含属性 (尤其对子目录也起作用)
/s 参数 将当前及当前子目录下的所有文件均起作用
可以用来查找文件
例子:
attrib news86 列news86的文档属性
attrib +r report.txt 设置为只读 attrib -s -h record.txt
attrib +a a:*.*
attrib -a a:*.bak
x a: b: /a 将A盘上的所有标志为"归档"属性的文件拷到B盘
x a: b: /m 将A盘上的所有文件拷到B盘后并移去归档属性
三、cd 介绍: cd...返回上二级目录 "."代表当前目录 "."代表父目录
cd ..\..返回到上级目录的父目录(祖目录)
cd A:\ 将A盘的当前目录改为根目录
cd A:\xx 将A盘的当前目录改为子目录xx下
cd ..\98 先返回父目录,再进入父目录下的98子目录
cd ..返回到父目录
cd\98 进入根目录下的98子目录
四、 [/y][/-y][/v][ /B]
/y 不加提示,对所有文件加以覆盖
/-y 加以提示,对所有文件 (yes或no提问 )
/v 拷贝以后加以校验
/B 按二进制进行显示
w1.wps con/b 可以将wps文件在屏幕上显示,而不必进入wps状态
..\98 将父目录下的98子目录下的所有文件全拷到当前子目录
.\97 当当前目录下的97子目录下文件全部拷到当前目录
. c:\ 将当前目录下的所有文件拷到c盘根目录
. 意味着 *.* 文件
nul a.abc 将a.abc 文件清空(文件长度改为0)
文件名+con 向文本文件中追加命令或内容
con 文件名 创建文本文件(F6存盘退出)
con prn 检测打印机的开关
五、x命令
x [source] [d:date] [/p] [/s] [/e] [/v] [/y]
x [d:date] x a:b:\ /d:08/18/98/s/v 拷贝98.08.18年后的文件
x [/p] 提示创建子目录
x [/s] 连带子目录一起拷贝. 注意:若目标盘上不存在此子目录,而在目标
盘的结束符又不以"\"为结束,则将提示:
does destination specify a file name or directory name on the target
[f=file,d=directory]?
在目标盘上创建文件[按下]还是创建子目录[按下d] ?应选择d键
x[/v] 带较验
*:(1) x 不拷贝系统和隐含文件,应先予以修改属性再拷贝
x [/y] 覆盖时是否有提示, /y 不带提示
若省略目标盘或子目录名,则拷贝到当前目录下
六、 del /p
加/p 可以在删除前是否提示
如del后加子目录名,则将子目录下所有文件(隐含.系统.只读文件除外)全删除,
加/p则可以确认.
七、undelete [name] /au
不加提示地将所有满足条件的文件恢复(能够恢复的),并将首字母置成"#",若已
存在,则按"# % & 0 1 2-9 a-z"顺序加上.
如:undelete *.dbf/au 将扩展名为"dbf"的文件全恢复,并以"#"开头,作为文件
名, /list 仅列出可恢复的文件,而不恢复
undelete /load 将undelete装入内存
/unload 将undelete卸出内存
/s[drive]对指定驱动器进行监测管理
undelete/sc
将 undelete驻留内存,?并创建一个隐含的sentry 子目录对c盘删除的文件进行
管理 undelete/ds 恢复
相应恢复命令可以用undelete即可完整恢复出文件名(非常完整)
最常用undelete *.*
deltree /y [drive:path]
deltree 删除子目录及文件,尽管有些文件是系统文件或隐含文件
它可以带有通配符,带有通配符时,它将删除符合条件的文件及子目录
如:?undelete *.dbf/au 将扩展名为"dbf"的文件全恢复,并以"#"开头作为文件
名.
/list 仅列出可恢复的文件,而不作恢复操作.
undelete/load 将undelete 装入内存.
/unload将undelete 卸出内存.
/s[drive] 对指定的驱动器进行监视管理.
undelete/sc 将undelete 驻留内存,并创建一个隐含的sentry子目录对C盘删除
的文件进行管理.相应恢复命令可以用undelete/ds 即可完整恢复出文件名(很完善).
最常用的是undelete *.*
八、deltree /y [drive:path]
deltree 删除子目录及文件,尽管有些文件是系统或隐含的.
它可以带有通配符,这时它将删除符合条件的文件或子目录.
如:存在L1文件,L2子目录,L3文件,L4子目录
deltree L*.* 将删除以上所有的文件和子目录,但在删除前加以确认,若不删除,
可以输入"N".
/y 参数是在删除时不加以确认就进行操作的.
它删除的文件可以用undelete恢复,?但不能恢复子目录及其下的文件,可以用特
殊工具.如NORTON 8.0 等.
若提前使用了undelete/s,?则可以在sentry子目录下找到完整的文件,但名已经
改变了.
九、dos=high[|low[umb|noumb]]
dos=high,umb 则dos将自身装入高端内存(high)并能管理上位内存(umb).
noumb 则不管理上位内存.
在写入dos=high及umb 前应装入device=himem.sys
为了将程序或驱动程序装入上位内存,必须使用dos=umb,可省出大部分常规内存.
可以在config.sys的任何位置写上dos=high,umb
若显示hma not avoiable 或 load down low 则表明不能使用高端内存.
十、doskey 记录以前敲过的dos命令,可以用F7来显示,用"↑↓"来选择,用F9来输入
选择的命令号.
doskey/restall 重新装入一次,以前的命令行撤消.
doskey/history 显示内存中所有的命令,可以">"显示到其它文件中,缩写"/H".
doskey dir=cls 则击入dir等同于cls一样.
doskey/macros 可显示所有的宏定义,可使用">"重定义到文件中,可缩写"/M".
doskey dir= 可撤消对dir 的宏定义.
doskey p=dir$tdir*.exe/p$tdir c:\t$tdir c:\t$*
$t为命令的区分符,而$*为命令的结束符
doskey/insert(overstrike)?在重新输入命令时,对旧命令的修改是插入还是覆
盖状态(默认).
十一、emm386.exe
提供对扩展内存的管理,使应用程序象使用常规内存一样能够使用它.
常见的用法是 在config.sys 中
device=c:\dos\himem.sys
device=c:\dos\emm386.exe ram
d=64 将DMA 内存数量设置为64K
noems 提供对上位内存的访问,但不提供对扩展内存的访问.
应注意的是在windows中最好不要用它,因为windows本身有对扩展内存进行管理
的程序.应采用windows中的管理器.
十二、fc 命令 fc/b dt.dat dt2.dat>b (作二进制代码比较)
比较两个文件,一般用作存取进度,修改游戏存储文件用.
实际代码位置应加上0100 如:0000 05E4:00 67
实际用debug -e 修改时应加上0100 即 0000 06E4:00 67
后面加上重定向文件">P" 可以将比较结果输出到p文件中.
十三、format /q /u /s /n:sectors /f:size /c
/q参数:快速格式化,仅扫描文件分配表和根目录区,仅对格式化过的磁盘有效.
使用时应确保格式化过后没有增加新的坏道.
/u参数:无条件格式化,并且不保存原来盘上的信息,可以防止"unformat".
/s参数:格式化为系统盘,也可以使用"sys"命令.
/f:size size 可以为160 180 320 360 720 1200 1440 2800
/n:sector n可以为1 格式为单面盘,容量为160k 180k
可以为4 可以在5寸高密驱动器上格式化360k磁盘
可以为8 可以在5寸高密驱动器上进行8个扇区的格式化.
/c 重新测试坏扇区,缺省时如果一个扇区标记为"坏",以后格式时就不在从新测
试,仅作标记,使用"/C"时可以从新测试.
十四、unformat 命令
对用format 格式过,且未用"/u"参数的命令起作用,用它可以来重新修复已经损
坏的硬盘分区表,但对网络盘不起作用.
unformat drive:[/l][/test][/p]
/l 显示每一个被unformat发现的文件和子目录,如果没有这个开关,只显示那些
破碎的文件和子目录,可以用ctrl+s 暂停,按任意键继续.
/test 仅作一个测试,不作实际的修复工作,作模拟过程.
/p 一边测试一边打印.
注:这种方法不能保证修复所有的文件,尤其是格式化后又添加过数据的磁盘.
恢复后的文件依次存放在subdir1....2....3等子目录中.
十五、interlnk 语法 interlnk g=e ,它可以通过串口或并口在两机间进行通讯.
将服务器端上的e驱动器映射为客户端的g驱动器,以后对客户端而言,所有对g的
操作都意味着对服务器的访问,取消映射的办法为interlnk g=
单独输入interlnk 则显示所有的映射情况.
注意:interlnk 必须在装入interlnk.exe 设备驱动程序才可以使用.
所用的驱动器符号与config.?sys中lastdrv.exe设置的数目有关.可以作一个一
端为25针,另一端为9针的串行线实现,具体接线方式如下:
5 - 7 2 - 15
3 - 2 3 - 13
7 - 4 4 - 12
6 - 6 5 - 10
3 - 3 6 - 11
8 - 5 15 - 2
4 - 20 13 - 3
9针 25针 12 - 4
10 - 5
11 - 6
25 - 25
25针 25针
十六、interlnk.exe 与intersvr.exe
interlnk.exe 重新定向对于客户驱动器或打印接口的请求到另外的服务器驱动
器或打印机.
语法:config.sys 中加入:
device=c:\dos\interlnk.exe [drive:n][/noprinter][com][lpt]
十七、memmaker[/b][/batch][session][/swap:drive]
使用memmaker能够优化内存配置,?并将配置写入autoexec.bat和config.sys中.
在这一过程中,需要重新启动几次机器.
十八、memitem memcolor memdefault submenu 菜单选项include
autoexec.bat 中如下: config.sys中如下:
path c:\dos;c:\ucdos [menu]
doskey menucolor=15,1(前景色15,背景色1)
\mouse\mouse menuitem=base_config,this is a base
goto %config% ->选择项 menuitem=cced_config,this is a cced
选项 提示
:base_config menudefault=base_config,5
goto exit ->跳出 缺省为base_config,延迟时间5秒
:cced_config [common]
c:\dos\smartdrv.exe /l device=c:\dos\himem.sys
goto exit 各项都包含的共同部分
:exit ->结束 [base_config]
device=c:\dos\emm386.exe ram
dos=high,umb
[cced_config]
device=c:\dos\smartdrv.exe/double_buffer
include=base_config 包含base_config设置
可以根据计算机的在不同情况下的配置要求来选择.
十九、mscdex.exe 提供对光驱进行读写的程序
mscdex/d:drive [/D:drive][/e][/k][/s][/l:letter]
典型:config.sys 中device=c:\cdrom\cdrom.sys /d:mscd000
autoexec.bat中 c:\dos\mscdex /d:mscd000 /l:g
配置了一个光驱,符号为g
参数/d:drive1为光驱身份号,须与config.sys中的符号一致,可有多个
/d:mscd000 /d:mscd001
/e:使用扩展内存装入光驱驱动程序.
/s:使光驱在ms_net或windows是否设置为共享光驱
/V是否在加载时显示内存.
/L:letter 分配给光驱的盘符
/m:number 指定缓冲器的数目
应该注意的是:?如果用smartdrv.exe 加速对光驱的读写能力,应该在autoexec.
bat中将mscdex.?exe 写在smartdrv.exe 之前,smartdrv.exe的使用可大幅提高
对驱动器的读写能力.
二十、msd的使用
使用msd 可以整体检查计算机配置及系统信息
包括:?驱动器参数,计算机cpu参数,内存大小参数,显示器类型,串.并口情况,以
及各个IRQ占用情况,据此可以分析新增设备是否与原来设备有冲突.
同时也可以通过分析内存驻留程序,判断内存中是否有病毒,有则标为"???".
二十一、prompt dos提示符
$q 等于号 $t 当前时间 $d 当前日期 $p 当前驱动器符号
$$ $号提示 $n当前驱动器 $g 大于号 $l小于号 $b 显示"|"管道号
$h 隐去提示符 $E显示"<-"号
对于其它文字,则直接显示文本本身prompt ljw,则显示为ljw提示符
prompt 则仅显示当前驱动器号及大于号.
二十二、ramdrive.sys 使用内存当做虚拟盘来使用
应注意,所有数据都存在于内存中,应及时将其存到硬盘中,否则掉电后或者死机
后将丢失全部数据,优点是运行速度快,但不能在windows中使用.
示例:config.sys: device=c:\dos\ramdrive.sys /size[/e|a]
size为以k为单位的字节数,即建立的虚拟盘的大小.
/e或/a 都是使用扩展内存来建立虚拟盘,?加参数的前提是必须先加载内存管理
器himem.sys及emm386.exe.
二十三、subst 将一个驱动器与一个子目录联接
如:将对A:\l1\l2 子目录的请求映射为S盘,则输入
subst s: a:\l1\l2 即可
这样使用dir s:?等命令则显示的是a:\l1\l2子目录下的内容,其它 del 一样
可以用subst s: d 来取消这种映射.
可以用subst 来显示各种联接情况
注意:?可以采用subst a: c:a 来建立一个对于A的读写盘.对于某些安装软件
来说,?必须使用A盘来安装,就可以使用先将所要安装的软件全部拷贝到C:a子
目录中,然后输入subst a: c:a,再转到A:,就可以进行软件的安装了.
二十四、mem /c /m /p /d 常规内存显示程序
/c显示所有内存驻留程序的占用情况,分为conventional常规内存和uppermemory
高端内存占用,并显示总的占用情况(常规 高端 保留 扩展内存)
/p分页显示,页间暂停
/m后加模块名 如:/m msdos 显示dos系统内存的占用.
/d对常规 高端 保留 扩展内存加以详细例表说明
通过分析,可以看出内存占用是否合理,以及各种程序是否正常加载,从而在此基
础上使用内存优化工具memmaker进行各种管理,同时又可以分析出一些程序死机
的原因,若有的地方显示"???",则可以断定内存中有病毒的存在,有利于发现及消灭.
二十五、各种管道工具的使用"> < >> <<"
将各种命令造成的输出或所需要的输入重新定向
如:dir *.bat /b>p 可以将dir *.bat 例出的文件名输出到p文件中.
time<p>>p.bat
p文件中仅存在一个回车符,则可以将时间追加进p.bat文件中
"> >>" 是将命令产生的输出重新定向,比如到文件或打印机中.
>>产生的内容将追加进文件中,>则将原文件内容覆盖.
"< <<" 是将命令所需要输入的内容重新定向.
如:time<p 在批中可以是时间代码或回车符,可以以此改变时间.
需要说明的是 "prn "为打印机, "null"为空设备
con 为显示器
type p.bat>prn 可将p.bat打印出来.
null p 可将p文件删除掉
con p 可以在屏幕上编辑p文件,F6可以存盘退出
type p>pp 完成p文件到pp 的复制
type p|more 可在屏满时暂停显示
二十六、move 命令
move [y/-y] filename1 filename2
将文件1移动到文件2处
如:move c:\dos\*.* c:\cced
将dos子目录下的所有文件全部移动到cced 子目录下
/y|-y参数在目标目录不存在需要创建时,是否出现提示
可以使用该命令修改子目录名称,如 mo
❸ linux笔记本外接显示器
1)先设置分辨率和刷新率,要设置到电视所支持的范围。
2)用VGA线连接,线的长度不要超过6米。
3)连接好以后,将电视切换到VGA状态。
4)按笔记本VGA输出键“FN+ ”笔记本品牌不同,按键设置也不同。
IBM:FN+F7 富士通:FN+F10 戴尔DELL:FN+F8 三星:FN+F4 惠普:FN+F4 华硕:FN+F8 东芝:FN+F5 索尼:FN+F7 宏基:FN+F5/F6 联想:FN+F3。
❹ Ubuntu 双显示器设置
1、在settings->devices->display->join displays中,
在display arrangement将桌子上的左边的显示器拖到左边
2、在终端运行:
xrandr
得知所有接口对应的连接断开情况
xrandr --output DP-1 --auto --primary
设置左边的显示为主显示器
xrandr --output DP-1 --right-off HDMI-1 --auto
DP-1 和 HDMI-1为显示器的连接接口名,命令为DP-1在右边扩展到HDMI-1
❺ ubuntu设置双屏显示器
1、在settings->devices->display->join displays中,
在display arrangement将桌子上的左边的显示器拖到左边
2、在终端运行:
xrandr
得知所有接口对应的连接断开情况
xrandr --output DP-1 --auto --primary
设置左边的显示为主显示器
xrandr --output DP-1 --right-off HDMI-1 --auto
DP-1 和 HDMI-1为显示器的连接接口名,命令为DP-1在右边扩展到HDMI-1
❻ Linux 利用xrandr 配置屏幕显示
原文链接:https://blog.csdn.net/tianmaxingkong_/article/details/50570538
在ubuntu系统下使用xrandr实现双屏幕显示:
一.首先直接运行xrandr命令,查看设备的相关信息:
运行之后会显示当前连接设备的屏幕信息,如下图,LVDS和VGA-0,而HDMI屏幕为disconnect,意为没有连接:
二.设置双屏幕显示:
(1)打开外接显示器,双屏幕显示相同的内容--克隆,(auto为最高分辨率)
CODE: xrandr --output VGA-0 --same-as LVDS --auto
(2)若要指定外接显示器的分辨率可以使用下面的命令(1280*1024):
CODE: xrandr --output VGA-0 --same-as LVDS --mode 1280x1024
(3)打开外接显示器,设置为右侧扩展
CODE: xrandr --output VGA-0 --right-of LVDS --auto
(4)关闭显示器
CODE: xrandr --output VGA-0 --off
(5)打开VGA-0接口显示器,关闭LVDS接口显示器
CODE: xrandr --output VGA-0 --auto --output LVDS --off
❼ 显示器如何给单片机命令显示
静心佛门
关注
单片机c语言显示器编程,51单片机驱动LCD1602程序设计(C语言)很详细的教程 转载
2021-05-19 18:39:27
1点赞
静心佛门
码龄3年
关注
字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,定义如下表所示:
字符型LCD的引脚定义
.png
HD44780内置了DDRAM、CGROM和CGRAM。DDRAM就是显示数据RAM,用来寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下表:
.png
也就是说想要在LCD1602屏幕的第一行第一列显示一个"A"字,就要向DDRAM的00H地址写入“A”字的代码就行了。但具体的写入是要按LCD模块的指令格式来进行的。在1602中我们用前16个就行了。第二行也一样用前16个地址。对应如下:
DDRAM地址与显示位置的对应关系
.png
.png
文本文件中每一个字符都是用一个字节的代码记录的。一个汉字是用两个字节的代码记录。在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与字符的对应关系。
.png
从上图可以看出,“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.清屏指令
.png
功能:<1> 清除液晶显示器,即将DDRAM的内容全部填入"空白"的ASCII码20H;
<2> 光标归位,即将光标撤回液晶显示屏的左上方;
<3> 将地址计数器(AC)的值设为0。
2.光标归位指令
.png
功能:<1> 把光标撤回到显示器的左上方;
<2> 把地址计数器(AC)的值设置为0;
<3> 保持DDRAM的内容不变。
3.进入模式设置指令
.png
200862219425666.jpg功能:设定每次定入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。参数设定的
情况如下所示:
位名 设置
I/D 0=写入新数据后光标左移 1=写入新数据后光标右移
S 0=写入新数据后显示屏不移动 1=写入新数据后显示屏整体右移1个字符
4.显示开关控制指令
.png
功能:控制显示器开/关、光标显示/关闭以及光标是否闪烁。参数设定的情况如下:
位名 设置
D 0=显示功能关 1=显示功能开
C 0=无光标 1=有光标
B 0=光标闪烁 1=光标不闪烁
5.设定显示屏或光标移动方向指令
.png
功能:使光标移位或使整个显示屏幕移位。参数设定的情况如下:
S/C R/L 设定情况
0 0 光标左移1格,且AC值减1
0 1 光标右移1格,且AC值加1
1 0 显示器上字符全部左移一格,但光标不动
1 1 显示器上字符全部右移一格,但光标不动
6.功能设定指令
.png
功能:设定数据总线位数、显示的行数及字型。参数设定的情况如下:
位名 设置
DL 0=数据总线为4位 1=数据总线为8位
N 0=显示1行 1=显示2行
F 0=5×7点阵/每字符 1=5×10点阵/每字符
7.设定CGRAM地址指令
.png
功能:设定下一个要存入数据的CGRAM的地址。
8.设定DDRAM地址指令
.png
功能:设定下一个要存入数据的CGRAM的地址。
9.读取忙信号或AC地址指令
.png
功能:<1> 读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令;当BF=0时,液晶显示器可以接收单片机送来的数据或指令;
<2> 读取地址计数器(AC)的内容。
10.数据写入DDRAM或CGRAM指令一览
.png
功能:<1> 将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符;
<2> 将使用者自己设计的图形存入CGRAM。
11.从CGRAM或DDRAM读出数据的指令一览
.png
功能:读取DDRAM或CGRAM中的内容。
基本操作时序:
读状态 输入:RS=L,RW=H,E=H 输出:DB0~DB7=状态字
写指令 输入:RS=L,RW=L,E=下降沿脉冲,DB0~DB7=指令码 输出:无
读数据 输入:RS=H,RW=H,E=H 输出:DB0~DB7=数据
写数据 输入:RS=H,RW=L,E=下降沿脉冲,DB0~DB7=数据 输出:无
显示操作的过程:首先确认显示的位置,即在第几行,第几个字符开始显示。也就是要显示的地址,如下表所示的显示地址。
第一行的显示地址是0x80-0x8F,第二行的显示地址是0xC0-0xCF。例如想要在第2行,第3个位置显示一个字符,那么地址码就是0xC2。在编程过程中,通常编写一个函数确定在某行某个位置显示[url=]数据[/url]。函数需要 行[url=]参数[/url](y),和 列参数(x)来确定显示位置。[url=]程序[/url]参考如下
/***************设置显示位置**************************/
void LCD_set_xy( unsigned char x, unsigned char y )
{
unsigned char address;
if (0 == y) x |= 0x80; //当要显示第一行时地址码+0x80;
else x |= 0xC0; //在第二行显示是地址码+0xC0;
Write_com(x); //发送地址码 0x80-0x8F 或者0xC0-0xCF
}
其次设置要显示的内容,即上面提到的CGROM内的字符编码。如显示“A”,将编码41H写入到液晶屏显示即可。通常设置地址和显示内容用一个函数来完成。代码参考如下:
//功能:按指定位置显示一个字符
//输入:列显示地址x(取值范围0-15) 行显示地址y(取值范围0-1), 指定字符
void DisplayOneChar(unsigned char x, unsigned char y, unsigned char Data)
{
if (0 == y) x |= 0x80; //当要显示第一行时地址码+0x80;
else x |= 0xC0; //在第二行显示是地址码+0xC0;
Write_com(x); //发送地址码
Write_dat(Data); //发送要显示的字符编码
}
显示字符“A”调用过程如下代码:
DisplayOneChar(0,0,0x41);
//功能:在第1行 第1个字符 显示一个大写字母A
在C语言操作时,还可以显示整个字符串。定义一个字符串显示函数,可
以通过直接输入字符方式进行显示
//功能:按指定位置显示一串字符
//输入:列显示地址x(取值范围0-15) 行显示地址y(取值范围0-1), 指定字符串指针*p,要显示的字符个数count (取值范围1-16)
void DisplayListChar (unsigned char x,unsigned char y,unsigned char *p,unsigned char count)
{
unsigned char i;
for(i=0;i {
if (0 == y) x |= 0x80; //当要显示第一行时地址码+0x80;
else x |= 0xC0; //在第二行显示是地址码+0xC0;
Write_com(x); //发送地址码
Write_dat(*p); //发送要显示的字符编码
x++;
p++;
}
}
调用方法如下:
DisplayListChar(0,0,"hello world",11); //液晶1602第一行显示
DisplayListChar(0,1,"www*qm999*cn",12); //液晶1602第二行显示
.png
举个实例,就在LCD1602屏幕上第一行第一列显示个“A”字。
//先定义接口
# include /*****************************************
P1------DB0~DB7
P2.0------RS
P2.1------RW
P2.2------E
*****************************************/
# define LCD_DB P1
sbit LCD_RS=P2^0;
sbit LCD_RW=P2^1;
sbit LCD_E=P2^2;
/******定义函数****************/
# define uchar unsigned char
# define uint unsigned int
void LCD_init(void);//初始化函数
void LCD_write_command(uchar command);//写指令函数
void LCD_write_data(uchar dat);//写数据函数
void LCD_disp_char(uchar x,uchar y,uchar dat);//在某个屏幕位置上显示一个字符,X(0-16),y(1-2)
//void LCD_check_busy(void);//检查忙函数。我没用到此函数,因为通过率极低。
void delay_n40us(uint n);//延时函数
//********************************
//*******初始化函数***************
void LCD_init(void)
{
LCD_write_command(0x38);//设置8位格式,2行,5x7
LCD_write_command(0x0c);//整体显示,关光标,不闪烁
LCD_write_command(0x06);//设定输入方式,增量不移位
LCD_write_command(0x01);//清除屏幕显示
delay_n40us(100);//实践证明,用for循环200次就能可靠完成清屏指令。