(3/3)我不知道 唐笑 mp3!

求程序解析(3/3)_百度知道
求程序解析(3/3)
/***********************************************************************/ void delay(unsigned int i)//延时函数{ while(i--);}void delay1(uint z){ uint x,y; for(x=z;x&0;x--)
for(y=80;y&0;y--);} /***********************************************************************/ //18b20初始化函数void Init_DS18B20(void){ unsigned char x=0; DQ = 1;
//DQ复位 delay(8);
//稍做延时 DQ = 0;
//单片机将DQ拉低 delay(80); //精确延时 大于 480us DQ = 1;
//拉高总线 delay(10); x=DQ;
//稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(5);} /***********************************************************************/ //读一个字节unsigned char ReadOneChar(void){unsigned char i=0;unsigned char dat = 0;for (i=8;i&0;i--) {
DQ = 0; // 给脉冲信号
DQ = 1; // 给脉冲信号
dat|=0x80;
delay(5); } return(dat);}/***********************************************************************///写一个字节void WriteOneChar(unsigned char dat){ unsigned char i=0; for (i=8; i&0; i--) {
DQ = dat&0x01;
dat&&=1; }delay(5);}/***********************************************************************///读取温度unsigned char ReadTemperature(void){unsigned char a=0;unsigned char b=0;unsigned char t=0;//float tt=0;Init_DS18B20();WriteOneChar(0xCC); // 跳过读序号列号的操作WriteOneChar(0x44); // 启动温度转换delay(200);Init_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=ReadOneChar();b=ReadOneChar();b&&=4;b+=(a&0xf0)&&4;t=b;//tt=t*0.0625;//t= tt*10+0.5; //放大10倍输出并四舍五入return(t);}uchar keyscan(void)
//键盘扫描函数{
/*--------------------------------------------------------------*/
if(PC8255!=0xfe)
if(PC8255!=0xfe)
switch(PC8255)
case 0x7e:key=1;
case 0xbe:key=2;
case 0xde: key=3;
case 0xee: key=0;
while(PC8255!=0xfe);
//等待按钮释放
//
delay1(50);
提问者采纳
/***********************************************************************/ void delay(unsigned int i)//延时函数{ while(i--);//只要i不等于0则一直累减到0才退出循环,执行i个while指令周期的延时}void delay1(uint z){ uint x,y; for(x=z;x&0;x--)
for(y=80;y&0;y--);//执行 循环Z*80个for指令周期 的延时} /***********************************************************************//******************************// 18b20初始化函数*******************************/void Init_DS18B20(void){ unsigned char x=0; DQ = 1;
//DQ复位 delay(8);
//稍做延时 DQ = 0;
//单片机将DQ拉低 delay(80); //精确延时 大于 480us DQ = 1;
//拉高总线 delay(10);//等待器件做出反应 x=DQ;
//稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(5);}/******************************// 读一个字节*******************************/unsigned char ReadOneChar(void){unsigned char i=0;unsigned char dat = 0;for (i=8;i&0;i--)//移动8次得到一个byte {
DQ = 0; // 给脉冲信号
dat&&=1;//数据全部右移1位(把数据最高位空出来,用于接收新的单总线bit数据)
DQ = 1; // 给脉冲信号
if(DQ)//如果此时DQ为1则将数据暂存的最高位置1,否则忽略处理(不处理最高位为0)
dat|=0x80;
delay(5);//数据被右移8次后,形成了一个完整byte(8个bit)数据 } return(dat);//送回读出的数据}/******************************// //写一个字节dat-要写入单总线的数据*******************************/void WriteOneChar(unsigned char dat){ unsigned char i=0; for (i=8; i&0; i--)//循环8次,连续送出8个bit {
DQ = 0;//拉低单总线
DQ = dat&0x01;//将dat数据最低位放到数据总线上
delay(5);//延时等待DS18b20器件读取该位数据
DQ = 1;//释放总线
dat&&=1;//数据右移一位 }delay(5);//延时稳定}/******************************// 读取温度返回:当前温度整数部分数值*******************************/unsigned char ReadTemperature(void){unsigned char a=0;unsigned char b=0;unsigned char t=0;//float tt=0;Init_DS18B20();//DS18B20初始化(判断器件是否存在)WriteOneChar(0xCC); // 跳过读序号列号的操作WriteOneChar(0x44); // 启动温度转换delay(200);//等待转换结束Init_DS18B20();//DS18B20初始化(判断器件是否存在)WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=ReadOneChar();//读出DS18B20温度数据的高8位MSBb=ReadOneChar();//读出DS18B20温度数据的低8位LSB(内部寄存器编号自加)b&&=4;//温度的高8位数据(MSB)中的低4位移到高4位的位置(原低4位空着)b+=(a&0xf0)&&4;//温度的低8位数据(LSB)中的高4位移到低4位的位置(原低4位被移出去不要了)再与上面移动后的高8位数据合并,得出温度数据的整数部分t=b;//tt=t*0.0625;//小数部分不是这样处理的,最好的方法是查表,将LSB的低4位拿来查表(一共16个数值,参照手册),得出温度值的小数部分//t= tt*10+0.5; //放大10倍输出并四舍五入return(t);//返回温度整数部分的数值}/*****************************// 键盘扫描函数******************************/uchar keyscan(void)
/*--------------------------------------------------------------*/
PC8255=0//给C端口一个确定的状态
if(PC8255!=0xfe)//如果端口状态被改变
if(PC8255!=0xfe)//第二次判断确认端口状态是否真的被改变
delay(5);//延时抗干扰,防止误触发,不过该语句应该放在第一个if语句的后面
switch(PC8255)//读取当前端口的状态
case 0x7e:key=1;//PC.7端口所接开关被触发,向键值Key写1
case 0xbe:key=2;//PC.6端口所接开关被触发,向键值Key写2
case 0xde: key=3;//PC.5端口所接开关被触发,向键值Key写3
case 0xee: key=0;//PC.4端口所接开关被触发,向键值Key写0
while(PC8255!=0xfe);
//等待按钮释放
delay1(50);
提问者评价
ZGLEDA,非常感谢您!
其他类似问题
为您推荐:
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁(2/29+3/23)×29×23等于多少?求算式!_百度知道
(2/29+3/23)×29×23等于多少?求算式!
提问者采纳
2*23+3*29=46+87=133
提问者评价
太给力了,你的回答完美解决了我的问题!
其他类似问题
为您推荐:
其他4条回答
=2/29×29×23+3/23×29×23=2×23+3×29=46+87=133
算错了,大哥
不好意思啊
希望你看的清楚哦
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁(1/4)*(2x+3)^3=54 求过程_百度知道
(1/4)*(2x+3)^3=54 求过程
提问者采纳
(1/4)*(2x+3)^3=54(2x+3)^3=54*4(2x+3)^3=216(2x+3)^3=6^3
x=3/2很高兴为您解答,祝学习进步!有不明白的可以追问!如果您认可我的回答,请点击下面的【选为满意回答】按钮,谢谢
提问者评价
来自团队:
其他类似问题
为您推荐:
其他3条回答
解:方程两边同乘以4得:(2x+3)^3=216开立方得:2x+3=6移项、合并同类项得:2x=3系数化为1得:x=1.5所以原方程的解是x=1.5
(2x+3)^3=54*4=2162x+3=62x=3x=1.5
(2x+3)^3=27*2*4=3^3*2^3=6^3,所以2x+3=6,x=1.5
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁(1-1/2*2)(1-1/3*3)(1-1/4*4)......(1-1/)_百度知道
(1-1/2*2)(1-1/3*3)(1-1/4*4)......(1-1/)
提问者采纳
我的过程如图如果你认可我的回答,请点击“采纳回答”,祝学习进步!手机提问的朋友在客户端右上角评价点【评价】,然后就可以选择【满意,问题已经完美解决】了
提问者评价
太给力了,你的回答完美的解决了我的问题!
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 我不知道 唐笑 mp3 的文章

 

随机推荐