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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

溫度計之小問題,求助高人

查看數(shù): 4621 | 評論數(shù): 27 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2017-5-23 00:14

正文摘要:

問題是數(shù)碼管前二位不是太亮,我用了10K排阻,不亮與排阻有關(guān)嗎?                               &nb ...

回復(fù)

ID:197962 發(fā)表于 2017-6-4 06:14
  103222 發(fā)表于 2017-5-23 00:52
發(fā)的圖怎么不全發(fā)

換一高人程序便可,
自個腦力仍需精進(jìn)。
ID:206309 發(fā)表于 2017-5-31 11:50
屏新時間不一樣,前兩個顯示的時間短。
ID:206263 發(fā)表于 2017-5-31 10:04
不是排阻問題。。
ID:206250 發(fā)表于 2017-5-31 09:31
不是排阻問題
ID:205792 發(fā)表于 2017-5-29 11:21
跟排阻有關(guān)
ID:205740 發(fā)表于 2017-5-28 23:37
換成2k試下
ID:205714 發(fā)表于 2017-5-28 21:18
10K電阻太大了啊
ID:205694 發(fā)表于 2017-5-28 20:02
有關(guān)的換成1k的試試
ID:205678 發(fā)表于 2017-5-28 18:41
我不知道啊
ID:155507 發(fā)表于 2017-5-28 18:31
  1. #include<reg52.h>
  2. #include <intrins.h>
  3. #define  uchar  unsigned  char
  4. #define  uint   unsigned  int

  5. sbit  DATA = P3^7; //DS18B20接入口
  6. uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  7. char  bai,shi,ge; //定義變量
  8. /*延時子函數(shù)*/
  9. void delay(uint num)
  10. {
  11.         while(num--) ;
  12. }
  13. /*************DS18b20溫度傳感器函數(shù)*********************/
  14. Init_DS18B20(void)     //傳感器初始化
  15. {
  16.         uchar x=0;
  17.         DATA = 1;    //DQ復(fù)位
  18.         delay(10);  //稍做延時
  19.         DATA = 0;    //單片機(jī)將DQ拉低
  20.         delay(80); //精確延時 大于 480us    //450
  21.         DATA = 1;    //拉高總線
  22.         delay(20);
  23.         x=DATA;      //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗
  24.         delay(30);
  25. }
  26. //讀一個字節(jié)
  27. ReadOneChar(void)
  28. {
  29.         uchar i=0;
  30.         uchar dat = 0;
  31.         for (i=8;i>0;i--)
  32.         {
  33.                 DATA = 0; // 給脈沖信號
  34.                 dat>>=1;
  35.                 DATA = 1; // 給脈沖信號
  36.                 if(DATA)
  37.                 dat|=0x80;
  38.                 delay(8);
  39.         }
  40.         return(dat);
  41. }
  42. //寫一個字節(jié)
  43. WriteOneChar(unsigned char dat)
  44. {
  45.         uchar i=0;
  46.         for (i=8; i>0; i--)
  47.         {
  48.                 DATA = 0;
  49.                 DATA = dat&0x01;
  50.                 delay(10);
  51.                 DATA = 1;
  52.                 dat>>=1;
  53.         }
  54.         delay(8);
  55. }
  56. //讀取溫度
  57. int ReadTemperature(void)
  58. {
  59.         uchar a=0;
  60.         uchar b=0;
  61.         int t=0;
  62.         float tt=0;
  63.         Init_DS18B20();
  64.         WriteOneChar(0xCC); // 跳過讀序號列號的操作
  65.         WriteOneChar(0x44); // 啟動溫度轉(zhuǎn)換
  66.         Init_DS18B20();
  67.         WriteOneChar(0xCC); //跳過讀序號列號的操作
  68.         WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度
  69.         a=ReadOneChar();//低位
  70.         b=ReadOneChar();//高位
  71.         t=b;
  72.         t<<=8;
  73.         t=t|a;
  74.         tt=t*0.0625;
  75.         t= tt*10+0.5;
  76.         return(t);
  77. }
  78. /*顯示子函數(shù)*/
  79. void  display(int bai,int shi,int ge)
  80. {
  81.         P3=0XFB; //顯示小數(shù)點(diǎn)
  82.         P1=0X80; //顯示小數(shù)點(diǎn)
  83.         delay(50);//顯示小數(shù)點(diǎn)
  84.         P3=0xf7;
  85.         P1=table[bai];//顯示千位
  86.         delay(50);//一小段延時動態(tài)顯示
  87.         P1=0x00;//消隱
  88.         P3=0xfb;
  89.         P1=table[shi];//顯示百位
  90.         delay(50);
  91.         P1=0x00;//消隱
  92.         P3=0xfd;
  93.         P1=table[ge];//顯示十位
  94.         delay(50);
  95.         P1=0x00;//消隱
  96. }
  97. void  main()
  98. {
  99.         int  temp;
  100.         while(1)
  101.         {  
  102.                 temp=ReadTemperature();//讀溫度
  103.                 bai=temp%1000/100;//顯示百位
  104.                 shi=temp%100/10;//顯示十位
  105.                 ge=temp%10;//顯示個位

  106.                 display(bai,shi,ge);//顯示函數(shù)
  107.         }  
  108. }
  109. /////////////////////////////

