久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
51單片機溫控風扇并顯示時鐘的源程序
[打印本頁]
作者:
huangsongwqq
時間:
2017-10-7 10:48
標題:
51單片機溫控風扇并顯示時鐘的源程序
單片機課大作業(yè),溫控風扇并能顯示時間日期
0.png
(47.21 KB, 下載次數(shù): 56)
下載附件
2017-10-7 23:01 上傳
單片機源程序如下:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#include"lcd.h"
#include"temp.h"
#include"ds1302.h"
uchar ChCh[10] = "HUANG SONG";
uchar num=0;
uchar j;
uint tp;
uint temp;
uchar a,b;
uchar datas[] = {0, 0, 0, 0, 0}; //定義數(shù)組
void LcdDisplay(int);
#define LCD1602_DATAPINS P0
////////////////////
sbit beep=P2^4;
sbit dj=P2^1;//電機控制端接口
sbit DQ=P3^7;//溫度傳感器接口
//////////按鍵接口/////////////////////////////////
sbit key1=P3^0;//設置溫度
sbit key2=P3^1;//溫度加
sbit key3=P3^2;//溫度減
//////////////////////////////////////////////////////
sbit w1=P3^3;
sbit w3=P2^2;
sbit w4=P2^3;
sbit LE=P2^0;
/////共陰數(shù)碼管段選//////////////////////////////////////////////
uchar table[22]=
{0x3F,0x06,0x5B,0x4F,0x66,
0x6D,0x7D,0x07,0x7F,0x6F,
0x77,0x7C,0x39,0x5E,0x79,0x71,
0x00,0x38,0x76,0x00,0xff,0x37};//'-',L,H,滅,全亮,n 16-21
int wen_du=0;
uchar gao,di;//pwm
uint shang,xia; //對比溫度暫存變量
uchar dang,dang1;//檔位顯示
uchar flag;
uchar d1,d2,d3;//顯示數(shù)據(jù)暫存變量
void delay(uint ms)
{
uint i,j;
for(i=ms;i>0;i--)
for(j=110;j>0;j--);
}
/***********ds18b20延遲子函數(shù)(晶振12MHz )*******/
void display()//顯示溫度
{
w1=0;P1=table[d1];LE=1;LE=0;delay(1); w1=1;//第1位
P1=0x00;LE=1;LE=0;
w3=0;P1=table[d2]; LE=1;LE=0; delay(1);w3=1;//第3位
P1=0x00;LE=1;LE=0;
w4=0;P1=table[d3]; LE=1;LE=0; delay(1);w4=1;//第4位
P1=0x00;LE=1;LE=0;
}
void zi_keyscan()//自動模式按鍵掃描函數(shù)
{
if(key1==0)
{
delay(1);
if(key1==0)flag=1;
while(key1==0);//松手檢測
}
while(flag==1)
{
d1=18;d2=shang/10;d3=shang%10;
display();
if(key1==0)
{
delay(0.1);
if(key1==0)flag=2;
while(key1==0);//松手檢測
}
if(key2==0)
{
delay(0.1);
if(key2==0)
{
shang+=1;
if(shang>=100)shang=100;
}while(key2==0);//松手檢測
}
if(key3==0)
{
delay(0.1);
if(key3==0)
{
shang-=1;
if(shang<=10)shang=10;
}while(key3==0);//松手檢測
}
}
while(flag==2)
{
d1=17;d2=xia/10;d3=xia%10;
display();
if(key1==0)
{
delay(0.1);
if(key1==0)flag=0;
while(key1==0);//松手檢測
}
if(key2==0)
{
delay(0.1);
if(key2==0)
{
xia+=1;
if(xia>=95)xia=95;
}while(key2==0);//松手檢測
}
if(key3==0)
{
delay(0.1);
if(key3==0)
{
xia-=1;
if(xia<=0)xia=0;
}while(key3==0);//松手檢測
}
}
}
void zi_dong()//自動溫控模式
{
uchar i;
d1=dang;d2=16;d3=16;
zi_keyscan();//按鍵掃描函數(shù)
display();
if(wen_du<xia){dj=0;dang=0;}//低于下限 停止
if((wen_du>=xia)&&(wen_du<=shang))//1擋
{
dang=1;
for(i=0;i<10;i++){dj=0;display();}
for(i=0;i<10;i++){dj=1;display();}
zi_keyscan();
}
if(wen_du>shang){dj=1;dang=2;display();}//高溫全速
}
unsigned int i=0;
void main()
{
TMOD= 0x01; //配置T0為模式1
TL0=0x00;
TH0=0xDC;
TF0 = 0;
EA=1;
ET0=1;
TR0=1;
beep=1;
dj=0;
shang=30;
xia=20; //初始化LCD1602
LcdInit();
Ds1302Init();
LcdWriteCom(0xc6); //寫地址 80表示初始地址
LcdWriteData('C');
tp=Ds18b20ReadTemp();
Ds1302ReadTime();
display();
while(1)
{
temp=tp*0.0625*100+0.5;
a=temp % 10000 / 1000;
b=temp % 1000 / 100;
wen_du=a*10+b;
LcdDisplay(tp);
Delay1ms(100);//1s鐘刷一次
}
}
void T0_time() interrupt 1
{
TL0=0x00;
TH0=0xDC;
TF0=0;
TR0=0;
tp=Ds18b20ReadTemp();
Ds1302ReadTime();
dang1=dang;
if(dang1==2)
{beep=~beep;
num=num++;
if(num==10)dang1=0;}
display();
zi_dong();
TR0=1;
}
void LcdDisplay(int temp) //lcd顯示
{
unsigned char datas[] = {0, 0, 0, 0, 0}; //定義數(shù)組
float tp;
if(temp< 0) //當溫度值為負數(shù)
{
LcdWriteCom(0xc0); //寫地址 80表示初始地址
LcdWriteData('-'); //顯示負
//因為讀取的溫度是實際溫度的補碼,所以減1,再取反求出原碼
temp=temp-1;
temp=~temp;
tp=temp;
temp=tp*0.0625*100+0.5;
//留兩個小數(shù)點就*100,+0.5是四舍五入,因為C語言浮點數(shù)轉換為整型的時候把小數(shù)點
//后面的數(shù)自動去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進1了,小于0.5的就
//算由?.5,還是在小數(shù)點后面。
}
else
{
LcdWriteCom(0xc0); //寫地址 80表示初始地址
LcdWriteData('+'); //顯示正
tp=temp;//因為數(shù)據(jù)處理有小數(shù)點所以將溫度賦給一個浮點型變量
//如果溫度是正的那么,那么正數(shù)的原碼就是補碼它本身
temp=tp*0.0625*100+0.5;
//留兩個小數(shù)點就*100,+0.5是四舍五入,因為C語言浮點數(shù)轉換為整型的時候把小數(shù)點
//后面的數(shù)自動去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進1了,小于0.5的就
//算加上0.5,還是在小數(shù)點后面。
}
datas[0] = temp / 10000;
datas[1] = temp % 10000 / 1000;
datas[2] = temp % 1000 / 100;
datas[3] = temp % 100 / 10;
datas[4] = temp % 10;
LcdWriteCom(0xc1); //寫地址 80表示初始地址
LcdWriteData('0'+datas[1]); //十位
LcdWriteCom(0xc2); //寫地址 80表示初始地址
LcdWriteData('0'+datas[2]); //個位
LcdWriteCom(0xc3); //寫地址 80表示初始地址
LcdWriteData('.'); //顯示 ‘.’
LcdWriteCom(0xc4); //寫地址 80表示初始地址
LcdWriteData('0'+datas[3]); //顯示小數(shù)點
LcdWriteCom(0xc5); //寫地址 80表示初始地址
LcdWriteData('0'+datas[4]); //顯示小數(shù)點
LcdWriteCom(0x80);
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
51單片機溫控風扇源程序.zip
(69.97 KB, 下載次數(shù): 28)
2017-10-7 10:46 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
久久久综合精品
|
国产伦精品一区二区三区照片91
|
国产亚洲一区二区三区
|
国产精品爱久久久久久久
|
久久男人
|
www.99re
|
欧美精品一区二区在线观看
|
成人av免费播放
|
精品综合在线
|
欧美激情久久久
|
亚洲精品久久久久中文字幕二区
|
一区二区福利视频
|
久久的色
|
国产精品毛片一区二区在线看
|
国产福利小视频
|
日韩精品一区二区三区中文在线
|
久久久国产精品视频
|
色爱av
|
亚洲精品电影在线观看
|
国产精品久久久
|
re久久
|
日本午夜精品一区二区三区
|
成人欧美一区二区三区视频xxx
|
91影院在线观看
|
国产精品www
|
av网站在线免费观看
|
视频一区在线观看
|
视频1区2区
|
亚洲午夜精品视频
|
亚洲综合色丁香婷婷六月图片
|
国产成人精品网站
|
天天爽夜夜操
|
97色在线视频
|
7777奇米影视
|
久久久男人的天堂
|
国产婷婷综合
|
国产精品99久久久久久www
|
欧美亚洲一区二区三区
|
在线四虎
|
伊人狠狠操
|
一级做a爰片久久毛片
|