吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于51單片機的花樣流水燈設計

王子變青蛙_35400519 ? 來源:王子變青蛙_35400519 ? 作者:王子變青蛙_35400 ? 2022-06-28 10:29 ? 次閱讀

一、前言

二、模塊介紹及原理說明

三、硬件連接

四、程序說明

五、效果演示

六、代碼鏈接


一、前言

花樣流水燈就是讓LED燈按照一定規律進行各種變化,流水燈在生活中也隨處可見,例如在建筑物的棱角上裝上流水燈,可以起到變換閃爍達到美不勝收的效果。此設計使用16個LED燈,有四種花樣,循環往復顯示,每隔15S左右的時間進行一次花樣變換。也可手動切換花樣。單片機系統裝有按鍵復位電路可直接復位電路。

二、模塊介紹及原理說明

單片機最小系統:

單片機最小系統完成系統運行的最基本電路,單片機最小系統可配合其他模塊或自行搭建電路完成各種實驗功能,單片機最小系統接口設計靈活,電路簡潔,可完成基本的驅動任務。單片機最小系統包括晶振電路、復位電路。復位電路我使用按鍵復位,方便系統的重啟。

三、硬件連接

本設計使用P0、P2控制LED燈由于LED燈所需電量少,所以不需要加驅動就可以完成顯示。P3^0為按鍵控制端口,用于控制花樣燈的切換。

仿真連接

實物連接

四、程序說明

主程序,用以調用不同的函數。

main()
{
  Timer0Init();  //定時器0初始化
  P2=0x00;//端口初始化
  P0=0x00;
 while(1)
      {
         key();	
				
		 	  if(num==0)
			   {
				   P2=0x00;
                   P0=0x00;
				 }
	       else if(num==1)
		           	num1();//花樣一
		     else if(num==2)         
		           	num2();	//花樣二            
		     else if(num==3)
		           	num3();
		     else if(num==4) 
		         	  num4();     
      }
}

定時器函數,用來控制不同花樣切換的時間,更加準確,此設計控制每種花樣的顯示時間為15S,可根據喜好自己調節。

void Timer0() interrupt 1
{
	TH0=(65536-6000)/256;	//給定時器賦初值,定時10ms
	TL0=(65536-6000)%256;
	ssec++;
	if(ssec>=100)       	  //毫秒	  時鐘
	  {
		ssec=0;
		sec++; 
		if(sec>=15)			  //秒
		{
			sec=0;
			num++;
		}
		if(num==5)
			num=1;
	  } 
}	

花樣表格函數,將各種花樣流水燈分開放入表格中,在主函數中進行調用。通過查表的方式顯示各種花樣,實用性更強,在花樣較多時也方便進行管理。花樣相對簡單,可自己進行編寫。

unsigned char code seg1[]={
	            0x7f,0xbf,0xdf,0xef,
						  0xf7,0xfb,0xfd,0xfe,
						  0xff,0xff,0x00,0x00,
						  0x55,0x55,0xaa,0xaa
						  };   //第一種

unsigned char code seg2[]={0x01,0x03,0x07,0x0f,
						  0x1f,0x3f,0x7f,0xff,
						  0xff,0xff,0xff,0xff,
						  0xff,0xff,0xff,0xff
						  };
unsigned char code seg3[]={0x00,0x00,0x00,0x00,
						  0x00,0x00,0x00,0x00,
						  0x80,0xc0,0xe0,0xf0,
						  0xf8,0xfc,0xfe,0xff,
						  };	//第二種


unsigned char code seg4[]={0x01,0x03,0x07,0x0f,
						  0x1f,0x3f,0x7f,0xff,
						  0xff,0x7f,0x3f,0x1f,
						  0x0f,0x07,0x03,0x01
						  };
unsigned char code seg5[]={
	            0x01,0x03,0x07,0x0f,
						  0x1f,0x3f,0x7f,0xff,
						  0xff,0x7f,0x3f,0x1f,
						  0x0f,0x07,0x03,0x01
						  }; //第三種
