77范文网 - 专业文章范例文档资料分享平台

智能仪表课程设计2(5)

来源:网络收集 时间:2018-11-23 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

}

void ds1820wr(uchar wdata)/*写数据*/ {

uchar i=0;

for (i=8; i>0; i--) {

DQ = 0;

DQ = wdata&0x01; delay_18B20(10); DQ = 1; wdata>>=1; } }

read_temp()/*读取温度值并转换*/ {

uint a,b;

ds1820rst();

ds1820wr(0xcc);//*跳过读序列号*/ ds1820wr(0x44);//*启动温度转换*/ ds1820rst();

ds1820wr(0xcc);//*跳过读序列号*/ ds1820wr(0xbe);//*读取温度*/ a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue<<=8;

tvalue=tvalue|a; if(tvalue<0x08ff) tflag=0; else {

tvalue=~tvalue+1; tflag=1;

}

tvalue=tvalue*(0.0625)*10;//温度值扩大10倍,精确到1位小数 return(tvalue); }

/*******************************************************************/ void ds1820disp()//温度值显示 {

uchar flagdat;

disdata[0]=tvalue/1000+0x30;//百位数 disdata[1]=tvalue00/100+0x30;//十位数 disdata[2]=tvalue0/10+0x30;//个位数

19

disdata[3]=0x2e;

disdata[4]=tvalue+0x30;//小数位 if(tflag==0)

flagdat=0x20;//正温度不显示符号 else

flagdat=0x2d;//负温度显示负号:-

if(disdata[0]==0x30) {

disdata[0]=0x20;//如果百位为0,不显示 if(disdata[1]==0x30) {

disdata[1]=0x20;//如果百位为0,十位为0也不显示 } }

wr_com(0x80+4);

wr_dat(flagdat);//显示符号位 wr_com(0x81+4);

wr_dat(disdata[0]);//显示百位 wr_com(0x82+4);

wr_dat(disdata[1]);//显示十位 wr_com(0x83+4);

wr_dat(disdata[2]);//显示个位 wr_com(0x84+4);

wr_dat(0x2e);//显示小数点 wr_com(0x85+4);

wr_dat(disdata[4]);//显示小数位 wr_com(0x86+4); wr_dat(0x43); }

void zeroff(uchar *p) //灭0处理 {

uchar i;

for(i=0;i<5;i++) {

if(*p==0) {*p=10;p++;} else break; } }

void teL_dis(uint value) {

20

uchar i;

val_sp[0] = value/10; val_sp[1] = value; wr_com(0xc0+12); zeroff(val_sp); for(i=0;i<2;i++) {

wr_dat(dis3[val_sp[i]]); } }

void teH_dis(uint fre) {

uchar i;

fre_sp[0] = fre/10; fre_sp[1] = fre; wr_com(0xc0+4); zeroff(fre_sp); for(i=0;i<2;i++) {

wr_dat(dis3[fre_sp[i]]); } }

void settings(void) //设置 { s1num++; if(s1num == 1)

{teH_dis(teH);//wr_com(0x0f); }

else if(s1num == 2)

{teL_dis(teL);//wr_com(0x0f); } else {

s1num = 0; wr_com(0x0c); teL_dis(teL); teH_dis(teH); } }

void add(void) //加 {

if(s1num == 1) {

21

teL++;

if(teL == 36) teL = 0;

teL_dis(teL); }

if(s1num == 2) {

teH++;

if(teH == 51) teH = 10; teH_dis(teH); } }

void minus(void) //减 {

if(s1num == 1) {

teL--;

if(teL == -1) teL = 35; teL_dis(teL); }

if(s1num == 2) {

teH--;

if(teH == 9) teH = 50; teH_dis(teH); } }

void guangbiao() {

if(s1num==1) {wr_com(0xc0+13);wr_com(0x0f);} if(s1num==2) {wr_com(0xc0+5);wr_com(0x0f);} }

22

void comm(char*parr) { do{

SBUF=*parr++;//发送数据

while(!TI);//等待发送完成标志为一 TI=0;//标志请0 }

while(*parr);//保持循环直到字符为'\\0' }

void initUart(void) {

SCON=0x50;

RCAP2H=(65536-(3456/96))>>8; RCAP2L=(65536-(3456/96))%6; T2CON=0x34; TI=1;}

void Uart() {

TMOD=0x10; TH1=-10000>>8;TL1=-10000%6; TCON=0x40; IE=0x88; }

//*************************报警程序**************************/ void baojing2()

{ if(teL>teH){L=0;H=0;yin_main1();yin_main2();//BEEP=0; } else{

if((read_temp()/10)

{L = 0;yin_main1();//BEEP=0;//delay1ms(10); L=1;yin_main2();//BEEP=1;delay1ms(10) ; }

else {//{L=1;BEEP=1;} if((read_temp()/10)>teH)

{H = 0;yin_main1();//BEEP=0;delay1ms(10); H=1;yin_main2();//BEEP=1;delay1ms(10); }

else {H=1;L=1;BEEP=1;} }} }

void keyscan()

{if(!SET) { delay1ms(5);if(!SET) {settings();while(!SET);}}

23

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库智能仪表课程设计2(5)在线全文阅读。

智能仪表课程设计2(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/303150.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: