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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

輕松應用STM32F429之LTDC液晶顯示,ADC_DMA,心電,正弦波,三角波形顯示

  [復制鏈接]
跳轉到指定樓層
樓主
本程序實現了LTDC液晶對ADC采集到的數據進行顯示,并通過LCD分層顯示心電波形,正弦波,方波,三角波等等。程序簡單明了,幾個函數就可以輕松應用STM32F429 Discovery的高級LTDC液晶分層顯示功能,圖文并茂如下:






主程序預覽:
  1. //------------------------------------------------------------------------------
  2. //工程:LTDC_Display
  3. //作者:xzezhen
  4. //版本:V1.0.0
  5. //日期:2014-06-06
  6. //工具:Keil MDK 4.72a
  7. //描述:程序實現了ADC_DMA模數轉換功能,并通過LCD顯示電壓值,畫出電壓波形。
  8. //------------------------------------------------------------------------------

  9. #include "Com.h"

  10. #define         MESSAGE1            "  ECG Waveform  "
  11. #define         MESSAGE1_1          "    Display      "
  12. #define         MESSAGE2            "ADC Value:"
  13. #define         MESSAGE5                   " ADC3=%d.%1d V "
  14. #define         LINENUM       0x15

  15. #define ADC3_DR_ADDRESS     ((uint32_t)0x4001224C)

  16. __IO uint16_t uhADC3ConvertedValue = 0;
  17. __IO uint32_t uwADC3ConvertedVoltage = 0;

  18. static uint16_t Xpos=6,Ypos1=249,Ypos2=249,Xpos1=6,Xpos2=6;
  19. static uint16_t DrawData;
  20. static uint16_t Counter=0;

  21. //------------------------------------------------------------------------------
  22. //ADC3通道13 DMA配置
  23. //------------------------------------------------------------------------------
  24. static void ADC3_CH13_DMA_Config(void)
  25. {
  26.   ADC_InitTypeDef       ADC_InitStructure;
  27.   ADC_CommonInitTypeDef ADC_CommonInitStructure;
  28.   DMA_InitTypeDef       DMA_InitStructure;
  29.   GPIO_InitTypeDef      GPIO_InitStructure;

  30.         //打開ADC3,DMA2,GPIO時鐘
  31.   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2 | RCC_AHB1Periph_GPIOC, ENABLE);
  32.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3, ENABLE);

  33.   DMA_InitStructure.DMA_Channel = DMA_Channel_2;  
  34.   DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)ADC3_DR_ADDRESS;
  35.   DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&uhADC3ConvertedValue;
  36.   DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
  37.   DMA_InitStructure.DMA_BufferSize = 1;
  38.   DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
  39.   DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;
  40.   DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
  41.   DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
  42.   DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
  43.   DMA_InitStructure.DMA_Priority = DMA_Priority_High;
  44.   DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;         
  45.   DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;
  46.   DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
  47.   DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
  48.   DMA_Init(DMA2_Stream0, &DMA_InitStructure);
  49.   DMA_Cmd(DMA2_Stream0, ENABLE);

  50.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
  51.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
  52.   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
  53.   GPIO_Init(GPIOC, &GPIO_InitStructure);

  54.   ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;
  55.   ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2;
  56.   ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;
  57.   ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;
  58.   ADC_CommonInit(&ADC_CommonInitStructure);

  59.   ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
  60.   ADC_InitStructure.ADC_ScanConvMode = DISABLE;
  61.   ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
  62.   ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
  63.   ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;        
  64.   ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
  65.   ADC_InitStructure.ADC_NbrOfConversion = 1;
  66.   ADC_Init(ADC3, &ADC_InitStructure);

  67.   ADC_RegularChannelConfig(ADC3, ADC_Channel_13, 1, ADC_SampleTime_3Cycles);

  68.   ADC_DMARequestAfterLastTransferCmd(ADC3, ENABLE);

  69.   ADC_DMACmd(ADC3, ENABLE);

  70.   ADC_Cmd(ADC3, ENABLE);
  71. }

  72. //------------------------------------------------------------------------------
  73. //LCD顯示電壓值主循環
  74. //------------------------------------------------------------------------------
  75. static void ADCValueDisplay_MainLoop(void)
  76. {
  77.   uint32_t uwVoltage =0, uwMVoltage=0;
  78.   uint8_t aTextBuffer[50];

  79.         //把ADC采樣值轉換成電壓值
  80.   uwADC3ConvertedVoltage = uhADC3ConvertedValue *3000/0xFFF;
  81.         
  82.         LCD_SetLayer(LCD_BACKGROUND_LAYER);
  83.   
  84.   LCD_SetBackColor(((220>>3)<<11)|((220>>2)<<5)|(220>>3));
  85.   LCD_SetTextColor( LCD_COLOR_BLUE );
  86.         
  87.   uwVoltage = (uwADC3ConvertedVoltage)/1000;
  88.   uwMVoltage = (uwADC3ConvertedVoltage%1000)/100;

  89.   sprintf((char*)aTextBuffer, MESSAGE5, uwVoltage, uwMVoltage);
  90.   LCD_DisplayStringLine(LCD_LINE_12, (uint8_t*)aTextBuffer);
  91.         
  92.         LCD_SetLayer(LCD_FOREGROUND_LAYER);
  93. }

  94. //------------------------------------------------------------------------------
  95. //電壓波形顯示主循環
  96. //------------------------------------------------------------------------------
  97. static void ADCWaveformDisp_MainLoop(void)
  98. {
  99.         DrawData = uhADC3ConvertedValue*(178.0/0xFFF);   

  100.         if( ++Counter == 4 )
  101.         {
  102.                 Counter = 0;
  103.                 LCD_SetTextColor( LCD_COLOR_BLACK );
  104.                 LCD_DrawFullRect( Xpos+1, 50, 2, 218);
  105.                 LCD_SetTextColor( LCD_COLOR_GREEN );
  106.                 Xpos=Xpos+1;
  107.                 if(Xpos>232)
  108.                 {
  109.                         Xpos=6;
  110.                         LCD_SetTextColor( LCD_COLOR_BLACK );
  111.                         LCD_DrawLine( Xpos, 50, 218, LCD_DIR_VERTICAL);
  112.                         LCD_SetTextColor( LCD_COLOR_GREEN );
  113.                 }
  114.                 Xpos2=Xpos2+1;
  115.                 Ypos2=249-DrawData;
  116.                 if(Xpos2>232)
  117.                 {
  118.                         Xpos2=6;Xpos1=6;
  119.                 }        
  120.                 LCD_DrawUniLine( Xpos1, Ypos1, Xpos2, Ypos2);
  121.                 Xpos1=Xpos2;
  122.                 Ypos1=Ypos2;
  123.         }        
  124. }

  125. //------------------------------------------------------------------------------
  126. //界面初始化顯示
  127. //------------------------------------------------------------------------------
  128. static void LCD_GUIDisplay(void)
  129. {
  130.         uint16_t i;
  131.         
  132.   LCD_SetLayer(LCD_BACKGROUND_LAYER);                //設置為背景層
  133.   LCD_SetTransparency(255);                                                  //背景層透明度
  134.   LCD_Clear( ((220>>3)<<11)|((220>>2)<<5)|(220>>3) );        //把LCD清除為指定顏色

  135.         LCD_SetBackColor(LCD_COLOR_BLUE);
  136.   LCD_SetTextColor(LCD_COLOR_BLACK);
  137.                
  138.         LCD_DrawFullRect(5, 49, 229, 219);

  139.         LCD_SetTextColor( ((180>>3)<<11)|((180>>2)<<5)|(180>>3) );
  140.         LCD_DrawRect( 5, 49, 219, 229);
  141.         
  142.         LCD_SetTextColor( ((180>>3)<<11)|((180>>2)<<5)|(180>>3) );
  143.         LCD_DrawUniLine( 4, 48, 234, 48);
  144.         LCD_DrawUniLine( 4, 48, 4, 268);
  145.         
  146.         LCD_SetTextColor( ((128>>3)<<11)|((128>>2)<<5)|(128>>3) );
  147.         LCD_DrawUniLine( 5, 49, 233, 49);
  148.         LCD_DrawUniLine( 5, 49, 5, 267);

  149.         LCD_SetTextColor( 0XFFFF );
  150.         LCD_DrawUniLine( 235, 49, 235, 269);
  151.         LCD_DrawUniLine( 5, 269, 235, 269);

  152.         LCD_SetTextColor( ((30>>3)<<11)|((30>>2)<<5)|(30>>3) );
  153.         for( i=69; i<269; i+=20 )
  154.                 LCD_DrawUniLine( 6, i, 233, i);
  155.         for( i=44; i<233; i+=38 )
  156.                 LCD_DrawUniLine( i, 50, i, 267);
  157.         
  158.   LCD_SetBackColor(((220>>3)<<11)|((220>>2)<<5)|(220>>3));
  159.   LCD_SetTextColor(LCD_COLOR_BLUE);
  160.         LCD_SetFont(&Font16x24);
  161.         LCD_DisplayStringLine(LCD_LINE_0, (uint8_t*)MESSAGE1);
  162.         LCD_DisplayStringLine(LCD_LINE_1, (uint8_t*)MESSAGE1_1);

  163.         LCD_SetLayer(LCD_FOREGROUND_LAYER);                        //把LCD設置為前景顯示層
  164.         LCD_SetTransparency(120);                                                                //前景層透明度
  165.         LCD_Clear( LCD_COLOR_BLACK );        
  166. }

  167. //------------------------------------------------------------------------------
  168. //主函數
  169. //------------------------------------------------------------------------------
  170. int main(void)
  171. {
  172.         
  173.         
  174.   LCD_Init();                                                                                        //LCD初始化
  175.   LCD_LayerInit();                                                                //LCD層次顯示初始化  
  176.   
  177.         LTDC_Cmd(ENABLE);                                                                //打開LTDC
  178.   
  179.         LCD_GUIDisplay();
  180.         
  181.   ADC3_CH13_DMA_Config();                                        //配置ADC3
  182.   ADC_SoftwareStartConv(ADC3);                //開始ADC轉換

  183.         while(1)
  184.         {   
  185.     ADCValueDisplay_MainLoop();                //顯示電壓值
  186.                 ADCWaveformDisp_MainLoop();         //波形顯示                        
  187.         }
  188. }
