久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1405|回復: 0
收起左側

基于51單片機藍牙智能控制風扇-Proteus仿真源程序

[復制鏈接]
ID:190577 發表于 2023-11-9 15:46 | 顯示全部樓層 |閱讀模式
一、系統方案
1、本設計采用51單片機作為主控器。
2、DS18B20采集溫度值送到液晶1602顯示。
3、按鍵設置上下限,自動模式,低于下限,風扇不啟動,下限到上限之間,風扇1檔,大于上限風扇2檔。
4、手動模式,按鍵控制檔位切換。
5、藍牙模式,手機APP控制檔位切換。
1.jpg

二、硬件設計
原理圖如下:
2.jpg
三、單片機軟件設計
1、首先是系統初始化

void lcd_init()//***液晶初始化函數****
{
        uchar a;
        write_1602com(0x38);//設置液晶工作模式,意思:16*2行顯示,5*7點陣,8位數據
        write_1602com(0x0c);//開顯示不顯示光標
        write_1602com(0x06);//整屏不移動,光標自動右移
        write_1602com(0x01);//清顯示

        write_1602com(0x80);//日歷顯示固定符號從第一行第1個位置之后開始顯示
        for(a=0;a<16;a++)
        {
                write_1602dat(tab1[a]);//向液晶屏寫日歷顯示的固定符號部分
                delay(3);
        }
        write_1602com(0x80+0x40);//時間顯示固定符號寫入位置,從第2個位置后開始顯示
        for(a=0;a<16;a++)
        {
                write_1602dat(tab2[a]);//寫顯示時間固定符號,兩個冒號
                delay(3);
        }

}
2、液晶顯示程序
void write_1602com(uchar com)//****液晶寫入指令函數****
{
        RS=0;//數據/指令選擇置為指令
        rw=0; //讀寫選擇置為寫
        LCD1602=com;//送入數據
        delay(1);
        EN=1;//拉高使能端,為制造有效的下降沿做準備
        delay(1);
        EN=0;//en由高變低,產生下降沿,液晶執行命令
}


void write_1602dat(uchar dat)//***液晶寫入數據函數****
{
        RS=1;//數據/指令選擇置為數據
        rw=0; //讀寫選擇置為寫
        LCD1602=dat;//送入數據
        delay(1);
        EN=1; //en置高電平,為制造下降沿做準備
        delay(1);
        EN=0; //en由高變低,產生下降沿,液晶執行命令
}

