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

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

QQ登錄

只需一步,快速開始

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

新人求教 做了一個(gè)顯示時(shí)間和溫度并且報(bào)警系統(tǒng),但是程序有問(wèn)題,求教

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:62717 發(fā)表于 2014-6-8 12:34 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
做了一個(gè)51的顯示時(shí)間和實(shí)時(shí)溫度并且附帶報(bào)警系統(tǒng)。但是仿真的時(shí)候只有一開始能顯示溫度,然后改變時(shí)間和溫度都無(wú)法實(shí)現(xiàn),并且報(bào)警系統(tǒng)無(wú)法實(shí)現(xiàn),求教大神。 壓縮包里附帶了程序和仿真圖。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:62717 發(fā)表于 2014-6-8 12:35 | 只看該作者
仿真圖和C程序

Desktop.zip

21.68 KB, 下載次數(shù): 39

仿真圖+程序

回復(fù)

使用道具 舉報(bào)

板凳
ID:62717 發(fā)表于 2014-6-8 12:49 | 只看該作者
/*
功能:溫度采集顯示和可調(diào)時(shí)鐘顯示,蜂鳴器報(bào)警,時(shí)鐘用中斷法實(shí)現(xiàn)
s1:選擇要調(diào)節(jié)的時(shí)、分、秒位
s2:時(shí)、分、秒加一
s3:時(shí)、分、秒減一
*/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar num,s1num,count;
uchar shi,fen,miao;
sbit rs=P2^0;
sbit e=P2^1;
sbit s1=P3^0;
sbit s2=P3^1;
sbit s3=P3^2; //按鍵定義
sbit DQ =P2^2; //定義通信端口
sbit beep=P1^0;
bit flag;
uchar code table1[]="Time: 00:00:00";
uchar code table2[]="Temperature: 'C";//1602初始化字符
void  alarm(uchar num);
void delay(uint z)//延時(shí)子函數(shù)
{
uint x,y;
for(x=z; x>0; x--)
   for(y=110;y>0;y--);
}
#include<1602.h>
#include<18b20.h>
#include<clock_set.h>
void main()
{
uchar temp;
init_1602();
while(1)
{ delay(500); //去除0秒和1秒之間顯示間隔跟正常1秒間隔相差過(guò)大
   if(miao==0)   //每分鐘進(jìn)行溫度采集一次
   {
    TR0=0;   //進(jìn)入溫度采集后,關(guān)閉定時(shí)器
    flag=1;   //flag=1,標(biāo)志進(jìn)入溫度采集模式
    write_com(0x80+0x40+13);
    write_dat(0x30+1);     //消除不顯示數(shù)字1
    temp=ReadTemperature();    //讀取DS18B20的溫度值
        alarm(temp);
    write_1602(12,temp);   //向1602中寫入溫度值
    TR0=1; //溫度采集完成后,打開定時(shí)器
    delay(100);//等待miao不等零,跳出循環(huán)
   }
   flag=0; //flag=0,標(biāo)志在時(shí)鐘顯示模式下
   keyscan(); //調(diào)用鍵盤掃描子程序,用以調(diào)整時(shí)間
}
}

void timer0() interrupt 1//定時(shí)器1的中斷服務(wù)程序,并向1602中寫時(shí)分秒顯示時(shí)間
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
count++;
if (count==18)
{
   count=0;
   miao++;
   if(miao==60)
   {
    miao=0;
    fen++;
    if(fen==60)
    {
     fen=0;
     shi++;
     if(shi==24)
     {
      shi=0;
     }
     if(flag==0) //flag=0,標(biāo)志在時(shí)鐘顯示模式下,然后才顯示時(shí)間
     write_1602(6,shi);
    }
    if(flag==0)
    write_1602(9,fen);
   }
   if(flag==0)
   write_1602(12,miao);
}
}

void  alarm(uchar num)                                                  //報(bào)警
{
  if(40>=num)
     beep=1;                                                  //在溫度允許范圍,不報(bào)警         
  else
         beep=~beep;
  return(0);
}


回復(fù)

使用道具 舉報(bào)

