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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

Arduino TFT屏模擬LED仿真

[復制鏈接]
跳轉到指定樓層
樓主
ARDUINO板外面接線很麻煩,我用TFT屏模擬LED可以實現程序仿真,對初學者很有用


單片機源程序如下:

  1. #include <Adafruit_GFX.h>
  2. #include <MCUFRIEND_kbv.h>
  3. #include <TouchScreen.h>
  4. //#include<TimerOne.h>
  5. #include<TimerThree.h>

  6. #if defined(_GFXFONT_H_)           //are we using the new library?
  7. #include <Fonts/FreeSans9pt7b.h>
  8. #define ADJ_BASELINE 11            //new fonts setCursor to bottom of letter
  9. #else
  10. #define ADJ_BASELINE 0             //legacy setCursor to top of letter
  11. #endif

  12. MCUFRIEND_kbv tft;
  13. #define YP A1  // must be an analog pin, use "An" notation!
  14. #define XM A2  // must be an analog pin, use "An" notation!
  15. #define YM 7   // can be a digital pin
  16. #define XP 6   // can be a digital pin
  17. #define LCD_CS A3
  18. #define LCD_CD A2
  19. #define LCD_WR A1
  20. #define LCD_RD A0
  21. #define LCD_RESET A4

  22. #define TS_MINX 150
  23. #define TS_MINY 120
  24. #define TS_MAXX 920
  25. #define TS_MAXY 940
  26. /*______End of Calibration______*/
  27. TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300); //300 is the sensitivity
  28. #define BLACK   0x0000
  29. #define BLUE    0x001F
  30. #define RED     0xF800
  31. #define GREEN   0x07E0
  32. #define CYAN    0x07FF
  33. #define MAGENTA 0xF81F
  34. #define YELLOW  0xFFE0
  35. #define WHITE   0xFFFF

  36. #define RGB(r, g, b) (((r&0xF8)<<8)|((g&0xFC)<<3)|(b>>3))

  37. #define GREY      RGB(127, 127, 127)
  38. #define DARKGREY  RGB(64, 64, 64)
  39. #define TURQUOISE RGB(0, 128, 128)
  40. #define PINK      RGB(255, 128, 192)
  41. #define OLIVE     RGB(128, 128, 0)
  42. #define PURPLE    RGB(128, 0, 128)
  43. #define AZURE     RGB(0, 128, 255)
  44. #define ORANGE    RGB(255,128,64)
  45. /*************************************************************************************/
  46. #include <stdio.h>
  47. int ledPin1=21; int ledPin2=22; int ledPin3=23; int ledPin4=24;
  48. int ledPin5=25; int ledPin6=26; int ledPin7=27; int ledPin8=28;
  49. int DB[] = {21, 22, 23, 24, 25, 26, 27, 28};//使用數組來定義總線需要的管腳
  50. unsigned char m,j,p=0;
  51. #define ledx0 30
  52. #define ledy0 100
  53. #define ledd0 35
  54. #define ledw0 20
  55. #define ORT 1
  56. /*************************************************************************************/
  57. uint16_t ID;
  58. uint16_t LEDCOLOR=RED;
  59. int X,Y;
  60. byte action;
  61. boolean result = false;
  62. #define MINPRESSURE 10
  63. #define MAXPRESSURE 1000
  64. /*************************************************************************************/
  65. uint8_t conv2d(const char* p)
  66. {
  67.     uint8_t v = 0;
  68.     if ('0' <= *p && *p <= '9') v = *p - '0';
  69.     return 10 * v + *++p - '0';
  70. }
  71. /*************************************************************************************/
  72. void setup(void)
  73. {
  74.     Serial.begin(9600);
  75.     tft.reset();
  76.     ID = tft.readID();
  77.     if (ID == 0xD3D3) ID = 0x9486; // write-only shield
  78.     tft.begin(ID);
  79.     tft.setRotation(1);
  80.     tft.fillScreen(WHITE);
  81.     Timer3.initialize(500000);
  82.     Timer3.attachInterrupt(Timer1Int);
  83. #if defined(_GFXFONT_H_)
  84.     tft.setFont(&FreeSans9pt7b);
  85. #endif
  86.     pinMode(ledPin1,OUTPUT); pinMode(ledPin2,OUTPUT);
  87.     pinMode(ledPin3,OUTPUT); pinMode(ledPin4,OUTPUT);
  88.     pinMode(ledPin5,OUTPUT); pinMode(ledPin6,OUTPUT);
  89.     pinMode(ledPin7,OUTPUT); pinMode(ledPin8,OUTPUT);
  90.     DrawLed(ledx0+0*ledd0, ledy0, ledw0,ledw0,GREY,21,ORT);
  91.     DrawLed(ledx0+1*ledd0, ledy0, ledw0,ledw0,GREY,22,ORT);
  92.     DrawLed(ledx0+2*ledd0, ledy0, ledw0,ledw0,GREY,23,ORT);     
  93.     DrawLed(ledx0+3*ledd0, ledy0, ledw0,ledw0,GREY,24,ORT);
  94.     DrawLed(ledx0+4*ledd0, ledy0, ledw0,ledw0,GREY,25,ORT);  
  95.     DrawLed(ledx0+5*ledd0, ledy0, ledw0,ledw0,GREY,26,ORT);  
  96.     DrawLed(ledx0+6*ledd0, ledy0, ledw0,ledw0,GREY,27,ORT);
  97.     DrawLed(ledx0+7*ledd0, ledy0, ledw0,ledw0,GREY,28,ORT);
  98.     m=0xfe;
  99.    
  100. }
  101. /*************************************************************************************/
  102. TSPoint waitTouch()
  103. {
  104.   TSPoint p;
  105.   //p = ts.getPoint();
  106.   if((p.z > MINPRESSURE )||(p.z < MAXPRESSURE))
  107.   { p = ts.getPoint();
  108.     pinMode(XM, OUTPUT);
  109.     pinMode(YP, OUTPUT);

  110.     p.x = map(p.x, TS_MINX, TS_MAXX, 0, 320);
  111.     p.y = map(p.y, TS_MINY, TS_MAXY, 0, 240);
  112.   }
  113.   
  114.   return p;
  115. }
  116. /*************************************************************************************/
  117. void DetectButtons()
  118. {
  119.   TSPoint p = waitTouch();
  120.   X = p.x; Y = p.y;

  121.   if ((Y<200 && Y>160) &&(X<100 && X>60))
  122.        result=!result;
  123.   
  124. }
  125. /*************************************************************************************/
  126. void DrawLed(int  x0, int y0, int h,int w ,int color,int IONum,byte ort)
  127.    {
  128.     if(ort==0)
  129.       {tft.fillTriangle( x0, y0, x0, y0+h, x0+w, y0+h/2, color) ;
  130.        tft.drawFastVLine(x0+w, y0, h, color);
  131.        tft.drawFastHLine(x0-h, y0+w/2, h, color);
  132.        tft.drawFastVLine(x0-h, y0+w/2-ledd0/2, ledd0, color);
  133.       
  134.        tft.drawFastHLine(x0+w, y0+h/2, w/2, color);
  135.        tft.setCursor(x0+w+w/2,y0+h/2);
  136.       }
  137.    else if(ort==1)
  138.       {tft.fillTriangle( x0, y0, x0+w, y0, x0+h/2, y0-w, color) ;
  139.        tft.drawFastHLine(x0, y0-h, h, color);
  140.        tft.drawFastVLine(x0+h/2, y0, h, color);
  141.        tft.drawFastHLine(x0+w/2-ledd0/2, y0+h, ledd0, color);
  142.       
  143.        tft.drawFastVLine(x0+h/2, y0-w-w/2, w/2, color);
  144.        tft.setCursor(x0+w/2,y0-h-h/2);
  145.       }
  146.    
  147.     tft.setTextColor(BLACK);
  148.     tft.setTextSize(1);
  149.     tft.print(IONum);
  150. }
  151. /*************************************************************************************/
  152. void DetectLed(int IONum)
  153. {
  154.    if(digitalRead(IONum))
  155.       DrawLed( ledx0+(IONum%10-1)*ledd0, ledy0, ledw0,ledw0 , GREY,IONum, ORT);
  156.    else
  157.       DrawLed( ledx0+(IONum%10-1)*ledd0, ledy0, ledw0,ledw0 , LEDCOLOR,IONum, ORT);
  158. }
  159. /*************************************************************************************/

  160. /*************************************************************************************/
  161. void ledflash_8(int LEDCOLOR)
  162.   { DetectLed(21);    DetectLed(22);
  163.     DetectLed(23);    DetectLed(24);
  164.     DetectLed(25);    DetectLed(26);  
  165.     DetectLed(27);    DetectLed(28);
  166.   }                  
  167. /*************************************************************************************/  
  168. void Timer1Int()
  169.   {unsigned char i,k,n;
  170.     static int x=1;
  171. //    if(result)
  172. //      {x=1-x;
  173. //       digitalWrite(22,x);
  174. //      }
  175.     if(result)
  176.      { k=m>>(8-p); n=m<<p;
  177.        j=k|n;
  178.        for (i=0; i<=7; i++) //總線賦值
  179.          {
  180.            digitalWrite(DB[i],j&0x01);
  181.            j>>=1;
  182.          }
  183.        p=p+1;if(p==8) p=0;
  184.      }
  185.    
  186.   }
  187. /*************************************************************************************/
  188.    
  189. void loop(void)
  190. {
  191.   static boolean  cp=true;
  192.   DetectButtons();
  193.   
  194.   if(result)
  195.       {//DetectLed(22);
  196.        ledflash_8(LEDCOLOR);
  197.        if(!cp)
  198.          {         
  199.           tft.drawChar(220,180,'S',WHITE,WHITE,1);
  200.           tft.drawChar(232,180,'T',WHITE,WHITE,1);
  201.           tft.drawChar(244,180,'A',WHITE,WHITE,1);
  202.           tft.drawChar(256,180,'R',WHITE,WHITE,1);
  203.           tft.drawChar(268,180,'T',WHITE,WHITE,1);
  204.          
  205.           tft.drawChar(220,180,'S',RED,WHITE,1);
  206.           tft.drawChar(232,180,'T',RED,WHITE,1);
  207.           tft.drawChar(244,180,'O',RED,WHITE,1);
  208.           tft.drawChar(256,180,'P',RED,WHITE,1);
  209.           cp=true;
  210.          }
  211.       }
  212.   else
  213.     {  if(cp)
  214.        {
  215.         tft.drawChar(220,180,'S',WHITE,WHITE,1);
  216.         tft.drawChar(232,180,'T',WHITE,WHITE,1);
  217.         tft.drawChar(244,180,'O',WHITE,WHITE,1);
  218.         tft.drawChar(256,180,'P',WHITE,WHITE,1);
  219.         
  220.         tft.drawChar(220,180,'S',BLUE,WHITE,1);
  221.         tft.drawChar(232,180,'T',BLUE,WHITE,1);
  222.         tft.drawChar(244,180,'A',BLUE,WHITE,1);
  223.         tft.drawChar(256,180,'R',BLUE,WHITE,1);
  224.         tft.drawChar(268,180,'T',BLUE,WHITE,1);
  225.         cp=false;
  226.        }
  227.    }
  228. }
  229. /*************************************************************************************/
