RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

帶顯示屏指示的流水燈設(shè)計(jì)

冬至子 ? 來(lái)源:笨狗學(xué)電子 ? 作者:一只技術(shù)狗 ? 2023-07-26 17:23 ? 次閱讀

第一步--熟悉硬件

流水燈的原理圖是這樣的

圖片

LCD的接口是這樣的

圖片

我在這里突然發(fā)現(xiàn)了一個(gè)問(wèn)題,就是LED和LCD怎么有公用的端口??!但是我仔細(xì)一看發(fā)現(xiàn),這LED是由一個(gè)鎖存器控制,LCD的控制芯片有一個(gè)CS片選信號(hào),感覺(jué)這個(gè)是控制著兩個(gè)模塊的使能的,那么不同時(shí)向LED和LCD寫數(shù)據(jù)不就行了?

所以控制思路也就有了,在向LCD寫數(shù)據(jù)的時(shí)候就使能LCD控制芯片,用完就失能它。這一步我發(fā)現(xiàn)給的例程已經(jīng)做了。但LED可沒(méi)有做,所以只能自己實(shí)現(xiàn)了,控制思路和LCD一樣,用的時(shí)候使能,用完就失能。

第二步--軟件設(shè)計(jì)

首先就是套用官方給的例程,有現(xiàn)成的不用豈不是浪費(fèi)。然后初始化一下PD2口。下面就是PD2的初始化函數(shù)。

void LED_Enable_gpio_cofig(void)
{
  GPIO_InitTypeDef  GPIO_Strue;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
  GPIO_Strue.GPIO_Pin = GPIO_Pin_2;
  GPIO_Strue.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Strue.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOD, &GPIO_Strue);
  //先關(guān)了燈
  GPIO_SetBits(GPIOD, GPIO_Pin_2);
  GPIO_Write(GPIOC,0Xff00);
  GPIO_ResetBits(GPIOD, GPIO_Pin_2);
}

為了好記我把使能失能宏定義一下

#define LED_ENABLE()       GPIO_SetBits(GPIOD, GPIO_Pin_2)
#define LED_DISENABLE()    GPIO_ResetBits(GPIOD, GPIO_Pin_2)

延時(shí)函數(shù)就用例程帶的。

建立一個(gè)流水燈數(shù)組

uint16_t led_buff[][8] = {0xfe00, 0xfd00, 0xfb00, 0xf700, 0xef00, 0xdf00, 0xbf00, 0x7f00,
                       0x7f00, 0xbf00, 0xdf00, 0xef00, 0xf700, 0xfb00, 0xfd00, 0xfe00,
               0x7e00, 0xbd00, 0xdb00, 0xe700, 0xe700, 0xc300, 0x8100, 0x0000,
               0xe700, 0xdb00, 0xbd00, 0x7e00, 0x7e00, 0x3c00, 0x1800, 0x0000};

最后的過(guò)程就很簡(jiǎn)單了看一下mian函數(shù)吧

