久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2505|回復: 6
收起左側

不帶字庫12864想讓兩個漢字上下之間沒有間隙緊挨著要怎么做?

[復制鏈接]
ID:379492 發表于 2018-8-21 12:47 | 顯示全部樓層 |閱讀模式
想讓兩個字上下之間沒有間隙,我該怎么辦啊?

不帶字庫12864LCD

不帶字庫12864LCD

  1. #include <reg51.h>
  2. sbit e=0xb0;//1011 0000
  3. sbit rw=0xb1;//1011 0001
  4. sbit rs=0xb2;//1011 0010
  5. sbit cs2=0xb3;//1011 0011
  6. sbit cs1=0xb4;//1011 0100
  7. sbit busy=0xa7;//1010 0111
  8. //PCtoLCD2002完美版 陰碼,逐列式,順向
  9. //漢字當前點陣大小16*16,字寬19,字高19
  10. char code an[]=        {
  11.                                 0x0A,0x10,0x32,0x10,0x22,0x10,0x23,0x90,0x2E,0xA0,0x62,0x60,
  12.                                 0x22,0x40,0x23,0xA0,0x22,0x20,0x2A,0x10,0x32,0x10,0x00,0x00,/*"安",0*/
  13.                                 };
  14. char code ke[]=        {
  15.                                 0x28,0xC0,0x2B,0x00,0x3F,0xF0,0x4A,0x00,0x49,0x00,0x00,0x80,
  16.                                 0x24,0x80,0x12,0x80,0x00,0x80,0x7F,0xF0,0x01,0x00,0x00,0x00,/*"科",0*/
  17.                 };
  18. void pulse()//puse=使能脈沖
  19.         {
  20.         e=1;
  21.         e=0;
  22.         }
  23. void busy_check(char right)
  24.         {
  25.         P2=0xff;//數據口全部高電平
  26.         if (right==1)
  27.                 {
  28.                 P3=0x13;//0001 0011 CS1=1;CS2=0;RS=0;RW=1;RW=1;左半屏
  29.                 while(!busy);
  30.                 }
  31.         if (right==0)
  32.                 {
  33.                 P3=0x0b;//0000 1011 CS1=0;CS2=1;RS=0;RW=1;RW=1;右半屏
  34.                 while(!busy);                        
  35.                 }
  36.         }

  37. void cmd_w(char cmd,char right)
  38.         {
  39.         busy_check(right);
  40.         if (right==1)
  41.                 {
  42.                 P3=0x10;//0001 0000 CS1=1
  43.                 }
  44.         if (right==0)
  45.                 {
  46.                 P3=0x08;//0000 1000        CS2=0
  47.                 P3=0x08;//0000 1000        CS2=0
  48.                 }
  49.         P2=cmd;
  50.         pulse();//使能脈沖
  51.         }

  52. void data_w(char dat,char right)
  53.         {
  54.         busy_check(right);
  55.         if (right==1)
  56.                 {
  57.                 P3=0x14;//0001 0100 CS1=1; RS=1;
  58.                 }
  59.         if (right==0)
  60.                 {
  61.                 P3=0x0c;//0000 1100 CS2=1; RS=1;
  62.                 }
  63.         P2=dat;
  64.         pulse();
  65.         }

  66. void lcd_init()
  67.         {
  68.         unsigned int i;
  69.         cmd_w(0x3e+1,0);//顯示開關 0011 1111
  70.         cmd_w(0xc0+0,0);//修改顯示起始行 1100 0000
  71.         cmd_w(0xb8+0,0);//修改頁地址 1011 1000
  72.         cmd_w(0x40+0,0);//修改列地址 0100 0000
  73.         cmd_w(0x3e+1,1);
  74.         cmd_w(0xc0+0,1);
  75.         cmd_w(0xb8+0,1);
  76.         cmd_w(0x40+0,1);
  77.         for(i=0;i<256;i++)
  78.                 {
  79.                 data_w(0x00,0);
  80.                 }

  81.         cmd_w(0xb8+4,0);//左邊 頁地址+4
  82.         cmd_w(0x40+8,0);//左邊 列地址+8
  83.         for(i=0;i<256;i++)
  84.                 {
  85.                 data_w(0x00,0);
  86.                 }

  87.         for(i=0;i<256;i++)
  88.                 {
  89.                 data_w(0x00,1);
  90.                 }

  91.         cmd_w(0xb8+4,1);//右邊 頁地址+4
  92.         cmd_w(0x40+8,1);//右邊 列地址+8
  93.         for(i=0;i<256;i++)
  94.                 {
  95.                 data_w(0x00,1);
  96.                 }
  97.         }

  98. char chang(char a)//chang(zhi[i])
  99.         {
  100.         char temp,i;
  101.         for(i=0;i<8;i++)
  102.                 {
  103.                 temp<<=1;//左移1位
  104.                 temp|=(a&0x01);//temp=temp|(a&0x01)
  105.                 a>>=1;//右移1位
  106.                 }
  107.         return(temp);
  108.         }

  109. void hanzi_w(char hang,char lie,char zhi[24])
  110.         {
  111.         unsigned char i;
  112.         if(lie<4)//漢字上半部分;左半屏
  113.                 {
  114.                 cmd_w(0xb8+1*hang,0);
  115.                 cmd_w(0x40+1*lie,0);
  116.                 for(i=0;i<24;i=i+2)
  117.                         data_w(chang(zhi[i]),0);
  118.                 }
  119.         else//漢字上半部分;右半屏
  120.                 {
  121.                 cmd_w(0xb8+1*hang,1);
  122.                 cmd_w(0x40+1*(lie-4),1);
  123.                 for(i=0;i<24;i+=2)
  124.                         data_w(chang(zhi[i]),1);
  125.                 }
  126.         if(lie<4)//漢字下半部分;左半屏
  127.                 {
  128.                 cmd_w(0xb8+1*hang+1,0);
  129.                 cmd_w(0x40+1*lie,0);
  130.                 for(i=1;i<24;i+=2)
  131.                         data_w(chang(zhi[i]),0);
  132.                 }
  133.         else//漢字下半部分;右半屏
  134.                 {
  135.                 cmd_w(0xb8+1*hang+1,1);
  136.                 cmd_w(0x40+1*(lie-4),1);
  137.                 for(i=1;i<24;i+=2)
  138.                         data_w(chang(zhi[i]),1);
  139.                 }
  140.         }

  141. void delay(unsigned char a)
  142.         {
  143.         unsigned char i,j;
  144.         for(i=0;i<a;i++)
  145.                 for(j=0;j<200;j++)
  146.                         ;
  147.         }

  148. void main()
  149.         {
  150.         //unsigned char i;
  151.         lcd_init();
  152.         hanzi_w(0,0,an);
  153.         hanzi_w(2,0,ke);

  154.         while(1)
  155.                 {
  156.                  delay(3);
  157.                 cmd_w(0xc0+1,0);
  158.                 cmd_w(0xc0,1);
  159.                 //i++;
  160.                 //if(i==64)
  161.                         //i=0;
  162.                 }
  163.         }
