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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1850|回復: 4
打印 上一主題 下一主題
收起左側

單片機智能窗簾程序在proteus中運行后,顯示屏的第二行最前面的4什么意思?

[復制鏈接]
跳轉到指定樓層
樓主
ID:846076 發表于 2020-11-19 21:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
求大神幫忙指導下.不懂問他,結果被罵了
這個程序在proteus中運行后,顯示屏的第二行最前面的4什么意思啊?有什么作用嗎?是一開始就設置好開關窗簾的時間和光強嗎?我按照程序的手動和自動設置了,怎么沒有反應?(在手動開關窗簾的那部分代碼,是怎么體現開關的?步進電機沒反應啊,是需要按哪個鍵嗎?自動模式下的光強怎么設置啊?不是預設值4嗎?在怎么設置光強?)【手動開關窗簾、智能窗簾處理函數】這的程序沒看懂,求指教 (附件和圖片怎么發不了?)另,這個程序是在proteus中仿真的,沒有實物

單片機源程序如下:
#include <reg52.h>     
#define uchar unsigned char
#define uint  unsigned int     
bit flag_200ms ;
sbit beep = P1^7;     //蜂鳴器IO口定義
sbit LED=P2^7;        //燈光模塊
sbit yw=P2^6;         //煙霧模塊
bit flag_relay_en;   
uchar flag_kaig_moshi=0;//開關模式
bit flag_zd_sd;          //自動 手動 模式

bit flag_lj_en;         //按鍵連加使能
bit flag_lj_3_en;     //按鍵連3次連加后使能 加的數就越大了
uchar key_time,flag_value;      //用做連加的中間變量
bit key_500ms  ;
uchar menu_shudu = 20;  //用來控制連加的速度
uchar value,i;

uchar k_shi=1,k_fen=2;    //開窗簾時間
uchar g_shi=3,g_fen=4;            //關窗簾時間

uint t_high;                  //高溫報警值

sbit DO=P3^7;        //DO定義為P1口的第4位腳,連接ADC0832DO腳
sbit SCL=P3^6;        //SCL定義為P1口的第3位腳,連接ADC0832SCL腳
sbit CS=P3^5;        //CS定義為P1口的第4位腳,連接ADC0832CS腳
uchar guanxian,guanxian_set = 4;     //光線
void write_eepom();


#include "eepom52.h"
#include "key.h"
#include "ds1302.h"
#include "lcd1602.h"
#include "18b20_2lu.h"
#include "bujindianji.h"

sbit key_jia = P3^1;   //加
sbit key_jie = P3^2;   //減


/*************寫單片機內部EEPOM*************/
void write_eepom()
{   
    SectorErase(0x2000);
    byte_write(0x2000,flag_zd_sd);
    byte_write(0x2001,k_shi%256);
    byte_write(0x2002,k_fen%256);
    byte_write(0x2003,g_shi%256);
    byte_write(0x2004,g_fen%256);
    byte_write(0x2005,t_high%256);
    byte_write(0x2009,guanxian_set%256);   
    byte_write(0x2010,bjdj_value%256);   
    byte_write(0x2050,a_a);   
}

/*************讀單片機內部EEPOM*************/
void read_eepom()
{
    flag_zd_sd = byte_read(0x2000);   
    k_shi  = byte_read(0x2001);   
    k_fen  = byte_read(0x2002);   
    g_shi  = byte_read(0x2003);   
    g_fen  = byte_read(0x2004);   
    t_high  = byte_read(0x2005);   
    guanxian_set  = byte_read(0x2009);   
    bjdj_value  = byte_read(0x2010);   
    a_a = byte_read(0x2050);
}   

/*************初始化EEPROM************/
void init_eepom()    //初始化EEPROM
{
    read_eepom();
     if(a_a == 0xff)   
    {
        flag_zd_sd = 1;     //模式設置
        a_a = 1;
        k_shi=8;
        k_fen=2;            //開
        g_shi=3;
        g_fen=4;            //關
        t_high  = 35;   
        guanxian_set = 4;
        bjdj_value  = 0;
        write_eepom();        
    }
}
#include "menu.h"

