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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

TFT144液晶屏單片機(jī)源程序(驅(qū)動程序)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:553399 發(fā)表于 2020-4-29 22:13 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
TFT144液晶屏源程序(驅(qū)動程序)

單片機(jī)源程序如下:
  1. //********************************************************************************
  2. #include "STC15.H"
  3. #include <intrins.h>


  4. #define uchar unsigned char
  5. #define uint unsigned int

  6. #include "delay.h"

  7. #include "tft128128spi.h"



  8. //---------------------------液晶屏接線說明-------------------------------------//
  9. //接線前請參考液晶屏說明書第10頁引腳定義
  10. sbit scl       =P2^7;//接模塊CLK引腳,接裸屏Pin9_SCL
  11. sbit sda       =P2^6;//接模塊DIN/MOSI引腳,接裸屏Pin8_SDA
  12. sbit reset     =P2^5;//接模塊dcT引腳,接裸屏Pin6_RES
  13. sbit dc        =P2^4;//接模塊D/C引腳,接裸屏Pin7_A0
  14. sbit cs        =P2^3;//接模塊CE引腳,接裸屏Pin12_CS
  15. sbit bl        =P2^2;//接模塊BL引腳,背光可以采用IO控制或者PWM控制,也可以直接接到高電平常亮
  16. //---------------------------End of液晶屏接線---------------------------------//



  17. bit USE_LANDSCAPE;//程序橫豎屏切換


  18. //向液晶屏寫一個8位指令
  19. void  LCD_WrCmd(uchar cmd)
  20. {
  21. uchar i;
  22. cs=0;dc=0;
  23. for(i=0;i<8;i++)
  24. {
  25.   scl=0;
  26.   if(cmd&0x80)sda=1;else sda=0;
  27.   scl=1;
  28.   cmd<<=1;
  29. }       
  30. cs=1;
  31. }

  32. //向液晶屏寫一個8位數(shù)據(jù)
  33. void  LCD_WrDat(uchar dat)
  34. {
  35. uchar i;
  36. cs=0;dc=1;
  37. for(i=0;i<8;i++)
  38. {
  39.   scl=0;
  40.   if(dat&0x80)sda=1;else sda=0;
  41.   scl=1;
  42.   dat<<=1;
  43. }       
  44. cs=1;
  45. }
  46. //向液晶屏寫一個16位數(shù)據(jù)
  47. void  LCD_WrDat_16Bit(uint dat)
  48. {
  49. LCD_WrDat(dat>>8);                         //寫入高8位數(shù)據(jù)
  50. LCD_WrDat(dat);                         //寫入低8位數(shù)據(jù)

  51. }

  52. void Reset()
  53. {
  54.     reset=0;
  55.     delayms(100);
  56.     reset=1;
  57.     delayms(100);
  58. }
  59. //////////////////////////////////////////////////////////////////////////////////////////////
  60. //液晶屏初始化 for S6D02A1
  61. void lcd_initial()
  62. {        Reset();//Reset before LCD Init.
  63.                
  64.         //LCD Init For 1.44Inch LCD Panel with ST7735R.
  65.         LCD_WrCmd(0x11);//Sleep exit
  66.         delayms (120);
  67.                
  68.         //ST7735R Frame Rate
  69.         LCD_WrCmd(0xB1);
  70.         LCD_WrDat(0x01);
  71.         LCD_WrDat(0x2C);
  72.         LCD_WrDat(0x2D);

  73.         LCD_WrCmd(0xB2);
  74.         LCD_WrDat(0x01);
  75.         LCD_WrDat(0x2C);
  76.         LCD_WrDat(0x2D);

  77.         LCD_WrCmd(0xB3);
  78.         LCD_WrDat(0x01);
  79.         LCD_WrDat(0x2C);
  80.         LCD_WrDat(0x2D);
  81.         LCD_WrDat(0x01);
  82.         LCD_WrDat(0x2C);
  83.         LCD_WrDat(0x2D);
  84.        
  85.         LCD_WrCmd(0xB4); //Column invedcion
  86.         LCD_WrDat(0x07);
  87.        
  88.         //ST7735R Power Sequence
  89.         LCD_WrCmd(0xC0);
  90.         LCD_WrDat(0xA2);
  91.         LCD_WrDat(0x02);
  92.         LCD_WrDat(0x84);
  93.         LCD_WrCmd(0xC1);
  94.         LCD_WrDat(0xC5);

  95.         LCD_WrCmd(0xC2);
  96.         LCD_WrDat(0x0A);
  97.         LCD_WrDat(0x00);

  98.         LCD_WrCmd(0xC3);
  99.         LCD_WrDat(0x8A);
  100.         LCD_WrDat(0x2A);
  101.         LCD_WrCmd(0xC4);
  102.         LCD_WrDat(0x8A);
  103.         LCD_WrDat(0xEE);
  104.        
  105.         LCD_WrCmd(0xC5); //VCOM
  106.         LCD_WrDat(0x0E);
  107.        
  108.         LCD_WrCmd(0x36); //MX, MY, RGB mode
  109. if(USE_LANDSCAPE)
  110.         LCD_WrDat(0xA8); //豎屏C8 橫屏08 A8
  111. else
  112.         LCD_WrDat(0xC8); //豎屏C8 橫屏08 A8
  113.        
  114.         //ST7735R Gamma Sequence
  115.         LCD_WrCmd(0xe0);
  116.         LCD_WrDat(0x0f);
  117.         LCD_WrDat(0x1a);
  118.         LCD_WrDat(0x0f);
  119.         LCD_WrDat(0x18);
  120.         LCD_WrDat(0x2f);
  121.         LCD_WrDat(0x28);
  122.         LCD_WrDat(0x20);
  123.         LCD_WrDat(0x22);
  124.         LCD_WrDat(0x1f);
  125.         LCD_WrDat(0x1b);
  126.         LCD_WrDat(0x23);
  127.         LCD_WrDat(0x37);
  128.         LCD_WrDat(0x00);        
  129.         LCD_WrDat(0x07);
  130.         LCD_WrDat(0x02);
  131.         LCD_WrDat(0x10);

  132.         LCD_WrCmd(0xe1);
  133.         LCD_WrDat(0x0f);
  134.         LCD_WrDat(0x1b);
  135.         LCD_WrDat(0x0f);
  136.         LCD_WrDat(0x17);
  137.         LCD_WrDat(0x33);
  138.         LCD_WrDat(0x2c);
  139.         LCD_WrDat(0x29);
  140.         LCD_WrDat(0x2e);
  141.         LCD_WrDat(0x30);
  142.         LCD_WrDat(0x30);
  143.         LCD_WrDat(0x39);
  144.         LCD_WrDat(0x3f);
  145.         LCD_WrDat(0x00);
  146.         LCD_WrDat(0x07);
  147.         LCD_WrDat(0x03);
  148.         LCD_WrDat(0x10);  
  149.        
  150.         LCD_WrCmd(0x2a);
  151.         LCD_WrDat(0x00);
  152.         LCD_WrDat(0x00+2);
  153.         LCD_WrDat(0x00);
  154.         LCD_WrDat(0x80+2);

  155.         LCD_WrCmd(0x2b);
  156.         LCD_WrDat(0x00);
  157.         LCD_WrDat(0x00+3);
  158.         LCD_WrDat(0x00);
  159.         LCD_WrDat(0x80+3);
  160.        
  161.         LCD_WrCmd(0xF0); //Enable test command  
  162.         LCD_WrDat(0x01);
  163.         LCD_WrCmd(0xF6); //Disable ram power save mode
  164.         LCD_WrDat(0x00);
  165.        
  166.         LCD_WrCmd(0x3A); //65k mode
  167.         LCD_WrDat(0x05);
  168.        
  169.        
  170.         LCD_WrCmd(0x29);//Display on


  171.         bl=1;                         //背光

  172. }



  173. /*************************************************
  174. 函數(shù)名:LCD_Set_Region
  175. 功能:設(shè)置lcd顯示區(qū)域,在此區(qū)域?qū)扅c數(shù)據(jù)自動換行
  176. 入口參數(shù):xy起點和終點
  177. 返回值:無
  178. *************************************************/
  179. void Lcd_SetRegion(uint x_start,uint y_start,uint x_end,uint y_end)reentrant
  180. {       
  181. if(USE_LANDSCAPE)//使用橫屏模式
  182.    {
  183.     LCD_WrCmd(0x2a);
  184.         LCD_WrDat(0x00);
  185.         LCD_WrDat(x_start+3);
  186.         LCD_WrDat(0x00);
  187.         LCD_WrDat(x_end+3);

  188.         LCD_WrCmd(0x2b);
  189.         LCD_WrDat(0x00);
  190.         LCD_WrDat(y_start+2);
  191.         LCD_WrDat(0x00);
  192.         LCD_WrDat(y_end+2);
  193.    }
  194. else//豎屏模式       
  195.   {
  196.         LCD_WrCmd(0x2a);
  197.         LCD_WrDat(0x00);
  198.         LCD_WrDat(x_start+2);
  199.         LCD_WrDat(0x00);
  200.         LCD_WrDat(x_end+2);

  201.         LCD_WrCmd(0x2b);
  202.         LCD_WrDat(0x00);
  203.         LCD_WrDat(y_start+3);
  204.         LCD_WrDat(0x00);
  205.         LCD_WrDat(y_end+3);       
  206.   }
  207.         LCD_WrCmd(0x2c);
  208. }




  209. void LCD_Clear(int color)
  210. {
  211.         uchar i,j;
  212.         Lcd_SetRegion(0,0,128-1,128-1);
  213.         for (i=0;i<128;i++)
  214.             for (j=0;j<128;j++)
  215.                 LCD_WrDat_16Bit(color);
  216. }



  217. void LCD_A_Char8X16(uint x, uint y, uint fc, uint bc, uchar *s)reentrant
  218. {
  219. uchar i,j,temp;
  220. Lcd_SetRegion(x,y,x+8-1,y+16-1);
  221. for(i=0;i<16;i++)
  222.         {
  223.          temp=s[i];
  224.          for(j=0;j<8;j++)
  225.            {
  226.             if(temp&0x80)LCD_WrDat_16Bit(fc);
  227.                 else if        (fc!=bc) LCD_WrDat_16Bit(bc);
  228.             temp<<=1;
  229.            }  
  230.         }

  231. }

  232. void LCD_Char8X16_String(uint x,uint y,uint fc,uint bc,uchar *s,uchar c)reentrant
  233. {
  234. uchar i;
  235. for(i=0;i<c;i++) LCD_A_Char8X16(x+i*8,y,fc,bc,s+i*16);
  236. }



  237. void LCD_CHN16X16(uint x, uint y, uint fc, uint bc, uchar *s)reentrant //顯示一個漢字
  238. {
  239. uchar i,j,temp;
  240. Lcd_SetRegion(x,y,x+16-1,y+16-1);
  241. for(i=0;i<32;i++)
  242.         {
  243.          temp=s[i];
  244.          for(j=0;j<8;j++)
  245.            {
  246.             if(temp&0x80)LCD_WrDat_16Bit(fc);
  247.                 else if        (fc!=bc) LCD_WrDat_16Bit(bc);
  248.             temp<<=1;
  249.            }  
  250.         }
  251. }

  252. void LCD_CHN16X16_String(uint x,uint y,uint fc,uint bc,uchar *s,uchar c)
  253. {
  254. uchar i;
  255. for(i=0;i<c;i++)LCD_CHN16X16(x+i*16,y,fc,bc,s+i*32);
  256. }

  257. //void LCD_A_Char16X32(uint x, uint y, uint fc, uint bc, uchar *s)
  258. //{
  259. // uchar i,j,temp;
  260. // Lcd_SetRegion(x,y,x+16-1,y+32-1);
  261. // for(i=0;i<64;i++)                                                  //16*32西文字符點陣64個8位字節(jié)
  262. //        {
  263. //         temp=s[i];
  264. //         for(j=0;j<8;j++)
  265. //           {
  266. //            if(temp&0x80)LCD_WrDat_16Bit(fc);
  267. //                else if        (fc!=bc) LCD_WrDat_16Bit(bc);
  268. //            temp<<=1;
  269. //           }  
  270. //        }
  271. //
  272. //}


  273. /*
  274. void LCD_A_Char24X48(uint x, uint y, uint fc, uint bc, uchar *s)
  275. {
  276. uchar i,j,temp;
  277. Lcd_SetRegion(x,y,x+24-1,y+48-1);
  278. for(i=0;i<144;i++)                                                  //24*48西文字符點陣144個8位字節(jié)
  279. ……………………

  280. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
TFT144液晶屏.zip (2.56 KB, 下載次數(shù): 26)


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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 你懂的免费在线 | 91精品久久久久久久久中文字幕 | www.yw193.com | 欧美一级在线免费 | 美女视频一区二区三区 | 欧美综合在线视频 | 91在线视频免费观看 | 国产精品一区二区免费 | 国产精品亚洲精品日韩已方 | 91青娱乐在线 | 在线亚洲一区二区 | 久久久蜜臀国产一区二区 | 国内精品视频免费观看 | 欧美一区二区三区久久精品 | 看真人视频一级毛片 | 久久久亚洲成人 | 久久久久久国产精品 | 91精品久久久久久综合五月天 | 日韩欧美精品 | 综合久久99 | 伊人春色在线 | 黄页网址在线观看 | 亚洲精品区| 精品无码久久久久久久动漫 | 欧美mv日韩mv国产网站91进入 | 欧美激情综合 | 中文字幕第一页在线 | 91精品国产综合久久久动漫日韩 | 伊人网综合 | 99久久婷婷国产综合精品电影 | 亚洲一区国产 | 一级毛片视频在线 | 国产96色在线 | 亚洲成人免费视频 | 羞羞羞视频 | 亚洲高清中文字幕 | 欧美一区免费 | 国产精品久久国产精品 | 日韩欧美一级片 | 精品国产免费人成在线观看 | 欧美成人免费电影 |