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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1695|回復: 2
收起左側

各位大佬幫我看看是哪里出了問題,這程序是我在論壇下載改寫的。

[復制鏈接]
ID:448184 發表于 2018-12-19 20:37 來自手機 | 顯示全部樓層 |閱讀模式
數字溫度報警器:我是根據自己的單片機改的,數碼管是連接鎖存器的。調試程序的時候顯示TL0未定義。請大家幫我看看這么回事,謝謝啦。
#define <reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define SET P3^0       
#define ADD P3^1
#define DEC P3^2
#define BEEP P2^3
#define ALAM P1^0
#define DQ P2^2
#define SEG P0
#define count 50000
#define TH_M1(65636-count)/256
#define TL_M1(65636-count)%256
bit shanshuo_st;
bit beep_st;
sbit DIAN=P0^5;
sbit bit_select=P2^7;
sbit seg_select=P2^6;
uchar x=0;
signed char shangxian=38;
signed char xiaxian=5;
unsigned char seg_data[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char bit_data[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
//
void Delay_DS18B20(int num)
{
        while(num--);
}
//
void Init_DS18B20(void)
{
        unsigned char X=0;
        DQ=1;
        Delay_DS18B20(8);
        DQ=0;
        Delay_DS18B20(80);
        DQ=1;
        Delay_DS18B20(14);
        x=DQ;
        Delay_DS18B20(20);
}
//
unsigned char ReadOneChar(void)
{
        unsigned char i=0;
        unsigned char dat=0;
        for(i=8;i>0;i--)
        {
                DQ=0;
                dat>>=1;
                DQ=1;
                if(DQ)
                        dat|=0x80;
                Delay_DS18B20(4);
        }
        return(dat);
}
        //
        void WriteOneChar(unsigned char dat)
        {
                unsigned char i=0;
                for(i=8;i>0;i--)
                {
                        DQ=0;
                        DQ=dat&0x01;
                        Delay_DS18B20(5);
                        DQ=1;
                        dat>>=1;
                }
        }
        //
        unsigned int ReadTemperature(void)
        {
                unsigned char a=0;
                unsigned char b=0;
                unsigned int i=0;
                float tt=0;
                Init_DS18B20();
                WriteOneChar(0xcc);
                WriteOneChar(0x44);
                Init_DS18B20();
                WriteOneChar(0xcc);
                WriteOneChar(0xbe);
                a=ReadOneChar();
                b=ReadOneChar();
                t=b;
                t<<=8;
                t=t|a;
                tt=t*0.0625;
                t=tt*10+0.5;
                return(t);
        }
        //
        void Delay(unit num)
        {
                while(--num);
        }
        //
        void InitTimer(void)
        {
                TMOD=0x01;
                TH0=TH_M1;
                TL0=TL_M1;
        }
        //
        void check_wendu(void)
        {
                uint a,b,c;
                c=temperature();
                a=c/100;
                b=c/10-a*10;
                m=c/10;
                n=c-a*100-b*10;
                if(m<0)
                {
                        m=0;
                        n=0;
                }
                if(m>99)
                {
                        m=99;
                        n=9;
                }
        }
        //
        void Disp_init(void)
        {
                SEGPORT=0xff
                seg_select=1;
                P0=0x7f;
                seg_select=0;
               
                SEGPORT=0xff
                bit_select=1;
                P0=0xfe;
                bit_select=0;
                delay(100);
                seg_select=1;
                P0=0x7f;
                seg_select=0;
               
                bit_select=1;
                P0=0xfd;
                bit_select=0;
                delay(100);
                seg_select=1;
                P0=0x7f;
                seg_select=0;
               
                bit_select=1;
                P0=0xfb;
                bit_select=0;
                delay(100);
                seg_select=1;
                P0=0x7f;
                seg_select=0;
               
                bit_select=1;
                P0=0xf7;
                bit_select=0;
                delay(100);
                P0=0xff;
               
               
        }
        //
        void Disp_Temperature(void)
        {
                SEGPORT=0xff
                seg_select=1;
                P0=seg_date[n];
                seg_select=0;
               
                SEGPORT=0xff
                bit_select=1;
                P0=0xfe;
                bit_select=0;
                delay(200);
               
                seg_select=1;
                P0=seg_date[m%10];
                seg_select=0;
               
                bit_select=1;
                P0=0xfd;
                bit_select=0;
                delay(200);
               
               
                seg_select=1;
                P0=seg_data[m/10]|0x80;
                seg_select=0;
               
               
                bit_select=1;
                P0=0xfb;
                bit_select=0;
                delay(200);
               
                seg_select=1;
                P0=0x39;
                seg_select=0;
               
                bit_select=1;
                P0=0xf7;
                bit_select=0;
                Delay(200);
                P2=0xff;
        }
        //
        void Disp_alarm(uchar baojing)
        seg_select=1;
        P0=0x39;
        seg_select=0;
               
        bit_select=1;
        P0=0xfe;
        bit_select=0;
        Delay(100);
        P2=0xff;
       
        seg_select=1;
        P0=seg_data[baojing%10];
        seg_select=0;
               
        bit_select=1;
        P0=0xfd;
        bit_select=0;
        Delay(100);
        P2=0xff;
       
        seg_select=1;
        P0=seg_data[baojing/10];
        seg_select=0;
               
        bit_select=1;
        P0=0xfb;
        bit_select=0;
        Delay(100);
        P2=0xff;
       
        seg_select=1;
        if(set_st==1)P0=0x76;
        else if(set_st==2)P0=0x38;
        seg_select=0;
       
        bit_select=1;
        P0=0xf7;
        bit_select=0;
        Delay(100);
        P2=0xff;
        //
        void Alarm()
        {
                if(x>=10)
                {
                        beep_st=~beep_st;
                        x=0;
                        if((m>shangxian&&beep_st==1)||(m<xiaxian&&beep_st==1))
                        {
                                BEEP=0;
                                ALARM=0;
                        }
                        else
                        {
                                BEEP=1;
                                ALARM=1;
                        }
                }
                //
                void main(void)
                {
                        uint z;
                        InitTimer();
                        EA=1;
                        TR0=1;
                        ET0=1;
                        IT0=1;
                        IT1=1;
                        check_wendu();
                        check_wendu();
                        for(z=0;z<300;z++)
                        {
                                Disp_init();
                        }
                        while(1)
                        {
                                if(SET==0)
                                {
                                        Delay(2000);
                                        do{}while(SET==0);
                                                set_st++;
                                                x=0;
                                                shanshuo_st=1;
                                                if(set_st>2)set_st=0;
                                        }
                                if(set_st==0)
                                {
                                        EX0=0;
                                        EX1=0;
                                        check_wendu();
                                        Disp_Temperature();
                                        Alarm();
                                }
                                else if(set_st==1)
                                {
                                        BEEP=1;
                                        ALARM=1;
                                        EX0=1;
                                        EX1=1;
                                        if(x>=10)
                                        {
                                                shanshuo_st=~shanshuo_st;
                                                x=0;
                                        }
                                        if(shanshuo_st)
                                        {
                                                Disp_alarm(shangxian);
                                        }
                                }
                                else if(set_st==2)
                                {
                                        BEEP=1;
                                        ALARM=1;
                                        EX0=1;
                                        EX1=1;
                                        if(x>=10)
                                        {
                                                shanshuo_st=~shanshuo_st;
                                                x=0;
                                        }
                                        if(shanshuo_st)
                                        {
                                                Disp_alarm(xiaxian);
                                        }
                                }
                        }
                }
                //
                void timer0(void)interrupt 1
                {
                        TH0=TH_M1;
                        TL0=TL_M1;
                        x++;
                }
                //
                void int0(void) interrupt 0
                {
                        EX0=0;
                        if(DEC==0&&set_st==1)
                        {
                                do{
                                        Disp_alarm(shangxian);
                                }
                                while(DEC==0);
                                shangxian--;
                                if(shangxia<xiaxian)shangxian=xiaxian;
                        }
                        else if(DEC==0&&set_st==2)
                        {
                                do{
                                        Disp_alarm(xiaxian);
                                }
                                while(DEC==0);
                                xiaxian--;
                                if(xiaxian<0)xiaxian=0;
                        }
                }
                //
                void int1(void) interrupt 2
                {
                        EX1=0;
                        if(ADD==0&&set_st==1)
                        {
                                do{
                                        Disp_alarm(shangxian);
                                }
                                while(ADD==0);
                                shangxian++;
                                if(shangxian>>99)shangxian=99;
                        }
                        else if(ADD==0&&set_st==2)
                        {
                                do{
                                        Disp_alarm(xiaxian);
                                }
                                while(ADD==0);
                                xiaxian++;
                                if(xiaxian>shangxian)xiaxian=shangxian;
                        }
                }
               
       
       
       
回復

使用道具 舉報

ID:277550 發表于 2018-12-20 01:05 | 顯示全部樓層


講講程序實現的功能,以及遇到的問題唄

代碼不算太短,要調試,也要知道是做什么的。
回復

使用道具 舉報

ID:448184 發表于 2018-12-20 12:13 來自手機 | 顯示全部樓層
devcang 發表于 2018-12-20 01:05
講講程序實現的功能,以及遇到的問題唄

代碼不算太短,要調試,也要知道是做什么的。

調試了,一直顯示DQ=1那一行有語法錯誤。
void WriteOneChar(unsigned char dat)
        {
                unsigned char i=0;
                for(i=8;i>0;i--)
                {
                        DQ=0;
                        DQ=dat&0x01;
                        Delay_DS18B20(5);
                        DQ=1;
                        dat>>=1;
                }
        }
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费视频一区二区 | 日韩精品一区二区三区视频播放 | 国产精品视频一区二区三区不卡 | 国产精品国产三级国产aⅴ原创 | 激情久久网| com.色.www在线观看 | 国产精品美女久久久久久免费 | aaaaaaa片毛片免费观看 | 亚洲精品一区二区另类图片 | 久久久久久免费看 | 精品久久久精品 | 天堂资源视频 | 国产精品一区二区久久 | 日韩一区精品 | 国产精品久久久久久久7电影 | 国产精品免费一区二区 | 亚洲成人国产综合 | 亚洲欧美在线一区 | 国产激情视频在线观看 | 国产成人免费视频网站视频社区 | 国产91丝袜在线播放 | 最新中文字幕在线 | 亚洲视频免费在线观看 | 日韩在线精品视频 | 久久99精品久久久久久琪琪 | 久久久久亚洲 | 日韩欧美久久精品 | 久久99国产精品久久99果冻传媒 | 激情网站在线 | 亚洲一卡二卡 | 伊人影院99 | 一区二区视屏 | 玖玖玖在线观看 | 日韩欧美精品在线 | 日韩视频中文字幕 | 在线不卡 | 成人国产一区二区三区精品麻豆 | 久久曰视频 | 成年人免费在线视频 | www.国产一区 | 国产精品欧美一区二区三区不卡 |