復制代碼

工程文件如下: LTDC_Display.7z (328.94 KB, 下載次數: 354)

評分

參與人數 3黑幣 +40 收起 理由
he33504898 + 25 很棒
qjzyx + 3 贊一個!
YJGG + 12 很給力!

查看全部評分

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

使用道具 舉報

沙發
ID:23606 發表于 2016-8-5 13:43 | 只看該作者
感謝分享,共享資料!
回復

使用道具 舉報

板凳
ID:83761 發表于 2016-10-25 21:56 | 只看該作者
挺好
回復

使用道具 舉報

地板
ID:217970 發表于 2017-7-7 18:58 | 只看該作者
uwVoltage = (uwADC3ConvertedVoltage)/1000;
  uwMVoltage = (uwADC3ConvertedVoltage%1000)/100;
這是為什么呢
回復

使用道具 舉報

5#
ID:221578 發表于 2017-7-22 13:35 | 只看該作者
剛好項目有用到,,謝謝。
回復

使用道具 舉報

6#
ID:232933 發表于 2017-9-13 19:25 | 只看該作者
不能下載
回復

使用道具 舉報

7#
ID:284145 發表于 2018-2-15 10:37 | 只看該作者
good, 手上有塊429的disc板子,學習學習,thanks。
回復

使用道具 舉報

