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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4699|回復: 10
收起左側

89c51單片機仿真彩屏ILI9341液晶屏porteus仿真+keil工程

  [復制鏈接]
ID:654772 發表于 2021-12-17 20:32 | 顯示全部樓層 |閱讀模式
89c51單片機仿真ILI9341彩屏效果圖如下:

仿真圖片

仿真圖片


單片機源程序如下:
  1. #include<reg51.h>
  2. sbit lcdcs=P1^0;
  3. sbit lcddc=P1^1;
  4. sbit lcdwr=P1^2;
  5. sbit lcdrd=P1^3;
  6. sbit lcdrst=P1^4;
  7. sbit spiclk=P0^0;
  8. sbit spisi=P0^1;
  9. sbit spiso=P0^2;
  10. sbit spics=P0^3;
  11. sbit spirst=P0^4;
  12. unsigned char slh,sll,elh,ell,shh,shl,ehh,ehl;
  13. #define uchar unsigned char
  14. #define redh 0xf8
  15. #define redl 0x00
  16. #define greenh 0x07
  17. #define greenl 0xe0
  18. #define blueh 0x00
  19. #define bluel 0x1f
  20. #define whiteh 0xff
  21. #define whitel 0xff
  22. #define blackh 0x00
  23. #define blackl 0x00
  24. #define huiseh 0xc6
  25. #define huisel 0x18
  26. #define shenhuih 0x7b
  27. #define shenhuil 0xef
  28. #define yellowh 0xff
  29. #define yellowl 0xe0
  30. #define ziseh 0x78
  31. #define zisel 0x0f
  32. #define qingseh 0x07
  33. #define qingsel 0xff
  34. #define pinhongh 0xf8
  35. #define pinhongl 0x1f
  36. #define ganlanlvh 0x7b
  37. #define ganlanlvl 0xe0
  38. unsigned char spih,spil;
  39. void delay(unsigned char x)
  40. {
  41.         unsigned char i,j,k;
  42.         for(k=0;k<x;k++)
  43.         {
  44.           for(i=0;i<20;i++)
  45.           {
  46.                   for(j=0;j<200;j++)
  47.                   {
  48.                           ;
  49.                   }
  50.           }
  51.   }
  52. }
  53. void writedata(unsigned char x)
  54. {
  55.         lcddc=1;
  56.         lcdrd=1;
  57.         P2=x;
  58.         lcdwr=0;
  59.         lcdwr=1;
  60. }
  61. void writecmd(unsigned char x)
  62. {
  63.         lcddc=0;
  64.         lcdrd=1;
  65.         P2=x;
  66.         lcdwr=0;
  67.         lcdwr=1;
  68. }
  69. void delay1(void)
  70. {
  71.         unsigned char i,j;
  72.         for(i=0;i<100;i++)
  73.         for(j=0;j<100;j++);
  74. }
  75. void writespi(uchar a,uchar b,uchar c,uchar d)
  76. {
  77.         unsigned char i,temp,temp1;
  78.         spics=1;
  79.         spics=0;
  80.         spisi=1;
  81.         spiso=1;
  82.         temp1=0x06;
  83.         
  84.         for(i=0;i<8;i++)
  85.         {
  86.                 temp=a&0x80;
  87.                 if(temp!=0)
  88.                         spisi=1;
  89.                 else
  90.                         spisi=0;
  91.                 spiclk=0;
  92.                 spiclk=1;
  93.                 a=a<<1;
  94.         }
  95.         
  96.         for(i=0;i<8;i++)
  97.         {
  98.                 temp=b&0x80;
  99.                 if(temp!=0)
  100.                         spisi=1;
  101.                 else
  102.                         spisi=0;
  103.                 spiclk=0;
  104.                 spiclk=1;
  105.                 b=b<<1;
  106.         }
  107.         
  108.         for(i=0;i<8;i++)
  109.         {
  110.                 temp=c&0x80;
  111.                 if(temp!=0)
  112.                         spisi=1;
  113.                 else
  114.                         spisi=0;
  115.                 spiclk=0;
  116.                 spiclk=1;
  117.                 c=c<<1;
  118.         }
  119.         
  120.         for(i=0;i<8;i++)
  121.         {
  122.                 temp=d&0x80;
  123.                 if(temp!=0)
  124.                         spisi=1;
  125.                 else
  126.                         spisi=0;
  127.                 spiclk=0;
  128.                 spiclk=1;
  129.                 d=d<<1;
  130.         }
  131. }

  132. void readspih(void)
  133. {
  134.         unsigned char i,temp;
  135.         for(i=0;i<8;i++)
  136.         {
  137.                 temp=temp<<1;
  138.                 spiclk=1;
  139.                 spiclk=0;
  140.                 temp=spiso|temp;
  141.         }
  142.         spih=temp;
  143.         temp=0;
  144. }
  145. void readspil(void)
  146. {
  147.         unsigned char i,temp;

  148.         for(i=0;i<8;i++)
  149.         {
  150.                 temp=temp<<1;
  151.                 spiclk=1;
  152.                 spiclk=0;
  153.                 temp=spiso|temp;

  154.         }
  155.         spil=temp;
  156.         temp=0;
  157. }
  158. void setlse(uchar x1,uchar x2,uchar x3,uchar x4)
  159. {
  160.         writecmd(0x2a);
  161.         writedata(x1);
  162.         writedata(x2);
  163.         writedata(x3);
  164.         writedata(x4);
  165.         
  166. }
  167. void sethse(uchar y1,uchar y2,uchar y3,uchar y4)
  168. {
  169.         writecmd(0x2b);
  170.         writedata(y1);
  171.         writedata(y2);
  172.         writedata(y3);
  173.         writedata(y4);
  174.         
  175. }
  176. void discolor(uchar x)
  177. {
  178.         unsigned char j;
  179.         unsigned int i;
  180.         setlse(0x00,0x00,0x00,0xef);
  181.         sethse(0x00,0x00,0x01,0x3f);
  182.         writecmd(0x2c);
  183.         for(j=0;j<240;j++)
  184.           {
  185.      for(i=0;i<320;i++)
  186.       {
  187.                                 switch(x)
  188.                 {
  189.                         case 0:
  190.                                     writedata(redh);
  191.                                     writedata(redl);
  192.                                                 break;
  193.                                                 case 1:
  194.                                     writedata(greenh);
  195.                                     writedata(greenl);
  196.                                                 break;
  197.                                                 case 2:
  198.                                     writedata(blueh);
  199.                                     writedata(bluel);
  200.                                                 break;
  201.                                                 case 3:
  202.                                     writedata(whiteh);
  203.                                     writedata(whitel);
  204.                                                 break;
  205.                                                 case 4:
  206.                                     writedata(blackh);
  207.                                     writedata(blackl);
  208.                                                 break;
  209.                                                 case 5:
  210.                                     writedata(yellowh);
  211.                                     writedata(yellowl);
  212.                                                 break;
  213.                                                 case 6:
  214.                                     writedata(ziseh);
  215.                                     writedata(zisel);
  216.                                                 break;
  217.                                                 case 7:
  218.                                     writedata(qingseh);
  219.                                     writedata(qingsel);
  220.                                                 break;
  221.                                                 case 8:
  222.                                     writedata(huiseh);
  223.                                     writedata(huisel);
  224.                                                 break;
  225.                                                 case 9:
  226.                                     writedata(shenhuih);
  227.                                     writedata(shenhuil);
  228.                                                 break;
  229.                                                 case 10:
  230.                                     writedata(pinhongh);
  231.                                     writedata(pinhongl);
  232.                                                 break;
  233.                                                 case 11:
  234.                                     writedata(ganlanlvh);
  235.                                     writedata(ganlanlvl);
  236.                                                 break;
  237.                                                 default:
  238.                                                 break;
  239.                                         }
  240.                         }
  241.                 }        

  242. }

  243. void discolorx(void)
  244. {
  245.         unsigned char i;
  246.                 for(i=0;i<12;i++)
  247.             discolor(i);
  248. }

  249. void discaitiao(void)
  250. {
  251.         unsigned char i,j,k;
  252.         setlse(0,0,0,239);
  253.         sethse(0,0,1,63);
  254.         writecmd(0x2c);
  255.         for(k=0;k<10;k++)
  256.         {
  257.         for(i=0;i<32;i++)
  258.         for(j=0;j<240;j++)
  259.         {
  260.                 if(k==0)
  261.                 {
  262.                  writedata(redh);
  263.                  writedata(redl);
  264.                 }
  265.                 if(k==1)
  266.                 {
  267.                  writedata(greenh);
  268.                  writedata(greenl);
  269.                 }
  270.                 if(k==2)
  271.                 {
  272.                  writedata(blueh);
  273.                  writedata(bluel);
  274.                 }
  275.                 if(k==3)
  276.                 {
  277.                  writedata(whiteh);
  278.                  writedata(whitel);
  279.                 }
  280.                 if(k==4)
  281.                 {
  282.                  writedata(blackh);
  283.                  writedata(blackl);
  284.                 }
  285.                 if(k==5)
  286.                 {
  287.                  writedata(yellowh);
  288.                  writedata(yellowl);
  289.                 }
  290.                 if(k==6)
  291.                 {
  292.                  writedata(ziseh);
  293.                  writedata(zisel);
  294.                 }
  295.                 if(k==7)
  296.                 {
  297.                  writedata(qingseh);
  298.                  writedata(qingsel);
  299.                 }
  300.                 if(k==8)
  301.                 {
  302.                  writedata(huiseh);
  303.                  writedata(huisel);
  304.                 }
  305.                 if(k==9)
  306.                 {
  307.                  writedata(shenhuih);
  308.                  writedata(shenhuil);
  309.                 }
  310.         }
  311. }
  312.         
  313. }
  314. void dispic(void)
  315. {
  316.         unsigned char j,k;
  317.         unsigned int i;
  318.         
  319.         spics=0;
  320.         
  321.         writespi(0x03,0,0,0);
  322.         
  323.                 spics=1;
  324.                 spics=0;
  325.                 writespi(0x03,0,0,0);
  326.                
  327.         for(k=0;k<6;k++)
  328.         {
  329.                 setlse(0x00,0x00,0x00,0xef);
  330.                 sethse(0x00,0x00,0x01,0x3f);
  331.                 writecmd(0x2c);
  332.                
  333.                 for(j=0;j<240;j++)
  334.                 {
  335.                         for(i=0;i<320;i++)
  336.                         {        
  337.                                 readspih();
  338.                                 readspil();
  339.                                 writedata(spih);
  340.                                 writedata(spil);
  341.                         }
  342.                         
  343.                 }               
  344.         }
  345.         discolorx();
  346.         discaitiao();
  347. }
  348. void main(void)
  349. {
  350.         lcdcs=0;
  351.         lcdrst=0;
  352.         delay(1);
  353.         lcdrst=1;
  354.         writecmd(0x01);
  355.         delay(1);
  356.         writecmd(0x29);
  357.         writecmd(0x3a);
  358.         writedata(0x65);
  359.         setlse(0x00,0x00,0x00,0xef);
  360.         sethse(0x00,0x00,0x01,0x3f);
  361.         writecmd(0x13);
  362.         writecmd(0x38);
  363.         writecmd(0x11);
  364.         delay1();
  365.         writecmd(0x3a);
  366.         delay1();
  367.         writedata(0x56);
  368.         writecmd(0x36);
  369.         writedata(0x48);        
  370.         writecmd(0x2c);
  371.         while(1)
  372.         {        
  373.          dispic();
  374.   }
  375. }
