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

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

QQ登錄

只需一步,快速開始

搜索
查看: 7202|回復(fù): 9
收起左側(cè)

基于51單片機(jī)的ST7920芯片lcd12864液晶顯示程序

[復(fù)制鏈接]
ID:171844 發(fā)表于 2017-3-18 18:59 | 顯示全部樓層 |閱讀模式
有助新人學(xué)習(xí)12864液晶的資料

ST7920驅(qū)動(dòng)程序:
  1. /*********************************************************************************
  2. * 【編寫時(shí)間】: 2017年3月19日
  3. * 【作    者】: 清翔電子:03
  4. * 【版    本】: 1.0
  5. * 【實(shí)驗(yàn)平臺(tái)】: QX-MCS51 單片機(jī)開發(fā)板
  6. * 【外部晶振】: 11.0592mhz       
  7. * 【主控芯片】: STC89C52RC
  8. * 【編譯環(huán)境】: Keil μVisio4       
  9. * 【程序功能】: 12864液晶顯示測(cè)試                                                                                           
  10. * 【使用說明】: 使用液晶前拔下數(shù)碼管J6跳帽
  11. 12864屏幕向板子外插,插在L1排母上
  12. **********************************************************************************/

  13. #include <reg52.h>
  14. #include <string.h>

  15. #define uchar unsigned char
  16. #define uint  unsigned int

  17. uchar code IC_DAT[];
  18. uchar code pic1[];
  19. uchar code pic2[];
  20. uchar code pic3[];

  21. sbit RS  = P0^7;
  22. sbit WRD = P0^6;
  23. sbit E   = P0^5;
  24. sbit PSB = P0^4;
  25. sbit RES = P0^3;

  26. void TransferData(char data1,bit DI);
  27. void display(void);
  28. void display_grapic(void);
  29. void delayms(uint n);
  30. void DisplayLine(uchar line1,uchar line2);
  31. void DisplayGraphic(uchar code *adder);
  32. void delay(uint m);
  33. void lcd_mesg(uchar code *adder1);

  34. uchar code IC_DAT[]={
  35. "    智能小車    "  
  36. "    俱樂部      "
  37. "    QQ 群號(hào):     "
  38. "   12933307    "
  39. };

  40. uchar code IC_DAT2[]={
  41. "  床前明月光,  "                        //0x80
  42. "  疑是地上霜,  "                        //0x90
  43. "  舉頭望明月。  "                        //0x88
  44. "  低頭思故鄉(xiāng)。  "                        //0x98
  45. };

  46. /********************************************************************
  47. * 名稱 : Convert(uchar In_Date)
  48. * 功能 : 因?yàn)殡娐吩O(shè)計(jì)時(shí),P0.0--P0.7接法剛好了資料中的相反,所以設(shè)計(jì)該函數(shù)。
  49. * 輸入 : 1602資料上的值
  50. * 輸出 : 送到1602的值
  51. ***********************************************************************/
  52. unsigned char Convert(unsigned char In_Date)
  53. {
  54.     unsigned char i, Out_Date = 0, temp = 0;
  55.     for(i=0; i<8; i++)
  56.     {
  57.         //temp = (In_Date >> i) & 0x01;
  58.         //Out_Date |= (temp << (7 - i));
  59.                 Out_Date=  In_Date;

  60.     }
  61.     return Out_Date;
  62. }

  63. void initinal(void)           //LCD字庫(kù)初始化程序
  64. {
  65.            delay(40);             //大于40MS的延時(shí)程序
  66.            PSB=1;                 //設(shè)置為8BIT并口工作模式
  67.            delay(1);              //延時(shí)
  68.            RES=0;                 //復(fù)位
  69.            delay(1);              //延時(shí)
  70.            RES=1;                 //復(fù)位置高
  71.            delay(10);
  72.            TransferData(0x30,0);  //Extended Function Set :8BIT設(shè)置,RE=0: basic instruction set, G=0 :graphic display OFF
  73.            delay(100);            //大于100uS的延時(shí)程序
  74.            TransferData(0x30,0);  //Function Set
  75.            delay(37);             ////大于37uS的延時(shí)程序
  76.            TransferData(0x08,0);  //Display on Control
  77.            delay(100);            //大于100uS的延時(shí)程序
  78.            TransferData(0x10,0);  //Cursor Display Control光標(biāo)設(shè)置
  79.            delay(100);            //大于100uS的延時(shí)程序
  80.            TransferData(0x0C,0);  //Display Control,D=1,顯示開
  81.            delay(100);            //大于100uS的延時(shí)程序
  82.            TransferData(0x01,0);  //Display Clear
  83.            delay(10);             //大于10mS的延時(shí)程序
  84.            TransferData(0x06,0);  //Enry Mode Set,光標(biāo)從右向左加1位移動(dòng)
  85.            delay(100);            //大于100uS的延時(shí)程序
  86.           }

  87. /********************************************************************
  88. * 名稱 : Main()
  89. * 功能 : 主函數(shù)
  90. * 輸入 : 無
  91. * 輸出 : 無
  92. ***********************************************************************/
  93. void     initina2(void)           //LCD顯示圖片(擴(kuò)展)初始化程序
  94.           {
  95.            delay(40);             //大于40MS的延時(shí)程序
  96.            PSB=1;                 //設(shè)置為8BIT并口工作模式
  97.            delay(1);              //延時(shí)
  98.            RES=0;                 //復(fù)位
  99.            delay(1);              //延時(shí)
  100.            RES=1;                 //復(fù)位置高
  101.            delay(10);

  102.            TransferData(0x36,0);  //Extended Function Set RE=1: extended instruction
  103.            delay(100);            //大于100uS的延時(shí)程序
  104.            TransferData(0x36,0);  //Extended Function Set:RE=1: extended instruction set
  105.            delay(37);             ////大于37uS的延時(shí)程序
  106.            TransferData(0x3E,0);  //EXFUNCTION(DL=8BITS,RE=1,G=1)
  107.            delay(100);            //大于100uS的延時(shí)程序
  108.            TransferData(0x01,0);  //CLEAR SCREEN
  109.            delay(100);            //大于100uS的延時(shí)程序
  110.           }

  111. /********************************************************************
  112. * 名稱 : Main()
  113. * 功能 : 主函數(shù)
  114. * 輸入 : 無
  115. * 輸出 : 無
  116. ***********************************************************************/
  117. void    main(void)
  118.      {
  119.          while(1)
  120.             {
  121.                   initina2();            //調(diào)用LCD顯示圖片(擴(kuò)展)初始化程序
  122.   
  123.           DisplayGraphic(pic2);  //顯示圖片2
  124.           delayms(200);                          

  125.           initinal();                    //調(diào)用LCD字庫(kù)初始化程序
  126.           delay(100);            //大于100uS的延時(shí)程序
  127.           lcd_mesg(IC_DAT);      //顯示中文漢字1
  128.           delayms(240);
  129.           delayms(240);
  130.           
  131.           initinal();                    //調(diào)用LCD字庫(kù)初始化程序
  132.           delay(100);            //大于100uS的延時(shí)程序
  133.           lcd_mesg(IC_DAT2);     //顯示中文漢字2
  134.           delayms(240);
  135.                   delayms(240);
  136.                   initinal();  
  137.         }
  138.       }

  139. /********************************************************************
  140. * 名稱 : Main()
  141. * 功能 : 主函數(shù)
  142. * 輸入 : 無
  143. * 輸出 : 無
  144. ***********************************************************************/
  145. void   lcd_mesg(unsigned char code *adder1)
  146. {
  147.         unsigned char i;
  148.         TransferData(0x80,0);  //Set Graphic Display RAM Address
  149.         delay(100);
  150.         for(i=0;i<32;i++)
  151.                 {
  152.                           TransferData(*adder1,1);
  153.                            adder1++;
  154.                 }

  155.         TransferData(0x90,0);  //Set Graphic Display RAM Address
  156.         delay(100);
  157.         for(i=32;i<64;i++)
  158.                 {
  159.                           TransferData(*adder1,1);
  160.                            adder1++;
  161.                 }
  162. }

  163. /********************************************************************
  164. * 名稱 : Main()
  165. * 功能 : 主函數(shù)
  166. * 輸入 : 無
  167. * 輸出 : 無
  168. ***********************************************************************/
  169. void    TransferData(char data1,bit DI)  //傳送數(shù)據(jù)或者命令,當(dāng)DI=0是,傳送命令,當(dāng)DI=1,傳送數(shù)據(jù).
  170.           {
  171.             WRD=0;
  172.             RS=DI;
  173.             delay(1);
  174.             P2=Convert(data1);
  175.             E=1;
  176.             delay(1);
  177.             E=0;
  178.            }

  179. /********************************************************************
  180. * 名稱 : Main()
  181. * 功能 : 主函數(shù)
  182. * 輸入 : 無
  183. * 輸出 : 無
  184. ***********************************************************************/
  185. void    delayms(unsigned int n)            //延時(shí)10×n毫秒程序
  186.                    {
  187.                       unsigned int i,j;
  188.                       for(i=0;i<n;i++)
  189.                          for(j=0;j<2000;j++);
  190.                    }

  191. /********************************************************************
  192. * 名稱 : Main()
  193. * 功能 : 主函數(shù)
  194. * 輸入 : 無
  195. * 輸出 : 無
  196. ***********************************************************************/
  197. void    delay(unsigned int m)            //延時(shí)程序
  198.                    {
  199.                       unsigned int i,j;
  200.                       for(i=0;i<m;i++)
  201.                          for(j=0;j<10;j++);
  202.                    }

  203. /********************************************************************
  204. * 名稱 : Main()
  205. * 功能 : 主函數(shù)
  206. * 輸入 : 無
  207. * 輸出 : 無
  208. ***********************************************************************/
  209. void DisplayGraphic(unsigned char code *adder)
  210. {

  211.    int i,j;
  212. //*******顯示上半屏內(nèi)容設(shè)置
  213.    for(i=0;i<32;i++)              //
  214.     {
  215.       TransferData((0x80 + i),0); //SET  垂直地址 VERTICAL ADD
  216.       TransferData(0x80,0);       //SET  水平地址 HORIZONTAL ADD
  217.       for(j=0;j<16;j++)
  218.        {
  219.          TransferData(*adder,1);
  220.          adder++;
  221.        }
  222.     }          
  223. //*******顯示下半屏內(nèi)容設(shè)置
  224.    for(i=0;i<32;i++)              //
  225.     {
  226.       TransferData((0x80 + i),0); //SET 垂直地址 VERTICAL ADD
  227.       TransferData(0x88,0);       //SET 水平地址 HORIZONTAL ADD
  228.       for(j=0;j<16;j++)
  229.        {
  230.          TransferData(*adder,1);
  231.          

  232. …………余下代碼請(qǐng)下載附件…………
復(fù)制代碼
0.png
下載:
實(shí)驗(yàn)23 12864液晶測(cè)試程序.rar (40.5 KB, 下載次數(shù): 117)

評(píng)分

參與人數(shù) 1黑幣 +3 收起 理由
cxl1994 + 3 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:189835 發(fā)表于 2018-8-10 09:13 | 顯示全部樓層
這個(gè)程序LCD讀寫不會(huì)出錯(cuò)嗎?TransferData(char data1,bit DI) ,我看時(shí)序圖,
回復(fù)

使用道具 舉報(bào)

ID:189835 發(fā)表于 2018-8-10 09:15 | 顯示全部樓層
void    TransferData(char data1,bit DI)  //傳送數(shù)據(jù)或者命令,當(dāng)DI=0是,傳送命令,當(dāng)DI=1,傳送數(shù)據(jù).           {             WRD=0;             RS=DI;             delay(1);             P2=Convert(data1);             E=1;             delay(1);             E=0;            },,感覺應(yīng)該是先 E=1;P2=Convert(data1); delay(1);             E=0;
回復(fù)

使用道具 舉報(bào)

ID:135635 發(fā)表于 2018-11-28 15:02 | 顯示全部樓層
太好了,支持!謝謝樓主!
回復(fù)

使用道具 舉報(bào)

ID:451441 發(fā)表于 2018-12-26 08:23 | 顯示全部樓層
好資料,正在學(xué)12864,太及時(shí)了,謝謝LZ
回復(fù)

使用道具 舉報(bào)

ID:458251 發(fā)表于 2018-12-29 20:30 | 顯示全部樓層
你們有花屏的情況嗎
回復(fù)

使用道具 舉報(bào)

ID:385135 發(fā)表于 2019-4-7 22:36 來自手機(jī) | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報(bào)

ID:406814 發(fā)表于 2024-6-5 00:11 | 顯示全部樓層
這個(gè)驗(yàn)證過了嗎?
回復(fù)

使用道具 舉報(bào)

ID:406814 發(fā)表于 2024-6-5 00:16 | 顯示全部樓層
void Ini_Lcd( void )
{
Port_init_12864(); /*  液晶控制端口設(shè)置為輸出 */
LCD_write_com( 0x30 ); /*  基本指令集 */
Delay_1ms();
LCD_write_com( 0x02 ); /*  地址歸位 */
Delay_1ms();
LCD_write_com( 0x0c ); /*  整體顯示打開 , 游標(biāo)關(guān)閉 */
Delay_1ms();
LCD_write_com( 0x01 ); /*  清除顯示 */
Delay_1ms();
LCD_write_com( 0x06 ); /*  游標(biāo)右移 */
Delay_1ms();
LCD_write_com( 0x80 ); /*  設(shè)定顯示的起始地址 */
}
你的初始化和別人的差異好大,這個(gè)有影響嗎?
回復(fù)

使用道具 舉報(bào)

ID:406814 發(fā)表于 2024-6-9 01:13 | 顯示全部樓層
感謝樓主分享。這個(gè)我試過了,可以使用
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区三区在线 | 一区二区电影网 | 日韩精品 电影一区 亚洲 | 亚洲精品专区 | 99精品久久 | 日操操夜操操 | 成人性视频免费网站 | 欧美日韩国产一区二区三区 | 国产精品成人国产乱一区 | 国产精品永久免费视频 | 中文字幕中文字幕 | 一区二区三区日本 | 久草精品视频 | 九色网址 | 在线看91 | 亚洲男人的天堂网站 | 亚洲一区二区久久久 | 久久国产精品99久久久大便 | 两性午夜视频 | 免费毛片网 | 在线国产99 | 日本免费视频在线观看 | 91超碰在线 | 亚洲精品一区二三区不卡 | 精品中文字幕一区 | 国产目拍亚洲精品99久久精品 | 国产91丝袜在线播放 | 久久99久久久久 | 亚洲精品一区二区三区丝袜 | 国产精品久久久久婷婷二区次 | 日韩精品一区二区三区中文在线 | 国产精品视频综合 | 一区二区三区四区日韩 | 三级在线免费观看 | 国产97视频在线观看 | 成人福利电影 | 久国产精品 | 中文字幕在线一区二区三区 | 国产婷婷精品av在线 | 亚洲成人一二三 | 日韩另类|