復制代碼

以上資料51hei提供下載:
LED_TFT閃爍 _1.rar (2.45 KB, 下載次數: 11)

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91在线看视频 | 亚洲一区二区三区观看 | 日韩午夜 | 色婷婷狠狠 | gogo肉体亚洲高清在线视 | 日韩精品在线播放 | 国产精品毛片一区二区在线看 | 国产精品成人69xxx免费视频 | 手机在线一区二区三区 | 免费视频成人国产精品网站 | 亚洲欧美日韩中文在线 | 国产精品视频网 | 永久免费av | 成人在线视频一区 | 久久久夜色精品亚洲 | 欧美性高潮 | 欧美亚洲视频 | 日韩精品一区二区三区中文字幕 | 99精品国产一区二区青青牛奶 | 在线天堂免费中文字幕视频 | 欧美电影一区 | 99热在这里只有精品 | 色婷婷久久久久swag精品 | 久久久久国| 91精品久久久久久久久久 | 国产999精品久久久久久 | 日日做夜夜爽毛片麻豆 | 国产资源在线观看 | 亚洲精品乱码久久久久久蜜桃 | 韩国精品一区二区三区 | 欧美极品在线观看 | 免费av手机在线观看 | 国产精品免费一区二区三区 | 精品国产一区二区三区日日嗨 | 亚洲精品欧美 | 国产精品成人在线 | av网站在线播放 | 黄色片视频网站 | 久久精品 | 亚洲精选一区二区 | av手机在线免费观看 |