直流电压测量

合集下载

万用电表测量直流电压的步骤及注意事项

万用电表测量直流电压的步骤及注意事项

万用电表测量直流电压的步骤及注意事项
万用电表测量直流电压的步骤及注意事项如下:
步骤:
1. 将魔表调至直流电压测量档,并选择合适的量程,确保能够测量到待测直流电压的最大值。

2. 将测量引线连接到万用电表上的“COM”(公共)端和
“VΩmA”(直流电压)端。

3. 将测量引线的“红(正)”端连接到待测直流电压的正极,将“黑(负)”端连接到待测直流电压的负极。

4. 打开待测直流电源。

5. 读取万用电表上显示的直流电压值。

如果需要更精确的测量结果,可以调整测量引线的接触点或者选择更合适的量程。

注意事项:
1. 在测量之前,确认待测直流电压的极性,确保正确连接测量引线的“红(正)”和“黑(负)”端。

2. 确保万用电表的电池电量充足,以免影响测量结果。

3. 在接线时,确保引线连接牢固,避免测量引线接触不良导致测量不准确。

4. 在测量直流电压时,应当避免测量过高的电压,超出万用电表的额定测量范围,以免损坏万用电表。

5. 测量导线应尽量保持整齐,并避免与其他电路或金属接触,以防干扰测量结果。

6. 在测量直流电压之前,应将电路断开或切断电源,以确保安全。

鼎阳示波器测量直流电压的方法

鼎阳示波器测量直流电压的方法

鼎阳示波器测量直流电压的方法
鼎阳示波器是一种用于测量电信号的仪器,可以用来测量直流
电压。

测量直流电压的方法如下:
1. 准备工作,首先,确保示波器和测量电路处于安全状态,接
地正确并且电压范围设置正确。

然后,将示波器的探头连接到测量
电路的正负极,确保连接牢固。

2. 示波器设置,打开示波器,并将电压档位调整到适当的范围,一般来说,选择最接近待测电压的范围,以获得最好的分辨率。

然后,调整示波器的触发模式和触发电平,确保波形稳定。

3. 观察波形,在示波器上观察到电压波形后,可以通过水平和
垂直控制来调整波形的位置和幅度,以便更清晰地观察波形。

4. 测量电压,根据示波器上的刻度,可以直接读取波形的峰值
或峰-峰值,从而得到直流电压的值。

如果需要更精确的测量,可以
使用示波器的测量功能来获取电压的平均值、最大值、最小值等信息。

总之,通过以上方法,可以利用鼎阳示波器准确地测量直流电压,并且可以根据需要进行进一步的分析和处理。

希望以上回答能够满足你的要求。

项目二直流电路的电压和电位测定

项目二直流电路的电压和电位测定

电位与电位差
电位
表示某点在参考电位(零 电位)处的电势,单位为 伏特(V)。
电位差
两点之间的电位之差,单 位为伏特(V)。
关系
电位差等于电压,即 $Delta V = V$。
欧姆定律
定义
在同一电路中,导体中的电流与导体 两端的电压成正比,与导体的电阻成 反比。
公式
应用
用于计算电路中的电流、电压和电阻。
感谢观看
通过测量电位差来计算绝对电位
如果已知两个点之间的电位差,可以通过加上或减去这个差值来计算任意一点的 绝对电位。
电位差测量
使用电压表测量电位差
将电压表并联在电路的两个点之间,可以直接读出电压表的读数,即为两点之间的电位差。
通过计算元件的电压降来测量电位差
如果电路中存在电阻、电容、电感等元件,可以通过计算这些元件上的电压降来间接测量电位差。
项目二:直流电 路的电压和电位 测定
目录
• 直流电路基础知识 • 电压测量方法 • 电位测定方法 • 实验操作与注意事项 • 实际应用与案例分析
01
直流电路基础知识
电流与电压
01
02
03
电流
电荷在导体中流动的现象, 单位为安培(A)。
电压
电场中电位差,单位为伏 特(V)。
关系
电流与电压成正比,即 $I = frac{V}{R}$,其中 $R$ 为电阻。
实验操作与注意事项
实验设备与器材
电压表
测量电路中各点的 电压。
开关
控制电路的通断。
电源
直流电源,用于提 供稳定的直流电压。
电位器
用于调节电路中的 电压和电流。
导线
连接电路元件。

