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

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

QQ登錄

只需一步,快速開始

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

基于stc15w4單片機(jī)的lcd12864顯示程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
這是基于iap15w4k61s4 主控 lcd1286的顯示

主函數(shù)
  1. #include <STC15F2K60S2.H>
  2. #include <stdint.h>
  3. #include <lcd.h>
  4. #include <hal_delay.h>
  5. #include "key.h"



  6. int main()
  7. {
  8.                 LCD_Init();
  9.                 key_Init();
  10.                 delay_ms(100);
  11.                 LCD_ShowString(3,3,4,"CSDN");
  12.                 BUZZER_TEST();
  13.                 while(1)
  14.                 {
  15.                         
  16.                         KEY_Check();
  17.                 }
  18.         
  19. }
復(fù)制代碼
lcd.c

  1. #include <STC15F2K60S2.H>
  2. #include <math.h>
  3. #include "lcd.h"
  4. #include "hal_delay.h"


  5. /***************************************************************************
  6. * 描  述 : LCD12864液晶判忙程序。如LCD為“忙”狀態(tài),一直等待直到LCD空閑
  7. * 參  數(shù) : 無
  8. * 返回值 : 無
  9. **************************************************************************/
  10. void Busy(void)   
  11. {   
  12.         uchar busy;
  13.         
  14.         do  
  15.         {         
  16.                 RW = 1; RS = 0;   //讀                                          
  17.                 E = 1;            //使能液晶模塊.0=關(guān)閉使能端,1=打開使能端
  18.                 P7M0=0x00;
  19.                 P7M1=0x00;              //設(shè)置P2.0~P2.7為準(zhǔn)雙向口
  20.                 busy=P7;          //讀取P2狀態(tài)      
  21.                 delay_5us(10);        
  22.                 E = 0;            //關(guān)閉液晶模塊使能端.0=關(guān)閉使能端,1=打開使能端     
  23.         }while(busy&0x80);  //判斷BUSY位是否工作:1=內(nèi)部在工作,0=空閑
  24. }  
  25. /***************************************************************************
  26. * 描  述 : LCD12864液晶模塊從當(dāng)前地址讀RAM數(shù)據(jù)
  27. * 參  數(shù) : 無
  28. * 返回值 : Dat:讀取的數(shù)據(jù)
  29. **************************************************************************/
  30. uchar ReadDat(void)
  31. {
  32.   uchar Dat;
  33.   
  34.         P7 = 0xff;
  35.         Busy();         //判忙
  36.         
  37.         RW = 1;RS = 1;  //讀
  38.         E = 1;          //使能液晶模塊.0=關(guān)閉使能端,1=打開使能端
  39.   Dat=P7;         //保存讀取的數(shù)據(jù)
  40.         delay_5us(1);
  41.   E = 0;          //關(guān)閉液晶模塊使能端.0=關(guān)閉使能端,1=打開使能端      
  42.   delay_5us(1);
  43.   return Dat;
  44. }
  45. /***************************************************************************
  46. * 描  述 : LCD12864液晶命令寫入程序
  47. * 參  數(shù) : cmd[in]:寫入的命令
  48. * 返回值 : 無
  49. **************************************************************************/
  50. void Write_Cmd(uchar cmd)
  51. {      
  52.         Busy();       //判忙
  53.            
  54.         RW=0; RS=0;   //寫指令                     
  55.         P7M1 = 0;         
  56.         P7M0 = 0xff;        //設(shè)置P2.0~P2.7為推挽輸出
  57.         P7=cmd;       //寫入命令
  58.         
  59.         E=1;          //使能液晶模塊.0=關(guān)閉使能端,1=打開使能端
  60.         delay_5us(1);  
  61.         E=0;          //關(guān)閉液晶模塊使能端.0=關(guān)閉使能端,1=打開使能端  
  62.   delay_5us(1);         
  63. }
  64. /***************************************************************************
  65. * 描  述 : LCD12864液晶數(shù)據(jù)寫入程序
  66. * 參  數(shù) : dat[in]:寫入的數(shù)據(jù)
  67. * 返回值 : 無
  68. **************************************************************************/
  69. void Write_Data(uchar dat)
  70. {   
  71.         Busy();       //判忙                    
  72.         RW=0;RS=1;    //寫數(shù)據(jù)   
  73.                  
  74.         P7M1 = 0;        
  75.         P7M0 = 0xff;        //設(shè)置P2.0~P2.7為推挽輸出        
  76.         P7=dat;       //寫入數(shù)據(jù)
  77.   
  78.         E =1;         //使能液晶模塊
  79.         delay_5us(3);     
  80.         E =0;         //關(guān)閉液晶模塊使能端
  81. }  

  82. /**************************************************************************
  83. * 描  述 : 指定位置顯示單個(gè)字符
  84. * 參  數(shù) : row[in]:行,范圍1~4
  85. *        :column[in]:列,范圍0~7  
  86. *        :chr[in]:字符編碼
  87. * 返回值 : 無
  88. **************************************************************************/
  89. void LCD_ShowChar(uchar row,uchar column,uchar chr)
  90. {              
  91.         uchar Address;
  92.         
  93.         //row判斷第幾行,column判斷第幾列,0x80為液晶行初始地址   
  94.         if(row == 1)Address=0x80+column;   
  95.         if(row == 2){Address=0x90+column;}        
  96.         if(row == 3){Address=0x88+column;}   
  97.         if(row == 4){Address=0x98+column;}  
  98.         Write_Cmd(Address);  //寫入地址命令到LCD12864     
  99.         Write_Data(chr);     //寫入顯示數(shù)據(jù)到LCD12864   
  100. }

  101. /***************************************************************************
  102. * 描  述 : 字符串顯示
  103. * 參  數(shù) : row[in]:行,范圍1~4
  104. *        :column[in]:列,范圍0~7  
  105. *        :num[in]:字符個(gè)數(shù),注意一個(gè)漢字=2個(gè)字符
  106. *        :s[in]:指向待顯示的字符串
  107. * 返回值 : 無
  108. **************************************************************************/
  109. void LCD_ShowString(uchar row,uchar column,uchar num,uchar *s)   
  110. {     
  111.         uchar Address;   
  112.         
  113.         //row判斷第幾行,column判斷第幾列,0x80為液晶行初始地址   
  114.         if(row == 1)Address=0x80+column;   
  115.         if(row == 2){Address=0x90+column;}        
  116.         if(row == 3){Address=0x88+column;}   
  117.         if(row == 4){Address=0x98+column;}   
  118.         Write_Cmd(Address);    //寫入顯示起始地址
  119.         while(num)             //寫入顯示數(shù)據(jù)的大小  
  120.         {   
  121.                 Write_Data(*(s++));  //寫入顯示數(shù)據(jù)到LCD12864   
  122.                 num--;         
  123.         }   
  124. }

  125. /***************************************************************************
  126. * 描  述 : 填充,當(dāng)如數(shù)數(shù)據(jù)為0的時(shí)候即可實(shí)現(xiàn)清屏
  127. * 參  數(shù) : dat[in]:填充的數(shù)據(jù)
  128. * 返回值 : 無
  129. **************************************************************************/
  130. void Fill_GDRAM(uchar dat)
  131. {
  132.   uchar i,j,k;

  133.   uchar GDRAM_X=0x80;
  134.   uchar GDRAM_Y=0x80;

  135.   for(i=0;i<2;i++)
  136.   {
  137.     for(j=0;j<32;j++)
  138.     {
  139.       for(k=0;k<8;k++)
  140.       {
  141.         Write_Cmd(0x34);
  142.         Write_Cmd(GDRAM_Y+j);
  143.         Write_Cmd(GDRAM_X+k);
  144.         Write_Data(dat);
  145.         Write_Data(dat);
  146.       }
  147.     }
  148.     GDRAM_X=0x88;
  149.   }

  150.   Write_Cmd(DRAM_ON);//開啟繪圖模式
  151.   Write_Cmd(0x30);   //恢復(fù)基本指令集,關(guān)閉繪圖模式
  152. }

  153. /***************************************************************************
  154. * 描  述 : LCD12864液晶初始化程序
  155. * 參  數(shù) : 無
  156. * 返回值 : 無
  157. **************************************************************************/
  158. void LCD_Init(void)     
  159. {  
  160.                 P7M1 = 0; P7M0 = 0;
  161.                 P4M1 = 0;        P4M0 = 0;        
  162.    E = 0;         
  163.          delay_ms(1);                  
  164.          Write_Cmd(0x30);   // 基本指令集     
  165.          delay_ms(1);      
  166.          Write_Cmd(0x02);   // 地址歸位     
  167.          delay_ms(1);      
  168.          Write_Cmd(0x0c);   // 整體顯示打開,游標(biāo)關(guān)閉     
  169.          delay_ms(1);      
  170.          Write_Cmd(0x06);   // 游標(biāo)右移     
  171.          delay_ms(1);      
  172.          Write_Cmd(0x80);   // 設(shè)定顯示的起始地址     
  173.          delay_ms(1);      
  174.          Write_Cmd(0x01);   // 清除顯示
  175.          delay_ms(10);      // 這個(gè)延時(shí)必須要有,否則可能會(huì)出現(xiàn)花屏
  176. }

  177. /*********************************END FILE********************************************/        


