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

QQ登錄

只需一步,快速開始

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

AVR128單片機(jī)智能風(fēng)扇設(shè)計(jì) Proteus仿真程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
一、系統(tǒng)方案
模擬的電風(fēng)扇的工作狀態(tài)有3種:自然風(fēng)、常風(fēng)及睡眠風(fēng)。使用三個(gè)按鍵S1-S3設(shè)置自然風(fēng)、常風(fēng)及睡眠風(fēng)。
再使用兩個(gè)按鍵S4和S5,S4用于定時(shí)電風(fēng)扇定時(shí)時(shí)間長(zhǎng)短的設(shè)置,每按一次S4鍵,定時(shí)時(shí)間增加10秒,最長(zhǎng)60秒,超過60秒回到0秒重新開始。按下S5鍵表示定時(shí)倒計(jì)時(shí)開始。
按下相應(yīng)的風(fēng)類鍵,使用處理器ATmega128定時(shí)/計(jì)數(shù)器的PWM功能生成不同占空比的1KHz的PWM信號(hào)來驅(qū)動(dòng)直流電動(dòng)機(jī)MOTOR-DC(模擬電風(fēng)扇電機(jī))!白匀伙L(fēng)”:生成占空比為30%的PWM信號(hào),“睡眠風(fēng)”: 生成占空比為20%的PWM信號(hào),“常風(fēng)”:生成占空比為70%的PWM信號(hào).
使用8LED數(shù)碼管或液晶顯示屏顯示電風(fēng)扇的工作狀態(tài)、動(dòng)態(tài)顯示使用電風(fēng)扇的定時(shí)功能時(shí)的剩余定時(shí)時(shí)間。使用8LED數(shù)碼管和液晶顯示屏LM041L時(shí),“自然風(fēng)”顯示“1”、“常風(fēng)”顯示“2”及“睡眠風(fēng)”顯示“3”,使用12864液晶顯示屏LGM12641BS1R LM3228時(shí)使用中文顯示。
二、硬件設(shè)計(jì)
原理圖如下:

三、單片機(jī)軟件設(shè)計(jì)
1、首先是系統(tǒng)初始化
  1.          DDRA = 0xFF;
  2.    PORTA= 0xFF;
  3. DDRC = 0xFF;
  4.    PORTC= 0xFF;
  5.    DDRF = 0x00;
  6.    PORTF= 0xFF;

  7.    DDRE  &= 0xFC;
  8.    PORTE  = 0x03;

  9.    //init_devices();
  10.    timer0_pwm();    // 初始化PWM
  11.    timer1_init();   // 初始化定時(shí)器
  12.   LCD_init();
  13.   // LCD12864_init(); // 初始化LCD
  14.    OCR0 = 0X46;      // OCR0/0XFF=OCR0/256,占空比可調(diào)
  15. //  TCCR0=0X0A;     // PWM關(guān)閉
  16. 2、液晶顯示程序
  17. void LCD_write_com(unsigned char com)
  18. {        
  19.         RS_CLR;
  20.         RW_CLR;
  21.         EN_SET;
  22.         Data_IO = com;
  23.         delay_nms(5);
  24.         EN_CLR;
  25. }
  26. //***********************************************************************
  27. //        顯示屏數(shù)據(jù)寫入函數(shù)
  28. //***********************************************************************

  29. void LCD_write_data(unsigned char data)
  30. {
  31.         RS_SET;
  32.         RW_CLR;
  33.         EN_SET;
  34.         Data_IO = data;
  35.         delay_nms(5);
  36.         EN_CLR;
  37. }
  38. 3、按鍵程序
  39.     if((PINF&0x01)==0x00)       //  自然風(fēng)按下
  40.            {
  41.                Mode = 1;
  42.                    OCR0 = 0X46;            //  占空比 30%
  43.            }
  44.            if((PINF&0x02)==0x00)       //  常風(fēng)按下
  45.            {
  46.                Mode = 3;
  47.                    OCR0 = 0X26;            //  占空比 20%
  48.            }
  49.            if((PINF&0x04)==0x00)       //  睡眠風(fēng)按下
  50.            {
  51.                Mode = 2;
  52.                    OCR0 = 0XA6;            //  占空比 70%
  53.            }


  54.        if((PINF&0x08)==0x00)       //  設(shè)置當(dāng)前時(shí)間
  55.            {
  56.               delay(10);   
  57.                   if((PINF&0x08)==0x00)    //  設(shè)置當(dāng)前時(shí)間
  58.               {
  59.                     Timer = Timer+10;
  60.                     while(!(PINF&0x08));   //  按鍵釋放
  61.                         if(Timer > 60)
  62.                         {
  63.                            Timer = 0;
  64.                         }
  65.                   }
  66.            }
  67. 4、核心算法程序
  68.    #pragma interrupt_handler timer1:15/*定時(shí)器溢出中斷向量標(biāo)號(hào)*/

  69. void timer1(void)
  70. {
  71.    static u16 Tmr = 0;
  72.    TCNT1H=(65536-1000)/256;
  73.    TCNT1L=(65536-1000)%256; // 定時(shí)4ms


  74.    if(++Tmr >= 250)
  75.    {
  76.         Tmr  = 0;
  77.                 if(Start == 1) // 啟動(dòng)標(biāo)志位啟動(dòng)
  78.                 {
  79.                   if(--Timer > 60)
  80.                   {
  81.                        Timer = 0;
  82.                            Start = 0;
  83.                   }
  84.                 }
  85.    }


  86. }
復(fù)制代碼

四、proteus仿真設(shè)計(jì)
Proteus軟件是一款應(yīng)用比較廣泛的工具,它可以在沒有硬件平臺(tái)的基礎(chǔ)上通過自身的軟件仿真出硬件平臺(tái)的運(yùn)行情況,這樣就可以通過軟件仿真來驗(yàn)證我們?cè)O(shè)計(jì)的方案有沒有問題,如果有問題,可以重新選擇器件,連接器件,直到達(dá)到我們?cè)O(shè)定的目的,避免我們搭建實(shí)物的時(shí)候,如果當(dāng)初選擇的方案有問題,我們器件都已經(jīng)焊接好了,再去卸載下去,再去焊接新的方案的器件,測(cè)試,這樣會(huì)浪費(fèi)人力和物力,也給開發(fā)者帶來一定困惑,Proteus仿真軟件就很好的解決這個(gè)問題,我們?cè)谠O(shè)計(jì)之初,就使用該軟件進(jìn)行模擬仿真,測(cè)試,選擇滿足我們?cè)O(shè)計(jì)的最優(yōu)方案。最后根據(jù)測(cè)試沒問題的仿真圖紙,焊接實(shí)物,調(diào)試,最終完成本設(shè)計(jì)的作品。

評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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