51单片机.doc_第1页
51单片机.doc_第2页
51单片机.doc_第3页
51单片机.doc_第4页
51单片机.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学习了一段时间的51单片机,也买了学习板,但总觉得在学习板上操作对元件引脚认识不那么深刻。学习板上的许多功能块元件密集,相互又牵扯,造成电路认识上的不清。在接扩展板时引线也不能集中成一组排线引出。商家也对他的原理图遮遮掩掩说一半留一半的。因此我打算拿起电烙铁,在通用板上先搭建起最小系统,再做出ISP下载线,一步步的与愿和我一同上路的菜鸟们踏入C51的世界。昨天下午才汇了钱买洞洞板,没想到今天中午快递公司的人就把货送到我手上了。快的有点让我吃惊。等元件也到货后我便可以动手并上图与大家一同学习讨论了。今天刚申请的空间,也试试发贴和上图。 2.自制单片机之二-AT89S51最小系统制做2007-08-17 01:21废话这里就不多说了,干活吧!C51最小系统电路在网上一搜一大把,大同小异。我略做改动后如图:加一个11.0592MHZ的晶振是为了以后做串口通信时和PC有相同的波特率。可用短路帽切换。说说板子的布局:网上卖的最小系统都是把板子做的非常小,如果仅仅只学习最小系统,那是可以的。我以后是要做扩展的,所以不能做的太小。因此该有的应留着,不该有的都去掉。很重要的是以后在做其它扩展功能块时的连接线就用一组排线而不能再有其它飞线。因此做一个好的布局是非常有必要的。在板上除了最小系统外还有键盘输入、数码管、LCD、I2C存储器。它们的数据接口和电源接口也是完全独立的。其它的功能都准备在以后通过上方的接口另外用板子扩展。图上方的弯脚插针就是向外扩展的接口。我在弯脚下方又安排了一组直插针。它是和弯脚插针并行连接的。这样在扩展功能块时我先在AT89S51板上将要输出的引线(包括数据线、控制线、电源线等)跳至直插针上。这样通过弯脚插针引到扩展板上的线就只有一组排线。不用再零乱地接上几组连接线了。这也是我用买的学习板常常垢病而最终弃而自制的主要原因之一。因为当时我扩展LCD12864,我既要连上数据线,又要连电源线,LCD模块上还拖着背光电源限流电阻线。还有液晶驱动电压调节电位器。所以感觉拖的到处是线,很不方便。实施:通过检查各元件的好坏后便进行焊接工作。焊接进行的还是比较顺利。见下图:完成了。在检查了线路的正确性后,用万用表测了是否有短路。一切正常!之前我的AT89S51里已写好了个最小系统测试程序,就是让P1.0上的红色发光管闪烁。# include void main(void) unsigned char i,j,k; while(1) for(i=0;i100;i+) for(j=0;j255;j+) for(k=0;k255;k+); P1_0= !P1_0; 我把它先插在我买的学习板上运行,一切正常。但插在我做的的最小系统上却没反应。就那么点线路查来查去还是没问题呀!是晶振不起振?在学习板上用手拿着改锥分别碰18脚(XTAL2)和19脚(XTAL1)。发现当人体碰到19脚时程序会乱掉,就是说可能会停振。于是又把我的系统板上晶振位置的电路重焊一遍,尽量缩短了19脚处线的长度。C4、C5又分别换了15PF、20PF、30PF的电容试试。故障依然,没办法,得静一静,看书!在看到介绍第31脚(EA/VPP)时猛然想到31脚没有接到电源正啊!起来立即把31脚接到电源正,红色发光管立即闪烁起来。此时的高兴真不可名状啊!总结:除了在焊接时要仔细外,先画好电路图也是很重要的。像上面的电路图在89S51的31脚上就只写了Vcc的字样,因此焊接时就被忽视了。应该先画出一张完整的图才行。=0; i100; i+) for (j=0;j255;j+) for(k=0;k255;k+); P1_0= !P1_0; 我把它先插在我买的学习板上运行,一切正常。但插在我做的的最小系统上却没反应。就那么点线路查来查去还是没问题呀!是晶振不起振?在学习板上用手拿着改锥分别碰18脚(XTAL2)和19脚(XTAL1)。发现当人体碰到19脚时程序会乱掉,就是说可能会停振。于是又把我的系统板上晶振位置的电路重焊一遍,尽量缩短了19脚处线的长度。C4、C5又分别换了15PF、20PF、30PF的电容试试。故障依然,没办法,得静一静,看书!在看到介绍第31脚(EA/VPP)时猛然想到31脚没有接到电源正啊!起来立即把31脚接到电源正,红色发光管立即闪烁起来。此时的高兴真不可名状啊!总结:除了在焊接时要仔细外,先画好电路图也是很重要的。像上面的电路图在89S51的31脚上就只写了Vcc的字样,因此焊接时就被忽视了。应该先画出一张完整的图才行。检查分几个部分:1.晶振部分、2.复位部分、3.电源部分(最不可以忘掉EA接V+5v),4.还有就是P1_0发光管最基本的一个应用部分。其实这个板子上的晶振电路是非常容易起振的。19脚上的引线也没那么敏感。但处理19脚时可能的话还是要尽量短些的,毕竟它比18脚要对外界干扰敏感的多。手摸上去就停振了。 还有就是学习单片机怎么着也得先买块最最简单的板子。否则你焊好你的板子后有故障到底是程序问题还是线路问题就无从查起,查错查得还不疯掉呀!程序也没法写进片子里去。你可能会说再做一个ISP下载线呀。做下载线更加不稳定,下一篇我会专门讲做ISP下载线的问题。再来个特写鼓励一下自己。3.自制单片机之三-AT89S51ISP下载线的制作2007-08-17 13:23最小系统板做好了,接下来就是做根ISP下载线了。否则程序怎么写到AT89S51芯片里呢?在网上查了一下,ISP下载线的种类主要取决于PC端下载程序的种类。有并口的,有串口的,也有USB的。串口和USB的介绍较少而并口的介绍的很多,也比较简单。易于自己制作。并口的在网上也分为几类,原理都一样。主要是根据下载程序的不同。1这是Easy Isp-2 的配合软件为Easy 51Pro v2.0宇宙版这是他的简化版在网上的制作思路几乎都是把74HC373放在并口头的小盒子内见下图但由于我的台式机放在桌子的下面,把74HC373放在接头盒内插在电脑机箱后面怎么调试呢。因此我没将它放在接头盒内而是另用个洞洞板做的,前面是一米的并行线,后面是约50cm的连接线。线路的焊接没什么问题,比较顺利。见下图:(因旧的已拆了,现在只是示意一下)Easy 51Pro 2.0的工作界面:连上我的最小系统后,发现不能稳定工作。但可以读出89S51的特征字,说明线路是好的反复试验,不断在电源间加去偶电容,没什么效果,后来发现把连接排线握成一团握在手心里,就能有80%的机率正确写入程序,跟并口线那边关系却不大。莫非我要在排线上挂块肉,就像以前黑白电视的天线?结论:读写不可靠。放弃!因为这个下载程序不支持win98,我的笔记本是98的不能用。因此这次我用了官方的下载线方案。配合软件为ISP-30a.线路的原理还是差不多,焊接也没什么问题,这次可以支持笔记本,我省掉了并口线,将并口头直接焊在板子上。完工后的样子见下图。现在它的并口端没有线了,直接插在了我的笔记本的并口上,启动程序,ISP30A界面见下图状况同上一个下载线如出一辙,能读出特征字。读写也是几乎不成功,还是将排线揉成团握在手心里时,便能有八九十的读写正确率了。看来用哪个方案都是一样的,关键在布线上不同罢了。我一不做二不休,狠狠剪短了排线,就剩下这么一点点引线,见下图:再接上笔记本一试,你猜怎么着,正确读写率100%,成功了!结论:各种方案都差不多,但在布线上,原来总是把元件装在并口盒内,而留一段连线到AT89S51板上的想法是错误的。应尽量把从HC373到AT89S51板上的连线做短,最好HC373就做在板子上,因为HC373是三态输出,停用时OE端是高电平,输出是高阻抗的,对系统板的独立性是没有影响的。而留的线应该是从PC机到HC373的并口线,这样的下载线作为自制来说才能有点实用价值。第二天我把那段并口线又再连上后,接上笔记本再试,读写正确率仍为100%。下载线见图样子虽不好看,但它是个皮实且易于自制的方案,在论坛里有人跟我说,把下载板上元件做好布线和抗干扰也能把下载板至AT89S51板的引线做到1.5米。我非常相信。但我没有示波器及其它测量设备,只有一块万用表。有简单易行的方案为什么不用呢!4.自制单片机之四-数码管电路的制作与驱动2007-08-21 21:17数码管的使用方法与发光二极管没什么区别,只是把七或八只发光二极管组合在一个模件上组成了个8字和小数点,用以显示数字。为了减少管脚,把各个发光管的其中同一个极接在一起作为共用点,因此就产生了共阳极和共阴极数码之说。共阳管就是把各个发光管的正极接在一起,而共阴管就刚好相反。见下图一般来说大部分的逻辑IC的吸收电流要强于输出电流。因此,大家都爱使用共阴极的数码管,因为可选的IC多些。很可惜,我的这组数码管是共阳的,因此公共端我打算用三级管来驱动。我的最小系统板:我用最常用的S9012,首先我得计划好电路方式,就采用最常用的动态扫描显示。先搭建最简电路,调试出需采用元件的参数。先不接上图的R2和74HC244,将数码管一个段直接接地。调节R1,测得S9012基极电流为0.21mA时集电极也就是数码管上已有40mA,说明放大倍数足够了。这时接上R2和74HC244,调节R2使数码管电流控制在15mA,这样当8个段一起点亮时三极管上得通过120mA的电流。而基极上需要0.6mA,为了减小三极管的负荷应使三极管过饱和,调节R1使基极电流为2mA,此时测得集电极和漏极之间的电压约0.1V。好!此时R1为2K。R2为240欧姆。确定。接下来就是确定电路。电路的接口与AT89S51间有三组接口:段码、位码和电源。为了让AT89S51独立出来这三级接口都采用插针做接口,用排线自由连接到AT89S51的P1-P3口,电源用短路帽连接,完成后的板子见下图反面:说明:然后就是写程序。先写个查询方式的吧!/六位管码管在以0.3秒的间隔在闪烁,这是采用查询方式的,比较占CUP资源/*定义管脚:P2_0-上横 a P3_0-个位 P2_1-右上竖 b P3_1-十位 P2_2-右下竖 c P3_2-百位 P2_3- 下横 d P3_3-千位 P2_4-左下竖 e P3_4-万位 P2_5-左上竖 f P3_5-十万位 P2_6-中间横 g P2_7-小数点 H*/# include typedef unsigned char uchar;uchar code bit_num=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;/位码值表:0,1,2,3,4,5uchar code meg_val=0x03,0x9f,0x25,0x0d,0x99,0x49;/段码值表:0,1,2,3,4,5uchar code hello=0x03,0xe3,0xe3,0x61,0x91,0xff; /HELLOuchar code beybey=0x89,0x61,0xc1,0x89,0x61,0xc1;/beybeyuchar code ab6789=0xc1,0x11,0x09,0x01,0x1f,0x41;/ab6789void delay(int n);void main(void) uchar i,m; P2=0xff; /先将段码关闭 P3=0xff; /将位码关闭 delay(20);/等待一会 while(1) for (m=30;m0;m-) /显示30次约0.3秒 for(i=0;i=5;i+) P2=0xff; P3=bit_numi; /输出位码到P3口 P2=ab6789i; /输出段码到P2口 delay(5); P2=0xff; /关闭段码 P3=0xff; /关闭位码 delay(1000); /等待0.3秒 void delay(int n) /子程序 int j; uchar k; for(j=0;j0;k-); =当我插把程序写入片子,插上电运行时,是乱码。你猜怎么回事?原来那个P2口方向是反的,您注意过没有,在AT89S51管脚排列上,P0-P1和P3都是上方为PX_0。而唯独P2口管脚排列是下方为P2_0。方向则好是反的。既然反了,我就把段码表重写一下。再试,一切正常。在这里我说一下段码的排列,好多人问数码管段码是如何排列的,我也在网上查了,好像没有什么标准的排法,随自己的接法而定,这也是导致为什么在网上下载的一些数码管程序在自己的板子上不能正常显示的原因。就普遍而言我最上面的那张图示的标法最多,在上面程序里原打算也是P2_0对应段码a(也就是上面的横)。一直到P2_7对应段为h(就是小数点)。结果哪知道P2口刚好是反的。这样一来也就是倒过来了,P2_0对应段h(小数点了)。例如我原先定义的数码管显示“2”段码为10100100B的,一接反了就不再是“2”了。而要想再显示“2”那就把段码的高低位倒过来。改为00100101B就OK了。下面再写个用中断来显示的:/这是采用中断方式的,也是带闪烁的。/*定义管脚:P2_0-小数点 P3_0-个位 P2_1-中横 P3_1-十位 P2_2-左上竖 P3_2-百位 P2_3-左下竖 P3_3-千位 P2_4-下横 P3_4-万位 P2_5-右下竖 P3_5-十万位 P2_6-右上竖 P2_7-上横*/# include typedef unsigned char uchar;uchar code bit_num=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;/位码:0,1,2,3,4,5uchar code meg_val=0x49,0x99,0x0d,0x25,0x9f,0x03;/段码:0,1,2,3,4,5uchar i,aa; /定义全局变量bit fg; /定义一个亮起和熄灭标志void timer0(void) interrupt 1 using 1 /中断程序 if (fg) /当fg为1时点亮6位数码管 P2=0xff; if (i=6) i=0; else P3=bit_numi; /输出位码到P3口 P2=meg_vali; /输出段码到P2口 i+; else /当fg为0时熄灭数码管 if(aa=0) P3=0xff; P2=0xff; aa+; if (aa=254) /当aa值累加至254时fg标志翻转。 fg=fg; aa=0; TH0=0xf8; /重装定时器初值,2ms,值为65536-2000 TL0=0x30;void main(void) P2=0xff; /先将段码关闭 P3=0xff; /将位码关闭 TMOD=0x01;/设置T0为模式1 TH0=0xf8; /装入计数初值高位 TL0=0x30; /装入计数初值低位 EA=1; /总充许 ET0=1; /T0充许 fg=1; /将亮、灭标志设置为亮 TR0=1; /启动中断 while(1);OK!5.自制单片机之五(1)LCD1602的驱动2007-08-23 16:35LCD1602已很普遍了,具体介绍我就不多说了,市面上字符液晶绝大多数是基于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字符代码程序时甚至可以直接用P1A这样的方法。PC在编译时就把“A”先转为41H代码了。字符代码0x000x0F为用户自定义的字符图形RAM(对于5X8点阵的字符,可以存放8组,5X10点阵的字符,存放4组),就是CGRAM了。后面我会详细说的。0x200x7F为标准的ASCII码,0xA00xFF为日文字符和希腊文字符,其余字符码(0x100x1F及0x800x9F)没有定义。那么如何对DDRAM的内容和地址进行具体操作呢,下面先说说HD44780的指令集及其设置说明,请浏览该指令集,并找出对DDRAM的内容和地址进行操作的指令。共11条指令:1.清屏指令功能: 清除液晶显示器,即将DDRAM的内容全部填入空白的ASCII码20H; 光标归位,即将光标撤回液晶显示屏的左上方; 将地址计数器(AC)的值设为0。2.光标归位指令 功能: 把光标撤回到显示器的左上方; 把地址计数器(AC)的值设置为0; 保持DDRAM的内容不变。 3.进入模式设置指令功能:设定每次定入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。参数设定的情况如下所示: 位名 设置 I/D 0=写入新数据后光标移 1=写入新数据后光标右移 S 0=写入新数据后显示屏不移动 1=写入新数据后显示屏整体右移1个字符4.显示开关控制指令功能:使光标移位或使整个显示屏幕移位。参数设定的情况如下: S/C R/L 设定情况 0 0 光标左移1格,且AC值减1 0 1 光标右移1格,且AC值加1 1 0 显示器上字符全部左移一格,但光标不动 1 1 显示器上字符全部右移一格,但光标不动6.功能设定指令功能:设定数据总线位数、显示的行数及字型。参数设定的情况如下: 位名 设置 DL 0=数据总线为4位 1=数据总线为8位 N 0=显示1行 1=显示2行 F 0=57点阵/每字符 1=510点阵/每字符7.设定CGRAM地址指令功能:设定下一个要存入数据的CGRAM的地址。8.设定DDRAM地址指令功能:设定下一个要存入数据的CGRAM的地址。9.读取忙信号或AC地址指令功能: 读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令; 当BF=0时,液晶显示器可以接收单片机送来的数据或指令; 读取地址计数器(AC)的内容。10.数据写入DDRAM或CGRAM指令一览功能: 将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符; 将使用者自己设计的图形存入CGRAM。11.从CGRAM或DDRAM读出数据的指令一览功能:读取DDRAM或CGRAM中的内容。基本操作时序:读状态 输入:RS=L,RW=H,E=H输出:DB0DB7=状态字写指令 输入:RS=L,RW=L,E=下降沿脉冲,DB0DB7=指令码 输出:无读数据 输入:RS=H,RW=H,E=H 输出:DB0DB7=数据写数据 输入:RS=H,RW=L,E=下降沿脉冲,DB0DB7=数据 输出:无看了那么多是不是有些晕?我也是啊,不过慢慢理解还是没问题的。实际上面说了那么多具体怎么操作我还是没会啊?好!咱就简单点。举个实例,就在LCD1602屏幕上第一行第一列显示个“A”字。1.先初始化。(老大!好像上面没初始化这条指令啊!) 先别拿东西扔我,说明书上是这么说的。也就先写入些指令。/先定义接口# include /* P1-DB0DB7 P2.0-RS P2.1-RW P2.2-E*/# define LCD_DB P1 sbit LCD_RS=P20; sbit LCD_RW=P21; sbit LCD_E=P22;/*定义函数*/# define uchar unsigned char# define uint unsigned intvoid 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行,5x7LCD_write_command(0x0c);/整体显示,关光标,不闪烁LCD_write_command(0x06);/设定输入方式,增量不移位LCD_write_command(0x01);/清除屏幕显示delay_n40us(100);/实践证明,我的LCD1602上,用for循环200次就能可靠完成清屏指令。/*/*写指令函数*void LCD_write_command(uchar dat)LCD_DB=dat;LCD_RS=0;/指令LCD_RW=0;/写入LCD_E=1;/允许LCD_E=0;delay_n40us(1);/实践证明,我的LCD1602上,用for循环1次就能完成普通写指令。/*/*写数据函数*void LCD_write_data(uchar dat)LCD_DB=dat;LCD_RS=1;/数据LCD_RW=0;/写入LCD_E=1;/允许LCD_E=0;delay_n40us(1);/*/*显示一个字符函数*void LCD_disp_char(uchar x,uchar y,uchar dat)uchar address;if(y=1) address=0x80+x;else address=0xc0+x;LCD_write_command(address);LCD_write_data(dat);/*/*检查忙函数*void LCD_check_busy() /实践证明,在我的LCD1602上,检查忙指令通过率极低,以 /至于不能正常使用LCD。因此我没有再用检查忙函数。而使do /用了延时的方法,延时还是非常好用的。我试了一下,用 LCD_E=0; /for循环作延时,普通指令只要1次循就可完成。清屏指令 LCD_RS=0; /要用200次循环便能完成。 LCD_RW=1; LCD_DB=0xff; LCD_E=1; while(LCD_DB7=1);*/*延时函数*void delay_n40us(uint n) uint i; uchar j; for(i=n;i0;i-) for(j=0;j2;j+); /在这个延时循环函数中我只做了2次循环, /实践证明我的LCD1602上普通的指令只需1次循环就能可靠完成。/*/*主函数*void main(void) LCD_init(); LCD_disp_char(0,1,A); while(1);/*6.自制单片机之六LCD12864的驱动2007-08-26 23:20LCD12864的驱动LCD12864在市面上主要分为两种,一种是采用st7920控制器的,它一般带有中文字库字模,价格略高一点。另一种是采用KS0108控制器,它只是点阵模式,不带字库。很可惜,我的这块就是KS0108控制器不带汉字库的,不过不打算用它专门显示文本,也就无所谓了。LCD12864模块的20个引脚定义如下:1。Vss 逻辑电源地2。VDD逻辑电源正5v3。V0LCD驱动电压4。RS数据/指令选择:高电平为数据,低电平为指令5。R/W读/写选择:高电平为读数据,低电平为写数据6。E读写使能,高电平有效,下降沿锁定数据7。DB0数据输入输出引脚8。DB1数据输入输出引脚9。DB2数据输入输出引脚10。DB3数据输入输出引脚11。DB4数据输入输出引脚12。DB5数据输入输出引脚13。DB6数据输入输出引脚14。DB7数据输入输出引脚15。CS1片选择号,低电平时选择前64列16。CS2片选择号,低电平时选择后64列17。RET复位信号,低电平有效。18。VEE输出15v电源给V0提供驱动电源19。A背光电源LED正极20。K背光电源LED负极具体电路图如下:、制作如下:接口说明:装上12864具体的电路还是两个电阻。一个背光限流电阻。一个液晶驱动电压调节电阻。背光电阻还是任何时候在19、20脚与电源之间串上个100欧电位器接上电源。调节电位器到合适亮度。具体值最好是到调试完程序能够正常显示后再将阻值确定换成固定电阻。液晶驱动电压的调整在数据线、电源线接好的前提下是在Vee(-15v)和地之间接一个电位器。中间接V0,通过调节电位器来调节V0上的电压。当V0上为-15V时为全暗(液晶显示为全黑)。当V0为0V时为全亮。调节电位器使屏幕从全暗刚好变到亮时,便可进行程序的调试。待屏幕显示正常后,进行对比度的细调,然后测量这两边的阻值在地和V0之间、V0和Vee之间换成两个固定电阻焊上就好了。注意在V0的电压是在一个很小的范围有效。我的就是在-2.2-2.5这个范围。仔细调节V0和地之间的电阻使V0上的电压在2.3V。更换为固定电阻后的装配图:下面说说具体的驱动:先来了

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论