復制代碼

proteus8.11仿真文件+keil工程文件(注意只能用Proteus8.11才能打開 其他版本都不行):
ili9341jj.zip.7z (1.64 MB, 下載次數: 142)

評分

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

查看全部評分

回復

使用道具 舉報

ID:95059 發表于 2022-8-26 03:38 | 顯示全部樓層
不知道這圖片從哪來的,為啥能顯示這些,代碼里也沒有啊?好奇
回復

使用道具 舉報

ID:1061399 發表于 2023-1-18 21:07 | 顯示全部樓層
D0-D9不使用嗎?我看別人的都連接上了
回復

使用道具 舉報

ID:289218 發表于 2023-5-21 23:41 | 顯示全部樓層
可以仿真,感謝分享!
回復

使用道具 舉報

ID:289218 發表于 2023-5-22 23:51 | 顯示全部樓層
lanxichang 發表于 2022-8-26 03:38
不知道這圖片從哪來的,為啥能顯示這些,代碼里也沒有啊?好奇

壓縮包中有兩個bin文件,Protues將bin文件加載到M45PE16中,單片機通過I/O口模擬SPI讀取M45PE16中的數據后在發送到TFT上進行顯示。
回復

使用道具 舉報

ID:253767 發表于 2023-5-24 08:01 | 顯示全部樓層
Proteus8.9不能運行該程序,是因為“無法打開MODDATA初始值設定項文件pictigi.bin”
回復

