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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3717|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)用定時(shí)器后數(shù)碼管亂跳,麻煩各位大佬指點(diǎn)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:842537 發(fā)表于 2020-12-13 14:09 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
代碼如下,沒用定時(shí)器數(shù)碼管正常顯示溫度,用定時(shí)器后亂跳(定時(shí)器用來調(diào)節(jié)占空比調(diào)速,做的是一個(gè)溫控風(fēng)扇,部分函數(shù)省略)
麻煩各位大佬指點(diǎn),萬分感謝

#include "reg52.h"                         
#include"temp.h"       

typedef unsigned int u16;
typedef unsigned char u8;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit IN1=P3^0;
sbit IN2=P3^1;
sbit ENA=P3^2;


u8 DisplayData[8];
u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint n;
uchar time;
uint flag=100;
bit flag1s=0;

void delay(u16 i)//延時(shí)函數(shù),i=1時(shí),大約延時(shí)10us
{
        while(i--);       
}



void datapros(int temp) //溫度讀取處理         
{
           float tp;  
        if(temp< 0)                                //當(dāng)溫度值為負(fù)數(shù)
          {
                DisplayData[0] = 0x40;           //   第一位數(shù)碼管顯示負(fù)號(hào)
                //因?yàn)樽x取的溫度是實(shí)際溫度的補(bǔ)碼,所以減1,再取反求出原碼
                temp=temp-1;
                temp=~temp;
                tp=temp;
                temp=tp*0.0625*100+0.5;       
                //留兩個(gè)小數(shù)點(diǎn)就*100,+0.5是四舍五入
          }
        else
          {                       
                DisplayData[0] = 0x00;
                tp=temp;//如果溫度為正,讀取的溫度為其本身               
                temp=tp*0.0625*100+0.5;       
        }
        DisplayData[1] = smgduan[temp % 10000 / 1000];
        DisplayData[2] = smgduan[temp % 1000 / 100]|0x80;//顯示小數(shù)點(diǎn)
        DisplayData[3] = smgduan[temp %  100 / 10];
        DisplayData[4] = smgduan[temp %  10 / 1];

        if(temp>1400){
        n=100;}
        else{n=50;}
       
}


/*******************************************************************************
* 函數(shù)名         :DigDisplay()
* 函數(shù)功能                 :數(shù)碼管顯示函數(shù)
* 輸入           : 無
* 輸出                  : 無
*******************************************************************************/
void DigDisplay()
{
        u8 i;
        for(i=0;i<6;i++)
        {
                switch(i)         //位選,選擇點(diǎn)亮的數(shù)碼管,
                {
                        case(0):
                                LSA=1;LSB=1;LSC=1; break;//顯示第0位
                        case(1):
                                LSA=0;LSB=1;LSC=1; break;//顯示第1位
                        case(2):
                                LSA=1;LSB=0;LSC=1; break;//顯示第2位
                        case(3):
                                LSA=0;LSB=0;LSC=1; break;//顯示第3位
                        case(4):
                                LSA=1;LSB=1;LSC=0; break;//顯示第4位
                        case(5):
                                LSA=0;LSB=1;LSC=0; break;//顯示第5位
                }
                P0=DisplayData[i];//發(fā)送數(shù)據(jù)
          delay(100); //間隔一段時(shí)間掃描       
                P0=0x00;//消隱
        }               
}



void interrupt_init()
{
  TMOD=0x01;
        TH0=0xfc;
        TL0=0x18;
        ET0=1;
        TR0=1;
        EA=1;
       
}
void main()//主函數(shù)
{
interrupt_init();
        while(1)
        {
                datapros(Ds18b20ReadTemp());         //數(shù)據(jù)處理函數(shù)
                DigDisplay();    //數(shù)碼管顯示函數(shù)

                       
        }               
}

void Timer0() interrupt 1
{
        TR0=0;
TH0=0xfc;
        TL0=0x18;
        TR0=1;
        time++;
        if(time=flag)
        {
        time=0;       
        }
        if(time<=n)
        {
        ENA=1;
        IN1=1;
                IN2=0;
        }


}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:275826 發(fā)表于 2020-12-13 17:56 | 只看該作者
讀溫度的順序被中斷打亂了
回復(fù)

使用道具 舉報(bào)