地板
ID:62717 發(fā)表于 2014-6-8 12:50 | 只看該作者
1602.h
void write_com(uchar com)//向1602液晶寫命令函數(shù)
{
rs=0;
e=0;
P0=com;
delay(5);
e=1;
delay(5);
e=0;
}
void write_dat(uchar dat)//向1602液晶寫入數(shù)據(jù)
{
rs=1;
e=0;
P0=dat;
delay(5);
e=1;
delay(5);
e=0;
}
void init_1602()//1602液晶的初始化
{
uchar i;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
write_com(0x80); //第一行字符的初始化
for(i=0;i<16;i++)
{
   write_dat(table2[i]);
   delay(5);
}
write_com(0x80+0x40); //第二行字符的初始化
for(i=0;i<14;i++)
   {
    write_dat(table1[i]);
    delay(5);
   }
}
void write_1602(uchar address,uchar temp_dat)//向指定的地址中寫入時(shí)、分、秒數(shù)據(jù)
{
uchar gewei,shiwei;
if(flag==0)     //若在時(shí)鐘顯示模式下,向第二行寫數(shù)據(jù)
{
   write_com(0x80+0x40+address);
}
   else
   {
    write_com(0x80+address); //若在溫度采集顯示模式下,向第一行寫數(shù)據(jù)
   }
shiwei=temp_dat/10;
gewei=temp_dat%10;
write_dat(0x30+shiwei);   //根據(jù)1602字符庫(kù)做相應(yīng)轉(zhuǎn)換
write_dat(0x30+gewei);
}
回復(fù)

使用道具 舉報(bào)

5#
ID:62717 發(fā)表于 2014-6-8 12:50 | 只看該作者
18b20.h
void delay_18b20( int i)//延時(shí)子函數(shù)
{
     while(i--);
}
//初始化DS18B20子函數(shù)
Init_DS18B20(void)
{
unsigned char x=0 ;
DQ = 1;    //DQ復(fù)位
delay_18b20(8); //稍做延時(shí)
DQ = 0;    //單片機(jī)將DQ拉低
delay_18b20(80); //精確延時(shí) 大于 480us
DQ = 1;    //拉高總線
delay_18b20(14);
x=DQ;      //稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗
delay_18b20(20);
}
//讀一個(gè)字節(jié)
ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
   DQ = 0; // 給脈沖信號(hào)
   dat>>=1;
   DQ = 1; // 給脈沖信號(hào)
   if(DQ)
     dat|=0x80;
   delay_18b20(4);
}
return(dat);
}
//寫一個(gè)字節(jié)
WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
   DQ = 0;
   DQ = dat&0x01;
   delay_18b20(5);
   DQ = 1;
   dat>>=1;
}
delay_18b20(4);
}
//讀取溫度值
ReadTemperature(void)
{
uchar a,b,t;
Init_DS18B20();
WriteOneChar(0xCC); // 跳過(guò)讀序號(hào)列號(hào)的操作
WriteOneChar(0x44); // 啟動(dòng)溫度轉(zhuǎn)換
delay(850);   //等待溫度轉(zhuǎn)換結(jié)束,不能過(guò)短,否則第一次顯示不出實(shí)際溫度,會(huì)顯示85
Init_DS18B20();
WriteOneChar(0xCC); //跳過(guò)讀序號(hào)列號(hào)的操作
WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度
a=ReadOneChar();   //讀取溫度值低位
b=ReadOneChar();   //讀取溫度值高位
a=a>>4;            //低位右移4位,舍棄小數(shù)部分
t=b<<4;            //高位左移4位,舍棄符號(hào)位
t=t|a;            
return(t);
}
回復(fù)

使用道具 舉報(bào)

