网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
04月25日
漏签
0
天
盐城中学吧
关注:
18,705
贴子:
693,341
看贴
图片
吧主推荐
视频
游戏
22
回复贴,共
1
页
<<返回盐城中学吧
>0< 加载中...
无技术贴系列·小型保鲜箱(冰箱)
只看楼主
收藏
回复
cs538138
高考在即
14
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
做着玩的,然后老师说拿去系里展柜里展览,但由于体积太大放不下,便作罢。
cs538138
高考在即
14
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
沙布剌基
考试频繁
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
无人疼系列
来姐
倒数百日
13
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
人赢
--From Google™ NE❎US 5
dfwcy3553817
日渐孤独
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
stc89c52
12864
cs538138
高考在即
14
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
主程序
#include "reg52.h"
#include "stdio.h"
#include "string.h"
#include "ds~18b20.h"
#include "intrins.h"
sbit LCD_RS=P1^0;
sbit LCD_RW=P1^1;
sbit LCD_E=P1^2;
sbit PSB =P1^6;
sbit led=P1^4;
sbit key1=P3^7;
sbit key2=P3^6;
#define LCD_Data P0
#define Busy 0x80
void WriteDataLCD(unsigned char WDLCD);
void WriteCommandLCD(unsigned char WCLCD,BuysC);
unsigned char ReadDataLCD(void);
unsigned char ReadStatusLCD(void);
void LCDInit(void);
void LCDClear(void);
void LCDFlash(void);
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char *DData);
void Delay5Ms(void);
void Delay400Ms(void);
void mystrrev(char string[]);
void delay(void);
int wendu();
unsigned char W[]={"温度:"} ;
unsigned char q[10] ;
unsigned char o[10] ;
unsigned char E[]={"℃"} ;
unsigned char l[]={"预设温度:"} ;
void main(void)
{
int a=0,y=0;
int j,r;
unsigned int i=0;
int f=26;
int ltemp;
int b=15;
int c=0;
Delay400Ms();
LCDInit();
Delay5Ms();
while(1)
{
if(i==0)
tmpchange();
if(i==100)
ltemp=tmp()/16;
i++;
if(i==101)
i=0;
if(key1==0)
{
Delay5Ms();
Delay5Ms();
if(key1==0)
{
b++;
}
Delay5Ms();
Delay5Ms();
Delay5Ms();
Delay5Ms();
}
if(key2==0)
{
Delay5Ms();
Delay5Ms();
if(key2==0)
{
b--;
}
Delay5Ms();
Delay5Ms();
Delay5Ms();
Delay5Ms();
}
if(b==10)
b=11;
if(b==20)
b=19;
r=b;
if(ltemp>=r)
{
led=0;
}
if(ltemp<r)
{
led=1;
}
y=0;
while(r!=0)
{
o[y]=r%10+48;
r=r/10;
y++;
}
mystrrev(o);
// DisplayListChar(5,2,o);
/************************************按键****************/
if(i==0)
tmpchange();
if(i==100)
ltemp=tmp()/16;
i++;
if(i==101)
i=0;
a=0;
j=ltemp;
// if(ltemp<=f)
// {
// led=0;
// }
// if(ltemp>f)
// {
// led=1;
// }
while(j!=0)
{
q[a]=j%10+48;
j=j/10;
a++;
}
mystrrev(q);
LCDClear();
DisplayListChar(0,1,W);
DisplayListChar(3,1,q);
DisplayListChar(4,1,E);
DisplayListChar(5,2,o);
DisplayListChar(0,2,l);
DisplayListChar(6,2,E);
Delay400Ms();
}
}
void WriteDataLCD(unsigned char WDLCD)
{
ReadStatusLCD();
LCD_RS = 1;
LCD_RW = 0;
LCD_Data = WDLCD;
LCD_E = 1;
LCD_E = 1;
LCD_E = 0;
}
void WriteCommandLCD(unsigned char WCLCD,BuysC)
{
if (BuysC)
ReadStatusLCD();
LCD_RS = 0;
LCD_RW = 0;
LCD_Data = WCLCD;
LCD_E = 1;
LCD_E = 1;
LCD_E = 0;
}
unsigned char ReadDataLCD(void)
{
unsigned char LCDDA;
LCD_RS = 1;
LCD_RW = 1;
LCD_E = 1;
LCD_E = 1;
LCDDA=LCD_Data;
LCD_E = 0;
return(LCDDA);
}
unsigned char ReadStatusLCD(void)
{
LCD_Data = 0xFF;
LCD_RS = 0;
LCD_RW = 1;
LCD_E = 1;
LCD_E = 1;
while (LCD_Data & Busy);
LCD_E = 0;
return(1);
}
void LCDInit(void)
{
WriteCommandLCD(0x30,1);
WriteCommandLCD(0x01,1);
WriteCommandLCD(0x06,0);
WriteCommandLCD(0x0C,1);
}
void LCDClear(void)
{
WriteCommandLCD(0x01,1);
WriteCommandLCD(0x34,1);
WriteCommandLCD(0x30,1);
}
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
if(Y<1)
Y=1;
if(Y>4)
Y=4;
X &= 0x0F;
switch(Y)
{
case 1:X|=0X80;break;
case 2:X|=0X90;break;
case 3:X|=0X88;break;
case 4:X|=0X98;break;
}
WriteCommandLCD(X, 0);
WriteDataLCD(DData);
}
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char *DData)
{
unsigned char ListLength,X2;
ListLength = 0;
X2=X;
if(Y<1)
Y=1;
if(Y>4)
Y=4;
X &= 0x0F;
switch(Y)
{
case 1:X2|=0X80;break;
case 2:X2|=0X90;break;
case 3:X2|=0X88;break;
case 4:X2|=0X98;break;
}
WriteCommandLCD(X2, 1);
while (DData[ListLength]>=0x20)
{
if (X <= 0x0F)
{
WriteDataLCD(DData[ListLength]);
ListLength++;
X++;
}
}
}
void Delay5Ms(void)
{
unsigned int TempCyc = 55520;
while(TempCyc--);
}
void Delay400Ms(void)
{
unsigned char TempCycA = 5;
unsigned int TempCycB;
while(TempCycA--){
TempCycB=6000;
while(TempCycB--);
}
}
void mystrrev(char string[])
{
int len = strlen(string);
int i;
char temp;
for (i = 0; i < len / 2; i++)
{
temp = string[i];
string[i] = string[len-i-1];
string[len-i-1] = temp;
}
}
cs538138
高考在即
14
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
ds18b20.h
/****DS18B20.H****/
/********宏定义***********************************************************/
#define uchar unsigned char
#define uint unsigned int
/********IO引脚定义***********************************************************/
sbit DS=P3^2; //定义DS18B20接口
/*************延时子函数 *******************************************/
void delayb(uint count)
{
uint i;
while(count)
{
i=200;
while(i>0)
i--;
count--;
}
}
/*************DS18B20初始化*******************************************/
void dsreset(void)
{
uint i;
DS=0;
i=1300;
while(i>0)i--;
DS=1;
i=50;
while(i>0)i--;
}
/*************读一位*************************************************/
bit tmpreadbit(void)
{
uint i;
bit dat;
DS=0;
i++; i++;
i++;i++;i++;//小延时一下
DS=1;
i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;
dat=DS;
i=100;
while(i>0)i--;
return (dat);
}
/*************读一个字节*************************************************/
uchar tmpread(void)
{
uchar i,j,dat;
dat=0;
for(i=1;i<=8;i++)
{
j=tmpreadbit();
dat=(j<<7)|(dat>>1); //读出的数据最低位在最前面,这样刚好//一个字节在DAT里
}
return(dat); //将一个字节数据返回
}
/*************写一个字节*************************************************/
void tmpwritebyte(uchar dat)
{
uint i;
uchar j;
bit testb;
for(j=1;j<=8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if(testb) // 写1部分
{
DS=0;
i++;i++;i++;i++;i++;i++;i++;i++;i++;
DS=1;
i=100;
while(i>0)i--;
}
else
{
DS=0; //写0部分
i=100;
while(i>0)i--;
DS=1;
i++;i++;i++;i++;i++;i++;i++;i++;i++;
}
}
}
/***********发送温度转换命令***********************************************/
void tmpchange(void)
{
dsreset(); //初始化DS18B20
delayb(12); //延时
tmpwritebyte(0xcc); // 跳过序列号命令
tmpwritebyte(0x44); //发送温度转换命令
}
/***********获得温度*******************************************************/
int tmp()
{
int temp;
uchar a,b;
dsreset();
delayb(12);
tmpwritebyte(0xcc);
tmpwritebyte(0xbe); //发送读取数据命令
a=tmpread(); //连续读两个字节数据
b=tmpread();
temp=b;
temp<<=8;
temp=temp|a; //两字节合成一个整型变量。
return temp; //返回温度值
}
/*******读取温度传感器的序列号***************************************************/
void readrom()//本程序中没有用到此函数
{
uchar sn1,sn2;
dsreset();
delayb(1);
tmpwritebyte(0x33);
sn1=tmpread();
sn2=tmpread();
}
幽幽火凤凰
忙忙碌碌
10
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
目测楼主以后一定会被高科技公司录取
流夏青柠
心力交瘁
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
人赢
圆子zzzzzz
忙忙碌碌
10
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
技术宅666
精灵间的传言
倒数百日
13
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
开源了。。。
成海聖奈-
倒数百日
13
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
寂寞时光没痕迹
日渐孤独
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
好厉害!
Alexisalv
日渐孤独
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
厉害厉害
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示