找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

AVR128單片機智能風扇設(shè)計 Proteus仿真程序

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

三、單片機軟件設(shè)計
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();   // 初始化定時器
  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)       //  自然風按下
  40.            {
  41.                Mode = 1;
  42.                    OCR0 = 0X46;            //  占空比 30%
  43.            }
  44.            if((PINF&0x02)==0x00)       //  常風按下
  45.            {
  46.                Mode = 3;
  47.                    OCR0 = 0X26;            //  占空比 20%
  48.            }
  49.            if((PINF&0x04)==0x00)       //  睡眠風按下
  50.            {
  51.                Mode = 2;
  52.                    OCR0 = 0XA6;            //  占空比 70%
  53.            }


  54.        if((PINF&0x08)==0x00)       //  設(shè)置當前時間
  55.            {
  56.               delay(10);   
  57.                   if((PINF&0x08)==0x00)    //  設(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/*定時器溢出中斷向量標號*/

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


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


  86. }
復(fù)制代碼

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

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

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

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