万用表测量直流电压的原理

万用表测量直流电压的原理

万用表测量直流电压的原理万用表是一种常用的电测仪器,可以用于测量电压、电流、电阻等电学量。

其中,测量直流电压是万用表最基本的功能之一。

本文将介绍测量直流电压的原理。

测量直流电压的原理是基于欧姆定律和毕奥-萨伐尔定律。

欧姆定律指出,电流通过导体时,与导体两端的电压成正比,与导体的电阻成反比。

毕奥-萨伐尔定律则说明了电流通过导体时会产生磁场的现象。

万用表的测量直流电压的原理是通过内部的电路,将待测电压与已知电压进行比较,从而确定待测电压的大小。

当万用表的正负极正确连接到电路中时,电流将通过万用表的内部电路,进而产生一个已知大小的电压。

万用表通过内部的电路将待测电压与已知电压进行比较的方法有两种:串联法和并联法。

串联法是将万用表的电流测量档位与待测电路串联连接。

此时,待测电路的电流将通过万用表的电流测量档位,产生一个已知大小的电压。

万用表通过测量这个电压,就可以确定待测电路的电压大小。

串联法的原理是利用欧姆定律,根据电流和电阻的关系计算电压。

并联法是将万用表的电压测量档位与待测电路并联连接。

此时,待测电路的电压将通过万用表的电压测量档位,直接测量到。

并联法的原理是利用毕奥-萨伐尔定律,根据电流通过导体产生的磁场大小与导体两端的电压成正比的关系计算电压。

无论是串联法还是并联法,万用表都需要根据待测电压的范围选择合适的测量档位。

如果待测电压超过了万用表的测量范围,就会损坏万用表或者得到错误的测量结果。

因此,在测量直流电压时,需要根据待测电压的范围选择合适的测量档位。

除了测量直流电压的原理,还需要注意一些使用万用表的技巧。

首先,应该确保测量电路处于安全状态,避免触电和短路的危险。

其次,应该正确连接万用表的正负极,否则会得到错误的测量结果。

此外,还应该注意万用表的使用环境,避免过高或过低的温度、湿度对万用表的影响。

万用表测量直流电压的原理是基于欧姆定律和毕奥-萨伐尔定律。

通过与已知电压进行比较,利用电流和电阻的关系或电流产生的磁场大小与电压的关系,确定待测电压的大小。

直流稳压电源实验中的电源输出电压与电流测量

直流稳压电源实验中的电源输出电压与电流测量

直流稳压电源实验中的电源输出电压与电流测量为了能够准确地测量直流稳压电源的输出电压和电流,我们需要使用一些合适的仪器和方法。

本文将介绍在直流稳压电源实验中,如何进行电源输出电压和电流的测量。

1. 仪器准备在进行电源输出电压和电流的测量之前,我们需要准备以下仪器:- 数字万用表:用于测量电压和电流。

- 直流稳压电源:作为被测量的电源。

- 电阻:用于测量电流。

2. 电源输出电压的测量为了测量直流稳压电源的输出电压,我们可以按照以下步骤进行:- 将电源接通电源,并确保它处于工作状态。

- 将数字万用表的测量模式调整为电压测量模式,并选择直流电压档位。

- 将万用表的红表笔接到电源的正极上,黑表笔接到电源的负极上。

- 读取万用表显示的数值,即为电源的输出电压。

3. 电源输出电流的测量要测量直流稳压电源的输出电流,可以按照以下步骤进行:- 将电源接通电源,并确保它处于工作状态。

- 将数字万用表的测量模式调整为电流测量模式,并选择直流电流档位。

- 将万用表的红表笔接到电源的正极上,黑表笔接到电源与负极之间的电阻两端。

- 读取万用表显示的数值,即为电源的输出电流。

4. 注意事项在进行电源输出电压和电流的测量时,需要注意以下几点:- 确保测量仪器的接线正确,以避免读取到错误的数值或发生电流短路等问题。

