找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 23510|回復(fù): 23
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)節(jié)日彩燈控制器的設(shè)計(jì)Proteus仿真+代碼

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:430873 發(fā)表于 2018-12-17 14:31 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

節(jié)日彩燈控制器的設(shè)計(jì)
一、設(shè)計(jì)要求
以單片機(jī)為核心,設(shè)計(jì)一個(gè)節(jié)日彩燈控制器:
  • K1開始,按此鍵則燈開始流動(dòng)(由上而下)。
  • K2停止,按此鍵則停止流動(dòng),所有燈為暗。
  • K3下,按此鍵則燈由下向上流動(dòng)。
  • K4交替閃爍,按此鍵則奇數(shù)序號(hào)燈與偶數(shù)序號(hào)燈交替閃爍。
二、方案論證:
通過查閱大量相關(guān)技術(shù)資料,并結(jié)合自己的實(shí)際知識(shí),我提出課兩種技術(shù)方案來實(shí)現(xiàn)該公能。下面我將首先對(duì)這兩種方案的組成框圖和實(shí)現(xiàn)原理分別進(jìn)行說明,并分析比較它們的特點(diǎn),然后闡述我最終選擇方案的原因。
1 方案比較
彩燈控制器課分為兩種方案實(shí)現(xiàn)。一種是利用數(shù)字邏輯電路裝置控制,另一種是采用單片機(jī)控制。
1.1 方案一
  根據(jù)任務(wù)要求介紹的彩燈控制電路的基本組成,可以確定彩燈控制器應(yīng)由振蕩器、計(jì)數(shù)/時(shí)序分配電路、移位寄存器和彩燈顯示五部分組成。其框圖如圖所示。
1.2 方案二
本方案主要是通過對(duì)基于單片機(jī)的多控制、多閃爍方式的LED彩燈循環(huán)系統(tǒng)的設(shè)計(jì),來達(dá)到本設(shè)計(jì)的要求、其硬件構(gòu)成框圖如圖所示,以單片機(jī)為核心控制,由單片機(jī)最小系統(tǒng)(時(shí)鐘電路、復(fù)位電路、電源)、按鍵控制電路、LED發(fā)光二極管和5V直流電源組成。
2 方案論證
如果采用方案一,利用數(shù)字邏輯電路裝置控制,其電路不是很復(fù)雜,制作相對(duì)較容易,成本也相對(duì)較低,但可調(diào)性差,亮燈模式少而且樣式單調(diào),達(dá)不到設(shè)計(jì)任務(wù)要求或?qū)崿F(xiàn)困難。而采用方案二,以單片機(jī)控制其優(yōu)點(diǎn)是電路集成度高,工作原理簡單,清晰明了,自定義編程,控制的圖案花樣多,移植性好等。
3 方案選擇
綜上,顯然方案二各方面優(yōu)于方案一,以及為了體現(xiàn)專業(yè)優(yōu)勢,本次設(shè)計(jì)采用方案二。
三、理論設(shè)計(jì):
1、主程序設(shè)計(jì)
程序啟動(dòng)時(shí)跳轉(zhuǎn)到鍵盤判斷模塊程序中,此程序里面包含K1—K4的按鍵情況判斷,循環(huán)檢測直到有按鍵按下的時(shí)候,程序轉(zhuǎn)去相對(duì)應(yīng)的按鍵的彩燈顯示的模塊。
2、鍵盤掃描程序
四、電路仿真和仿真結(jié)果分析
1 仿真電路
1.1 時(shí)鐘電路和復(fù)位電路
1.2 按鍵控制電路
1.3 LED顯示電路
2 仿真結(jié)果分析:
此次系統(tǒng)設(shè)計(jì)結(jié)果較好,經(jīng)Proteus軟件仿真系統(tǒng)的調(diào)試,可檢測出仿真電路正常;對(duì)應(yīng)按鍵按下,彩燈出現(xiàn)不同花型,實(shí)現(xiàn)了多控制、多閃爍的LED彩燈循環(huán);經(jīng)以上仿真測試證實(shí),本設(shè)計(jì)能實(shí)現(xiàn)設(shè)計(jì)系統(tǒng)要求的預(yù)期功能。
五、心得體會(huì)
本次作業(yè)設(shè)計(jì)以C51單片機(jī)為核心,控制電路、LED顯示電路、以及單片機(jī)最小系統(tǒng)等模塊組成的核心主控制電路,實(shí)現(xiàn)了由單片機(jī)對(duì)LED燈的控制。
通過對(duì)軟件的仿真調(diào)試,對(duì)彩燈控制器的運(yùn)行成果滿意,實(shí)現(xiàn)了題目的要求,同時(shí)此設(shè)計(jì)具有電路簡單、易操作、成本小、體積小、耗能低等優(yōu)點(diǎn)。
但是在設(shè)計(jì)中也出現(xiàn)了一些問題,在程序編寫過程中發(fā)現(xiàn)自己有的知識(shí)模塊模糊,導(dǎo)致實(shí)驗(yàn)速度減緩,通過c程序的編寫實(shí)驗(yàn)就發(fā)現(xiàn)自己很多地方的不足,在查閱資料和同學(xué)的幫助下才解決了困難,這都是以后要多學(xué)習(xí)的地方。

