51单片机上接12864液晶屏时的上拉湿敏电阻 单片机是怎么接的?

请教下,这张12864屏怎么和51最小系统板上的12864接口连接|我爱单片机 - 数码之家
查看完整版本: [--
赞助商链接
如图的屏,点亮了,运行一会儿花了,何解?屏接口如下[attachment=3227763][attachment=3231450][attachment=3231451]测试程序如下#include &reg51.h&#define Disp_On  0x3f#define Disp_Off 0x3e#define Col_Add  0x40#define Page_Add 0xb8#define Start_Line 0xc0 sbit Mcs=P2^0;                  sbit Scs=P2^1;                  sbit Enable=P2^4;                 sbit Di=P2^2;                      sbit RW=P2^3;                       /**********************************字模表***********************************/char code huan[]={/*--  文字:  欢  --*//*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/0x14,0x24,0x44,0x84,0x64,0x1C,0x20,0x18,0x0F,0xE8,0x08,0x08,0x28,0x18,0x08,0x00,0x20,0x10,0x4C,0x43,0x43,0x2C,0x20,0x10,0x0C,0x03,0x06,0x18,0x30,0x60,0x20,0x00,};char code yun2[]={/*--  文字:  迎  --*//*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/0x40,0x41,0xCE,0x04,0x00,0xFC,0x04,0x02,0x02,0xFC,0x04,0x04,0x04,0xFC,0x00,0x00,0x40,0x20,0x1F,0x20,0x40,0x47,0x42,0x41,0x40,0x5F,0x40,0x42,0x44,0x43,0x40,0x00,};char code shi[]={/*--  文字:  使  --*//*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/0x40,0x20,0xF0,0x1C,0x07,0xF2,0x94,0x94,0x94,0xFF,0x94,0x94,0x94,0xF4,0x04,0x00,0x00,0x00,0x7F,0x00,0x40,0x41,0x22,0x14,0x0C,0x13,0x10,0x30,0x20,0x61,0x20,0x00,};char code yong[]={/*--  文字:  用  --*//*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/0x00,0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0xFE,0x00,0x00,0x80,0x40,0x30,0x0F,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x42,0x82,0x7F,0x00,0x00,};
char code dan[]={/*--  文字:  单  --*//*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/0x00,0x00,0xF8,0x28,0x29,0x2E,0x2A,0xF8,0x28,0x2C,0x2B,0x2A,0xF8,0x00,0x00,0x00,0x08,0x08,0x0B,0x09,0x09,0x09,0x09,0xFF,0x09,0x09,0x09,0x09,0x0B,0x08,0x08,0x00,};char code pian[]={//*--  文字:  片  --*//*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/0x00,0x00,0x00,0xFE,0x10,0x10,0x10,0x10,0x10,0x1F,0x10,0x10,0x10,0x18,0x10,0x00,0x80,0x40,0x30,0x0F,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,0x00,0x00,0x00,0x00,};char code ji[]={/*--  文字:  机  --*//*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/0x08,0x08,0xC8,0xFF,0x48,0x88,0x08,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x04,0x03,0x00,0xFF,0x00,0x41,0x30,0x0C,0x03,0x00,0x00,0x00,0x3F,0x40,0x78,0x00,};char code kai[]={/*--  文字:  开  --*//*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/0x40,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0x00,0x00,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,};char code fa[]={/*--  文字:  发  --*//*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/0x00,0x10,0x3E,0x10,0x10,0xF0,0x9F,0x90,0x90,0x92,0x94,0x1C,0x10,0x10,0x10,0x00,0x40,0x20,0x10,0x88,0x87,0x41,0x46,0x28,0x10,0x28,0x27,0x40,0xC0,0x40,0x00,0x00,};char code ban[]={/*--  文字:  板  --*//*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/0x10,0x10,0xD0,0xFF,0x50,0x90,0x00,0xFE,0x62,0xA2,0x22,0x21,0xA1,0x61,0x00,0x00,0x04,0x03,0x00,0x7F,0x00,0x11,0x0E,0x41,0x20,0x11,0x0A,0x0E,0x31,0x60,0x20,0x00,}; char code dang[]={/*--  文字:  当  --*//*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/0x00,0x00,0x40,0x42,0x5C,0x48,0x40,0x40,0x7F,0x40,0x50,0x4E,0x44,0xC0,0x00,0x00,0x00,0x00,0x20,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x7F,0x00,0x00,}; char code qian[]={/*--  文字:  前  --*//*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/0x08,0x08,0xE8,0xA8,0xA9,0xAE,0xEA,0x08,0x08,0xC8,0x0C,0x0B,0xEA,0x08,0x08,0x00,0x00,0x00,0x7F,0x04,0x24,0x44,0x3F,0x00,0x00,0x1F,0x40,0x80,0x7F,0x00,0x00,0x00,}; char code zhuang[]={/*--  文字:  状  --*//*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/0x08,0x30,0x00,0xFF,0x20,0x20,0x20,0x20,0xFF,0x20,0xE1,0x26,0x2C,0x20,0x20,0x00,0x04,0x02,0x01,0xFF,0x40,0x20,0x18,0x07,0x00,0x00,0x03,0x0C,0x30,0x60,0x20,0x00,}; char code tai1[]={/*--  文字:  态  --*//*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/0x00,0x04,0x04,0x04,0x84,0x44,0x34,0x4F,0x94,0x24,0x44,0x84,0x84,0x04,0x00,0x00,0x00,0x60,0x39,0x01,0x00,0x3C,0x40,0x42,0x4C,0x40,0x40,0x70,0x04,0x09,0x31,0x00,}; char code yun[]={/*--  文字:  运  --*//*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/0x40,0x41,0xCE,0x04,0x00,0x20,0x22,0xA2,0x62,0x22,0xA2,0x22,0x22,0x22,0x20,0x00,0x40,0x20,0x1F,0x20,0x28,0x4C,0x4A,0x49,0x48,0x4C,0x44,0x45,0x5E,0x4C,0x40,0x00,}; char code xing[]={/*--  文字:  行  --*//*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/0x10,0x08,0x84,0xC6,0x73,0x22,0x40,0x44,0x44,0x44,0xC4,0x44,0x44,0x44,0x40,0x00,0x02,0x01,0x00,0xFF,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,}; char code zhong[]={/*--  文字:  中  --*//*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/0x00,0x00,0xFC,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0xFC,0x08,0x00,0x00,0x00,0x00,0x07,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x02,0x02,0x07,0x00,0x00,0x00,}; char code maohao[]={/*--  文字:  :  --*//*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,}; void delay(unsigned int t){    unsigned int i,j;    for(i=0;i&t;i++)    for(j=0;j&10;j++);} void write_com(unsigned char cmdcode){    Di=0;    RW=0;    P0=            delay(2);    Enable=1;    delay(2);    Enable=0;} void write_data(unsigned char Dispdata){    Di=1;    RW=0;    P0=D    delay(2);    Enable=1;    delay(2);    Enable=0;} void Clr_Scr(){    unsigned char j,k;    Mcs=0;Scs=0;     write_com(Page_Add+0);     write_com(Col_Add+0);     for(k=0;k&8;k++)         {        write_com(Page_Add+k);          for(j=0;j&64;j++)write_data(0x00);        }    Mcs=1;Scs=1;} void hz_disp16(unsigned char pag,unsigned char col, unsigned char code *hzk){    unsigned char j=0,i=0;    for(j=0;j&2;j++)    {        write_com(Page_Add+pag+j);        write_com(Col_Add+col);        for(i=0;i&16;i++)         write_data(hzk[16*j+i]);    }} void init_lcd(){    delay(100);    Mcs=0;    Scs=0;    delay(100);    write_com(Disp_Off);    write_com(Page_Add+0);    write_com(Start_Line+0);    write_com(Col_Add+0);    write_com(Disp_On);} void main(void){    init_lcd();     Clr_Scr();     while(1)    {        Mcs=0;Scs=1;                    delay(2);        hz_disp16(0,32,huan);        hz_disp16(0,48,yun2);        hz_disp16(2,16,dan);        hz_disp16(2,32,pian);        hz_disp16(2,48,ji);        hz_disp16(4,0,dang);        hz_disp16(4,16,qian);        hz_disp16(4,32,zhuang);        hz_disp16(4,48,tai1);        Mcs=1;Scs=0;                        hz_disp16(0,0,shi);        hz_disp16(0,16,yong);        hz_disp16(2,0,kai);        hz_disp16(2,16,fa);        hz_disp16(2,32,ban);            hz_disp8(4,0,maohao);        hz_disp16(4,8,yun);        hz_disp16(4,24,xing);        hz_disp16(4,40,zhong);        delay(2);    }}按这个程序是不是接5个脚就ok了
赞助商链接
应该是不带字库的,这要看你的程序引脚定义了!
赞助商链接
先找到屏的型号什么的,找引脚定义
并口的12864,按您提供的接线定义接就是了
:并口的12864,按您提供的接线定义接就是了 ( 22:25) 问题我是单片机小白,不知道系统板上标准12864接口的定义
:问题我是单片机小白,不知道系统板上标准12864接口的定义 ( 22:57) 看程序就知道了……
系统上用那个接口都行啊,不过一般用P0口
无非就是VEE上接个负压才能显示,其它的和普通KS0108主控的无字库12864的引脚功能差不多,只是排列不同。
除了3,4,5脚外,其余都要跟单条片机相连。如果不用后64列,1,2脚也可以接高电平。
我的学习板上的20针接口无法直接插这个屏幕。我的学习板是20针标准接口。这个屏幕的第3脚插到学习板第一脚,然后依次到到第16脚,就是说插脚只插了14个。然后学习板上的3脚负压要单独提供,液晶屏的1,2脚片选要单独引线。
硬件连接:---------------------------------------------------------------|DB0-----P0.0 | DB4-----P0.4 | RW-------P2.2 | |DB1-----P0.1 | DB5-----P0.5 | RS-------P2.1 | |DB2-----P0.2 | DB6-----P0.6 | E -------P2.5 ||DB3-----P0.3 | DB7-----P0.7 | Vo接屏自身的VOUT---------------------------------------------------------------程序需要这么接,db0-7会接,rw有,rs是那个脚 vo又是那个脚
:我的学习板上的20针接口无法直接插这个屏幕。我的学习板是20针标准接口。这个屏幕的第3脚插到学习板第一脚,然后依次到到第16脚,就是说插脚只插了14个。然后学习板上的3脚负压要单独提供,液晶屏的1,2脚片选要单独引线。 ( 10:22) 直插需要改变针脚排列顺序
:硬件连接:---------------------------------------------------------------|DB0-----P0.0 | DB4-----P0.4 | RW-------P2.2 | |DB1-----P0.1 | DB5-----P0.5 | RS-------P2.1 | |DB2-----P0.2 | DB6-----P0.6 | E -------P2.5 |....... ( 11:10) 程序里的Vo指的就是这块屏幕的VEE,负压输入端。然后这个屏没有RS,不理他,没事。程序里的VOUT指的是那种带负压的屏,VOUT直接输出负压的。这块屏无负压。
:硬件连接:---------------------------------------------------------------|DB0-----P0.0 | DB4-----P0.4 | RW-------P2.2 | |DB1-----P0.1 | DB5-----P0.5 | RS-------P2.1 | |DB2-----P0.2 | DB6-----P0.6 | E -------P2.5 |....... ( 11:10) RS就是D/I脚!!!!!
:RS就是D/I脚!!!!! ( 11:52) 硬件连接:---------------------------------------------------------------|DB0-----P0.0 | DB4-----P0.4 | RW-------P2.2 | |DB1-----P0.1 | DB5-----P0.5 | RS-------P2.1 | |DB2-----P0.2 | DB6-----P0.6 | E -------P2.5 ||DB3-----P0.3 | DB7-----P0.7 | Vo接屏自身的VOUT---------------------------------------------------------------******************************************************************************/#include &reg52.h&#include &intrins.h&#include &stdio.h&#define uint unsigned int#define uchar unsigned charchar sec,min,hour,day,month,year,&&&&//定义全局变量,秒,分,时,日,月,年和星期&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//定义世纪位:0为20世纪,1为19世纪。//此时初始日期为日,即此程序完成日期!void delayX10ms(uint count); sbit LCD_csa=P2^5;&&&&&&&&&&&&&&&&&& //定义左屏开关sbit LCD_csb=P2^4;&&&&&&&&&&&&&&&&&& //定义右屏开关sbit LCD_di=P2^1;&&&&&&&&&&&&&&&&&&&&//定义数据或指令,1=数据,0=指令sbit LCD_rw=P2^2;&&&&&&&&&&&&&&&&&&&&//定义读或写?&&&&1=读,&&0=写&& sbit LCD_e=P2^0;&&&&&&&&&&&&&&&&&&&& //定义使能操作, 1=能,&&0=否sbit LCD_rst = P2^3;&&&&&&&&&&&&&&&&&&//定义复位sbit k1 = P1^5;sbit k2 = P1^6;sbit k3 = P1^7;sbit k4 = P3^2;sfr&&LCD_db=0x80;&&&&&&&&&&&&&&&&&&&&//定义数据端口&&貌似前后冲突哦
:程序里的Vo指的就是这块屏幕的VEE,负压输入端。然后这个屏没有RS,不理他,没事。程序里的VOUT指的是那种带负压的屏,VOUT直接输出负压的。....... ( 11:50) 硬件连接:---------------------------------------------------------------|DB0-----P0.0 | DB4-----P0.4 | RW-------P2.2 | |DB1-----P0.1 | DB5-----P0.5 | RS-------P2.1 | |DB2-----P0.2 | DB6-----P0.6 | E -------P2.5 ||DB3-----P0.3 | DB7-----P0.7 | Vo接屏自身的VOUT---------------------------------------------------------------******************************************************************************/#include &reg52.h&#include &intrins.h&#include &stdio.h&#define uint unsigned int#define uchar unsigned charchar sec,min,hour,day,month,year,&&&&//定义全局变量,秒,分,时,日,月,年和星期&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//定义世纪位:0为20世纪,1为19世纪。//此时初始日期为日,即此程序完成日期!void delayX10ms(uint count); sbit LCD_csa=P2^5;&&&&&&&&&&&&&&&&&& //定义左屏开关sbit LCD_csb=P2^4;&&&&&&&&&&&&&&&&&& //定义右屏开关sbit LCD_di=P2^1;&&&&&&&&&&&&&&&&&&&&//定义数据或指令,1=数据,0=指令sbit LCD_rw=P2^2;&&&&&&&&&&&&&&&&&&&&//定义读或写?&&&&1=读,&&0=写&& sbit LCD_e=P2^0;&&&&&&&&&&&&&&&&&&&& //定义使能操作, 1=能,&&0=否sbit LCD_rst = P2^3;&&&&&&&&&&&&&&&&&&//定义复位sbit k1 = P1^5;sbit k2 = P1^6;sbit k3 = P1^7;sbit k4 = P3^2;sfr&&LCD_db=0x80;&&&&&&&&&&&&&&&&&&&&//定义数据端口&&看到这里糊涂了,前后好像有矛盾
硬件连接:---------------------------------------------------------------|DB0-----P0.0 | DB4-----P0.4 | RW-------P2.2 | |DB1-----P0.1 | DB5-----P0.5 | RS-------P2.1 | |DB2-----P0.2 | DB6-----P0.6 | E -------P2.5 ||DB3-----P0.3 | DB7-----P0.7 | Vo接屏自身的VOUT---------------------------------------------------------------这里是原作者注释,肯定是不参加编译的。我也经常这样,一个程序的接口定义注释了下,然后后续程序的改进等,接口可能也改了,然后注释都没有注意更新下。
这个是论坛里出的那个屏吧,我也买了2块,还不回弄,学习下
:硬件连接:---------------------------------------------------------------|DB0-----P0.0 | DB4-----P0.4 | RW-------P2.2 | |DB1-----P0.1 | DB5-----P0.5 | RS-------P2.1 | |DB2-----P0.2 | DB6-----P0.6 | E -------P2.5 |....... ( 12:32) 那就是说连五根线就能显示了?
:硬件连接:---------------------------------------------------------------|DB0-----P0.0 | DB4-----P0.4 | RW-------P2.2 | |DB1-----P0.1 | DB5-----P0.5 | RS-------P2.1 | ....... ( 12:16) sbit LCD_csa=P2^5;&&&&&&&&&&&&&&&&&& //定义左屏开关sbit LCD_csb=P2^4;&&&&&&&&&&&&&&&&&& //定义右屏开关sbit LCD_di=P2^1;&&&&&&&&&&&&&&&&&&&&//定义数据或指令,1=数据,0=指令sbit LCD_rw=P2^2;&&&&&&&&&&&&&&&&&&&&//定义读或写?&&&&1=读,&&0=写&& sbit LCD_e=P2^0;&&&&&&&&&&&&&&&&&&&& //定义使能操作, 1=能,&&0=否sbit LCD_rst = P2^3;&&&&&&&&&&&&&&&&&&//定义复位这个应该是对的!!
:那就是说连五根线就能显示了? ( 12:50) 16跟都要啊,8跟数据,电源正负加负压共3根,然后5根控制线。
:16跟都要啊,8跟数据,电源正负加负压共3根,然后5根控制线。
8根数据接p0-7?我接p0-7上就成这样了哈哈[attachment=3231328][attachment=3231330][attachment=3231329]
:sbit LCD_csa=P2^5;&&&&&&&&&&&&&&&&&& //定义左屏开关sbit LCD_csb=P2^4;&&&&&&&&&&&&&&&&&& //定义右屏开关sbit LCD_di=P2^1;&&&&&&&&&&&&&&&&&&&&//定义数据或指令,1=数据,0=指令sbit LCD_rw=P2^2;&&&&&&&&&&&&&&&&&&&&//定义读或写?&&&&1=读,&&0=写&& ....... 8根数据接p0-7?我接p0-7上就成这样了哈哈=740) window.open('http://img.mydigit.net/Mon_179_cf210e4454fa32f.jpg?56');" style="max-width:100%;" onload="if(is_ie6&&this.offsetWidth>740)this.width=740;" >=740) window.open('http://img.mydigit.net/Mon_179_f19b0f7ebc45936.jpg?46');" style="max-width:100%;" onload="if(is_ie6&&this.offsetWidth>740)this.width=740;" >=740) window.open('http://img.mydigit.net/Mon_179_c7d8f81360fdd71.jpg?52');" style="max-width:100%;" onload="if(is_ie6&&this.offsetWidth>740)this.width=740;" >
:[table=100%,#ffffff,,1][tr][td][/td][/tr][tr][td]8根数据接p0-7?我接p0-7上就成这样了哈哈[图片]....... ( 13:34) CSA和CSB两个脚线互换一下试试!
:CSA和CSB两个脚线互换一下试试! ( 15:57) 互换试过了,还是不行。。。。。
1——16口定义:cs1,cs2,vss,vdd,vo,d/i,r/w,e,d0--d7定义数据端口,0x80就是p0口
:互换试过了,还是不行。。。。。 ( 16:43) 屏坏了吧!!!!!!
:屏坏了吧!!!!!! ( 19:33) 有可能哦,明天换张试试
昨晚实验了下,用的也是“漂亮姑娘看过来”的程序 ,原作者真好玩。很正常,没有花屏之类的,232处取负压直接进5脚。对了,编辑下,我就这样一直运行了一晚上,早上看还是正常的。就是设置键可以操作,加减没反应,不过我是不打算用原来的按键扫描啦,驱动用用就好,呵呵。[attachment=3234672][attachment=3234671]
:昨晚实验了下,用的也是“漂亮姑娘看过来”的程序[表情] ,原作者真好玩。很正常,没有花屏之类的,232处取负压直接进5脚。对了,编辑下,我就这样一直运行了一晚上,早上看还是正常的。就是设置键可以操作,加减没反应,不过我是不打算用原来的按键扫描啦,驱动用用就好,呵呵 .. ( 08:35) 按键搞定没有呀?我现在按键都没搞定呢!
前面那张屏真的挂掉了哈哈[attachment=3242107]
我是来围观的
呵呵折腾,多折腾折腾就会明白了,其实端口怎么连接没关系,关键再与你写程序时的端口定义,8个数据线最好放一起,这样不会自找麻烦,呵呵,还有12864的屏,有带字库和不带字库的,我看你的程序里有字库了,那屏就不用字库了.
查看完整版本: [--
Powered by
Time 0.065828 second(s),query:5 Gzip enabled51单片机和12864的P0为什么要接上拉电阻_百度知道
51单片机和12864的P0为什么要接上拉电阻
我有更好的答案
P0口做数据总线时一般需要加上拉电阻,以用来解决总线驱动能力的不足。
高级工程师
为51单片机的P0口内部不带上拉电阻,因此不能有效输出高低电平,P2,P3内部自带上拉电阻。因此不需要外部接上拉电阻。如有帮助,望采纳。而P1
你好,如有帮助,还请麻烦采纳下。谢谢~
本回答被网友采纳
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。使用51单片机时P1、P2、P3也需要外接上拉电阻吗_百度知道
使用51单片机时P1、P2、P3也需要外接上拉电阻吗
我有更好的答案
P1、P2、P3不需要上拉电阻,片内已有。2请你参考,P0口内部是两个MOS管推拉输出,可以同时驱动8个TTL电路。3. P0口作为普通I/O口使用时,由于上面的MOS管截止,只有下面一个管子工作,才能输出高电平. P0口作为扩展总线的数据/地址复用线时,也不需要上拉电阻:1,处于开漏状态,此时需要外接上拉电阻!!。希望对你有所帮助!,这种情况下
采纳率:71%
要,P1/P2/P3内部集成了上拉电阻,P0口没有集成上拉电阻
为您推荐:
其他类似问题
51单片机的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 湿敏电阻 单片机 的文章

 

随机推荐