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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

4.3寸TFTLCD模塊觸摸屏+藍牙串口控制模塊化程序(通過FSMC驅動,FSMC_...

[復制鏈接]
跳轉到指定樓層
樓主
ID:160860 發表于 2021-8-17 11:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
stm32f103單片機驅動4.3寸觸摸屏(含松手檢測),加入藍牙控制。

單片機源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"                           
  5. #include "lcd.h"
  6. #include "key.h"
  7. #include "touch.h"
  8. #include <math.h>
  9. #include "LanYa.h"

  10. ////////////////////////////////////////////////////////////////////////////////
  11. //5個觸控點的顏色                                                                                                
  12. const u16 POINT_COLOR_TBL[CT_MAX_TOUCH]={RED,GREEN,BLUE,BROWN,GRED};

  13. extern const unsigned char gImage_0[600];
  14. extern const unsigned char gImage_1[600];
  15. extern const unsigned char gImage_2[600];
  16. extern const unsigned char gImage_3[600];
  17. extern const unsigned char gImage_4[600];

  18. extern u8 receive_data[10];
  19. extern u8 ChuLi_data[10];

  20. //顯示按鍵函數
  21. void Lcd_XianShi_AnJian(void)
  22. {
  23.          u8 i;        
  24.         
  25.         for(i=0;i<50;i++)LCD_Circle(100,300,BLUE,i);//畫圓
  26.   LCD_DrawRectangle(210, 250, 410, 350);                        //畫矩形
  27.         LCD_Fill(210, 250, 410, 350,BROWN);                                        //填充指定顏色
  28.         LCD_ShowString(260,300,200,24,24,"曲線");
  29.         
  30. //        for(i=0;i<50;i++)LCD_Circle(100,600,BLUE,i);//畫圓
  31. //  LCD_DrawRectangle(210, 550, 410, 650);                        //畫矩形
  32. //        LCD_Fill(210, 550, 410,650,BROWN);                                        //填充指定顏色
  33. //        LCD_ShowString(260,600,200,24,24,"公司");

  34.   LCD_DrawRectangle(0, 740, 80, 800);                        //畫矩形,(x1,y1),(x2,y2):矩形的對角坐標,    “\”對角線
  35.         LCD_Fill(0, 740, 80, 800,BROWN);                                        //填充指定顏色
  36.         LCD_ShowString(15,760,200,24,24,"按鍵1");        //按鍵1
  37.         
  38.   LCD_DrawRectangle(100, 740, 180, 800);                        //畫矩形,(x1,y1),(x2,y2):矩形的對角坐標
  39.         LCD_Fill(100, 740, 180, 800,RED);                                        //填充指定顏色
  40.         LCD_ShowString(115,760,200,24,24,"按鍵2");        //按鍵2
  41.         
  42.   LCD_DrawRectangle(200, 740, 280, 800);                        //畫矩形,(x1,y1),(x2,y2):矩形的對角坐標
  43.         LCD_Fill(200, 740, 280, 800,GREEN);                                        //填充指定顏色
  44.         LCD_ShowString(215,760,200,24,24,"按鍵3");        //按鍵3
  45.         
  46.   LCD_DrawRectangle(300, 740, 380, 800);                        //畫矩形,(x1,y1),(x2,y2):矩形的對角坐標
  47.         LCD_Fill(300, 740, 380, 800,BLUE);                                        //填充指定顏色
  48.         LCD_ShowString(315,760,200,24,24,"按鍵4");        //按鍵4

  49.   LCD_DrawRectangle(400, 740, 480, 800);                        //畫矩形,(x1,y1),(x2,y2):矩形的對角坐標
  50.         LCD_Fill(400, 740, 480, 800,GRED);                                        //填充指定顏色
  51.         LCD_ShowString(415,760,200,24,24,"按鍵5");        //按鍵5
  52.         
  53.     LCD_Draw_Picture(0,0,80,60,(u8 *)gImage_0);
  54.                 LCD_Draw_Picture(80,0,160,60,(u8 *)gImage_1);
  55.                 LCD_Draw_Picture(160,0,240,60,(u8 *)gImage_2);
  56.                 LCD_Draw_Picture(240,0,320,60,(u8 *)gImage_3);         
  57.                 LCD_Draw_Picture(320,0,400,60,(u8 *)gImage_4);
  58.                
  59.                
  60. }

  61. void LanYa_ShuJu_XianShi(u8 *receive_data,u8 *ChuLi_data)
  62. {
  63.          u8 Data[400];
  64.           sprintf(Data,"藍牙接收數據:%s",receive_data);
  65.           LCD_ShowString(10,100,300,24,24,(u8 *)&Data);        //
  66.         
  67.           sprintf(Data,"藍牙接收命令:%s",ChuLi_data);
  68.           LCD_ShowString(10,130,300,24,24,(u8 *)&Data);        //
  69. }

  70. //此函數顯示波形框
  71. void XinShi_Boxing_Kuang(void)            
  72. {
  73.         u16 x,y;
  74.         LCD_ShowString(15,590,200,24,24,"Y");
  75.         LCD_ShowString(10,620,200,24,24,"軸");
  76.         LCD_ShowString(50,655,200,24,24,"X");
  77.         LCD_ShowString(80,655,200,24,24,"軸");        
  78.         
  79.         LCD_DrawRectangle(50, 400, 480, 650);                        //畫矩形,(x1,y1),(x2,y2):矩形的對角坐標
  80.         LCD_Fill(50, 400, 480, 650,BLACK);                                        //填充指定顏色
  81.         for(x=50;x<480;x++)
  82.         {
  83.                 for(y=400;y<650;y++)
  84.                 {
  85.                         if((x%50==0) && (y%50==0))
  86.                         {
  87.                                         LCD_Fast_DrawPoint(x,y,WHITE);                                                                //快速畫點
  88.                         }
  89.                 }
  90.         }

  91. }

  92. //顯示波形
  93. void BoXing_XianShi(void)
  94. {
  95.         u16 x,y,T=10;
  96.         for(x=50;x<480;x++)
  97.         {
  98.                      y=650-T*sin(T*x);
  99.                                 LCD_Fast_DrawPoint(x,y,YELLOW);                                                                //快速畫點        
  100.         delay_ms(20);               
  101.         }
  102. }

  103. //電容觸摸屏測試函數
  104. void ctp_test1(void)
  105. {
  106.         u8 t=0;
  107.         u8 i=0;         
  108.   u8 l0,l1;        
  109. //        u8 L1_flag=0,L2_flag=0;
  110.          u16 lastpos[5][2];                //記錄最后一次的數據
  111.         while(1)
  112.         {
  113.                
  114.                 LanYa_ShuJu_XianShi(receive_data,ChuLi_data);
  115.                
  116.                 tp_dev.scan(0);
  117.                 for(t=0;t<CT_MAX_TOUCH;t++)
  118.                 {
  119.                         if((tp_dev.sta)&(1<<t))
  120.                         {
  121.                                 if(tp_dev.x[t]<lcddev.width&&tp_dev.y[t]<lcddev.height)
  122.                                 {
  123.                                         if(lastpos[t][0]==0XFFFF)
  124.                                         {
  125.                                                 lastpos[t][0] = tp_dev.x[t];
  126.                                                 lastpos[t][1] = tp_dev.y[t];
  127.                                         }
  128.                                         //=========按鍵操作========
  129.                                         if((tp_dev.x[t]>210)&&(tp_dev.x[t]<410)){
  130.                                                 
  131.                                                 
  132.                                                         if((tp_dev.y[t]>250)&&(tp_dev.y[t]<350)){//在按鍵LED1的坐標范圍內
  133.                                                                
  134.                                                                         while(tp_dev.sta&TP_PRES_DOWN)      //松手檢測
  135.                                                                         {
  136.                                                                                 tp_dev.scan(0);
  137.                                                                         }
  138.                                                                         
  139.                                                                         l0=~l0;
  140.                                                                   if(l0)
  141.                                                                                 for(i=0;i<50;i++)LCD_Circle(100,300,RED,i);                                        //畫圓
  142.                                                                   else
  143.                                                                                 for(i=0;i<50;i++)LCD_Circle(100,300,GREEN,i);                                        //畫圓        
  144.                                                                         
  145.                                                         }else if((tp_dev.y[t]>550)&&(tp_dev.y[t]<650)){//在按鍵LED2的坐標范圍內
  146.                                                                
  147.                                                                         while(tp_dev.sta&TP_PRES_DOWN)      //松手檢測
  148.                                                                         {
  149.                                                                                 tp_dev.scan(0);
  150.                                                                         }
  151.                                                                
  152.                                                                   l1=~l1;
  153.                                                                         if(l1)
  154.                                                                                 for(i=0;i<50;i++)LCD_Circle(100,600,RED,i);
  155.                                                                         else        
  156.                                                                                 for(i=0;i<50;i++)LCD_Circle(100,600,GREEN,i);
  157.                                                         }
  158.                                                         
  159.                                         }
  160.                                         if((tp_dev.y[t]>760)&&(tp_dev.y[t]<800)){
  161.                                                 if((tp_dev.x[t]>0)&&(tp_dev.x[t]<80)){  //按鍵1檢測
  162.                                                         while(tp_dev.sta&TP_PRES_DOWN)      //松手檢測
  163.                                                         {
  164.                                                                 tp_dev.scan(0);
  165.                                                         }

  166.                                                         l0=~l0;
  167.                                                         if(l0)
  168.                                                                 for(i=0;i<50;i++)LCD_Circle(100,300,RED,i);                                        //畫圓
  169.                                                         else
  170.                                                                 for(i=0;i<50;i++)LCD_Circle(100,300,GREEN,i);                                        //畫圓        
  171.                                                 }else if((tp_dev.x[t]>100)&&(tp_dev.x[t]<180)){                     //按鍵2檢測
  172.                                                         while(tp_dev.sta&TP_PRES_DOWN)      //松手檢測
  173.                                                         {
  174.                                                                 tp_dev.scan(0);
  175.                                                         }

  176.                                                         l0=~l0;
  177.                                                         if(l0)
  178.                                                                 for(i=0;i<50;i++)LCD_Circle(100,300,RED,i);                                        //畫圓
  179.                                                         else
  180.                                                                 for(i=0;i<50;i++)LCD_Circle(100,300,GREEN,i);                                        //畫圓        
  181.                                                 }else if((tp_dev.x[t]>200)&&(tp_dev.x[t]<280)){                     //按鍵3檢測
  182.                                                         while(tp_dev.sta&TP_PRES_DOWN)      //松手檢測
  183.                                                         {
  184.                                                                 tp_dev.scan(0);
  185.                                                         }

  186.                                                         l0=~l0;
  187.                                                         if(l0)
  188.                                                                 for(i=0;i<50;i++)LCD_Circle(100,300,RED,i);                                        //畫圓
  189.                                                         else
  190.                                                                 for(i=0;i<50;i++)LCD_Circle(100,300,GREEN,i);                                        //畫圓        
  191.                                                 }else if((tp_dev.x[t]>300)&&(tp_dev.x[t]<380)){                     //按鍵4檢測
  192.                                                         while(tp_dev.sta&TP_PRES_DOWN)      //松手檢測
  193.                                                         {
  194.                                                                 tp_dev.scan(0);
  195.                                                         }

  196.                                                         l0=~l0;
  197.                                                         if(l0)
  198.                                                                 for(i=0;i<50;i++)LCD_Circle(100,300,RED,i);                                        //畫圓
  199.                                                         else
  200.                                                                 for(i=0;i<50;i++)LCD_Circle(100,300,GREEN,i);                                        //畫圓        
  201.                                                 }else if((tp_dev.x[t]>400)&&(tp_dev.x[t]<480)){                     //按鍵5檢測
  202.                                                         while(tp_dev.sta&TP_PRES_DOWN)      //松手檢測
  203.                                                         {
  204.                                                                 tp_dev.scan(0);
  205.                                                         }

  206.                                                         l0=~l0;
  207.                                                         if(l0)
  208.                                                                 for(i=0;i<50;i++)LCD_Circle(100,300,RED,i);                                        //畫圓
  209.                                                         else
  210.                                                                 for(i=0;i<50;i++)LCD_Circle(100,300,GREEN,i);                                        //畫圓        
  211.                                                 }

  212.                                         }
  213.                                 }
  214.                         }else lastpos[t][0]=0XFFFF;
  215.                 }
  216.                
  217.                 delay_ms(5);i++;
  218.                 if(i%20==0)LED0=!LED0;
  219.         }               
  220. }
  221. int main(void)
  222. {        

  223.         uart_init(115200);        //串口初始化為115200
  224.         Uart3_Init(9600);
  225.         delay_init();                            //延時初始化
  226.         LED_Init();                                  //初始化與LED連接的硬件接口
  227.         LCD_Init();                                   //初始化LCD
  228.         KEY_Init();                                //按鍵初始化                        
  229.         tp_dev.init();                        //觸摸屏初始化
  230.          POINT_COLOR=RED;//設置字體為紅色
  231.         

  232.         Lcd_XianShi_AnJian();
  233.         XinShi_Boxing_Kuang();
  234. //        BoXing_XianShi();      //顯示正弦波
  235.         
  236.         if(tp_dev.touchtype&0X80)ctp_test1();        //電容屏測試
  237. }
復制代碼

所有代碼51hei附件下載:
觸摸屏控制+藍牙.7z (260.79 KB, 下載次數: 42)

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:160860 發表于 2021-8-17 11:47 | 只看該作者
這是一個模塊化程序,很好用。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 综合网中文字幕 | 亚洲精品乱码久久久久久黑人 | 亚洲综合在线视频 | 91麻豆精品国产91久久久久久 | 国产亚洲一区二区三区在线 | 蜜桃精品噜噜噜成人av | 天天爽天天干 | 欧美日韩精品一区二区三区蜜桃 | 国产亚洲第一页 | 亚洲国产成人精品女人 | 久久久久国产 | 免费观看一级特黄欧美大片 | 一本一道久久a久久精品蜜桃 | 中文字幕国产日韩 | 日本大香伊一区二区三区 | 欧美日产国产成人免费图片 | 久久久999精品 | 国产小u女发育末成年 | 久久国产视频一区 | 自拍偷拍亚洲视频 | 亚洲乱码国产乱码精品精的特点 | 日日日干干干 | 国产精品久久久99 | 日韩欧美中文字幕在线观看 | 亚洲国产精品视频一区 | 亚洲欧美久久 | 国产丝袜一区二区三区免费视频 | 久久精品亚洲 | 久久毛片 | 欧美精品成人一区二区三区四区 | 久久久久国产一区二区三区 | 欧美一区在线视频 | 中文字幕日韩欧美一区二区三区 | 欧美a级成人淫片免费看 | 国产综合久久 | 国产在线一区二区 | 免费久久99精品国产婷婷六月 | 免费精品| 国产精品视频网站 | 欧美精品一区二区免费 | 欧美 日韩 在线播放 |