- 在测量电流时,选择合适的电阻阻值,以保证电阻不会过载烧毁。

- 在进行测量之前,对仪器进行校准,以确保测量结果的准确性。

5. 实验记录在进行电源输出电压和电流的测量时,建议及时记录实验数据,包括电源的型号、输出电压和电流的数值等信息。

这些数据可以用于后续数据分析和实验结果的验证。

通过上述步骤和注意事项,我们可以准确地测量直流稳压电源的输出电压和电流。

在实验中,我们可以根据需要对电源进行不同的电流和电压设置,以获得所需的电源输出。

同时,合理记录实验数据,并及时校准测量仪器,能够保证实验结果的准确性和可靠性。

总结:直流稳压电源实验中的电源输出电压和电流的测量是实验中的重要环节。

万用表直流电压档工作原理

万用表直流电压档工作原理

万用表直流电压档工作原理
万用表直流电压档是电工常用的测量工具,其工作原理如下:
首先,万用表直流电压档是通过连接一个电阻器和一个电流表来实现测量直流电压的。

当电阻器接在电路上时,电路中会产生一个电流,这个电流由电路中的电压和电阻器的阻值决定。

万用表直流电压档的电流表可以测量电路中的电流,因此通过电流表的读数可以计算出电路中的电压。

万用表直流电压档中的电阻器和电流表的选择与设计非常重要。

电阻器的阻值必须足够大,以便电路中的电流尽可能小,从而避免对电路的影响。

电流表的灵敏度应该足够高,以便能够测量电路中的小电流。

此外,电阻器和电流表也需要具有足够的精度和可靠性,以保证测量结果的准确性和稳定性。

在使用万用表直流电压档时,需要注意以下几点:
1. 万用表直流电压档只能用于测量直流电压,不能用于测量交流电压。

2. 在连接电路时,必须使用正确的电压档位,否则可能会损坏万用表或导致不准确的测量结果。

3. 在测量前,应先将电路的电源关闭,以避免电击和损坏测量仪器。

4. 在测量过程中,应保持万用表的电极与电路中的接触良好,以避免误差和不准确的测量结果。

总之,万用表直流电压档是一种简单而实用的测量工具,可以帮
助电工准确地测量直流电路中的电压。

在使用时,应注意安全和正确的操作方法,以保护自己和测量仪器。

万用表测量直流电压的正确方法

万用表测量直流电压的正确方法
1. 嘿,你知道万用表测量直流电压的正确方法吗?就像你要准确抓住一个调皮的小精灵一样,得有技巧哦!比如测手机电池的电压,可别瞎弄呀!
2. 哇塞,要想用万用表准确测量直流电压,那可得一步步来呀!就好比搭积木,得一块一块稳稳地放。

测个小台灯的电压试试,感受一下!
3. 哎呀呀,测量直流电压可不能马虎哟!这就像走钢丝,得小心翼翼的。

想想测一下电动车电池的电压,是不是得认真对待?
4. 嘿哟,你可别小瞧了万用表测量直流电压的方法,这可是很关键的呢!就像开锁一样,得找对钥匙。

试试去测测电脑电源的电压呀!
5. 哇哦,知道正确测量直流电压的方法多重要吗?这简直就像在黑暗中找到明灯呀!测测手电筒电池的电压,你就知道啦!
6. 哎呀,想准确测量直流电压,那可得好好记住步骤哟!就跟记舞步似的,不能乱了套。

去量量充电宝的电压感受下呗!
7. 嘿,你还不知道吧,万用表测量直流电压是有窍门的!就像玩游戏知道秘籍一样。

测测玩具车电池的电压,是不是很有趣?
8. 哇,不掌握正确方法怎么行呢?这就像没有地图去探险呀!试试给遥控器电池测测电压,你就懂啦!
9. 哎呀呀,这万用表测量直流电压的正确法子可得记牢咯!就好像记住回家的路一样重要。

量量刮胡刀电池的电压吧!
10. 总之,万用表测量直流电压的方法一定要搞清楚呀!不然就像没头苍蝇一样。