復制代碼


回復

使用道具 舉報

ID:379492 發表于 2018-8-21 12:48 | 顯示全部樓層
想讓安和科兩個字上下緊挨著,我怎么實現不了啊?求大神賜教
回復

使用道具 舉報

ID:379492 發表于 2018-8-22 10:25 | 顯示全部樓層
850787641@qq.co 發表于 2018-8-21 12:48
想讓安和科兩個字上下緊挨著,我怎么實現不了啊?求大神賜教

請大師指點一下
回復

使用道具 舉報

ID:387733 發表于 2018-8-22 11:43 | 顯示全部樓層
12864的液晶橫向128個點,縱向64個點,顯示16*16點陣漢字就是橫向8個漢字,縱向4個漢字。一般16*16點陣字庫實際不是用足16*16個點陣,而是在下面和右面各留一個點陣作為間隙,如果要想不留間隙,就需要更換字庫成真正16*16的字庫
回復

使用道具 舉報

ID:387733 發表于 2018-8-22 11:51 | 顯示全部樓層
更換字庫
回復

使用道具 舉報

ID:379492 發表于 2018-8-22 14:57 | 顯示全部樓層
sxhwdz 發表于 2018-8-22 11:43
12864的液晶橫向128個點,縱向64個點,顯示16*16點陣漢字就是橫向8個漢字,縱向4個漢字。一般16*16點陣字庫 ...

我的子模是取的12*12,想顯示5行漢字,5*12=60,每行之間間隔一個像素,剛好是64,能實現嗎?
回復

使用道具 舉報

ID:387733 發表于 2018-8-22 16:53 | 顯示全部樓層
這個比較麻煩,因為每字節8位,縱向64點是8個字節,那必須對字庫進行移位拼接,不是一點點麻煩,不建議
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲 成人 在线 | 不卡视频一区二区三区 | 91麻豆精品国产91久久久更新资源速度超快 | 亚洲国产专区 | 国产日韩欧美一区二区在线播放 | 在线播放国产一区二区三区 | 日本成人片在线观看 | 在线观看视频一区 | 国产精品乱码一二三区的特点 | 国产在线精品一区二区三区 | 久久亚洲国产精品 | 在线成人福利 | 一区免费看| 中文字幕在线网 | 中文字幕精品视频 | 精品一区二区三区四区 | 国产在线高清 | 亚洲高清在线观看 | 国产在线视频一区二区 | 日韩av在线不卡 | 91性高湖久久久久久久久_久久99 | 亚洲一区二区综合 | 在线观看国产精品视频 | 欧美精品在欧美一区二区 | 在线观看亚 | 91精品久久久久久久久中文字幕 | 国产精品区一区二区三 | 中文字幕一区二区三区在线视频 | 黄色大片网 | 国产日韩欧美在线一区 | 久久久久国产一区二区三区 | 一级免费a | 91九色视频 | 亚洲国产一区在线 | 伊人免费在线观看高清 | 亚洲三区在线播放 | 干干天天 | 日韩中文欧美 | 亚洲精品女优 | av中文在线观看 | 成人免费淫片aa视频免费 |