一、系統(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í)使用中文顯示。
二、硬件設(shè)計(jì)
原理圖如下:
三、單片機(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ì)的作品。
-
處理器
+關(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
發(fā)布評論請先 登錄
相關(guān)推薦
評論