/***************讀數模轉換數據****************/   
//請先了解ADC0832模數轉換的串行協議,再來讀本函數,主要是對應時序圖來理解,本函數是模擬0832的串行協議進行的
                        //  1  0  0 通道
                        //  1  1  1 通道
unsigned char ad0832read(bit SGL,bit ODD)
{
    unsigned char i=0,value=0,value1=0;        
        SCL=0;
        DO=1;
        CS=0;        //開始
        SCL=1;        //第一個上升沿   
        SCL=0;
        DO=SGL;
        SCL=1;      //第二個上升沿
        SCL=0;
        DO=ODD;
        SCL=1;        //第三個上升沿
        SCL=0;        //第三個下降沿
        DO=1;
        for(i=0;i<8;i++)
        {
            SCL=1;
            SCL=0; //開始從第四個下降沿接收數據
            value<<=1;
            if(DO)
                value++;                        
        }
        for(i=0;i<8;i++)
        {            //接收校驗數據
            value1>>=1;
            if(DO)
                value1+=0x80;
            SCL=1;
            SCL=0;
        }
        CS=1;
        SCL=1;   
        if(value==value1)        //與校驗數據比較,正確就返回數據,否則返回0   
            return value;
    return 0;
}



/******************1ms 延時函數*******************/
void delay_1ms(uint q)
{
    uint i,j;
    for(i=0;i<q;i++)
        for(j=0;j<120;j++);
}

/*************時鐘的顯示***************/
void init_1602_ds1302()
{
    write_sfm2_ds1302(2,4,nian);   
    write_sfm2_ds1302(2,7,yue);   
    write_sfm2_ds1302(2,10,ri);   
    write_sfm2_ds1302(1,4,shi);   
    write_sfm2_ds1302(1,7,fen);   
    write_sfm2_ds1302(1,10,miao);
    write_sfm1(1,14,week);        
}                                       

/*************定時器0初始化程序***************/
void init_time0()      
{
    EA   = 1;           //開總中斷
    TMOD = 0X01;      //定時器0、工作方式1
    ET0  = 1;          //開定時器0中斷
    TR0  = 1;          //允許定時器0定時
}

/*************手動開關窗簾***************/
void shoudong_kaiguan()      //手動開關窗簾
{
    if(flag_zd_sd == 0)      //手動模式
    {
        if(guanxian <= guanxian_set)
             LED=0;
            else
             LED=1;
        if(menu_1 == 0)
        {
            if(flag_kaig_moshi == 0)
            {
                if(key_can == 2)
                    flag_z_f = 1;     //手動開窗
                if(key_can == 3)
                    flag_z_f = 2;     //手動關窗
                if(flag_lj_en == 0)
                    flag_z_f = 0;
            }
        }
    }
    if(flag_kaig_moshi == 0)
    {
   
        if(flag_zd_sd == 1)      //自動模式
        {
            
            if(guanxian <= guanxian_set)
                flag_z_f = 2;     //手動開窗
            
               
            else
                flag_z_f = 1;     //手動關窗
               
        
        }
    }
}

                                                            
/*********************智能窗簾處理函數***********************/
void zinengchuanglian_dis()      //智能窗簾處理函數
{
    if((miao == 0) && (fen == k_fen) && (shi == k_shi))      //定時開窗
    {
        flag_z_f = 2;    //關窗
        beep=0;              //鬧鐘到
        flag_kaig_moshi = 1;
    }
    if((miao == 0) && (fen == g_fen) && (shi == g_shi))      //定時關窗
    {
        flag_z_f = 1;     //開窗   
        flag_kaig_moshi = 2;
    }

}