使用道具 舉報

ID:253767 發表于 2023-5-24 08:23 | 顯示全部樓層
我按照樓主提供的資料,在PROTEUS8.9繪制了原理圖,復制了程序文件,但只先后顯示10種單色頁面,和一幀彩條頁面。 該圖即10幀單色頁面之后顯示的彩條頁面。
屏幕截圖 2023-05-24 081606.png
回復

使用道具 舉報

ID:46087 發表于 2024-1-24 08:58 | 顯示全部樓層
tieq1952 發表于 2023-5-24 08:01
Proteus8.9不能運行該程序,是因為“無法打開MODDATA初始值設定項文件pictigi.bin”

M45PE16里面的bin如何制作出來的?我想替換成自己的圖片 請不吝賜教 先謝謝
回復

使用道具 舉報

ID:1110011 發表于 2024-1-24 11:43 | 顯示全部樓層
感謝分享 解決我的問題
回復

使用道具 舉報

ID:46087 發表于 2024-1-26 09:43 | 顯示全部樓層
我感覺這個圖片和程序之間沒有關系...
回復

使用道具 舉報

ID:654772 發表于 2024-2-17 17:45 | 顯示全部樓層
cooc22 發表于 2024-1-26 09:43
我感覺這個圖片和程序之間沒有關系...

