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

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

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

AVR128智能風(fēng)扇設(shè)計(jì)-proteus-程序

bbxyliyang ? 來源:bbxyliyang ? 作者:bbxyliyang ? 2023-08-28 09:06 ? 次閱讀


一、系統(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í)間長短的設(shè)置,每按一次S4鍵,定時(shí)時(shí)間增加10秒,最長60秒,超過60秒回到0秒重新開始。按下S5鍵表示定時(shí)倒計(jì)時(shí)開始。
按下相應(yīng)的風(fēng)類鍵,使用處理器ATmega128定時(shí)/計(jì)數(shù)器的PWM功能生成不同占空比的1KHz的PWM信號來驅(qū)動直流電動機(jī)MOTOR-DC(模擬電風(fēng)扇電機(jī))。“自然風(fēng)”:生成占空比為30%的PWM信號,“睡眠風(fēng)”: 生成占空比為20%的PWM信號,“常風(fēng)”:生成占空比為70%的PWM信號.
使用8LED數(shù)碼管或液晶顯示屏顯示電風(fēng)扇的工作狀態(tài)、動態(tài)顯示使用電風(fēng)扇的定時(shí)功能時(shí)的剩余定時(shí)時(shí)間。使用8LED數(shù)碼管和液晶顯示屏LM041L時(shí),“自然風(fēng)”顯示“1”、“常風(fēng)”顯示“2”及“睡眠風(fēng)”顯示“3”,使用12864液晶顯示屏LGM12641BS1RLM3228時(shí)使用中文顯示。

wKgZomTpqWeADFCbAAAUKcKs9oo250.png

二、硬件設(shè)計(jì)
原理圖如下:

wKgaomTpqW6AWyKUAAEUn22jJ-I076.png


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

DDRE &= 0xFC;
PORTE = 0x03;

//init_devices();
timer0_pwm(); // 初始化PWM
timer1_init(); // 初始化定時(shí)器
LCD_init();
// LCD12864_init(); // 初始化LCD
OCR0 = 0X46; // OCR0/0XFF=OCR0/256,占空比可調(diào)
// TCCR0=0X0A; // PWM關(guān)閉
2、液晶顯示程序
void LCD_write_com(unsigned char com)
{
RS_CLR;
RW_CLR;
EN_SET;
Data_IO = com;
delay_nms(5);
EN_CLR;
}
//***********************************************************************
// 顯示屏數(shù)據(jù)寫入函數(shù)
//***********************************************************************

void LCD_write_data(unsigned char data)
{
RS_SET;
RW_CLR;
EN_SET;
Data_IO = data;
delay_nms(5);
EN_CLR;
}
3、按鍵程序
if((PINF&0x01)==0x00) // 自然風(fēng)按下
{
Mode = 1;
OCR0 = 0X46; // 占空比 30%
}
if((PINF&0x02)==0x00) // 常風(fēng)按下
{
Mode = 3;
OCR0 = 0X26; // 占空比 20%
}
if((PINF&0x04)==0x00) // 睡眠風(fēng)按下
{
Mode = 2;
OCR0 = 0XA6; // 占空比 70%
}


if((PINF&0x08)==0x00) // 設(shè)置當(dāng)前時(shí)間
{
delay(10);
if((PINF&0x08)==0x00) // 設(shè)置當(dāng)前時(shí)間
{
Timer = Timer+10;
while(!(PINF&0x08)); // 按鍵釋放
if(Timer > 60)
{
Timer = 0;
}
}
}
4、核心算法程序
#pragma interrupt_handler timer1:15/*定時(shí)器溢出中斷向量標(biāo)號*/

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


if(++Tmr >= 250)
{
Tmr = 0;
if(Start == 1) // 啟動標(biāo)志位啟動
{
if(--Timer > 60)
{
Timer = 0;
Start = 0;
}
}
}

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