復(fù)制代碼
ID:185367 發(fā)表于 2017-5-28 17:28
P3掃描顯示完畢之后清屏試試
ID:162136 發(fā)表于 2017-5-28 16:17
動態(tài)掃描時,每一位數(shù)碼管點(diǎn)亮的時間差別太多,所以亮度差別很多,在亮度不夠的數(shù)碼管點(diǎn)亮程序后加上幾毫秒的延時就可以了。
ID:205617 發(fā)表于 2017-5-28 14:33
直接加個數(shù)字邏輯芯片就好了
ID:47933 發(fā)表于 2017-5-28 09:45
排阻沒有問題,問題是排阻的值太大,可并聯(lián)一個3k-10k的排阻,即可排除故障并大幅提高亮度。
這是我最近做試驗(yàn)剛得出的經(jīng)驗(yàn):
http://www.zg4o1577.cn/bbs/dpj-84657-1.html
ID:205555 發(fā)表于 2017-5-28 09:22
不是阻排問題
ID:197962 發(fā)表于 2017-5-27 23:33

#include<reg52.h>
#include <intrins.h>
#define  uchar  unsigned  char
#define  uint   unsigned  int
sbit  DATA = P3^7; //DS18B20接入口
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
char  bai,shi,ge; //定義變量
/*延時子函數(shù)*/
void delay(uint num)
{
while(num--) ;
}
/*************DS18b20溫度傳感器函數(shù)*********************/
Init_DS18B20(void)     //傳感器初始化
{
  uchar x=0;
  DATA = 1;    //DQ復(fù)位
  delay(10);  //稍做延時
  DATA = 0;    //單片機(jī)將DQ拉低
  delay(80); //精確延時 大于 480us    //450
  DATA = 1;    //拉高總線
  delay(20);
  x=DATA;      //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗
  delay(30);
}
//讀一個字節(jié)
ReadOneChar(void)
{
uchar i=0;
uchar dat = 0;
for (i=8;i>0;i--)
  {
    DATA = 0; // 給脈沖信號
    dat>>=1;
    DATA = 1; // 給脈沖信號
    if(DATA)
     dat|=0x80;
    delay(8);
  }
  return(dat);
}
//寫一個字節(jié)
WriteOneChar(unsigned char dat)
{
  uchar i=0;
  for (i=8; i>0; i--)
  {
    DATA = 0;
    DATA = dat&0x01;
   delay(10);
   DATA = 1;
   dat>>=1;
  }
delay(8);
}
//讀取溫度
int ReadTemperature(void)
{
uchar a=0;
uchar b=0;
int t=0;
float tt=0;
Init_DS18B20();
WriteOneChar(0xCC); // 跳過讀序號列號的操作
WriteOneChar(0x44); // 啟動溫度轉(zhuǎn)換
Init_DS18B20();
WriteOneChar(0xCC); //跳過讀序號列號的操作
WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度
a=ReadOneChar();//低位
b=ReadOneChar();//高位
t=b;
t<<=8;
t=t|a;
tt=t*0.0625;
t= tt*10+0.5;
return(t);
}
/*顯示子函數(shù)*/
void  display(int bai,int shi,int ge)
{
P3=0XFB; //顯示小數(shù)點(diǎn)
P1=0X80; //顯示小數(shù)點(diǎn)
delay(50);//顯示小數(shù)點(diǎn)
P3=0xf7;
P1=table[bai];//顯示千位
delay(50);//一小段延時動態(tài)顯示
P3=0xfb;
P1=table[shi];//顯示百位
delay(50);
P3=0xfd;
P1=table[ge];//顯示十位
delay(50);
}
void  main()
{
int  temp;
while(1)
{  
  temp=ReadTemperature();//讀溫度
  bai=temp%1000/100;//顯示百位
  shi=temp%100/10;//顯示十位
  ge=temp%10;//顯示個位
  
  display(bai,shi,ge);//顯示函數(shù)
}  
}
/////////////////////////////
不是排阻問題,程序如何修改?
多謝
ID:197962 發(fā)表于 2017-5-27 23:30

