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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3500|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

LCD12864的底層驅(qū)動(dòng)程序解讀,讀不懂,哪位大佬幫幫忙

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:326864 發(fā)表于 2020-4-15 17:01 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
10黑幣
  1. #ifndef _LCD12864_H_
  2. #define _LCD12864_H_
  3. #define uchar unsigned char  //宏定義
  4. #define uint unsigned int

  5. sbit LCD12864_CS=P2^5;                //串口時(shí)為CS                                         //12864控制I/O口
  6. sbit LCD12864_SID=P2^6;           //串口為SID
  7. sbit LCD12864_CLK=P2^7;           //串口為時(shí)鐘CLK


  8. /**********************************************************
  9. #:函數(shù)名:SendWrite(uchar dat)
  10. #:函數(shù)功能:發(fā)送8位數(shù)據(jù)給LCD12864
  11. #:函數(shù)參數(shù):dat位發(fā)送的數(shù)據(jù)變量
  12. ***********************************************************/
  13. void SendWrite(uchar dat)
  14. {
  15.         uchar i;
  16.         for(i=0;i<8;i++)
  17.         {
  18.                 LCD12864_CLK=0;
  19.                 dat=dat<<1;
  20.                 LCD12864_SID=CY;
  21.                 LCD12864_CLK=1;
  22.                 LCD12864_CLK=0;
  23.         }
  24. }

  25. /**********************************************************
  26. #:函數(shù)名:uchar LCD12864_Read(void)
  27. #:函數(shù)功能:讀取LCD12864中的數(shù)據(jù)
  28. #:函數(shù)參數(shù):函數(shù)返回讀取的數(shù)據(jù)內(nèi)容
  29. ***********************************************************/
  30. uchar LCD12864_Read(void)
  31. {
  32.         uchar i,dat1,dat2;
  33.         dat1=dat2=0;
  34.         for(i=0;i<8;i++)
  35.         {
  36.                 dat1=dat1<<1;
  37.                 LCD12864_CLK = 0;
  38.                 LCD12864_CLK = 1;               
  39.                 LCD12864_CLK = 0;
  40.                 if(LCD12864_SID) dat1++;
  41.         }
  42.         for(i=0;i<8;i++)
  43.         {
  44.                 dat2=dat2<<1;
  45.                 LCD12864_CLK = 0;
  46.                 LCD12864_CLK = 1;
  47.                 LCD12864_CLK = 0;
  48.                 if(LCD12864_SID) dat2++;
  49.         }
  50.         return ((0xf0&dat1)+(0x0f&dat2));
  51. }
  52. /**********************************************************
  53. #:函數(shù)名:LCD12864_Busy( void )
  54. #:函數(shù)功能:判忙函數(shù)
  55. #:函數(shù)參數(shù):無(wú)
  56. ***********************************************************/
  57. void LCD12864_Busy( void )
  58. {
  59.         do SendWrite(0xfc);     //11111,RW(1),RS(0),0
  60.         while(0x80&LCD12864_Read());
  61. }

  62. /**********************************************************
  63. #:函數(shù)名:void LCD12864_write(bit cmd,uchar dat)
  64. #:函數(shù)功能:向屏發(fā)送命令/數(shù)據(jù) 帶發(fā)送數(shù)據(jù)
  65. #:函數(shù)參數(shù):cmd標(biāo)志發(fā)送數(shù)據(jù)、命令,0為命令,1位數(shù)據(jù);   dat 位數(shù)據(jù)內(nèi)容
  66. ***********************************************************/
  67. void LCD12864_write(bit cmd,uchar dat)  
  68. {
  69.         LCD12864_CS = 1;
  70.         LCD12864_Busy();
  71.         if(cmd==0) SendWrite(0xf8);
  72.         else SendWrite(0xfa);          //11111,RW(0),RS(1),0
  73.         SendWrite(0xf0&dat);
  74.         SendWrite(0xf0&dat<<4);
  75.         LCD12864_CS = 0;
  76. }
  77. /**********************************************************
  78. #:函數(shù)名:void LCD12864_writebyte(uchar *prointer)
  79. #:函數(shù)功能:指針發(fā)送顯示數(shù)據(jù)
  80. #:函數(shù)參數(shù):prointer位指針內(nèi)容
  81. ***********************************************************/
  82. void LCD12864_writebyte(uchar *prointer)                       
  83. {
  84.     while(*prointer!='\0')
  85.     {
  86.         LCD12864_write(1,*prointer);
  87.         prointer++;
  88.     }
  89. }

  90. /******************************************************************
  91.                          lcd初始化函數(shù)
  92. *******************************************************************/
  93. void LCD12864_init(void)
  94. {
  95.      LCD12864_write(0,0x30);
  96.      LCD12864_write(0,0x03);
  97.      LCD12864_write(0,0x0c);
  98.      LCD12864_write(0,0x01);
  99.      LCD12864_write(0,0x06);
  100. }

  101. /**********************************************************
  102. #:函數(shù)名:void LCD12864_pos(uchar x,y)
  103. #:函數(shù)功能:設(shè)置屏幕顯示的位置
  104. #:函數(shù)參數(shù):X,Y,為顯示的坐標(biāo)   X位行數(shù)據(jù),Y位列數(shù)據(jù)
  105. ***********************************************************/
  106. void LCD12864_pos(uchar x,y)
  107. {
  108.         switch(x)
  109.         {
  110.                 case 0:
  111.                         x=0x80;break;
  112.                 case 1:
  113.                         x=0x90;break;
  114.                 case 2:
  115.                         x=0x88;break;
  116.                 case 3:
  117.                         x=0x98;break;
  118.                 default:
  119.                         x=0x80;
  120.         }
  121.         y=y&0x07;
  122.         LCD12864_write(0,0x30);
  123.         LCD12864_write(0,y+x);
  124.         LCD12864_write(0,y+x);

  125. }
  126. /**********************************************************
  127. #:函數(shù)名:void LCD12864_Qing( void )
  128. #:函數(shù)功能:清除屏幕顯示的你內(nèi)容
  129. #:函數(shù)參數(shù):X,Y,為顯示的坐標(biāo)   X位行數(shù)據(jù),Y位列數(shù)據(jù)
  130. ***********************************************************/
  131. void LCD12864_Qing( void )
  132. {
  133.         unsigned char i;
  134.         LCD12864_write(0,0x30);
  135.         LCD12864_write(0,0x80);
  136.         for(i=0;i<64;i++)
  137.         LCD12864_write(1,0x20);
  138.         LCD12864_pos(0,0);            
  139. }

  140. #endif