板凳
ID:258566 發(fā)表于 2020-12-13 18:01 | 只看該作者
void DigDisplay()
{
        u8 i;
        for (i = 0; i < 6; i++)
        {
                P0 = 0x00;        //消隱
                switch (i)        //位選,選擇點(diǎn)亮的數(shù)碼管,
                {
                        case (0):
                                LSA = 1;
                                LSB = 1;
                                LSC = 1;
                                break;        //顯示第0位
                        case (1):
                                LSA = 0;
                                LSB = 1;
                                LSC = 1;
                                break;        //顯示第1位
                        case (2):
                                LSA = 1;
                                LSB = 0;
                                LSC = 1;
                                break;        //顯示第2位
                        case (3):
                                LSA = 0;
                                LSB = 0;
                                LSC = 1;
                                break;        //顯示第3位
                        case (4):
                                LSA = 1;
                                LSB = 1;
                                LSC = 0;
                                break;        //顯示第4位
                        case (5):
                                LSA = 0;
                                LSB = 1;
                                LSC = 0;
                                break;        //顯示第5位
                }
                P0 = DisplayData[ i];        //發(fā)送數(shù)據(jù)
                delay(100);        //間隔一段時(shí)間掃描      
               
        }
}
回復(fù)

使用道具 舉報(bào)

地板
ID:275826 發(fā)表于 2020-12-13 19:42 | 只看該作者
三樓修改顯示程序是沒有用的
回復(fù)

使用道具 舉報(bào)

5#
ID:57657 發(fā)表于 2020-12-13 20:07 | 只看該作者
讀溫度前把中斷關(guān)了,然后打開。
ET0=0;datapros(Ds18b20ReadTemp());ET0=1;
回復(fù)

使用道具 舉報(bào)

6#
ID:859752 發(fā)表于 2020-12-13 21:23 | 只看該作者
中斷錯(cuò)了
回復(fù)

使用道具 舉報(bào)

7#
ID:213173 發(fā)表于 2020-12-13 22:43 | 只看該作者
樓主程序中斷處理不當(dāng),中斷干擾讀取溫度和數(shù)碼管動(dòng)態(tài)掃描,反過來溫度不正常又影響占空比。給你改了,你試試。 溫控.zip (63.96 KB, 下載次數(shù): 23)

回復(fù)

使用道具 舉報(bào)

8#
ID:258566 發(fā)表于 2020-12-14 06:39 來自觸屏版 | 只看該作者
顯示有問題,雖然時(shí)鐘速度快看不出來區(qū)別,但是邏輯應(yīng)該是更改位碼前把段碼顯示關(guān)閉。
回復(fù)

使用道具 舉報(bào)

9#
ID:65956 發(fā)表于 2020-12-14 08:25 | 只看該作者
給提供個(gè)建議,顯示可以用定時(shí)器定時(shí)刷新,這樣能保證顯示不受其它函數(shù)計(jì)算等的影響,主函數(shù)才是去作溫度讀取與計(jì)算的事,因?yàn)槎〞r(shí)器運(yùn)行是優(yōu)先于主函數(shù)里其它函數(shù)的運(yùn)行
回復(fù)

使用道具 舉報(bào)

10#
ID:847958 發(fā)表于 2020-12-14 11:16 | 只看該作者
讀溫度的順序被中斷打亂了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美极品视频 | 日本加勒比在线观看 | 免费国产视频 | 人人草人人爽 | 国产精品视频网站 | 黄色大片在线 | 婷婷激情五月 | 亚洲国产成人精品女人久久久 | 亚洲一级二级三级 | 精品国产区一区二 | 亚洲啊v| 国产裸体永久免费视频网站 | 狠狠操狠狠爱 | 成人一级黄色片 | 久久精品视频一区 | 性色在线 | 日韩精品久久久 | 精品国产一区二区三区久久久蜜月 | 亚洲午夜激情 | 狠狠干夜夜 | av高清不卡| 国产aa视频 | 一区二区三区免费 | 一级免费片| 中文字幕丰满人伦在线 | 欧美精品一区在线 | 午夜激情影院 | 中文字幕亚洲精品 | 国产视频一区在线观看 | 中文在线永久免费观看 | 欧美日韩在线看 | 少妇视频网站 | 国产三级做爰高清在线 | 一级毛片久久久 | 国产一级片网站 | 超碰成人福利 | 日韩欧美在线观看视频 | 黄色成年人网站 | 一区二区三区国产视频 | 女人高潮特级毛片 | 久久久天堂国产精品女人 |