unsigned char code seg6[]={
        0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
				0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
				0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,
				0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,
				0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,
				0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,
				0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,
				0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
				0x81,0x82,0x84,0x88,0x90,0xa0,0xc0,
				0xc1,0xc2,0xc4,0xc8,0xd0,0xe0,
				0xe1,0xe2,0xe4,0xe8,0xf0,
				0xf1,0xf2,0xf4,0xf8,
				0xf9,0xfa,0xfc,
				0xfd,0xfe,
				0xff

						  };
unsigned char code seg7[]={
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,
				0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x81,0x41,0x21,0x11,0x09,0x05,0x03,
				0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x83,0x43,0x23,0x13,0x0b,0x07,
				0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x87,0x47,0x27,0x17,0x0f,
				0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x8f,0x4f,0x2f,0x1f,
				0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x9f,0x5f,0x3f,
				0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0xbf,0x7f,
				0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0xff,
				0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
				0xff,0xff,0xff,0xff,0xff,0xff,0xff,
				0xff,0xff,0xff,0xff,0xff,0xff,
				0xff,0xff,0xff,0xff,0xff,
				0xff,0xff,0xff,0xff,
				0xff,0xff,0xff,
				0xff,0xff,
				0xff,
						  }; //第四種

按鍵函數,可以通過按鍵進行LED燈花樣的切換,按鍵函數中需要加入消抖函數,以防止按鍵誤觸。

void key()
{
	    if(key1==0)  //按鍵控制
	       {
	 	         delay(10);
		         if(key1==0)
		         {
		            num++;
		            if(num==5) num=0;
		         }
			       while(!key1);	 //檢測按鍵是否松開
	       }
    	
}

五、效果演示

仿真演示https://live.csdn.net/v/219964

實物演示https://live.csdn.net/v/219965

六、代碼鏈接

歡迎留言評論分享自己的看法,如有錯誤歡迎指正。關注公眾號:“小小創客”回復“花樣流水燈“獲得源碼及仿真。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • led
    led
    +關注

    關注

    242

    文章

    23362

    瀏覽量

    663247
  • 單片機
    +關注

    關注

    6043

    文章

    44621

    瀏覽量

    638628
  • 51單片機
    +關注

    關注

    274

    文章

    5705

    瀏覽量

    124313
  • 流水燈
    +關注

    關注

    21

    文章

    433

    瀏覽量

    59835