復(fù)制代碼
怎么個(gè)意思,啊

最佳答案

查看完整內(nèi)容

1、兩個(gè) for(i=0;i
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:282850 發(fā)表于 2020-4-15 17:01 | 只看該作者
1、兩個(gè) for(i=0;i<8;i++): 從return ((0xf0&dat1)+(0x0f&dat2));看dat1是高4位,dat2是低4位有效,返回還是uchar,原則上一個(gè) for(i=0;i<8;i++)就可以的,如果程序用不了,建議改成一個(gè)for。另外要看芯片手冊(cè),大部分一個(gè)for。
2、clk還要先低后高再低:串行的時(shí)序要求,時(shí)鐘上升沿讀、寫(xiě)。
3、y=y&0x07;是取低三位,0x07是b0000 0111。
4、LCD12864_write(0,y+x);0是指令,1是數(shù)據(jù),#:函數(shù)參數(shù):cmd標(biāo)志發(fā)送數(shù)據(jù)、命令,0為命令,1位數(shù)據(jù); LCD12864_write函數(shù)定義已說(shuō)明清楚了 。
回復(fù)

使用道具 舉報(bào)

板凳
ID:584814 發(fā)表于 2020-4-15 19:04 | 只看該作者
如果是哪一句不清楚可以直說(shuō),如果全部不清楚就報(bào)名培訓(xùn)。
回復(fù)

使用道具 舉報(bào)

地板
ID:326864 發(fā)表于 2020-4-16 14:49 | 只看該作者
man1234567 發(fā)表于 2020-4-15 19:04
如果是哪一句不清楚可以直說(shuō),如果全部不清楚就報(bào)名培訓(xùn)。

你好,前面的讀數(shù)據(jù)的時(shí)候?yàn)槭裁匆袃蓚(gè) for(i=0;i<8;i++),clk還要先低后高再低?LCD12864_write(0,0x03);這個(gè)指令好像沒(méi)有,y=y&0x07;這個(gè)是取低三位嗎? LCD12864_write(0,y+x);這個(gè)是什么意思,還有括號(hào)里前面的0代表什么意思,如果寫(xiě)成1的話是什么意思。
回復(fù)

使用道具 舉報(bào)

5#
ID:311846 發(fā)表于 2020-4-17 09:35 | 只看該作者
我感覺(jué)你是全部看不懂,你可以先去看看顯示屏的手冊(cè),然后研究下他的通信協(xié)議,結(jié)合單片機(jī),慢慢熬吧!
回復(fù)

使用道具 舉報(bào)

6#
ID:326864 發(fā)表于 2020-4-17 12:54 | 只看該作者
f556 發(fā)表于 2020-4-15 17:01
1、兩個(gè) for(i=0;i

謝謝大佬
回復(fù)

使用道具 舉報(bào)

7#
ID:326864 發(fā)表于 2020-4-17 12:55 | 只看該作者
權(quán)威人物 發(fā)表于 2020-4-17 09:35
我感覺(jué)你是全部看不懂,你可以先去看看顯示屏的手冊(cè),然后研究下他的通信協(xié)議,結(jié)合單片機(jī),慢慢熬吧!

主要是沒(méi)接觸過(guò)過(guò)12864
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人福利在线观看 | 国产精品麻 | 九九导航 | 亚洲欧美日韩高清 | 五月天婷婷狠狠 | 欧美黄色一区 | 精品视频一区二区 | 天天躁日日躁性色aⅴ电影 免费在线观看成年人视频 国产欧美精品 | 国产传媒视频在线观看 | 久久69精品久久久久久久电影好 | 欧美中文字幕一区二区 | 欧美亚洲视频在线观看 | 国产亚洲一区二区三区在线 | 免费成人毛片 | 国产精品99久久久久久动医院 | 精品国产欧美一区二区三区成人 | 中国黄色毛片视频 | 日韩在线h | 中日韩欧美一级片 | av手机免费在线观看 | 成人亚洲视频 | 男人天堂网址 | 亚洲毛片在线观看 | 日韩综合在线播放 | 亚洲日日操 | 观看毛片 | 毛片免费视频 | 99久久精品一区二区毛片吞精 | 亚洲视频免费观看 | 国产1页| 精品国产91 | 国产精品免费av | 亚洲激情一区二区三区 | 欧美乱操| 亚洲精品久久久一区二区三区 | 色999视频 | 精品国产99 | 久久综合九色综合欧美狠狠 | 99国产精品99久久久久久 | 在线免费看毛片 | 国产一区影院 |