標(biāo)題: 智能家居系統(tǒng) Proteus仿真設(shè)計(jì)代碼不能運(yùn)行,求大神指導(dǎo) [打印本頁(yè)]

作者: 交大Boy    時(shí)間: 2019-8-11 22:05
標(biāo)題: 智能家居系統(tǒng) Proteus仿真設(shè)計(jì)代碼不能運(yùn)行,求大神指導(dǎo)
問題還很多,大家可以繼續(xù)完善:
個(gè)人為電子競(jìng)賽所做的《智能家居系統(tǒng)Proteus仿真設(shè)計(jì)》,現(xiàn)分享給大家,共同學(xué)習(xí)學(xué)習(xí)!
整個(gè)設(shè)計(jì)由Proteus仿真完成。智能家居系統(tǒng)有以下幾個(gè)模塊組成:
(1)中央處理器模塊
(2)窗簾控制系統(tǒng)
(3)溫度監(jiān)控系統(tǒng)
(4)門禁密碼系統(tǒng)
(5)居室燈光控制系統(tǒng)
(6)居室照明系統(tǒng)
(7)煙霧火災(zāi)報(bào)警系統(tǒng)
(8)室內(nèi)中央顯示系統(tǒng)
(9)按鍵設(shè)置系統(tǒng)
(10)門禁開關(guān)系統(tǒng)
(11)網(wǎng)絡(luò)通訊系統(tǒng)

原理圖為:





程序部分:



部分代碼如下:
#include "DELAY.H"
#include "LATCH.H"
#include "DISPLAY.H"
#include "LCD1602.H"
#include "KEYSCAN.H"
#include "24C02.H"
#include "PCF8591.H"
#include "DS18B20.H"
#include "TIMER.H"


#define LedBright 0x00                 //明亮
#define LedNormal 0x64                 //一般
#define LedSleep  0xc8                 //睡眠
#define ledClose  0xff                 //關(guān)閉

uchar KeyNum;
uchar LED_flag;
uchar LED_DIS_1;
uint LightRes;
uchar code LED_Light_Mode[]="Choose ledlight mode";
uchar code LEDNum[] = "1  2  3";
uchar code LED_Control_Mode[]="Choose ledcontrol mode";
uchar code LED_Control_Follow[]="1:Hand     2:Auto";
enum {Hand,Auto} Control_Follow = Hand;
uchar code DisProgram[]="Mode      Status";
uchar code LED_Dis_One[]="LED       LedBright";
uchar code LED_Dis_Two[]="LED       LedNormal";
uchar code LED_Dis_Three[]="LED      LedSleep";
uchar Led_i = 0;
uchar Led_j = 0;
uchar LedOutputValue;
uchar Timer0Num;
void main()
{
        Init_TIME(0,0);
        ChooseChannel(0x01);
        Init_LCD();
        while(1)
        {
                KeyNum = KeyScan();
                if(KeyNum != 0xff)
                {
                        if(KeyNum == 4) {LED_flag = 1; Led_i++; LedOutputValue =  LedNormal;}
                        if(Led_i == 2)  {LED_flag = 0; Led_i = 0; Led_j = 0; LED_DIS_1 = 0;}

                        if(LED_flag && KeyNum == 1 )        {Led_j++; if(Led_j == 1)LedOutputValue =  LedBright;  LED_DIS_1 = 1;}
                        if(LED_flag && KeyNum == 2 )        {Led_j++; if(Led_j == 1)LedOutputValue =  LedNormal;  LED_DIS_1 = 1;}
                        if(LED_flag && KeyNum == 3 )        {Led_j++; if(Led_j == 1)LedOutputValue =  LedSleep;   LED_DIS_1 = 1;}

                }
                if(LED_flag && (LED_DIS_1 == 0))
                {
                        LCDPosition(1,LED_Light_Mode);
                        LCDPosition(2,LEDNum);        
                }
                if(LED_DIS_1 && (Led_j==1))
                {
                        LCDPosition(1,LED_Control_Mode);
                        LCDPosition(2,LED_Control_Follow);                                       
                }
                if((KeyNum == 1)&& (Led_j==2))          Control_Follow = Hand;
                if((KeyNum == 2)&& (Led_j==2))          Control_Follow = Auto;

//                if(Control_Follow == Hand) DA_Sent(LedOutputValue);
                if(Control_Follow == Auto)
                {
                        TR0 = 1;
                        if(LightRes > 180)         LedOutputValue = LedSleep;
                        else if(LightRes > 100 && LightRes < 180 )        LedOutputValue = LedNormal;
                        else          LedOutputValue = LedBright;
                }

                if(Led_j==2)
                {
                        LCDPosition(1,DisProgram);
                        switch(LedOutputValue)
                        {
                                case LedBright: LCDPosition(2,LED_Dis_One);            break;
                                case LedNormal:        LCDPosition(2,LED_Dis_Two);            break;
                                case LedSleep:        LCDPosition(2,LED_Dis_Three);        break;

                        }        
                }
                DA_Sent(LedOutputValue);
//                LCDPosition(1,LED_Light_Mode);        
        }               
}
void Timer0() interrupt 1
{
        TH0 = (65536-50000)/256;
        TL0 = (65536 - 50000)%256;
        Timer0Num++;
        if(Timer0Num == 20)
        {
                Timer0Num = 0;
                LightRes = AD_Receive();         
        }
}

仿真文件和程序見附件:


不能運(yùn)行,仿真沒有反應(yīng),求大神指導(dǎo): 仿真程序有錯(cuò)誤,求大神幫助.7z (63.72 KB, 下載次數(shù): 285)



作者: shenyuqiu    時(shí)間: 2019-8-12 09:58
好東西呀,謝謝分享
作者: 苦瓜茶    時(shí)間: 2019-8-12 10:27
謝謝樓主分享
作者: uaeng    時(shí)間: 2019-8-12 13:26
多謝樓主提供,學(xué)習(xí)了。
作者: wangcaixin_kec    時(shí)間: 2019-8-12 14:49
贊一個(gè)
作者: 3250    時(shí)間: 2019-8-12 16:10
感謝樓主,樓主是哪個(gè)省份的

作者: 3250    時(shí)間: 2019-8-12 18:52
仿真無(wú)法運(yùn)行 不知為何
作者: 萬(wàn)古琴    時(shí)間: 2019-8-24 18:39
內(nèi)容詳實(shí) 但非常遺憾 無(wú)法仿真運(yùn)行?
作者: 浪子天涯    時(shí)間: 2019-8-26 22:18
樓主程序是不是有點(diǎn)問題,在proteus中仿真按程序邏輯操作,不對(duì)
作者: rsmain    時(shí)間: 2020-2-13 22:49
謝謝,很好的資料
作者: xfcanny    時(shí)間: 2020-4-20 23:55
very good!
作者: xfcanny    時(shí)間: 2020-4-20 23:56

謝謝,很好的資料
作者: 1274811776    時(shí)間: 2020-6-13 13:02
仿真不了

作者: 元亨利貞    時(shí)間: 2020-7-22 16:37
各位大佬有解決仿真不能運(yùn)行的方法嗎
作者: 元亨利貞    時(shí)間: 2020-7-22 16:38
浪子天涯 發(fā)表于 2019-8-26 22:18
樓主程序是不是有點(diǎn)問題,在proteus中仿真按程序邏輯操作,不對(duì)

你好,有能解決這個(gè)仿真不能運(yùn)行的方法嗎




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1