單片機(jī)源程序如下:
  1. #include <reg52.h>

  2. #define uchar unsigned char          //宏定義
  3. #define uint unsigned int

  4. sbit k1=P1^2;                  //位定義
  5. sbit k2=P1^3;
  6. sbit k3=P1^4;
  7. sbit k4=P1^5;

  8. uchar a=0;                //定義所需變量
  9. uchar b;

  10. uchar code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};          //從上到下流水?dāng)?shù)組
  11. uchar code table2[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};          //從下到上流水?dāng)?shù)組

  12. void delay_ms(uint xms)                                //延時(shí)函數(shù)
  13. {
  14.         uint i,j;
  15.         for(i=xms;i>0;i--)
  16.                 for(j=110;j>0;j--);
  17. }

  18. void key_scan(uchar b)                                 //按鍵掃描
  19. {
  20.                 if(b==1)                                                        //若K1按下
  21.                 {
  22.                         while(k2==1&&k3==1&&k4==1)
  23.                         {
  24.                                 for(a=0;a<8;a++)                   //執(zhí)行從上到下流水操作
  25.                                 {
  26.                                         P0=table1[a];
  27.                                         delay_ms(100);
  28.                                 }
  29.                                 a=0;
  30.                     }               
  31.                 }

  32.                 if(b==2)                                                        //若K2按下
  33.                 {
  34.                         while(k1==1&&k3==1&&k4==1)
  35.                         {                                                                //P0全部輸出高電平,關(guān)閉LED
  36.                                 P0=0xff;
  37.                         }
  38.                 }

  39.                 if(b==3)                                                        //若K3按下
  40.                 {
  41.                         while(k1==1&&k2==1&&k4==1)
  42.                         {
  43.                                 for(a=0;a<8;a++)                        //執(zhí)行從下到上流水操作
  44.                                 {
  45.                                         P0=table2[a];
  46.                                         delay_ms(100);
  47.                                 }
  48.                                 a=0;
  49.                         }
  50.                 }

  51.                 if(b==4)                                                        //若K4按下
  52.                 {
  53.                         while(k1==1&&k2==1&&k3==1)
  54.                         {
  55.                                 P0=0xaa;                                        //奇偶位分別點(diǎn)亮
  56.                                 delay_ms(100);
  57.                                 P0=0x55;
  58.                                 delay_ms(100);
  59.                         }
  60.                 }       
  61. }

  62. void main(void)                                                                //主函數(shù)
  63. {

  64.         TMOD=0X01;                                                                //定時(shí)器中斷初始化
  65.         TH0=(65536-1000)/256;
  66.         TL0=(65536-1000)%256;
  67.         EA=1;
  68.         ET0=1;
  69.         TR0=1;

  70.         while(1);
  71.        
  72. }

  73. void T0_time() interrupt 1                                        //中斷服務(wù)函數(shù)
  74. {
  75.         TH0=(65536-1000)/256;
  76.         TL0=(65536-1000)%256;
  77.         if(k1==0)b=1;
  78.         if(k2==0)b=2;
  79.         if(k3==0)b=3;
  80.         if(k4==0)b=4;
  81.         key_scan(b);
  82. }
復(fù)制代碼

所有資料51hei提供下載:
2016111301節(jié)日彩燈控制器的設(shè)計(jì).zip (138.16 KB, 下載次數(shù): 403)



評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:450877 發(fā)表于 2018-12-20 17:05 | 只看該作者
好的東西,謝謝分享
回復(fù)

使用道具 舉報(bào)

板凳
ID:430813 發(fā)表于 2018-12-20 18:43 | 只看該作者
是好東西,值得收獲。謝謝大佬
回復(fù)

