找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2114|回復(fù): 5
收起左側(cè)

一打開單片機(jī)定時(shí)器中斷數(shù)碼管就不顯示?附程序

[復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 2 黑幣 回復(fù)本帖可獲得 2 黑幣獎(jiǎng)勵(lì)! 每人限 1 次
ID:773929 發(fā)表于 2022-12-11 02:16 | 顯示全部樓層 |閱讀模式
不打開定時(shí)器一切正常,求大佬提示!感謝!
1.jpg

單片機(jī)源程序如下:
#include <reg51.h>
#include <stdio.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int

#define DU  P0

unsigned char  ledchar[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; // 0~9
uint Temp;

uint t;
uchar Flag_connect ; //掉線標(biāo)志位
uint MAX6675_temp;
uint BJ_temp;                //報(bào)警值
uchar Flag_Bj;  //報(bào)警標(biāo)志位

uint p;


sbit xz = P2^7;    //按鍵
sbit jia = P2^6;
sbit jian = P2^5;


sbit WEI_1 = P2^0 ;
sbit WEI_2 = P2^1 ;
sbit WEI_3 = P2^2 ;
sbit WEI_4 = P2^3 ;

sbit so = P1^5;
sbit sck = P1^6;
sbit cs = P1^7;

sbit baojing = P3^7;

sbit key1 = P2^5;
sbit key2 = P2^6;
sbit key3 = P2^7;
sbit baocun = P2^4;

sbit led = P3^0;


void xianshi(uint shuzhi);
void DelayMs(unsigned int i);
unsigned int MAX6675_Read();//讀溫度;
uint MAX6675_Oper();//溫度運(yùn)算
void Timer_Init();//定時(shí)器0初始化
void shezhi();  //按鍵設(shè)置
void UartInit(void);//串口初始化
void SendDate(unsigned char dat);

uchar a;
void Timer0() interrupt 1
{
        a++;
        TH1 = (65536-50000)/256;
        TL1 = (65536-50000)%256;
        if(a >= 10){
                led =~ led;
                a = 0;
        }
               
}

void Start()
{
         DU = 0x00;
         WEI_1 = 1;
         WEI_2 = 1;
         WEI_3 = 1;
         WEI_4 = 1;        
                Flag_Bj = 0;        
}


void main(void)
{
        Start();
        Timer_Init();
        DelayMs(1000);
        baojing = 0;
        BJ_temp = 145;
        
   while (1){
           EA = 0;
           MAX6675_Oper();
           EA = 1;
           
           shezhi();
           
           if(MAX6675_temp >= BJ_temp ) //報(bào)警判斷
           {
                   baojing = 1;
                }else{baojing = 0;}

}
}

void xianshi(uint shuzhi){     //數(shù)碼管顯示函數(shù),只顯示三位數(shù)
         uchar ge;
         uchar shi;
         uchar bai;
         ge = shuzhi%10;
         shi = (shuzhi/10)%10;
         bai = shuzhi/100;
         
         WEI_1 = 1;
         WEI_2 = 1;
         WEI_3 = 1;
         WEI_4 = 1;
         WEI_2 = 0;
         DU = ledchar[bai];
         DelayMs(3);
         WEI_1 = 1;
         WEI_2 = 1;
         WEI_3 = 1;
         WEI_4 = 1;
         WEI_3 = 0;
         DU = ledchar[shi];
         DelayMs(3);
         WEI_1 = 1;
         WEI_2 = 1;
         WEI_3 = 1;
         WEI_4 = 1;
         WEI_4 = 0;
         DU = ledchar[ge];         
         DelayMs(3);
         
}

void DelayMs(unsigned int i)        //一個(gè)延時(shí)函數(shù),這個(gè)函數(shù)在11.0592M晶振下的延時(shí)時(shí)間大概為1ms
{
        unsigned int j,k;

        for(j=i; j>0; j--)
                for(k=114; k>0; k--);
}

unsigned int  MAX6675_Read(void)   //max6675讀十六位數(shù)值
{
        //EA = 0;
        
        uchar i;
        uint dat;
        i = 0;
        dat = 0;
        cs = 0;
        sck = 0;
        for(i = 0;i<16; i++)
        {
                sck = 1;
                dat = dat<<1;
                if(so == 1)
                        dat = dat|0x01;
                sck = 0;
        }
        cs = 1;
        
        return dat;
        //EA = 1;
}

uint MAX6675_Oper()
{
        
        t = MAX6675_Read();
        Flag_connect = t&0x04;
        Flag_connect = Flag_connect>>2;
        t = t<<1;
        t = t>>4;
        MAX6675_temp = t/4;
        
        if(Flag_connect==0 && Flag_Bj == 0){

                for(t = 0; t<200; t++)
                {
                        xianshi(MAX6675_temp);
                }
        }else {baojing = 1; xianshi(000);} //判斷是否掉線,掉線報(bào)警,并且顯示000
        
        //return MAX6675_temp;
}


void Timer_Init()
{
        EA = 1;
        ET1 = 1;
        TMOD = 0X10;
        TH1 = (65536-50000)/256;
        TL1 = (65536-50000)%256;
        TR1 = 1;
        a = 0;
}

void shezhi()
{
        if(key1 == 0)
        {
                DelayMs(10);
                if(key1 == 0)
                {
                        xianshi(BJ_temp);
                        Flag_Bj = 1;
                }
        }
        while(Flag_Bj == 1){xianshi(BJ_temp);
        if(key2 == 0)
        {
                DelayMs(10);
                if(key2 == 1){
                        BJ_temp++;
                        xianshi(BJ_temp);
                }
        }
        
        if(key3 == 0)
        {
                DelayMs(10);
                if(key3 == 1){
                        BJ_temp--;
                        xianshi(BJ_temp);
                }
        }

        if(baocun == 0)
        {
                DelayMs(10);
                if(baocun == 1){
                        Flag_Bj = 0;
                }
        }}        
}

void UartInit(void)                //9600bps@11.0592MHz
{
        SCON = 0x50;                //8位數(shù)據(jù),可變波特率
        TMOD &= 0x0F;                //設(shè)置定時(shí)器模式
        TL1 = 0xE8;                //設(shè)置定時(shí)初始值
        TH1 = 0xFF;                //設(shè)置定時(shí)初始值
        ET1 = 0;                //禁止定時(shí)器%d中斷
        TR1 = 1;                //定時(shí)器1開始計(jì)時(shí)
}

void SendDate(unsigned char dat)//串口發(fā)送
{
      SBUF = dat;
      while(!TI);
      TI = 0;
}
回復(fù)

使用道具 舉報(bào)

ID:1056573 發(fā)表于 2022-12-11 03:59 | 顯示全部樓層
void SendDate(unsigned char dat)//串口發(fā)送
{
      SBUF = dat;
      while(!TI);
      TI = 0;
}
  “while(!TI);”中是否多了個(gè)“;”?
回復(fù)

使用道具 舉報(bào)

ID:773929 發(fā)表于 2022-12-11 11:23 來自觸屏版 | 顯示全部樓層
ytchfp163 發(fā)表于 2022-12-11 03:59
void SendDate(unsigned char dat)//串口發(fā)送
{
      SBUF = dat;

沒有呀,等待ti
回復(fù)

使用道具 舉報(bào)

ID:624769 發(fā)表于 2022-12-11 14:58 | 顯示全部樓層
你串口用  定時(shí)器1  ,  定時(shí)器又用定時(shí)器1??  中斷開的還是 定時(shí)器0。!  

這不正常才是正,F(xiàn)象!!
回復(fù)

使用道具 舉報(bào)

ID:1057088 發(fā)表于 2022-12-12 08:52 | 顯示全部樓層
去掉所有的DELAY 試一下.
回復(fù)

使用道具 舉報(bào)

ID:1059656 發(fā)表于 2022-12-29 18:39 | 顯示全部樓層
定時(shí)器換一下 串口和中斷不能用一個(gè)定時(shí)器
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表