int main(void)
{
  uint8_t i;
  SysTick_Config(SystemCoreClock/1000);
  //Delay_Ms(200);
  STM3210B_LCD_Init();
  LED_Enable_gpio_cofig();
  LCD_Clear(Black);
  LCD_SetBackColor(Black);
  LCD_SetTextColor(White);
  LCD_DisplayStringLine(Line1 ,(unsigned char *)"   Flowled test");
  LCD_SetBackColor(Yellow);
  LCD_DisplayStringLine(Line2 ,(unsigned char *)"Flowled mode 1 test.");  
  LCD_SetBackColor(Black);
  LCD_DisplayStringLine(Line3 ,(unsigned char *)"Flowled mode 2 test.");  
  LCD_SetBackColor(Black);
  LCD_DisplayStringLine(Line4 ,(unsigned char *)"Flowled mode 3 test.");  
  LCD_SetBackColor(Black);
  LCD_DisplayStringLine(Line5 ,(unsigned char *)"Flowled mode 4 test.");  
  LED_ENABLE();
  for(i = 0; i < 8; i ++)
  {
    GPIO_Write(GPIOC,led_buff[0][i]);
    Delay_Ms(200);
  }
  GPIO_Write(GPIOC,0Xff00);
  LED_DISENABLE();


  LCD_SetBackColor(Black);
  LCD_DisplayStringLine(Line2 ,(unsigned char *)"Flowled mode 1 test.");  
  LCD_SetBackColor(Yellow);
  LCD_DisplayStringLine(Line3 ,(unsigned char *)"Flowled mode 2 test.");  
  LED_ENABLE();
  for(i = 0; i < 8; i ++)
  {
    GPIO_Write(GPIOC,led_buff[1][i]);
    Delay_Ms(200);
  }
  GPIO_Write(GPIOC,0Xff00);
  LED_DISENABLE();

  LCD_SetBackColor(Black);
  LCD_DisplayStringLine(Line3 ,(unsigned char *)"Flowled mode 2 test.");  
  LCD_SetBackColor(Yellow);
  LCD_DisplayStringLine(Line4 ,(unsigned char *)"Flowled mode 3 test.");  
  LED_ENABLE();
  for(i = 0; i < 8; i ++)
  {
    GPIO_Write(GPIOC,led_buff[2][i]);
    Delay_Ms(200);
  }
  GPIO_Write(GPIOC,0Xff00);
  LED_DISENABLE();

  LCD_SetBackColor(Black);
  LCD_DisplayStringLine(Line4 ,(unsigned char *)"Flowled mode 3 test.");  
  LCD_SetBackColor(Yellow);
  LCD_DisplayStringLine(Line5 ,(unsigned char *)"Flowled mode 4 test.");  
  LED_ENABLE();
  for(i = 0; i < 8; i ++)
  {
    GPIO_Write(GPIOC,led_buff[2][i]);
    Delay_Ms(200);
  }
  GPIO_Write(GPIOC,0Xff00);
  LED_DISENABLE();


  LCD_SetBackColor(Black);
  LCD_DisplayStringLine(Line5 ,(unsigned char *)"Flowled mode 4 test.");    
  LCD_SetBackColor(Green);
  LCD_DisplayStringLine(Line6 ,(unsigned char *)"Finshed!");  
  LCD_SetBackColor(Red);
  LCD_DisplayStringLine(Line7 ,(unsigned char *)"                   ");    
  while(1);
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • led燈
    +關(guān)注

    關(guān)注

    22

    文章

    1592

    瀏覽量

    107950
  • LCD屏
    +關(guān)注

    關(guān)注

    0

    文章

    122

    瀏覽量

    15421
  • 流水燈
    +關(guān)注

    關(guān)注

    21

    文章

    432

    瀏覽量

    59692
  • LCD控制
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    7905
  • 延時(shí)器
    +關(guān)注

    關(guān)注

    1

    文章

    36

    瀏覽量

    15097
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    IIC的12864OLED顯示屏中文字庫(kù)的顯示屏嗎?

    IIC的12864OLED顯示屏中文字庫(kù)的顯示屏
    發(fā)表于 11-08 08:32

    LED流水燈程序【匯編版】

    LED流水燈程序【匯編版】LED流水燈程序【匯編版】LED流水燈程序【匯編版】LED流水燈程序【匯編版】
    發(fā)表于 12-29 11:15 ?0次下載

    LED流水燈程序【C語(yǔ)言版】

    LED流水燈程序【C語(yǔ)言版】LED流水燈程序【C語(yǔ)言版】LED流水燈程序【C語(yǔ)言版】LED流水燈程序【C語(yǔ)言版】
    發(fā)表于 12-29 11:05 ?0次下載

    LESSON2_流水燈

    LESSON2_流水燈 LESSON2_流水燈
    發(fā)表于 02-18 18:21 ?0次下載

    流水燈

    流水燈 ppt
    發(fā)表于 11-11 18:42 ?13次下載

    LED燈能用來(lái)制作顯示屏嗎?

    LED燈是不能用來(lái)制作顯示屏的。雖然燈顯示屏都是由多顆發(fā)光二極管組成,但卻是兩種工作方式和原理完全不同的產(chǎn)品。
    的頭像 發(fā)表于 06-20 10:03 ?3487次閱讀

    交通類LED顯示屏有什么優(yōu)勢(shì)

    隨著LED顯示屏技術(shù)的進(jìn)步發(fā)展,近年來(lái)在交通領(lǐng)域,LED顯示屏的應(yīng)用越來(lái)越廣泛,許多地方用顯示屏代替了原來(lái)的指示牌。
    發(fā)表于 09-21 11:42 ?1206次閱讀

    OLED顯示屏的LED條形混色器

    電子發(fā)燒友網(wǎng)站提供《OLED顯示屏的LED條形混色器.zip》資料免費(fèi)下載
    發(fā)表于 11-09 09:35 ?2次下載
    <b class='flag-5'>帶</b>OLED<b class='flag-5'>顯示屏</b>的LED條形混色器

    流水燈顯示Proteus圖無(wú)代碼分享

    流水燈顯示Proteus圖無(wú)代碼分享
    發(fā)表于 12-30 16:46 ?0次下載

    TFT顯示屏的STM32焊接和返修臺(tái)

    電子發(fā)燒友網(wǎng)站提供《TFT顯示屏的STM32焊接和返修臺(tái).zip》資料免費(fèi)下載
    發(fā)表于 02-02 14:50 ?2次下載
    <b class='flag-5'>帶</b>TFT<b class='flag-5'>顯示屏</b>的STM32焊接和返修臺(tái)

    Arduino和LCD顯示屏的秒表

    電子發(fā)燒友網(wǎng)站提供《Arduino和LCD顯示屏的秒表.zip》資料免費(fèi)下載
    發(fā)表于 06-12 09:51 ?5次下載
    <b class='flag-5'>帶</b>Arduino和LCD<b class='flag-5'>顯示屏</b>的秒表

    NTC和OLED顯示屏的溫度監(jiān)視器

    電子發(fā)燒友網(wǎng)站提供《NTC和OLED顯示屏的溫度監(jiān)視器.zip》資料免費(fèi)下載
    發(fā)表于 06-28 15:56 ?0次下載
    <b class='flag-5'>帶</b>NTC和OLED<b class='flag-5'>顯示屏</b>的溫度監(jiān)視器

    OLED顯示屏的可編程袖珍電源

    電子發(fā)燒友網(wǎng)站提供《OLED顯示屏的可編程袖珍電源.zip》資料免費(fèi)下載
    發(fā)表于 07-04 09:33 ?0次下載
    <b class='flag-5'>帶</b>OLED<b class='flag-5'>顯示屏</b>的可編程袖珍電源

    TFT顯示屏的LoRa遠(yuǎn)程控制信使

    電子發(fā)燒友網(wǎng)站提供《TFT顯示屏的LoRa遠(yuǎn)程控制信使.zip》資料免費(fèi)下載
    發(fā)表于 07-11 10:16 ?0次下載
    <b class='flag-5'>帶</b>TFT<b class='flag-5'>顯示屏</b>的LoRa遠(yuǎn)程控制信使

    LCD顯示屏、LED顯示屏、OLED顯示屏有什么區(qū)別?

    LCD顯示屏、LED顯示屏、OLED顯示屏有什么區(qū)別? LCD顯示屏、LED顯示屏和OLED顯示屏
    的頭像 發(fā)表于 12-11 14:29 ?2.2w次閱讀
    RM新时代网站-首页