肯定是有關系的
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲a视频 | 欧美一区二区三区在线观看视频 | 自拍第一页 | 中国美女一级黄色片 | 欧美精品中文字幕久久二区 | 国产亚洲精品成人av久久ww | 国产亚洲精品久久久久动 | 国产毛片毛片 | 精品一区二区三区免费视频 | 欧美精品一区二区三区在线 | 国产精品欧美一区二区 | 国产目拍亚洲精品99久久精品 | 日韩精品一区二区三区中文字幕 | 91精品国产92 | 日韩欧美中文字幕在线视频 | 成人不卡视频 | 欧美区精品 | 日韩午夜在线观看 | 国产精品99久久久久久久久久久久 | 久久久人成影片一区二区三区 | 欧美成人影院 | 欧美一区二区三区久久精品 | 欧美性一区二区三区 | 国产精品免费观看视频 | av中文字幕网 | 国产成人精品一区二区三区网站观看 | 久久人爽 | 日韩一区二区在线视频 | 久久国产一区 | 国产免费拔擦拔擦8x高清 | 免费国产精品久久久久久 | 一区二区免费高清视频 | 日本久久网 | av电影一区二区 | 精品久久久久香蕉网 | 亚洲午夜视频在线观看 | 国产激情一区二区三区 | 一区二区三区四区在线视频 | 欧美午夜激情在线 | m豆传媒在线链接观看 | 日韩视频免费在线 |