收藏 人收藏

    評論

    相關推薦

    51單片機pwm和spwm

    51單片機pwm
    發表于 01-08 15:54 ?2次下載

    低成本單片機方案——觸摸流水燈開關控制

    概述本方案旨在提供一種基于低成本單片機的觸摸流水燈開關控制解決方案。該方案結合了單片機技術、電容式觸摸傳感技術和LED驅動技術,實現了通過觸摸操作控制流水燈的效果。
    的頭像 發表于 12-26 16:37 ?252次閱讀
    低成本<b class='flag-5'>單片機</b>方案——觸摸<b class='flag-5'>流水燈</b>開關控制

    51單片機核心板原理圖

    51單片機核心板原理圖
    發表于 12-16 11:30 ?3次下載

    51單片機中為什么很少出現printf的身影

    51單片機中為什么很少出現 printf 的身影?是用不了嗎? 不是的,51單片機可以用 printf,只是不建議使用。 平時我們在操作系統上寫C語言代碼,使用 printf 可以把數
    的頭像 發表于 12-03 10:46 ?545次閱讀
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>中為什么很少出現printf的身影

    基于51單片機的手動數字時鐘

    具體實現功能由51單片機+8位共陰數碼管+獨立按鍵構成。具體功能:(1)利用數碼管顯示時分秒,顯示格式為“時-分-秒”;(2)利用6個按鍵控制時、分、秒,設定好后自動開始時鐘顯示;(3)設置秒復位
    的頭像 發表于 10-22 14:12 ?300次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的手動數字時鐘

    基于51單片機的LED點陣滾動顯示系統

    花樣;(4)可以利用“點陣LED字模生成工具”生成自己想要顯示的字符。仿真演示視頻:基于51單片機的LED點陣滾動顯示系統-仿真視頻設計介紹51單片
    的頭像 發表于 10-22 14:12 ?292次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的LED點陣滾動顯示系統

    基于51單片機的跑馬燈/流水燈系統

    具體實現功能(1)9種LED流水燈模式通過按鍵進行切換,數碼管顯示流水燈模式。(2)通過加減按鍵可以切換每種LED流水燈的速度。仿真演示視頻:設計介紹51
    的頭像 發表于 10-22 14:12 ?323次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的跑馬燈/<b class='flag-5'>流水燈</b>系統

    基于51單片機的LED彩燈控制器設計

    循環一遍;(3)系統復位清零開關。設計介紹51單片機簡介51單片是一種低功耗、高性能CMOS-8位微控制器,擁有靈巧的8位CPU和可編程Flash,使得
    的頭像 發表于 10-22 14:10 ?261次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的LED彩燈控制器設計

    如何實現51單片機與PC的串行通信

    51單片機與PC的串行通信是一種常見的通信方式,它允許單片機通過串行接口與PC進行數據交換。這種通信方式在嵌入式系統、工業控制、物聯網等
    的頭像 發表于 10-21 11:35 ?1289次閱讀

    51單片機驅動

    電子發燒友網站提供《51單片機驅動.exe》資料免費下載
    發表于 09-20 11:46 ?5次下載

    51單片機晶振的問題總結

    電子發燒友網站提供《51單片機晶振的問題總結.doc》資料免費下載
    發表于 09-07 09:32 ?0次下載

    51單片機燒錄軟件怎么用

    準備工作 確保您已經安裝了51單片機燒錄軟件,如Keil、IAR等。 準備好51單片機開發板和燒錄器,如STC-ISP等。 確保您的計算機已經安裝了相應的驅動程序。 安裝燒錄軟件 從官
    的頭像 發表于 08-22 09:26 ?1503次閱讀

    單片機POV LED流水燈制作

    電子發燒友網站提供《單片機POV LED流水燈制作.docx》資料免費下載
    發表于 05-28 14:34 ?3次下載

    ?51單片機串口通信詳細介紹-小白必看

    51單片機串口通信是單片機與外部設備通信的重要方式,它基于串行通信的原理,以字節為單位進行數據傳輸。在51單片機中,串口通信主要依賴于兩個關
    的頭像 發表于 04-17 09:33 ?2156次閱讀
    ?<b class='flag-5'>51</b><b class='flag-5'>單片機</b>串口通信詳細介紹-小白必看

    51單片機流水燈制作

    ?流水燈是學習51單片機的一個基本項目,是我們對單片機IO口輸出認識的基本項目。當然學會了花樣流水燈
    的頭像 發表于 02-26 10:06 ?1708次閱讀
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>流水燈</b>制作
    真让百家乐游戏开户| 威尼斯人娱乐城位置| 芝加哥百家乐的玩法技巧和规则 | 百家乐全透明牌靴| 百家乐真人百家乐皇冠| 尚品棋牌注册| 真人百家乐官网大转轮| 百家乐关键词| a8娱乐城开户| 土豪百家乐官网的玩法技巧和规则| 百家乐有试玩的吗| 百家乐官网赌法| 皇冠百家乐代理网址| 云安县| 赌百家乐咋赢对方| 博尔国际| 24山风水四大局| 龙岩棋牌乐| 免费百家乐官网倍投软件| 老虎机单机游戏下载| 网上百家乐官网骗人的吗| 百家乐如何计牌| 大发888娱乐场下载ypu rd| 百家乐官网娱乐真钱游戏| 电脑版百家乐分析仪| 百家乐官网游戏分析| 百家乐评测| 百家乐官网怎么下注能赢| 网上百家乐有假的吗| 莎车县| 郑州百家乐官网的玩法技巧和规则| 悍马百家乐的玩法技巧和规则 | 百家乐视频下载地址| 捕鱼棋牌游戏| 属龙人与属虎人做生意| 皇冠信用网| 澳门百家乐网上直赌| 现金百家乐官网伟易博| 澳门百家乐博彩能做到不输吗| 甘洛县| 赙彩百家乐游戏规则|