3、按鍵程序
void KEY()
{
                        //功能鍵
        if(SET==0)
        {

                delay(10);
                if(SET==0)
                {
                        Mode++;
                        if(Mode==3)
                        Mode=0;

                }
                while(SET==0)
                {
                        if(Mode==0)
                                {
                                //        write_1602com(0x80+0x40+6);
                                        write_1602com(0x0c);
                                }        
                        else if(Mode==1)
                                {
                                        write_1602com(0x80+0x40+4);
                                        write_1602com(0x0f);
                                }        
                        else
                                {
                                        write_1602com(0x80+0x40+13);
                                        write_1602com(0x0f);
                                }                                                        
                }
        }
        //增加
        if(ADD==0&&Mode==1)
        {

                delay(10);
                if(ADD==0)        
                {
                        TH++;
                        if(TH>=99)        
                        TH=99;
                        write_1602com(0x80+0x40+3);
                        write_1602dat(TH/10+0x30);
                        write_1602dat(TH%10+0x30);
                        write_1602com(0x80+0x40+4);        

                }
                while(ADD==0);

        }
        //減少
        if(DEC==0&&Mode==1)
        {

                delay(10);
                if(DEC==0)
                {
                        TH--;
                        if(TH==TL)        
                        TH=TL+1;
                        write_1602com(0x80+0x40+3);
                        write_1602dat(TH/10+0x30);
                        write_1602dat(TH%10+0x30);
                        write_1602com(0x80+0x40+4);        

                }
                while(DEC==0);
        }
        if(ADD==0&&Mode==2)
        {

                delay(10);
                if(ADD==0)        
                {
                        TL++;
                        if(TL==TH)        
                        TL=TH-1;
                        write_1602com(0x80+0x40+12);
                        write_1602dat(TL/10+0x30);
                        write_1602dat(TL%10+0x30);
                        write_1602com(0x80+0x40+13);        

                }
                while(ADD==0);

        }
        //減少
        if(DEC==0&&Mode==2)
        {

                delay(10);
                if(DEC==0)
                {
                        TL--;
                        if(TL<=0)        
                        TL=0;
                        write_1602com(0x80+0x40+12);
                        write_1602dat(TL/10+0x30);
                        write_1602dat(TL%10+0x30);
                        write_1602com(0x80+0x40+13);        

                }
                while(DEC==0);               
        }
        //增加
        if(key1==0)
        {

                delay(10);
                if(key1==0)        
                {
                        //led=!led;
                        number++;
                        if(number>2) number=0;
                        dangwei2 = 0;
                        PWM2=1;
                        TR0=0;
                        pwm1(0); //控制PWM輸出,進而控制電機的速度
                }
                while(key1==0);

        }
        if(key2==0)
        {

                delay(10);
                if(key2==0)        
                {
                        s1num++;
                        if(s1num>2) s1num=0;
                }
                while(key2==0);

        }


}
4、核心算法程序
        if(number==0)
                        {
                                led1=1;led2=1;
                        }
                 if(number==1)
                        {
                                led1=0;led2=1;
                        }
                        if(number==2)
                        {
                                led1=1;led2=0;
                        }
                  if(number==1)
                        {
                                 if(receiveData=='1')
                                {
                                     dangwei2 = 1;

                           PWM2=0;
                           TR0=1;
                           pwm1(50); //控制PWM輸出,進而控制電機的速度
                                }
                         if(receiveData=='2')
                                {
                                    dangwei2 = 2;

                            PWM2=0;
                           TR0=1;
                          pwm1(100); //控制PWM輸出,進而控制電機的速度
                                }
                                if(receiveData=='0')
                                {
                                    dangwei2 = 0;

                            PWM2=1;
                           TR0=0;
                          pwm1(0); //控制PWM輸出,進而控制電機的速度
                                }
                        }        
                 if(number==2)
                        {
                                 if(s1num==1)
                                {
                                     dangwei2 = 1;

                           PWM2=0;
                           TR0=1;
                           pwm1(50); //控制PWM輸出,進而控制電機的速度
                                }
                          if(s1num==2)
                                {
                                    dangwei2 = 2;

                            PWM2=0;
                           TR0=1;
                          pwm1(100); //控制PWM輸出,進而控制電機的速度
                                }
                                 if(s1num==0)
                                {
                                    dangwei2 = 0;

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


評分

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

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美综合精品久久成人 | 成人高清在线 | 日韩精品中文字幕在线 | 青青久久av北条麻妃海外网 | 青青草免费在线视频 | 欧美另类视频在线 | 欧美日韩精品综合 | 欧美在线日韩 | 精品一区二区三区视频在线观看 | www.亚洲视频.com| 国产精品日韩 | 99pao成人国产永久免费视频 | 精品成人在线视频 | 91麻豆精品国产91久久久久久久久 | 天天爽夜夜爽精品视频婷婷 | 成人天堂 | 91精品一区二区三区久久久久久 | japanhdxxxx裸体| 国产精品揄拍一区二区 | 成人在线视频免费观看 | 国产精品小视频在线观看 | 免费一区二区三区 | 99re在线视频 | 成人亚洲片 | 久久久成人网 | 国产精品一区二区三区四区 | 亚洲日本激情 | 国产精品久久久久一区二区三区 | 成人精品一区二区三区中文字幕 | 国产成在线观看免费视频 | 国产精品成人在线 | 黄色一级视频 | 日韩精品一二三 | 韩日一区二区三区 | 欧美一级电影免费 | 日本二区在线观看 | 国产精品久久精品 | 亚洲精选久久 | 国产中文| 国产在线观看一区二区三区 | 九九九精品视频 |