void main()
{   
    init_eepom();         //初始化EEPROM
    init_1602();         //lcd1602初始化
    init_1602_dis_csf(); //lcd1602初始化顯示
    init_ds1302_io();     //初始化ds1302Io
    init_time0();         //初始化定時器
    menu_1_break();         //菜單初始界面
    init_ds1302();         //ds1302初始化
    temperature1 = read1_temp();  //讀溫度1
    delay_1ms(650);
    while(1)
    {
        key();             //按鍵程序
        if(key_can < 10)
        {
            key_with();   
        }
        shoudong_kaiguan();      //手動開關窗簾
        if(flag_200ms == 1)
        {        
            flag_200ms = 0;
            temperature1 = read1_temp();  //讀溫度1    環境溫度
            if(temperature1 >= 99)
                temperature1 = 99;
            zinengchuanglian_dis();      //智能窗簾處理函數
            guanxian = ad0832read(1,0) * 9.0 / 255;
            if((menu_1 == 0))
            {
                read_time();          //讀時間
                init_1602_ds1302();   //顯示時鐘
                write_sfm_18b20(2,13,temperature1);    //顯示溫度
                write_sfm1(2,0,guanxian);    //顯示溫度
                      if(guanxian <= guanxian_set)
             LED=0;
            else
             LED=1;
                if((temperature1 >= t_high)||(yw==0))
                    beep =    ~beep;   //蜂鳴器溫度煙霧報警
                else
                    beep = 1;        
            }
        }
        bujindj();     //步進電機函數
    }
}

void time0() interrupt 1
{            
    static uchar value;
    TH0 = 0X3C;
    TL0 = 0XB0;       //50ms
    value ++;
    if(value >= 4)             //200ms
    {
        value = 0;
        flag_200ms = 1;
    }
    if(flag_lj_en == 1)       //按下按鍵使能
    {
        key_time ++;
        if(key_time >= menu_shudu) //500ms
        {
            key_time = 0;
            key_500ms = 1; //500ms
            flag_value ++;
            if(flag_value > 3)
            {
                flag_value = 10;
                flag_lj_3_en = 1; //3次后1.5秒后連加大些
            }                        
        }
    }
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:846076 發表于 2020-11-19 21:25 | 只看該作者
智能窗簾
回復

使用道具 舉報

板凳
ID:420836 發表于 2020-11-20 08:47 | 只看該作者
你有模擬圖片嗎?
回復

使用道具 舉報

地板
ID:739545 發表于 2020-11-20 13:26 | 只看該作者
顯示的東西都沒有,代碼應該不是自己寫的。這種浪費時間的事,沒人做,還是找寫代碼的人吧
回復

使用道具 舉報

5#
ID:846076 發表于 2020-11-20 21:55 來自觸屏版 | 只看該作者
lovezjf234 發表于 2020-11-20 13:26
顯示的東西都沒有,代碼應該不是自己寫的。這種浪費時間的事,沒人做,還是找寫代碼的人吧

找了,不給講,把我拉黑了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩国产免费观看 | 欧美a在线看 | 激情视频一区 | 亚洲日韩中文字幕一区 | 一区二区三区四区在线 | 国产美女永久免费无遮挡 | 午夜免费精品视频 | 精品一区二区三区不卡 | 久久这里有精品 | 久久久久久久久精 | 一区在线播放 | 国产精品久久久久久久免费观看 | 国产精品日韩欧美一区二区三区 | 精品久久久久久亚洲综合网 | 久久高清精品 | 色频| 亚洲一区二区在线播放 | 中文字幕在线免费视频 | 狠狠操电影 | 日韩av手机在线观看 | 欧美在线视频网 | 午夜精品久久久久久 | 亚洲一一在线 | 欧美中文字幕一区二区三区亚洲 | 日韩精品免费在线 | 欧美日韩成人 | 国产精品久久久乱弄 | 精品99在线 | 国产区久久 | 欧美男人天堂 | 国产精品久久国产精品 | 久久99网 | 亚洲精品电影网在线观看 | 国产人成精品一区二区三 | 午夜免费影视 | 一区二区三区四区不卡 | 久久免费精品视频 | 香蕉91| 日韩精品视频中文字幕 | 国产美女一区二区 | 中文字幕视频在线免费 |