#include<reg52.h>
#include <intrins.h>
#define  uchar  unsigned  char
#define  uint   unsigned  int
sbit  DATA = P3^7; //DS18B20接入口
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
char  bai,shi,ge; //定義變量
/*延時子函數(shù)*/
void delay(uint num)
{
while(num--) ;
}
/*************DS18b20溫度傳感器函數(shù)*********************/
Init_DS18B20(void)     //傳感器初始化
{
  uchar x=0;
  DATA = 1;    //DQ復(fù)位
  delay(10);  //稍做延時
  DATA = 0;    //單片機(jī)將DQ拉低
  delay(80); //精確延時 大于 480us    //450
  DATA = 1;    //拉高總線
  delay(20);
  x=DATA;      //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗
  delay(30);
}
//讀一個字節(jié)
ReadOneChar(void)
{
uchar i=0;
uchar dat = 0;
for (i=8;i>0;i--)
  {
    DATA = 0; // 給脈沖信號
    dat>>=1;
    DATA = 1; // 給脈沖信號
    if(DATA)
     dat|=0x80;
    delay(8);
  }
  return(dat);
}
//寫一個字節(jié)
WriteOneChar(unsigned char dat)
{
  uchar i=0;
  for (i=8; i>0; i--)
  {
    DATA = 0;
    DATA = dat&0x01;
   delay(10);
   DATA = 1;
   dat>>=1;
  }
delay(8);
}
//讀取溫度
int ReadTemperature(void)
{
uchar a=0;
uchar b=0;
int t=0;
float tt=0;
Init_DS18B20();
WriteOneChar(0xCC); // 跳過讀序號列號的操作
WriteOneChar(0x44); // 啟動溫度轉(zhuǎn)換
Init_DS18B20();
WriteOneChar(0xCC); //跳過讀序號列號的操作
WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度
a=ReadOneChar();//低位
b=ReadOneChar();//高位
t=b;
t<<=8;
t=t|a;
tt=t*0.0625;
t= tt*10+0.5;
return(t);
}
/*顯示子函數(shù)*/
void  display(int bai,int shi,int ge)
{
P3=0XFB; //顯示小數(shù)點(diǎn)
P1=0X80; //顯示小數(shù)點(diǎn)
delay(50);//顯示小數(shù)點(diǎn)
P3=0xf7;
P1=table[bai];//顯示千位
delay(50);//一小段延時動態(tài)顯示
P3=0xfb;
P1=table[shi];//顯示百位
delay(50);
P3=0xfd;
P1=table[ge];//顯示十位
delay(50);
}
void  main()
{
int  temp;
while(1)
{  
  temp=ReadTemperature();//讀溫度
  bai=temp%1000/100;//顯示百位
  shi=temp%100/10;//顯示十位
  ge=temp%10;//顯示個位
  
  display(bai,shi,ge);//顯示函數(shù)
}  
}
//////////////////////////////
我又試了,不是排阻問題,程序如何修改?
多謝
ID:7485 發(fā)表于 2017-5-24 11:10

什么意思?
ID:198608 發(fā)表于 2017-5-23 20:37
加驅(qū)動
ID:7485 發(fā)表于 2017-5-23 17:31
把程序貼出來。開始顯示的時候,你有“位”選擇,同時就關(guān)閉了前面的一位的顯示,而最后一位顯示完后沒有再選擇其他的位,所以他就一直開著,直到下次再調(diào)用顯示程序時才改變“位”,所以最后一位很亮。這是許多新手容易忽視的問題。

最后一位顯示完后,將“位選”關(guān)閉即可。
ID:170270 發(fā)表于 2017-5-23 14:46
顯示時間問題 數(shù)碼管2MS刷新一次 差距就不明顯了 定時中斷2MS 顯示程序放中斷里 就能解決
ID:203875 發(fā)表于 2017-5-23 14:22
應(yīng)該不是排阻問題
ID:203876 發(fā)表于 2017-5-23 14:15
這背部的線路我也是醉了
ID:7485 發(fā)表于 2017-5-23 14:08
如果是全部不是太亮,可能是排阻的問題。
你的問題則不然,最后一位太亮,是因?yàn)槟愕娘@示程序停在了最后一位上,沒有關(guān)閉。直到下次顯示第一位時才關(guān)閉,比其他兩位亮的時間長所致。
ID:96682 發(fā)表于 2017-5-23 13:50
在實(shí)物上對比一下,就知道接與不接有沒有關(guān)系了

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产视频第一页 | 欧美久久大片 | 国产一区二区三区免费视频 | 成年女人免费v片 | 黄色福利 | 久久国产综合 | 国产精品中文字幕在线播放 | 一级毛片色一级 | 在线看一区二区三区 | 亚洲成人播放器 | 亚洲综合精品 | 成人免费在线电影 | 久久精彩视频 | 成人性视频免费网站 | 久久久这里只有17精品 | 日韩a视频 | 国产成人精品一区 | 国产精品永久免费视频 | 国产精品久久久久久久久久免费看 | 日韩一区二区三区精品 | 国产一区精品 | 久久y| 国产黄色在线观看 | 国产欧美视频一区二区三区 | av在线免费观看网站 | 精品欧美一区二区三区久久久 | 国产精品美女在线观看 | 亚洲精品视频一区二区三区 | 亚洲精品日韩在线 | 亚洲国产成人久久综合一区,久久久国产99 | 日韩在线91 | 亚洲午夜网 | 99精品视频一区二区三区 | 天堂久久av | 亚洲综合在 | 成人欧美一区二区 | 波多野结衣一区二区三区 | 99精品视频免费观看 | 天堂一区二区三区四区 | 毛片网在线观看 | 国产精品福利在线观看 |