去实际操作一下,测测那些小电器的电压,你就会恍然大悟啦!
我的观点结论:掌握万用表测量直流电压的正确方法非常重要,只有这样才能准确地获取电压值,为我们的生活和工作带来便利。

测量电压实验报告

测量电压实验报告测量电压实验报告引言:电压是电学中的重要物理量之一,它用于描述电路中电荷的能量差异。

测量电压是电工实验中最基本的操作之一,本实验旨在通过使用合适的电压测量仪器,掌握测量电压的方法和技巧。

实验目的:1. 学习使用万用表和示波器等测量电压的仪器;2. 掌握直流电压和交流电压的测量方法;3. 理解电压分压原理及其应用。

实验器材:1. 电压源;2. 万用表;3. 示波器;4. 直流电阻;5. 交流信号源。

实验步骤:1. 测量直流电压:a. 将电压源的正极与万用表的红表笔连接,负极与黑表笔连接;b. 选择合适的量程,将万用表调至直流电压测量档位;c. 读取并记录测量结果;d. 重复上述步骤,测量不同电压源的电压值。

2. 测量交流电压:a. 将交流信号源的输出端与示波器的输入端连接;b. 调节示波器的触发方式和时间基准,使波形稳定;c. 读取并记录示波器上的电压值;d. 重复上述步骤,测量不同频率和幅度的交流电压。

3. 电压分压实验:a. 连接电压源、直流电阻和万用表,形成电压分压电路;b. 测量不同电压源电压和直流电阻电压;c. 计算并验证电压分压公式的准确性。

实验结果与讨论:1. 直流电压测量结果表明,万用表能够准确测量不同电压源的电压值,并且在合适的量程下具有较高的测量精度。

2. 交流电压测量结果显示,示波器能够显示出交流信号的波形和幅度,通过示波器的调节,可以观察到不同频率和幅度的交流电压的变化规律。

3. 电压分压实验结果表明,根据电压分压公式,当电阻值固定时,输入电压越大,输出电压越小。

通过实验数据的对比,验证了电压分压公式的准确性。

结论:通过本实验,我们学习并掌握了测量直流电压和交流电压的方法和技巧。

同时,通过电压分压实验,我们加深了对电压分压原理的理解,并验证了电压分压公式的正确性。

这些知识和技能对于我们在日后的电工实验和工程实践中具有重要的应用价值。

直流电压的测量方法

动 势 E, MF 4 7型多 用 电 表 的 直 流 电压 灵 敏 度 S v 一2 0 k a /
V, 设 直 流 电 源 的等 效 内 阻 R= 4 0 k f l , 被 测 直 流 电 源 电动 势 E一 9 V. 选用 1 O V量程挡 , 则 Rv 一( 2 0 k Q / V) ×1 0 V一
第 3 4卷 第 2期
2 0 1 3年
物 理 教 师
P H Y SI C S T E A C H E R
Vo1 .3 4 No. 2
( 2 O1 3)
直 流 电压 的测 量 方 法
刘 永 顺
( 安 阳师范学院物理与电气工程学院 , 河 南 安阳
直 流 电压 是 一 种 经 常 需 要 测 量 的 物 理 量 . 直 流 电压 的
4 5 5 0 0 0 )
响较小 ; 另外, 数 字 多用 电 表数 显 的有 效位 数 也较 多. 因 此, 用 数 字 多 用 电表 测 量 直 流 电压 的 准确 度 较 高.
测量方法有直接测量法 和间接测量法 两大类 . 用 直 接 测 量 法 测 量 直 流 电压 时 , 将直 流 电压表并 联 在被 测 电路 两端 , 若 直 流 电 压 表 的 内阻 为 无 穷 大 , 则 直 流 电压 表 的示 数 就 是 被 测 电路 两 点 间 的 电压 值 ; 间 接 测 量 法 则 是 先 分 别 测 量 两 端 点 的对 地 的 电 位 , 然后 算 出这 两点 的 电位差 , 差 值 就 是 要 测 量 的直 流 电 压 值 . 实 际 经 常 使 用 的 直 流 电 压 的测 量 方
法 有 以下 6 种.
3 用 直 流 电子 电 压 表 测 量 直 流 电 压