6#
ID:62717 發(fā)表于 2014-6-8 12:51 | 只看該作者
clock_set.h
void keyscan()//鍵盤掃描程序
{
if(s1==0)//s1鍵掃描
{
   delay(5);
   if(s1==0)
   {
    TR0=0;
    s1num++;
    while(!s1);//等待鍵的釋放
    switch(s1num)//根據(jù)s1的按鍵次數(shù)做相應(yīng)的處理
    {
     case 1:
      write_com(0x80+0x40+12);
      write_com(0x0f); break;//按鍵一次,調(diào)整光標(biāo)的形狀及位置
     case 2:
      write_com(0x80+0x40+9); break;
     case 3:
      write_com(0x80+0x40+6); break;
     case 4:
      s1num=0;
      write_com(0x0c);
      TR0=1;break;
    }
   }
}
if(s1num)//在s1有被按下的情況下做相應(yīng)的處理
{
   if(s2==0)//s2按鍵檢測(cè),按下s2鍵后相應(yīng)的時(shí)、分、秒加1操作
   {
    delay(5);
    if(s2==0)
    {
    while(!s2);//松手檢測(cè)
     switch(s1num)
     {
      case 1:miao++;
         if(miao==60) miao=0;
         write_1602(12,miao);
         write_com(0x80+0x40+12);break;
      case 2:fen++;
         if(fen==60) fen=0;
         write_1602(9,fen);
         write_com(0x80+0x40+9);break;
      case 3:shi++;
         if(shi==24) shi=0;
         write_1602(6,shi);
         write_com(0x80+0x40+6);break;
      case 4:break;
     }
//     delay(500);//把松手檢測(cè)部分去除后,按下后時(shí)間一直增加
    }
   }
   if(s3==0)//s3按鍵檢測(cè),按下s3鍵后相應(yīng)的時(shí)、分、秒減1操作
   {
    delay(5);
    if(s3==0)
    {
     while(!s3);//松手檢測(cè)
     switch(s1num)
     {
     case 1:miao--;
        if(miao==-1) miao=59;
        write_1602(12,miao);
        write_com(0x80+0x40+12);break;
     case 2:fen--;
        if(fen==-1) fen=59;
        write_1602(9,fen);
        write_com(0x80+0x40+9);break;
     case 3:shi--;
        if(shi==-1) shi=23;
        write_1602(6,shi);
        write_com(0x80+0x40+6);break;
     case 4:break;
     }
    // delay(500);//把松手檢測(cè)部分去除后,按下后時(shí)間一直減小
    }
   }
}
}
回復(fù)

使用道具 舉報(bào)

7#
ID:62064 發(fā)表于 2014-6-17 19:26 | 只看該作者
真的蠻好的哦
回復(fù)

使用道具 舉報(bào)

8#
ID:86621 發(fā)表于 2015-8-7 17:54 | 只看該作者
你用什么顯示  啊
回復(fù)

使用道具 舉報(bào)

9#
ID:87568 發(fā)表于 2015-8-12 10:35 | 只看該作者
1678 發(fā)表于 2015-8-7 17:54
你用什么顯示  啊

他用的是1602顯示的,在開頭已經(jīng)說(shuō)明
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 午夜精品久久久久久久99黑人 | 久久久久国产精品午夜一区 | 欧美一区二区三区四区视频 | 久久久免费少妇高潮毛片 | 成人免费在线观看 | 中文字幕动漫成人 | av日韩高清 | 一区二区免费 | 日本天天操 | h视频在线播放 | 国产高清精品一区二区三区 | 国产精品久久久久久久久 | 欧美日韩在线视频一区二区 | av在线视| 精品国产精品一区二区夜夜嗨 | 国产一区二区三区 | 亚洲一二三区精品 | 一区二区三区四区日韩 | 91在线电影 | 亚洲美女视频 | 中文字幕av一区二区三区 | 日韩不卡三区 | 国产精品久久久久一区二区 | 在线一区二区三区 | 欧美精品在线播放 | 精品乱码一区二区三四区视频 | 亚洲精品视频免费观看 | 日韩一区二区三区视频 | 国产成人艳妇aa视频在线 | 欧美日韩精品久久久免费观看 | 伊人久久国产 | 在线国产一区二区 | 成人在线免费视频 | 亚洲成人一级片 | 久久精品久久精品 | 日本精品视频一区二区三区四区 | 亚洲www啪成人一区二区麻豆 | 免费影视在线观看 | 麻豆视频国产在线观看 | 免费观看毛片 | 91视频在线看 |