8#
ID:266116 發表于 2018-2-15 14:42 | 只看該作者
謝謝分享
回復

使用道具 舉報

9#
ID:281751 發表于 2018-2-28 18:32 | 只看該作者
感謝您的分享 !!!
回復

使用道具 舉報

10#
ID:296103 發表于 2018-3-23 21:41 | 只看該作者
剛好項目有用到,,謝謝。
回復

使用道具 舉報

11#
ID:312423 發表于 2018-4-20 14:56 | 只看該作者
謝謝分享
回復

使用道具 舉報

12#
ID:346607 發表于 2018-6-10 23:12 | 只看該作者
__IO uint16_t uhADC3ConvertedValue = 0;想問。為什么等于零。(別懟,新手,求教
回復

使用道具 舉報

13#
ID:283449 發表于 2018-7-29 20:55 | 只看該作者
不錯啊樓主!加油!
回復

使用道具 舉報

14#
ID:433227 發表于 2019-3-26 21:29 | 只看該作者
謝謝分享
回復

使用道具 舉報

15#
ID:493913 發表于 2019-3-27 09:24 | 只看該作者
好厲害,學習了
回復

使用道具 舉報

16#
ID:578921 發表于 2019-7-6 16:58 | 只看該作者
真的真的很給力!!!
回復

使用道具 舉報

17#
ID:630982 發表于 2019-10-27 17:38 | 只看該作者
北岸最后一只貓 發表于 2017-7-7 18:58
**** 作者被禁止或刪除 內容自動屏蔽 ****

上面那行是整數部份 下面是小數
回復

使用道具 舉報

18#
ID:369039 發表于 2020-3-3 08:21 | 只看該作者
上面那行是整數部份 下面是小數
回復

使用道具 舉報

19#
ID:701628 發表于 2020-3-3 12:06 | 只看該作者
感謝分享啊,看看學學
回復

使用道具 舉報

20#
ID:504404 發表于 2020-3-18 12:12 | 只看該作者
大佬,感謝分享
回復

使用道具 舉報

21#
ID:323191 發表于 2020-3-19 19:46 | 只看該作者
謝謝分享
回復

使用道具 舉報

22#
ID:147215 發表于 2020-6-20 15:52 | 只看該作者
謝謝分享!,,,,
回復

使用道具 舉報

23#
ID:822447 發表于 2020-11-27 19:37 | 只看該作者
感謝樓主的好例程!
回復

使用道具 舉報

24#
ID:140183 發表于 2020-12-6 16:33 | 只看該作者
太好啦!正想學習這方面的。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产日韩欧美二区 | 97免费在线观看视频 | 午夜av电影院 | 国产精品99久久久久久动医院 | 亚洲午夜精品一区二区三区 | 亚洲国产精品一区 | 一区二区三区四区在线 | 欧美日韩在线一区二区 | 成人免费视频网站在线看 | 羞羞视频网站免费观看 | 色网在线看 | 成人h动漫精品一区二区器材 | 亚洲一区不卡 | 国产精品国产成人国产三级 | 亚洲精品一区av在线播放 | av在线播放网站 | 欧美在线一区二区视频 | 99这里只有精品 | 欧美日韩福利视频 | 国产99免费视频 | 99精品免费视频 | 羞羞视频免费观看 | 97国产一区二区 | 日本精品一区二区 | 中文字幕乱码视频32 | 涩涩视频在线观看免费 | 精品久久久久久久久久 | 欧美极品在线视频 | 欧美13videosex性极品 | 搞黄网站在线观看 | 久久久日韩精品一区二区三区 | 精品欧美一区二区三区久久久 | 免费观看一级毛片 | 成人精品国产 | 欧美一区二区三区四区视频 | 亚洲成人久久久 | 亚洲一区二区精品视频 | 狠狠婷婷综合久久久久久妖精 | 91免费观看视频 | 亚洲一区二区三区免费观看 | 精品一区二区三区四区五区 |