基于51单片机的温度测试系统+有VB上位机Word文件下载.docx
- 文档编号:8318568
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:31
- 大小:20.31KB
基于51单片机的温度测试系统+有VB上位机Word文件下载.docx
《基于51单片机的温度测试系统+有VB上位机Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于51单片机的温度测试系统+有VB上位机Word文件下载.docx(31页珍藏版)》请在冰点文库上搜索。
ucharcodetable3[]="
alarmclock
sbitds_clk=P3^6;
sbitds_io=P3^7;
sbitds_rst=P1^4;
sbitlcdrs=P1^0;
sbitlcdrw=P1^1;
sbitlcden=P1^2;
sbitscl=P3^2;
sbitsda=P3^3;
sbitACC_7=ACC^7;
sbitP34=P3^4;
bitalarm=0;
//闹钟标志位
bitstop_alarm=0;
//停止闹钟标志位
uchari,j;
ucharth,tl;
//温度上下限
uintth1,th2,tl1,tl2;
ucharmin,hour,sec;
//闹钟时分秒
uintmin1,min2,hour1,hour2,sec1,sec2;
voiddelay(uinti)
{
uintj;
for(;
i>
0;
i--)
for(j=0;
j<
110;
j++);
}
/***********************************************************************************************
DS1302部分
**************************************************************************************************/
chars,s1,s2;
//时钟秒
charm,m1,m2;
//分
charh,h1,h2;
//时
charday;
//星期
chardate,date1,date2;
//日期
charmon,mon1,mon2;
//月
charyear,year1,year2;
//年
voidwrite_ds(ucharadd,uchardate)//向ds1302指定地址写数据
{
uchari,temp;
ds_rst=0;
ds_clk=0;
ds_rst=1;
for(i=8;
i>
i--)
{
ds_clk=0;
temp=add;
ds_io=temp&
0x01;
add>
>
=1;
ds_clk=1;
}
temp=date;
ds_io=temp&
date>
ds_rst=0;
}
ucharread_ds(ucharadd)
//ds1302指定地址读数据
unsignedchari,temp,date1;
i--)
ds_io=temp&
i--)//这里要注意
{
ACC_7=ds_io;
ACC>
=1;
date1=ACC;
returndate1;
voidinit_ds()
//初始化ds1302
write_ds(0x8e,0x00);
//关闭写保护
write_ds(0x80,0x22);
//初始化秒
write_ds(0x82,0x59);
//分
write_ds(0x84,0x23);
//时
write_ds(0x86,0x21);
//日
write_ds(0x88,0x05);
write_ds(0x8a,0x06);
//星期
write_ds(0x8c,0x11);
//年
write_ds(0x8e,0x80);
//开写保护
voidread_all()
//读s,m,h,date,mon,year,day
s=read_ds(0x81);
s1=s/16;
s2=s%16;
m=read_ds(0x83);
m1=m/16;
m2=m%16;
h=read_ds(0x85);
h1=h/16;
h2=h%16;
date=read_ds(0x87);
date1=date/16;
date2=date%16;
mon=read_ds(0x89);
mon1=mon/16;
mon2=mon%16;
day=read_ds(0x8b);
year=read_ds(0x8d);
year1=year/16;
year2=year%16;
1602部分
voidwrite_com(ucharcom)
//写命令
lcdrs=0;
lcden=0;
P0=com;
delay(5);
lcden=1;
voidwrite_date(uchardate)//写数据
lcdrs=1;
P0=date;
voidinit_1602()//初始化1602
lcdrw=0;
write_com(0x01);
write_com(0x38);
write_com(0x0f);
write_com(0x06);
for(i=0;
i<
16;
i++)
write_date(table[i]);
delay(10);
write_com(0x80+0x40);
write_date(table1[i]);
write_com(0x80+0x40+0x0e);
write_date(0xdf);
write_date('
c'
);
EEPROM部分
voiddelay1()
{;
;
}
voidinit()//初始化总线
sda=1;
delay1();
scl=1;
voidstart()//开始函数
sda=0;
voidstop()//停止函数
voidrespons()//应答
uchari;
while(sda==1&
&
250)i++;
scl=0;
voidwrite_byterom(uchardate)//向eeprom中写一字节数据
8;
date=date<
<
1;
sda=CY;
}
ucharread_byterom()//从eeprom中读一字节数据
uchari,temp;
temp<
temp|=sda;
returntemp;
voidwrite_add(ucharadd,uchardate)//指定地址写数据
start();
write_byterom(0xa0);
respons();
write_byterom(add);
write_byterom(date);
stop();
ucharread_add(ucharadd)//指定地址读数据
uchartemp;
write_byterom(0xa1);
temp=read_byterom();
ds18b20部分
sbitDQ=P3^5;
voiddelay2(uchari)
while(i--);
voidinit_ds18b20()//初始化ds18b20
DQ=1;
delay2(8);
DQ=0;
delay2(80);
while(DQ==1&
255)i++;
delay2(35);
delay2(20);
voidwrite_byte(uchardat)//向ds18b20中写一字节
delay2
(1);
delay2
(1);
DQ=dat&
delay2(5);
dat>
delay2(4);
ucharread_byte()//从ds18b20中读一字节
uchari,dat=0;
if(DQ)dat=dat|0X80;
returndat;
ucharread_temp()//读温度函数
uchara,b,c;
init_ds18b20();
write_byte(0xcc);
write_byte(0x44);
write_byte(0xbe);
a=read_byte();
b=read_byte();
c=(b<
4)|(a>
4);
returnc;
ucharread_th()//读上限函数
c=read_byte();
ucharread_tl()//读下限函数
键盘部分(P2^0~P2^3)
voidkeyscan()
uchartemp,num1,num2;
temp=P2;
temp&
=0x0f;
if(temp!
=0x0f)
//消抖
=0x0f)
if(temp==0x0e)
{
num1=1;
write_ds(0x80,s|0x80);
//禁止写保护
while(temp==0x0e)//松手检测
while
(1)
delay(5);
num1++;
if(num1==1)
write_com(0x80+0x40+0x08);
//光标闪烁
if(temp==0x0d)
while(temp==0x0d)//松手检测
s2+=1;
if(s2==10)
s2=0;
s1+=1;
if(s1==6)s1=0;
write_com(0x80+0x40+0x07);
write_date(table2[s1]);
write_date(table2[s2]);
write_ds(0x80,s1*16+s2);
//向ds1302中写入秒
elseif(temp==0x0b)
if(temp==0x0b)
while(temp==0x0b)//松手检测
//读ds1302秒
s2-=1;
if(s2==-1)
s2=9;
s1-=1;
if(s1==-1)s1=5;
if(num1==2)
write_com(0x80+0x40+0x05);
//从ds1302中读分
m2+=1;
if(m2==10)
m2=0;
m1+=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 温度 测试 系统 VB 上位