使用道具 舉報(bào)

地板
ID:457719 發(fā)表于 2018-12-28 22:59 | 只看該作者
感謝大佬。。。。!
回復(fù)

使用道具 舉報(bào)

5#
ID:496454 發(fā)表于 2019-3-22 22:46 | 只看該作者
好的東西,謝謝分享
回復(fù)

使用道具 舉報(bào)

6#
ID:575614 發(fā)表于 2019-7-1 14:08 | 只看該作者
程序出錯(cuò)
回復(fù)

使用道具 舉報(bào)

7#
ID:617887 發(fā)表于 2019-9-29 10:36 | 只看該作者
好的東西,謝謝分享
回復(fù)

使用道具 舉報(bào)

8#
ID:620886 發(fā)表于 2019-10-9 09:15 | 只看該作者
好東西,謝謝分享
回復(fù)

使用道具 舉報(bào)

9#
ID:3742 發(fā)表于 2019-10-12 10:34 來自觸屏版 | 只看該作者
程序出錯(cuò)了兄弟
回復(fù)

使用道具 舉報(bào)

10#
ID:643271 發(fā)表于 2019-11-16 18:08 | 只看該作者
好東西,謝謝分享
回復(fù)

使用道具 舉報(bào)

11#
ID:714223 發(fā)表于 2020-3-23 21:29 | 只看該作者
請(qǐng)問樓主,為什么要用到定時(shí)器的中斷呢?我是個(gè)新手,只做過簡單的流水燈,能不能給我簡單講一講原理。?十分感謝
回復(fù)

使用道具 舉報(bào)

12#
ID:737634 發(fā)表于 2020-4-25 12:51 | 只看該作者
有開關(guān)控制的嗎
回復(fù)

使用道具 舉報(bào)

13#
ID:766523 發(fā)表于 2020-6-1 14:39 | 只看該作者
樓主,請(qǐng)問為什么我復(fù)制你的keil程序后,在proteus里仿真,點(diǎn)開關(guān)是完全沒有反應(yīng)的
回復(fù)

使用道具 舉報(bào)

14#
ID:774379 發(fā)表于 2020-6-9 20:36 | 只看該作者
新爺v 發(fā)表于 2020-6-1 14:39
樓主,請(qǐng)問為什么我復(fù)制你的keil程序后,在proteus里仿真,點(diǎn)開關(guān)是完全沒有反應(yīng)的

代碼打錯(cuò)了應(yīng)該是
回復(fù)

使用道具 舉報(bào)

15#
ID:782819 發(fā)表于 2020-6-18 09:50 | 只看該作者
復(fù)制的代碼 但是proteus上按開關(guān)led沒有反應(yīng) 555-
回復(fù)

使用道具 舉報(bào)

16#
ID:782819 發(fā)表于 2020-6-18 09:58 | 只看該作者
感謝大佬!  剛才圖畫錯(cuò)了!
回復(fù)

使用道具 舉報(bào)

17#
ID:785615 發(fā)表于 2020-6-21 13:59 | 只看該作者
這學(xué)期的單片機(jī)就做過這個(gè),但是感覺這個(gè)更好一點(diǎn)
回復(fù)

使用道具 舉報(bào)

18#
ID:823470 發(fā)表于 2020-9-27 12:41 來自觸屏版 | 只看該作者
現(xiàn)在改好了嗎
回復(fù)

使用道具 舉報(bào)

19#
ID:448260 發(fā)表于 2020-10-25 09:57 | 只看該作者
感謝,幫助很大
回復(fù)

使用道具 舉報(bào)

20#
ID:857044 發(fā)表于 2020-12-8 20:14 | 只看該作者
他這個(gè)為什么是reg52.h
回復(fù)

使用道具 舉報(bào)

21#
ID:939883 發(fā)表于 2021-6-18 11:58 | 只看該作者
真的是好,感謝
回復(fù)

使用道具 舉報(bào)

22#
ID:941161 發(fā)表于 2021-6-21 22:59 | 只看該作者
很詳細(xì),感謝大佬的資料分享,
回復(fù)

使用道具 舉報(bào)

23#
ID:1086224 發(fā)表于 2023-6-27 19:02 | 只看該作者
是好東西,值得收獲。謝謝大佬
回復(fù)

使用道具 舉報(bào)

24#
ID:1132403 發(fā)表于 2024-9-22 22:05 | 只看該作者
好的東西,謝謝分享
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表