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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3365|回復: 4
打印 上一主題 下一主題
收起左側

基于stc15w4單片機的lcd12864顯示程序

[復制鏈接]
跳轉到指定樓層
樓主
這是基于iap15w4k61s4 主控 lcd1286的顯示

主函數
  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. }
復制代碼
lcd.c

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


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

  82. /**************************************************************************
  83. * 描  述 : 指定位置顯示單個字符
  84. * 參  數 : 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);     //寫入顯示數據到LCD12864   
  100. }

  101. /***************************************************************************
  102. * 描  述 : 字符串顯示
  103. * 參  數 : row[in]:行,范圍1~4
  104. *        :column[in]:列,范圍0~7  
  105. *        :num[in]:字符個數,注意一個漢字=2個字符
  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)             //寫入顯示數據的大小  
  120.         {   
  121.                 Write_Data(*(s++));  //寫入顯示數據到LCD12864   
  122.                 num--;         
  123.         }   
  124. }

  125. /***************************************************************************
  126. * 描  述 : 填充,當如數數據為0的時候即可實現清屏
  127. * 參  數 : dat[in]:填充的數據
  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);   //恢復基本指令集,關閉繪圖模式
  152. }

  153. /***************************************************************************
  154. * 描  述 : LCD12864液晶初始化程序
  155. * 參  數 : 無
  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);   // 整體顯示打開,游標關閉     
  169.          delay_ms(1);      
  170.          Write_Cmd(0x06);   // 游標右移     
  171.          delay_ms(1);      
  172.          Write_Cmd(0x80);   // 設定顯示的起始地址     
  173.          delay_ms(1);      
  174.          Write_Cmd(0x01);   // 清除顯示
  175.          delay_ms(10);      // 這個延時必須要有,否則可能會出現花屏
  176. }

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


復制代碼

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

評分

參與人數 1黑幣 +30 收起 理由
admin + 30 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品亚洲一区二区 | 青草福利| 亚洲高清在线 | 91九色网站 | 伊人免费视频二 | 成人午夜高清 | 亚洲精品在线观 | 欧美视频成人 | 黄色av大片| 国产在线精品一区二区三区 | 久久精品久久精品 | 亚洲欧洲成人在线 | 精品国产黄色片 | 久久亚洲一区二区 | 久久久91精品国产一区二区三区 | 久久精品国产免费一区二区三区 | 欧美精品黄 | 不卡av电影在线播放 | 久久久精彩视频 | 视频二区国产 | 在线一区观看 | 一级黄色片在线看 | 麻豆天堂 | 久久精品网 | 亚洲视频手机在线 | 国产丝袜一区二区三区免费视频 | 久久大陆| a天堂在线 | 国产资源网 | 国产精品中文字幕在线观看 | 国产精品日本一区二区在线播放 | 91欧美精品成人综合在线观看 | 日韩成人在线播放 | 国产 日韩 欧美 在线 | 久久久久久久久淑女av国产精品 | 午夜精| 波多野结衣先锋影音 | 亚洲一区 中文字幕 | 在线一区视频 | 91久久久久久久久久久 | 视频一区二区在线观看 |