復(fù)制代碼

Keil代碼下載: 12864_SHOW.zip (63.44 KB, 下載次數(shù): 40)

評(píng)分

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

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:230742 發(fā)表于 2021-12-8 18:28 | 只看該作者
上個(gè)電路圖啊,最好在帶一個(gè)咯嘣文件,不就50分了。
哈哈。
感謝分享。
回復(fù)

使用道具 舉報(bào)

板凳
ID:16255 發(fā)表于 2021-12-8 18:46 | 只看該作者
強(qiáng)迫癥表示,“I”為什么要用大寫?
回復(fù)

使用道具 舉報(bào)

地板
ID:57657 發(fā)表于 2021-12-8 21:56 | 只看該作者
你這是什么板子? 上面應(yīng)該開4個(gè)固定屏幕的螺絲孔。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美亚洲免费 | 欧美日韩在线一区二区三区 | 国产在线观看一区二区 | 欧美成人免费在线 | 一级毛片视频在线观看 | 久久久久久中文字幕 | 日韩精品在线观看网站 | 亚洲视频精品 | 99热热 | 欧美精品在线一区 | 亚洲 欧美 日韩 在线 | 亚洲最大的黄色网址 | 日韩久草 | 美女黄视频网站 | 成人一区二区电影 | 国产黄色小视频在线观看 | 91亚洲国产成人久久精品网站 | 国产精品久久久久久久久久妇女 | 99久久精品国产一区二区三区 | 激情毛片 | 香蕉视频一区二区 | 在线观看成人精品 | 午夜精品一区二区三区在线观看 | 91精品国产一区二区 | 在线观看www| 九九热精品视频 | 成人午夜电影网 | 欧美综合精品 | 日本人做爰大片免费观看一老师 | zzzwww在线看片免费 | 日韩av在线一区二区三区 | 国产精品完整版 | 一区在线视频 | 久久久精品视频免费看 | 国产精品久久九九 | 久久99精品国产99久久6男男 | 国产精品久久久久久久岛一牛影视 | 福利久久 | 一级毛片免费完整视频 | 欧美中文字幕一区二区三区亚洲 | 国产片一区二区三区 |