直流电压、电流和电阻的测量 实验报告

实验报告课程名称: 电路与模拟电子技术实验 指导老师: 张冶沁 成绩:__________________ 实验名称: 直流电压、电流和电阻的测量 实验类型: 电路实验 同组学生姓名:__________ 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得一、实验目的和要求1.掌握直流电源、测量仪表以及数字万用表的使用方法;2.掌握测量直流电压、电流和电阻的直接测量方法;3.了解测量仪表量程、分辨率、准确度对测量结果的影响。

4.学习如何正确表示测量结果。

二、实验内容和原理1.数字式仪表测量误差计算方法数字显示的直读式仪表,其误差常用下列三种方式表示:mm =a%x =a%x b%x =a%x b%x ∆±±∆±±∆±±±()几个字()()()()几个字式中,x 为被测量的指示值;x m 为仪表满偏值,也就是仪表量程;a 为相对误差系数;b 为误差固定项。

从上述三种表达式可知,数字表的误差主要由与被测值大小有关的相对量和与被测量大小无关的固定量以及显示误差共同组成。

其中,前者是由于仪表基准源、量程放大器、衰减器的衰减量不稳定及校准不完善的非线性等因素引起的误差;后者包括仪表零点漂移、热电势、量化误差和噪声引起的误差。

2.电路基本测量方法。

直接测量的结果表示为:c x u ±(P )。

其中,x :n 次测量的平均值;c u :合成不确度;P :置信概率。

3.数字万用表测量误差的计算方法。

将直流电压表跨接(并接)在待测电压处,可以测量其电压值。

直流电压表的正负极性与电路中实际电压极性相对应时,才能正确测得电压值。

电流表则需要串联在待测支路中才能测量在该支路中流动的电流。