wKgZomTpqXiAHYtOAAE-HQJ8IgA085.png

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19286

    瀏覽量

    229837
  • 數(shù)碼管
    +關(guān)注

    關(guān)注

    32

    文章

    1882

    瀏覽量

    91120
  • 智能風(fēng)扇
    +關(guān)注

    關(guān)注

    1

    文章

    46

    瀏覽量

    18303
  • AVR128
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    5307
收藏 人收藏

    評論

    相關(guān)推薦

    AVR128實(shí)驗(yàn)板下載不了程序的原因

    AVR128實(shí)驗(yàn)板下載不了程序的原因。PS:51單片機(jī)實(shí)驗(yàn)板插在我電腦的USB就下載得了程序。不知道什么原因。
    發(fā)表于 06-16 10:46

    avr128

    我現(xiàn)在遇到關(guān)于avr128系列的困難,能幫解答一下如何控制一路pwm波嗎
    發(fā)表于 01-12 12:13

    avr128

    avr128如何控制一個(gè)舵機(jī)
    發(fā)表于 01-12 13:27

    AVR128的數(shù)碼相框的設(shè)計(jì)!?。?!急?。?!

    基于AVR128的數(shù)碼相框的設(shè)計(jì)!用GCCAVR的,bmp圖像顯示,JTAG,TFT液晶顯示?。?!哪位大神幫幫忙。。感激不盡?。?/div>
    發(fā)表于 05-14 15:23

    avr c程序

    avr128的各個(gè)應(yīng)用模塊的c語言程序最好用ICCV7(跪求adc,dac,rs232,輸出波形等模塊{:23:})
    發(fā)表于 08-05 14:55

    怎么用AVR128單片機(jī)(C語言)控制可編程數(shù)字電位器AD5122,求...

    怎么用AVR128單片機(jī)(C語言)控制可編程數(shù)字電位器AD5122,求程序!求大神!
    發(fā)表于 05-10 14:39

    史上最全的AVR128例程

    自己學(xué)avr單片機(jī)已經(jīng)有相當(dāng)一段時(shí)間了,一開始用的是atmega128,覺得不是很好用。于是自己去買了一塊16L的芯片,覺得還行。一開始用的是ICC AVR,應(yīng)為它用起來比較簡單,不像winavr
    發(fā)表于 06-23 16:57

    ucosii在AVR128芯片移植中出現(xiàn)了什么問題?怎樣去解決?

    怎樣把ucosii移植到一塊AVR128芯片上去?ucosii在AVR128芯片移植中出現(xiàn)了什么問題?怎樣去解決?
    發(fā)表于 07-07 07:09

    如何把ucosii移植到一塊AVR128芯片上?

    如何把ucosii移植到一塊AVR128芯片上?
    發(fā)表于 10-29 06:01

    USB/RS232_AVR_JTAG仿真器

    關(guān)于AVR128單片機(jī)的JTAG接口的使用方法
    發(fā)表于 02-25 10:49 ?33次下載

    基于AVR+PROTEUS仿真_單片機(jī)C語言程序設(shè)計(jì)實(shí)例100例

    本書基于AVR Studio+WinAVR(GCC)組合環(huán)境和PROTEUS硬件仿真平臺,提供了100個(gè)AVR單片機(jī)C程序設(shè)計(jì)案例。
    發(fā)表于 03-22 18:02 ?32次下載

    單片機(jī)C語言程序設(shè)計(jì)實(shí)訓(xùn)100例--基于AVR+PROTEUS仿

    本書基于AVR Studio+WinAVR(GCC)組合環(huán)境和PROTEUS硬件仿真平臺,提供了100個(gè)AVR單片機(jī)C程序設(shè)計(jì)案例。
    發(fā)表于 03-22 17:00 ?56次下載

    單片機(jī)C語言程序設(shè)計(jì)實(shí)訓(xùn)100例--基于AVR PROTEUS仿真

    單片機(jī)C語言程序設(shè)計(jì)實(shí)訓(xùn)100例--基于AVR PROTEUS仿真
    發(fā)表于 01-04 22:01 ?44次下載

    一種智能頻率計(jì)設(shè)計(jì)與制作(AVR)proteus仿真+程序資料

    一種智能頻率計(jì)設(shè)計(jì)與制作(AVR)proteus仿真+程序資料(at89s52單片機(jī))-一種智能頻率計(jì)的設(shè)計(jì)與制作(
    發(fā)表于 07-22 15:37 ?21次下載
    一種<b class='flag-5'>智能</b>頻率計(jì)設(shè)計(jì)與制作(<b class='flag-5'>AVR</b>)<b class='flag-5'>proteus</b>仿真+<b class='flag-5'>程序</b>資料

    基于AVR128單片機(jī)搶答器仿真設(shè)計(jì)

    基于AVR128單片機(jī)搶答器仿真設(shè)計(jì)
    的頭像 發(fā)表于 08-29 15:58 ?722次閱讀
    基于<b class='flag-5'>AVR128</b>單片機(jī)搶答器仿真設(shè)計(jì)