电流表两端也标有正负极性,当待测电流从电流表的“正”流到“负”时,电流表显示为正值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include <reg51.h>#include<intrins.h>#include <math.H> //要用到取绝对值函数abs()/*定义管脚*/#define uchar unsigned char#define uint unsigned int#define Lcd_Bus P1 //MCU P2<------> LCMuchar flag,biao,j;unsigned char ci,di,ai;sbit RS = P2^7;sbit RW = P2^4;sbit E = P2^3;sbit ds=P3^3;sbit SPK = P3^5;sbit DS1302_CLK = P2^1;sbit DS1302_IO = P3^4;sbit DS1302_RST = P3^1;sbit ACC0=ACC^0;sbit ACC7=ACC^7;uchar dispbuf2[16];unsigned char second,minute,hour,week,day,month,year; //秒、分、时、星期、日、月、年unsigned char time[]={0x13,0x07,0x08,0x04,0x08,0x55,0x55}; //初始时间数组09年12月12日21点21分00秒sbit MAX197_CS=P2^0;sbit MAX197_INT=P2^3;sbit MAX197_WR=P3^6;sbit MAX197_RD=P3^7;sbit MAX197_HBEN=P2^5;long int CH0;unsigned int v;uchar dispbuf3[4]={0,0,0,0};uchar dispbuf1[6]={0,0,0,0,0,0};int tempValue1;unsigned int tem;unsigned char dispbuf[8]={0,0,0,0,0,0,0,0};unsigned char code bin[]="安徽三联学院";unsigned char code bin1[]="电压为:";unsigned char code bin2[]="警告!警告!";unsigned char code bin3[]="电压值非正常状态";unsigned char code bin4[]="现在温度:";unsigned char code kong[]=" " ;void delay(unsigned int i){unsigned int j;while(i--){for(j = 0; j < 125; j++);}}void InputByte(unsigned char byte1){ unsigned char i;ACC=byte1;for(i=8;i>0;i--){DS1302_IO=ACC0;DS1302_CLK=1;DS1302_CLK=0;ACC=ACC>>1;}return;}unsigned char OutputByte(){unsigned char i;for(i=8;i>0;i--){ ACC=ACC>>1;ACC7=DS1302_IO;DS1302_CLK=1;DS1302_CLK=0;}return(ACC);}void write_ds1302(unsigned char addr,unsigned char TDat) {DS1302_RST=0;_nop_();DS1302_CLK=0;_nop_();DS1302_RST=1;InputByte(addr);_nop_();InputByte(TDat);DS1302_CLK=1;_nop_();DS1302_RST=0;}unsigned char read_ds1302(unsigned char addr)unsigned char timedata;DS1302_RST=0;_nop_();DS1302_CLK=0;_nop_();DS1302_RST=1;InputByte(addr);timedata=OutputByte();DS1302_CLK=1;_nop_();DS1302_RST=0;return(timedata);}void initial_ds1302(){write_ds1302(0x8e,0x00); //写保护寄存器,在对时钟或RAM写前WP一定要为0write_ds1302(0x8c,time[0]); //年write_ds1302(0x88,time[1]); //月write_ds1302(0x86,time[2]); //日write_ds1302(0x8A,time[3]); //星期write_ds1302(0x84,time[4]); //时write_ds1302(0x82,time[5]); //分write_ds1302(0x80,time[6]); //秒write_ds1302(0x8e,0x80); //写保护寄存器}void read_time(){second=read_ds1302(0x81); //秒寄存器minute=read_ds1302(0x83); //分hour=read_ds1302(0x85); //时week=read_ds1302(0x8B); //星期day=read_ds1302(0x87); //日month=read_ds1302(0x89); //月year=read_ds1302(0x8d); //年}/*------------------检查忙位-----------------------------*/void dsInit(){//对于11.0592MHz时钟, unsigned int型的i, 作一个i++操作的时间大于?usunsigned int i;ds = 0;i = 100; //拉低约800us, 符合协议要求的480us以上while(i>0) i--;ds = 1; //产生一个上升沿, 进入等待应答状态i = 4;while(i>0) i--;}void dsWait()unsigned int i;while(ds);while(~ds); //检测到应答脉冲i = 4;while(i > 0) i--;}//向DS18B20读取一位数据//读一位, 让DS18B20一小周期低电平, 然后两小周期高电平,//之后DS18B20则会输出持续一段时间的一位数据bit readBit(){unsigned int i;bit b;ds = 0;i++; //延时约8us, 符合协议要求至少保持1usds = 1;i++; i++; //延时约16us, 符合协议要求的至少延时15us以上b = ds;i = 8;while(i>0) i--; //延时约64us, 符合读时隙不低于60us要求return b;}//读取一字节数据, 通过调用readBit()来实现unsigned char readByte(){unsigned int i;unsigned char j, dat;dat = 0;for(i=0; i<8; i++){j = readBit();//最先读出的是最低位数据dat = (j << 7) | (dat >> 1);}return dat;}//向DS18B20写入一字节数据void writeByte(unsigned char dat){unsigned int i;unsigned char j;bit b;for(j = 0; j < 8; j++){b = dat & 0x01;dat >>= 1;//写"1", 将DQ拉低15us后, 在15us~60us内将DQ拉高, 即完成写1if(b){ds = 0;i++; i++; //拉低约16us, 符号要求15~60us内ds = 1;i = 8; while(i>0) i--; //延时约64us, 符合写时隙不低于60us要求}else //写"0", 将DQ拉低60us~120usds = 0;i = 8; while(i>0) i--; //拉低约64us, 符号要求ds = 1;i++; i++; //整个写0时隙过程已经超过60us, 这里就不用像写1那样, 再延时64us了}}//向DS18B20发送温度转换命令void sendChangeCmd(){dsInit(); //初始化DS18B20, 无论什么命令, 首先都要发起初始化dsWait(); //等待DS18B20应答delay(1); //延时1ms, 因为DS18B20会拉低DQ 60~240us作为应答信号writeByte(0xcc); //写入跳过序列号命令字Skip RomwriteByte(0x44); //写入温度转换命令字Convert T}//向DS18B20发送读取数据命令void sendReadCmd(){ EA=0;//关闭中断是因为进入显示中断会影响到DS18B20的读写时序dsInit();dsWait();delay(1);writeByte(0xcc); //写入跳过序列号命令字Skip RomwriteByte(0xbe); //写入读取数据令字Read ScratchpadEA=1;}//获取当前温度值int getTmpValue(){unsigned int tmpvalue;int value; //存放温度数值float t;unsigned char low, high;EA=0;sendReadCmd();//连续读取两个字节数据low = readByte();high = readByte();//将高低两个字节合成一个整形变量//计算机中对于负数是利用补码来表示的//若是负值, 读取出来的数值是用补码表示的, 可直接赋值给int型的valuetmpvalue = high;tmpvalue <<= 8;tmpvalue |= low;value = tmpvalue;//使用DS18B20的默认分辨率12位, 精确度为0.0625度, 即读回数据的最低位代表0.0625度t = value * 0.0625;//将它放大100倍, 使显示时可显示小数点后两位, 并对小数点后第三进行4舍5入//如t=11.0625, 进行计数后, 得到value = 1106, 即11.06 度//如t=-11.0625, 进行计数后, 得到value = -1106, 即-11.06 度value = t * 100 + (value > 0 ? 0.5 : -0.5); //大于0加0.5, 小于0减0.5return value;EA=1;}/*============忙检测======================================*/void chk_busy(){ RS=0;RW=1;E=1;Lcd_Bus=0xff;while((Lcd_Bus&0x80)==0x80);E=0;}/*------------------写命令到LCD------------------------------*/void write_com(unsigned char cmdcode){chk_busy();RS=0;RW=0;E=1;Lcd_Bus=cmdcode;delay(5);////////////////////在数据写入的时候加入适当的延时E=0;delay(5);}/*-------------------写数据到LCD----------------------------*/void write_data(unsigned char Dispdata){chk_busy();RS=1;RW=0;E=1;Lcd_Bus=Dispdata;delay(5);///////////////////在数据写入的时候加入适当的延时E=0;delay(5);}/*------------------初始化LCD屏--------------------------*/void lcdreset(){ delay(10);write_com(0x30);delay(10); //选择基本指令集write_com(0x30); //选择8bit数据流delay(5);write_com(0x0c); //开显示(无游标、不反白)delay(10);write_com(0x01); //清除显示,并且设定地址指针为00Hdelay(10);write_com(0x06); //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位delay(10);}/*------------------首屏显示--------------------------*/void ceshi(){ unsigned char u;write_com(0x80+1);//第一行(如果是地址是:80H,即LCD的第一行的第一个位置显示)for(u=0;u<12;u++)write_data(bin[u]);}/*------------------清屏命令--------------------------*/void clrscreen(){write_com(0x01);delay(10);}void MAX197_Write(uchar temp){MAX197_CS=0;_nop_();_nop_();MAX197_WR=0;_nop_();_nop_();P0=temp;MAX197_WR=1;MAX197_CS=1;}int MAX197_Read(){uint temp1;uchar TempL,TempH;MAX197_CS=0;_nop_();MAX197_RD=0;_nop_();MAX197_HBEN=0;P0=0XFF;TempL=P0;MAX197_HBEN=1;P0=0XFF;TempH=P0;MAX197_RD=1;MAX197_CS=1;TempH=TempH&0x0f;temp1=TempH*256+TempL ;return temp1;}void MAX197_8lucaiji ( ){MAX197_Write(0X40);while(MAX197_INT);CH0=MAX197_Read();v=CH0;}void Alarm(uchar t){uchar i,j;for(i=0;i<200;i++){SPK = ~SPK;for(j=0;j<t;j++);}}void display2(){unsigned char i;write_com(0x80);for(i=0;i<16;i++){write_data(kong[i]);}write_com(0x90);for(i=0;i<16;i++){write_data(kong[i]);}write_com(0x88);for(i=0;i<16;i++){write_data(kong[i]);}write_com(0x98);for(i=0;i<16;i++){write_data(kong[i]);}}void display1(){uchar i;read_time();if((ci==1)&&(di==2)){dispbuf2[15]=minute%16+0x30;dispbuf2[14]=minute/16+0x30;dispbuf2[13]='/';dispbuf2[12]=hour%16+0x30;dispbuf2[11]=hour/16+0x30;dispbuf2[10]='/';dispbuf2[9]=day%16+0x30;dispbuf2[8]=day/16+0x30;dispbuf2[7]='/';dispbuf2[6]=month%16+0x30;dispbuf2[5]=month/16+0x30;dispbuf2[4]='/';dispbuf2[3]=year%16+0x30;dispbuf2[2]=year/16+0x30;dispbuf2[1]='0';dispbuf2[0]='2';}MAX197_8lucaiji ( );dispbuf3[0] =CH0/1000;dispbuf3[1] =CH0%1000/100;dispbuf3[2] =CH0%1000%100/10;dispbuf3[3] =CH0%10;write_com(0x80+0x01);//第一行(如果是地址是:80H,即LCD的第一行的第一个位置显示)for(i=0;i<12;i++)write_data(bin2[i]);write_com(0x90);//第一行(如果是地址是:80H,即LCD的第一行的第一个位置显示)for(i=0;i<16;i++)write_data(bin3[i]);write_com(0x88);for(i=0;i<16;i++){write_data(dispbuf2[i]);delay(1);}write_com(0x98+1);//第一行(如果是地址是:80H,即LCD的第一行的第一个位置显示)for(i=0;i<9;i++)write_data(bin1[i]);write_com(0x98+0x05);for(i=0;i<6;i++){write_data(dispbuf1[i]);delay(1);}}void display(){uchar i;dispbuf[0] =' ';//temp/ 10000+0x30;dispbuf[1] = tem % 10000 / 1000+0x30;dispbuf[2] =tem % 1000 / 100+0x30;dispbuf[3] ='.';dispbuf[4] = tem % 100 / 10+0x30;dispbuf[5] = tem % 10+0x30;dispbuf[6] =0xa1;dispbuf[7] =0xe6;MAX197_8lucaiji ( );dispbuf1[0] =CH0/1000+0x30;dispbuf3[0] =CH0/1000;dispbuf1[1] =CH0%1000/100+0X30;dispbuf3[1] =CH0%1000/100;dispbuf1[2] =CH0%1000%100/10+0X30;dispbuf3[2] =CH0%1000%100/10;dispbuf1[3] =CH0%10+0X30;dispbuf3[3] =CH0%10;dispbuf1[4] ='m';dispbuf1[5] ='v';write_com(0x80);for(i=0;i<10;i++){write_data(bin4[i]);delay(1);}write_com(0x90+0x04);for(i=0;i<9;i++){write_data(dispbuf[i]);delay(1);}write_com(0x88+1);//第一行(如果是地址是:80H,即LCD的第一行的第一个位置显示)for(i=0;i<9;i++)write_data(bin1[i]);write_com(0x88+0x05);for(i=0;i<6;i++){write_data(dispbuf1[i]);delay(10);}}void initial_INTER(){TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;// TH1=(65536-50000)/256;//TL1=(65536-50000)%256;ET0=1;// ET1=1;EA=1;TR0=1;// TR1=1;}main(){unsigned int gu;j=0;RW=0;tem=0;initial_INTER(); //中断初始化initial_ds1302(); //初始化DS1302lcdreset(); //初始化LCD屏ceshi(); //显示测试字样delay(100);clrscreen() ;while(1){gu=dispbuf3[0]*1000+dispbuf3[1]*100+dispbuf3[2]*10+dispbuf3[3];if((1000<gu)&&(gu<4000)){j=0;}else{j=1;}if(flag==1){if((ci==1)&&(di==1)){display2();di=di+1;}Alarm(90);Alarm(120);display1();delay(10);}//clrscreen() ;if(biao==1){if((ci==0)&&(ai==0)){display2();ai=ai+1;}sendChangeCmd();tempValue1 = getTmpValue();tem = abs(tempValue1);display();delay(10);}}}void wrong() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;if(j==1){flag=1;biao=0;//j=0;ci=1;ai=0;}else{flag=0;biao=1;ci=0;di=1;}}/*void right() interrupt 3{TH1=(65536-50000)/256;TL1=(65536-50000)%256;} */。

相关文档
最新文档