首页 > 精品范文库 > 1号文库
基于FPGA的电压表
编辑:梦中情人 识别码:10-1138049 1号文库 发布时间: 2024-09-13 22:02:26 来源:网络

第一篇:基于FPGA的电压表

FPGA控制的数字电压表电路设计

李培

(河南科技大学电子信息工程学院 河南洛阳 471003)

摘 要:介绍数字电压表的组成及工作原理,论述了基于VHDL语言和FPGA芯片的数字系统的设计思想和实现过程。

关键词:数字电压表;VHDL语言;FPGA

VHDL Realization of Digital Voltmeter

Abstract: The composition and working principle of digital voltm eter were introduced in this paper, the designing idea and implementation proces s based on VHDL and FPGA were also described.Key words: digital voltmeter;VHDL;FPGA 引言

在硬件电子电路设计领域中,电子设计自动化(EDA)工具已成为主要的设计手段,而VHDL语言则是EDA的关键技术之一,它采用自顶向下的设计方法,即从系统总体要求出发,自上至下地将设计任务分解为不同的功能模块,最后将各功能模块连接形成顶层模块,完成系统硬件的整体设计。本文用FPGA芯片和VHDL语言设计了一个数字电压表,举例说明了利用VHDL语言实现数字系统的过程。

1.系统组成及工作原理

整个数字电压表的硬件结构如图1所示。

系统的核心电路由FPGA完成,本设计选用了Altera公司的EPlKl00QC208-3芯片,用VHDL语言对它进行设计,实现三大功能模块:(1)控制模块,激活A/D转换器动作、接收A/D转换器传递过来的数字转换值;(2)数据处理模块,将接收到的转换值调整成对应的数字信号;(3)扫描、显示模块,产生数码管的片选信号,并将数值处理模块输出的BCD码译成相应的7段数码驱动值。

工作时,系统按一定的速率采集输入的模拟电压,经ADC0804转换为8位数字量,此8位数字量经FPGA处理得到模拟电压的数字码,再输入数码管获得被测电压的数字显示。

此电压表的测量范围:0~5V,三位数码管显示。

2.FPGA功能模块的设计

数字电压表的三大模块都是用VHDL语言编程实现的。2.1控制模块

用状态机作法,产生ADC0804的片选信号、读/写控制信号,通过状态信号INTR判断转换是否结束;转换结束后将转换数据锁存并输出。其状态转换图如图2所示。

State machine viewer

A/D模块如下:

2.2数据处理模块

ADC0804是8位模数转换器,它的输出状态共有28=256种,如果输入信号Vin为0~5V电压范围,则每两个状态值为5/(256-1),约为0.0196V,故测量分辨率为0.02V。常用测量方法是:当读取到DB7~DB0转换值是XXH时,电压测量值为U≈XXH×0.02V;考虑到直接使用乘法计算对应的电压值将耗用大量的FPGA内部组件,本设计用查表命令来得到正确的电压值。

在读取到ADC0804的转换数据后,先用查表指令算出高、低4位的两个电压值,并分别用12位BCD码表示;接着设计12位的BCD码加法,如果每4位相加结果超过9需进行加6调整。这样得到模拟电压的BCD码。

CBD模块如下:

本模块的功能仿真结果如图3所示;当转换数据为00010101,通过查表高4位0001是0.32V,而低4位0101是0.1V,最后的电压输出结果是0.32V+0.1V=0.42V,它的BCD码表示为000001000010,仿真结果正确。2.3扫描、显示模块

如图4所示,CLK是扫描时钟,其频率为1kHz,由给定的40MHz时钟分频得到;DATAIN是数据处理模块输出的电压值的BCD码;SEL是数码管的片选信号;POINT是数码管小数点驱动;通过扫描分别输出3位电压值的BCD码DATAOUT,并通过DISP将BCD码译成相应的7段数码驱动值,送数码管显示。

2.4 3选1 数据选择器模块

下图是3选1 数据选择器模块,由sel来选择数据输出,sel的三个状态分别对应选中三个数据A,B,C,同时将选中的数据输出。

2.5位选信号产生器(3进制计数器)

位选信号产生器,实际上时一个3进制计数器,随着时钟的上升沿的到来,它始终在0,1,2之间来回的循环,它的输出作为3选1 数据选择器模块和小数点产生器的输入。以下是仿真和模块。

位选信号产生器的模块:

2.6 7段译码

将输入的数据通过译码电路在数码管上显示出来 7段译码的模块:

2.7小数点产生器

当if selDP=“10” then DPout<='0';

elsif

selDP=“01” then DPout<='0';elsif

selDP=“00” then DPout<='1';只有当它等于1的时候,小数点才起作用,也就是说,只有当高四位有数值的时候,必须需要小数点来确定数值。下面仿真波形中,黑色的部分就是小数点显示的时候和部分,可以很清楚地看出,当输出等于3的时候,就是显示小数点。

小数点产生器模块:

3.顶层文件的模块如下图:

4.仿真结果

在Quartus II 8.0中,仿真波形如图所示:

5.心得体会

从这次的课程设计中,我受益匪浅。电压表的设计,用EDA仿真工具Quartus II 8.0,用vhdl语言设计,这些对于我们初学者来说,并不是件容易的事情,但是同时巩固了我们对知识的深刻理解。为以后的FPGA设计打下了坚实的基础。所以,总的来说,过程是困难的,不容易的,结果却是很满意的,获得了很宝贵的知识和经验!

6.结束语

本文设计的VHDL语言程序已在Quartus II 8.0工具软件上进行了编译、仿真和调试。经过实验验证,本设计是正确的,其电压显示值误差没有超过量化台阶上限(0.02V)。本文给出的设计思想也适用于其他基于PLD芯片的系统设计。

参考文献

[1]潘松 EDA技术实用教程[M]。北京:科学出版社,202_.[2]卢毅 VHDL与数字电路设计[M]。北京:科学出版社,202_.[3]林敏 VHDL数字系统设计与高层次综合[M]。北京:电子工业出版社,202_.[ 4 ] http://www.teniu.cc:process(c_state,eoc)begin

case c_state is

when st0=>ale<='0';sta<='0';oe<='0';lock<='0';

n_state<=st1;

when st1=>ale<='1';sta<='0';oe<='0';lock<='0';

n_state<=st2;

when st2=>ale<='0';sta<='1';oe<='0';lock<='0';

n_state<=st3;

when st3=>ale<='0';sta<='0';oe<='0';lock<='0';

if(eoc='1')then n_state<=st4;

else n_state<=st3;

――eoc为‘1’转换结束 进入下一状态

end if;

――否则 继续转换

when st4=>ale<='0';sta<='0';oe<='1';lock<='0';

n_state<=st5;

when st5=>ale<='0';sta<='0';oe<='0';lock<='1';

n_state<=st6;

when st6=>ale<='0';sta<='0';oe<='0';lock<='1';

n_state<=st0;

when others=>n_state<=st0;

end case;end process com;reg:process(st)

begin

if(st'event and st='1')then

c_state<=n_state;

end if;end process reg;lo:process(lock)

--锁存 begin

if(lock'event and lock='1')then

regl<=d;

end if;end process lo;

q<=regl;

end a;

BCD 8位转12 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY BCD IS PORT(V:IN STD_LOGIC_VECTOR(7 DOWNTO 0);

HB,LB:BUFFER STD_LOGIC_VECTOR(11 DOWNTO 0);

BVALUE:BUFFER STD_LOGIC_VECTOR(11 DOWNTO 0);

BCD_L,BCD_M,BCD_H:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END BCD;ARCHITECTURE A OF BCD IS BEGIN P1:PROCESS(V(7 DOWNTO 4))

BEGIN

--A/D输出高4位转换

分辨率0.32V

IF V(7 DOWNTO 4)=“1111” THEN HB<=“010010000000”;

--4.80V

ELSIF V(7 DOWNTO 4)= “1110” THEN HB<=“010001001000”;--4.48V

ELSIF V(7 DOWNTO 4)= “1101” THEN HB<=“010000010110”;--4.16V

ELSIF V(7 DOWNTO 4)= “1100” THEN HB<=“001110000100”;--3.84V

ELSIF V(7 DOWNTO 4)= “1011” THEN HB<=“001101010010”;--3.52V

ELSIF V(7 DOWNTO 4)= “1010” THEN HB<=“001100100000”;--3.20V

ELSIF V(7 DOWNTO 4)= “1001” THEN HB<=“001010001000”;--2.88V

ELSIF V(7 DOWNTO 4)= “1000” THEN HB<=“001001010110”;--2.56V

ELSIF V(7 DOWNTO 4)= “0111” THEN HB<=“001000100100”;--2.24V

ELSIF V(7 DOWNTO 4)= “0110” THEN HB<=“000110010010”;--1.92V

ELSIF V(7 DOWNTO 4)= “0101” THEN HB<=“000101100000”;--1.60V

ELSIF V(7 DOWNTO 4)= “0100” THEN HB<=“000100101000”;--1.28V

ELSIF V(7 DOWNTO 4)= “0011” THEN HB<=“000010010110”;--0.96V

ELSIF V(7 DOWNTO 4)= “0010” THEN HB<=“000001100100”;--0.64V

ELSIF V(7 DOWNTO 4)= “0001” THEN HB<=“000000110010”;--0.32V

ELSIF V(7 DOWNTO 4)= “0000” THEN HB<=“000000000000”;--0.00V

ELSE HB<=“000000000000”;

--0.00V

END IF;

END PROCESS P1;P2:PROCESS(V(3 DOWNTO 0))

BEGIN

--A/D输出低4位转换 分辨率0.02V

IF V(3 DOWNTO 0)= “1111” THEN LB<=“000000110000”;

--0.30V

ELSIF V(3 DOWNTO 0)= “1110” THEN LB<=“000000101000”;--0.28V

ELSIF V(3 DOWNTO 0)= “1101” THEN LB<=“000000100110”;--0.26V

ELSIF V(3 DOWNTO 0)= “1100” THEN LB<=“000000100100”;--0.24V

ELSIF V(3 DOWNTO 0)= “1011” THEN LB<=“000000100010”;--0.22V

ELSIF V(3 DOWNTO 0)= “1010” THEN LB<=“000000100000”;--0.20V

ELSIF V(3 DOWNTO 0)= “1001” THEN LB<=“000000011000”;--0.18V

ELSIF V(3 DOWNTO 0)= “1000” THEN LB<=“000000010110”;--0.16V

ELSIF V(3 DOWNTO 0)= “0111” THEN LB<=“000000010100”;--0.14V

ELSIF V(3 DOWNTO 0)= “0110” THEN LB<=“000000010010”;--0.12V

ELSIF V(3 DOWNTO 0)= “0101” THEN LB<=“000000010000”;--0.10V

ELSIF V(3 DOWNTO 0)= “0100” THEN LB<=“000000001000”;--0.08V

ELSIF V(3 DOWNTO 0)= “0011” THEN LB<=“000000000110”;--0.06V

ELSIF V(3 DOWNTO 0)= “0010” THEN LB<=“000000000100”;--0.04V

ELSIF V(3 DOWNTO 0)= “0001” THEN LB<=“000000000010”;--0.02V

ELSIF V(3 DOWNTO 0)= “0000” THEN LB<=“000000000000”;--0.00V

ELSE LB<=“000000000000”;

--0V

END IF;END PROCESS P2;

BVALUE<=HB+LB;P3:PROCESS(BVALUE)VARIABLE JJ:STD_LOGIC_VECTOR(11 DOWNTO 0);

BEGIN

JJ:=BVALUE;

IF(JJ(3 DOWNTO 0)>“1001”)THEN

――如果12位结果中,低4位

JJ:=JJ+“000000000110”;

――大于9 则低4位加6

END IF;

IF(JJ(7 DOWNTO 4)>“1001”)THEN

――如果中间的4位大于9

JJ:=JJ+“000001100000”;

――则中4位加6

END IF;BCD_L<=JJ(3 DOWNTO 0);

BCD_M<=JJ(7 DOWNTO 4);BCD_H<=JJ(11 DOWNTO 8);END PROCESS P3;END A;

3选1 数据选择器

LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity mux3_1 is port(sel:in std_logic_vector(1 downto 0);A,B,C:in std_logic_vector(3 downto 0);Mselout:out std_logic_vector(3 downto 0));end mux3_1;architecture a of mux3_1 is begin

process(sel)begin

if

sel=“10” then Mselout<=A;

elsif

sel=“01” then Mselout<=B;

elsif

sel=“00” then Mselout<=C;

else null;

end if;end process;end a;

位选信号产生器(3进制计数器)

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity c3 is

port(clk,clr:in std_logic;

qout:buffer std_logic_vector(1 downto 0));end c3;architecture behave of c3 is begin

process(clk,clr)begin if(clr='0')then qout<=“00”;elsif(clk'event and clk='1')then

qout<=qout+1;

if(qout=2)then qout<=“00”;

end if;end if;end process;end behave;

7段译码

LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;ENTITY del7 IS PORT(input : IN STD_LOGIC_vector(3 downto 0);

output : OUT

STD_LOGIC_vector(6 downto 0));END del7;ARCHITECTURE a OF del7 IS

BEGIN PROCESS(input)BEGIN

CASE input IS

WHEN “0000” =>output<=“1111110”;

WHEN “0001” =>output<=“0110000”;

WHEN “0010” =>output<=“1101101”;

WHEN “0011” =>output<=“1111001”;

WHEN “0100” =>output<=“0110011”;

WHEN “0101” =>output<=“1011011”;

WHEN “0110” =>output<=“1011111”;

WHEN “0111” =>output<=“1110000”;

WHEN “1000” =>output<=“1111111”;

WHEN “1001” =>output<=“1111011”;

WHEN OTHERS=>NULL;

END CASE;end process;

END a;

小数点产生器

LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity DP is port(SELDP:in std_logic_vector(1 downto 0);

DPout:out std_logic);end DP;architecture a of DP is begin

process(selDP)begin

if

selDP=“10” then DPout<='0';

elsif

selDP=“01” then DPout<='0';

elsif

selDP=“00” then DPout<='1';――在高4位整数输出时,输出

else null;

――小数点DP

end if;end process;end a;

顶层文件

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity V_WATCH is

port(clkK,EOCC:in std_logic;

DD:IN std_logic_vector(7 downto 0);

clk3,CLR3:IN STD_LOGIC;

OEE,START,ALEE,ADDAA:OUT STD_LOGIC;

DPOUT:OUT STD_LOGIC;

Qoutput:out std_logic_vector(6 downto 0);

Qselout:out std_logic_vector(1 downto 0));end V_WATCH;architecture a of V_WATCH is

――元件例化 COMPONENT DP port(SELDP:in std_logic_vector(1 downto 0);

DPout:out std_logic);END COMPONENT;COMPONENT del7 PORT(input : IN STD_LOGIC_vector(3 downto 0);

output

: OUT STD_LOGIC_vector(6 downto 0));END COMPONENT;COMPONENT mux3_1 port(sel:in std_logic_vector(1 downto 0);A,B,C:in std_logic_vector(3 downto 0);Mselout:out std_logic_vector(3 downto 0));END COMPONENT;COMPONENT ad port(st,eoc:in std_logic;

d:in std_logic_vector(7 downto 0);

oe,sta,ale,adda:out std_logic;

q:out std_logic_vector(7 downto 0));END COMPONENT;COMPONENT C3 PORT(clk,clr: IN STD_LOGIC;

qout: OUT std_logic_vector(1 downto 0));END COMPONENT;COMPONENT BCD PORT(V:IN STD_LOGIC_VECTOR(7 DOWNTO 0);

HB,LB:BUFFER STD_LOGIC_VECTOR(11 DOWNTO 0);

BVALUE:BUFFER STD_LOGIC_VECTOR(11 DOWNTO 0);

BCD_L,BCD_M,BCD_H:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;signal a:

std_logic_vector(1 downto 0);SIGNAL SBCD_L,SBCD_M,SBCD_H: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL b:

STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL q:

STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL BBCD:

STD_LOGIC_VECTOR(11 DOWNTO 0);

BEGIN U1:AD

PORT MAP(CLKK,EOCC,DD,OEE,START,ALEE,ADDAA, q);U2:BCD

PORT MAP(q,BCD_L=>SBCD_L,BCD_M=>SBCD_M,BCD_H=>SBCD_H);U3:C3

PORT MAP(CLK3,CLR3,a);

U4:MUX3_1 PORT MAP(SELOUT,SBCD_L,SBCD_M,SBCD_H,DI);U5:DEL7

PORT MAP(b, Qoutput);U6:DP

PORT MAP(a,DPOUT);QSELOUT<=a;end a;

第二篇:物理教案-电压表

[物理教案-电压表]

教学目标知识目标

1、知道电压表的用途和表示符号;

2、掌握电压表的量程、刻度方法、连接方法及调“零”方法.能力目标

1、培养学生的观察能力;

2、会正确使用电压表并能正确地读出电压表的示数.情感目标

培养学生热爱仪器、认真细心、实事求是的科学态度.教学建议教材分析

本节主要内容为两部分:一是电压表的读数,二是电压表的使用.这些知识均需要通过观察和实验获得,因此必须利用实物或挂图进行教学,注意培养学生的观察能力和重视实践的良好习惯.教材介绍了四种外形不同的电压表,目的是让学生了解形状各不相同、测量范围各不相同,然后要向学生说明我们物理实验室用的电压表示要求熟练掌握的.在实际测量电压中,要选用电压表的量程.选用电压表量程时,首先要知道刻度盘上每个大格和每个小格所代表的电压值,对于有两个量程的电压表要分清它们对应的刻度线所表示的电压值.这一点是学生容易错的,要通过反复练习是学生掌握.电压表的使用是本节的重点,首先是根据实际需要量程正确地接入电路,其次是根据选用的量程正确记录测量数据.这部分内容教学,教师要先做好示范,然后让学生反复练习.教法建议

1.首先要从生活实际中提出问题,引起学生思考,在学生需求状态下引入课题.例如:你家中的用电器,如收音机、电子钟、电风扇等,它们的工作电压各不相同.你知道它们的电压是怎样得到的吗?用什么仪表?怎样测量? 2.接下来介绍教材图6-

5、6-7形状不同、量程不同的各式电压表.(可以根据自己学校实际情况酌情处理).3.着重介绍物理实验室现有的学生用的电压表的量程和读数.对于选用的电压表的量程,要知道刻度盘上每个大格和每个小格所表示的电压值.着重练习有两个量程的电压表读数.读数是一件认真细心做的事.要仿照教材上图6-6的电压表表头,做一个较大的刻度盘供学生练读.在学生已使用过电流表的基础上,可以介绍电压表调零知识.当指针在电路未接通时不指在零位置,需用螺丝到调节中间旋钮,直至调到指针指在零位置为止.若无法调到零位置时,读数要计入这个差值.4.电压表的使用,可以按课文顺序,对每一条使用电压表的规则,先画图说明,接着进行操作演示,并要求学生认真观察.准备演示实验时,要注意如下两方面:(1)增大观察对象的能见度和清晰度.如用大型电表,利用幻灯放大,布线分开适当距离等,利用活动指针练习读数.(2)提高仪器放置的位置,尽可能使每给学生都能看到.建议自制一些试教板,将部件安放在试教板上,竖直地挂起来,边讲边操作.最后将电压表的使用根电流表的使用进行对比,做出小结.它们的共同点是:①都要选择量程;②都要在弄清最小刻度值后再度数;③都要使电流从正接线柱流进,从负接线柱流出.它们的不同点是,:①电流表是串联在被测电路中,电压表要与被测电路并联;②电流表的两个接线柱不允许直接接到电源的两个极上,而电压表在被测量范围内,可以这样连接.使用多个量程的电压表测量电压时,如果不能预先估计被测电压的大小,应先用哪个量程试触,为什么要这样做?这是实际生活中常遇到的问题,组织学生讨论课深化使用电压表的知识.试触方法是学生应该学会的,教师要根据学生情况对电压表的试触做一次示范.告诉学生,试触时宜用单根导线从侧面试触,这样可在看到指针偏转超出最大刻度时立即移开导线.教学设计方案教学单元分析 本节教学重点是电压表的使用,电压表的使用包括电压表的读数和电压表的连接.在电压表连接时,首先要选择量程,其次是把电压表并联在被测电路中,让电流从正接线柱流入,从负接线柱流出.本节的难点是根据电压表不同的量程去读数.应当通过反复练习让学生掌握.教学过程分析 1.通过比较电流表和电压表,加深对电压表的印象,培养学生的观察能力.在前面学完电流表使用的基础上,学习电压表有类似之处.因此在教学时,首先提出测电压的必要,其次指出测电压的仪表叫电压表.在介绍了电压表之后,要把电压表与学过的电流表进行比较.可以让学生进行观察比较,方法是每两个学生位一组,课桌上摆放一块电流表和一块电压表,看一看表头的标记有什么区别?表盘的标度有什么区别?表盘的接线柱标记有什么区别? 2.介绍与量程对应的表头读数.在使用电压表测电压前,要先估计被测电压值,再确定量程.确定量程后,介绍读数方法.照上图做表头试教板,移动指针练习读数.3.教师示范连接电压表,侧小灯泡两端电压.在连接教材图6-8电路用电压表测灯泡两端电压过程中,向学生介绍电压表的使用规则(教材中的三条).4.教师可以组织学生练习连接电压表测小灯泡两端电压.在实验室每两个学生为一组进行练习.板书设计:探究活动【课题】电压表的种类、原理、构造.【组织形式】学生小组【活动方式】

制订分类课题:1种类2原理3构造 制订查阅和查找方式:

物理教案-电压表

第三篇:电压表主程序模块

/**电压表主程序模块*/

#include

#define uchar unsigned char #define uint unsigned int void result(uchar);uchar value=0;#include“adc0809.h” #include“lcd1602.h” uchar str[5];uchar volt[7];

uchar a=0+0x30;uchar str1[11]=“tanxiaopin”;sbit CLK=P0^7;uint n;

void main(){

//uint i;ADC0809_init();lcd_init();while(1){

lcd_zifu(str1,0x01);

value=AD();//原值

str[0]=value/100+0x30;

str[1]=value%100/10+0x30;

str[2]=value%10+0x30;

result(value);

lcd_data(str,0x40);

lcd_data(volt,0x46);

} while(1);}

void result(uchar v)//转换成电压值 { float a;a=(v/255.0)*500.0;volt[0]=((int)a)/100+0x30;volt[1]='.';volt[2]=((int)a)%100/10+0x30;volt[3]=((int)a)%10+0x30;volt[4]=' ';volt[5]='V';} void t1(void)interrupt 3

{

CLK=~CLK;

}

/*ADC0809程序模块*/

#include #define uchar unsigned char #define uint unsigned int

sbit ST=P0^4;sbit EOC=P0^5;sbit OE=P0^6;//sbit CLK=P0^7;sbit ADDA=P0^0;sbit ADDB=P0^1;sbit ADDC=P0^2;

sbit ALE=P0^3;

uchar v;//保存IN0和经AD转换后的数据 /*非精确演示函数*/ void delay(ms){ uint i,j;

for(i=ms;i>0;i--)

for(j=125;j>0;j--);}

void ADC0809_init(){ TMOD=0x20;TH1=(255-250);TL1=(255-250);EA=1;//开总中断

ET1=1;//开定时器1中断

TR1=1;//启动定时器1

ST=0;

OE=0;ALE=0;} /*用中断做一个500K HZ的时钟信号*/

/******AD转换函数*******/ uchar AD(){ uchar temp=0;ST=0;//EOC=1;// ALE=1;ADDA=0;ADDB=0;ADDC=0;

delay(1);// ALE=0;

//OE=0;

ST=0;

ALE=1;

ST=1;

ALE=0;

ST=0;

delay(2);

while(EOC==0);

OE=1;

temp=P2;

delay(2);

OE=0;

return temp;}

/*ADC0809 模块封装头文件*/ void ADC0809_init();uchar AD();

/*LCD1602液晶显示模块*/ #include #include #define uchar unsigned char #define uint unsigned int sbit rs=P1^5;sbit rw=P1^6;sbit en=P1^7;void lcd_1602(uchar comm);void lcd_write(uchar dat);bit lcd_busy();extern void delay(uint);

void lcd_1602(uchar comm);void lcd_write(uchar dat);

bit lcd_busy();sbit busy=P3^7;extern void delay(uint);

/***************************** 1602液晶写命令函数 参数: 返回值:无

******************************/ void lcd_1602(uchar comm){ while(lcd_busy());//查忙

rs = 0;rw = 0;en = 0;

_nop_();P3 = comm;_nop_();en = 1;_nop_();_nop_();en = 0;} /***************************** 1602液晶写数据函数 参数: 返回值:无

******************************/ void lcd_write(uchar dat){ while(lcd_busy());//查忙

rs = 1;

rw = 0;

en = 0;

_nop_();

P3 = dat;

_nop_();

_nop_();

en = 1;

_nop_();

_nop_();

en = 0;}

/***************************** 1602液晶初始化函数 参数:无 返回值:无

******************************/ void lcd_init(){

delay(15);lcd_1602(0x38);delay(3);lcd_1602(0x38);

delay(3);lcd_1602(0x38);delay(3);lcd_1602(0x08);lcd_1602(0x01);delay(3);lcd_1602(0x06);lcd_1602(0x0c);} /***************************** 1602液晶读忙标志 参数:无 返回值:无

******************************/ bit lcd_busy(){

bit result;rs = 0;rw = 1;en = 1;delay(2);result = busy;en = 0;return result;}

/***************************** 1602液晶写字符 参数: 返回值:无

******************************/ void lcd_zifu(uchar *p,uchar wei){ uchar temp;lcd_1602(0x80+wei);/*temp= *p;while(temp!=''){

lcd_write(temp);

p++;

temp=*p;}*/ for(temp=*p;temp!='';p++,temp=*p)

lcd_write(temp);

delay(10);}

void lcd_data(uchar *p,uchar wei){ uchar temp;lcd_1602(0x80+wei);for(temp=*p;temp!='';p++,temp=*p)

lcd_write(temp);delay(10);} /*LCD1602液晶模块封装*/ void lcd_init();void lcd_zifu(uchar *p,uchar wei);void lcd_data(uchar *p,uchar wei);

第四篇:电压表教案

电压表

1)电压表的连接

通过大家的努力,我们对电池及电压已有所了解。如果老师现在有几节不同的电池,由于不小心将电池上标称的电压值磨掉了看不清楚,但必须知道其电压值是多少,大家可以帮助我吗? 我们可以利用电压表测量电池的电压,电路中电流的大小用电流表测量,电压的大小可以用电压表来测量。

1.a)b)c)认识电压表

该电压表的零刻度线在表盘的最左端。

该电压表有三个接线柱,两个量程。一个公共的“-”接线柱和两个“+”接线柱。使用“-”和“3”两个接线柱时,量程是3 V,刻度盘上每一大格表示“1 V”,每一小格表示“0.1 V”;使用“-”和“15”两个接线柱时,量程是15 V,刻度盘上每一大格表示“5 V”,每一小格表示“0.5 V”。电压表中间的旋钮可以调零。

电压表读数(二要、一不、二看清)

二要:电压表要并联在被测电路的两端,要使电流从电压表的“+”接线柱流入,从电压表的“-”接线柱流出。

一不:被测电压不能超过电压表的量程。

二看清:读数时一要看清电压表所用的量程;二要看清每一小格所表示的数值。d)2.a)

b)c)

小结

板书

注意:如果正、负接线柱接反了,指针会反向偏转,即向没有刻度的方向偏转。如果被测电压超过了电压表的量程,电压表的指针可能会超出刻度盘上的刻度线。

注意:如果正、负接线柱接反了,指针会反向偏转,即向没有刻度的方向偏转。如果被测电压超过了电压表的量程,电压表的指针可能会超出刻度盘上的刻度线。

习题:

1.在图所示的电路中,开关闭合后,会出现的情况是()

A.电流表鱼电压表都被烧坏 B.电流表与电压表都不会被烧坏 C.只有电压表会被烧坏

D.电流表、电源可能会被烧坏

2.如图9所示,设计电路图,要求亮灯串联,电压表测量两灯的总电压

第五篇:电压、电压表教案

电压 电压表

教学目的

1.知道电压的作用。知道电源是提供电压的装置。

2.知道电压的单位。能对电压的不同单位进行变换。

3.记住干电池、家庭电路的电压值。教具

U形管连通器一个,干电池一节,小灯泡一个,开关一个,导线若干条。教学过程

1.复习

(1)把一节干电池、小灯泡、开关放在示教板上,请一位同学按所画电路图,用导线将电路连接起来(连接电路之前,开关应当是断开的)。

(2)提问:什么叫电路,它由哪几部分组成?

2.引入新课

演示:闭合示教板上电路中的开关,灯泡亮了,说明电路中产生了电流。

提问:电流是怎样形成的?

取下电路中的干电池,闭合开关,灯泡不发光。

提出问题:在这种情况下,为什么电路中不能形成电流,电源的作用是什么?

3.进行新课

为了说明在什么情况下才能形成电流,我们先用水流作比喻,看看水流是怎样形成的?

提问:将装有水的U形管连通器的底部用止水钳夹住,两管内水面相平。打开止水钳,两管内的水会不会发生流动?

演示:向U形管左管内加水,使左管水面高出右管水面(图1)。(提问:打开止水钳,两管内的水会不会发生流动,如果发生流动,水怎样流动?)打开止水钳,水从左管向右管流动。

提出问题:为什么在连通器里的水面相平时,水不发生流动,而在左管水面高时,水从左管流向它的右管?U形管中的水能不能持续不断地流动?

(利用投影幻灯片或电脑设计程序表现出连通器水流的动态过程,反映出在这一过程中,水位的变化和连通器底部液片受到的压强变化的情况。见图2所示。)

可见,水位差(又叫水压)是使水定向流动形成水流的原因。

下面我们再来看一看如图3所示的复合投影幻灯片(或用电脑设计程序表示出它的动态过程)。

甲图中A处的水位高于B处的水位,打开阀门,管中的水从A处通过涡轮向B处流动,水的流动使涡轮转动。A处的水面下降,B处的水面上升,当A、B两处水面相平时,水位相同,水停止流动,涡轮不再转动,幻灯片要显示上述过程。可见,水位差(水压)使水管中形成水流。

现在,我们用一台抽水机不断地把水从B处抽到A处(如图3乙所示,将抽水机置入,同时表现出抽水的动态情况)、使A处的水总比B处的水位高,由于水管两端总保持一定的水位差(水压),于是水管内就有持续的水流。

下面我们来看看图4所示的电路(示数板上接好的简单电路)的情况。

电源的正极聚集有大量的正电荷,负极聚集有大量的负电荷,在电源的正、负极之间就产生了电压。这个电压使电路中电荷发生定向流动,使正电荷从正极流向负极,或者使负电荷从负极流向正极,于是在电路中产生了电流。

可见,电压是使电路中形成电流的原因。

在电路中,电源在工作时不断地使正极聚集正电荷,负极聚集负电荷,保持电路两端有一定的电压,使电路中有持续的电流。电源是提供电压的装置。

板书:<电压使电路中形成电流,电源是提供电压的装置。电压用符号U表示>

在图3所示装置中,不同的抽水机可以在水管两端产生不同的水位差,即大小不同的水压。同理,不同的电源可以在电路的两端产生大小不同的电压,为此,首先要确定电压的单位。在国际单位制里,电压的单位是伏特,简称伏(V)。此外,常用单位还有千伏(kV)、毫伏(mV)、微伏(μV)等。介绍它们的换算关系。

板书:<在国际单位制里,电压的单位是伏特(V)>

看课本几种电压值的图。

要求记住的电压值有:

一节干电池电压:1.5伏。

家庭电路的电压:220伏。

对人体安全的电压:不高于36伏。

练习题:

(1)电压使电路中形成______,______是提供电压的装置。

(2)220伏=______千伏=______毫伏。

4.小结

这节课讲授的电压是电学中又一个重要的物理量。由于知识所限,我们用水流作比喻讲述了电压使电路中形成电流。电源是提供电压的装置。要知道电压的单位,会进行单位变换。此外,还要记住干电池和家庭电路电压值。

(四)说明

1.“电压”这堂课既是重点,又是难点,不易被学生掌握。对于初学电学的学生来说,只要求知道电压是电路中形成电流的原因,电源是提供电压的装置和电压的单位。至于电压的定义、公式和电压的单位──伏特的物理意义留待高中再讲,在这节课内不要出现这些内容,否则因难度过大使学生不能接受。

2.用水流作比喻来讲电压,对于学生来说形象、生动,容易被学生所接受。在这里利用水压引出电压,从而认识电压使电路中形成电流。

3.为了使学生便于理解,在讲水流的形成时,最好用复合幻灯片模拟出它的动态过程。有条件的,用电脑设计出程序,将有更好的效果。

实验:用电压表测电压

教学目的

1.会按照电压表使用规则正确使用电压表,会选择电压表的量程和试触,会正确读出电压表的示数。

2.会用电压表测量电池的电压。通过实验研究串联电池组和并联电池组的电压跟每节电压的关系。

3.通过实验研究串联电路、并联电路中的电压关系。实验器材

学生实验:每组一个学生电源(或三节干电池),一只学生电压表,两个阻值不同的小灯泡,一个开关,导线若干。

演示实验:教学电压表一只,电源一个,开关一个。教学过程

1.复习

提问:

(1)怎样区分电压表和电流表?

(2)电压表和电流表在使用规则上,有哪些不同之处?有哪些相同之处?

2.引入新课

演示实验:将教学电压表通过开关与电源的正、负极相连,见图①。

提问:

(1)这种接法行不行?测出的是哪个元件两端的电压?

(2)在接线过程中要注意哪些问题?(注意:开关断开;并联在被测电路两端,电流从电压表“+”接线柱流进,从“-”接线柱流出;量程的选择和试触。)

(3)读出电压表的示数。

这个示数就是电源的电压。

3.进行新课

介绍这堂课的实验目的和所研究的内容。

实验的目的是:

(1)练习用电压表测干电池电压和一段电路两端的电压。

(2)研究干电池串联和并联时的电压关系;串联电路、并联电路中的电压关系。

这次实验分两个部分进行。

第一部分:测干电池电压,研究干电池串联、并联时的电压关系。

一、先取三节干电池,分别测出每节电池的电压。再将这三节干电池按图②串联成电池组,测出串联电池组的电压,将测得的数据记到表1内。分析串联电池组的电压跟各节干电池电压之间的关系,写出结论。

二、将两节相同的干电池按图③并联组成电池组,用电压表测这个并联电池组的电压,将测量数据填入表2内。分析并联电池组的电压跟每节电池的电压之间的关系,写出结论。

表1:串联电池组的电压

结论:________________。

表2:并联电池组的电压

结论:__________________。

第二部分:研究串联电路和并联电路的电压关系

一、按图④将L1、L2组成串联电路,用电压表分别测出:灯泡L1两端的电压U1,灯泡L2两端的电压U2,灯泡L1与L2串联的总电压U。要求:

先在作业本上画出将电压表接入电路的三幅电路图,并标出电压表的“+”、“-”接线柱。学生自己设计记录表格,做好记录后,分析实验结果,写出结论。

二、按图⑤,将L1、L2组成并联电路,用电压表分别测出灯泡L1两端的电压U1,灯泡L2两端的电压U2,A、B两点之间的总电压U。要求:

先在作业本上画出将电压表接入电路的三幅电路图,并标出电压表的“+”、“-”接线柱。学生自己设计记录表格;做好记录后,分析实验结果,写出结论。

实验完毕,断开电源,整理仪器,进行讲评。

4.小结

由学生汇报实验数据和所得到的结论。

(1)串联电池组的电压等于各节电池的电压之和。并联电池组的电压等于每节电池的电压。

(2)串联电路的总电压等于各部分电路两端电压之和。在并联电路里,各支路两端的电压相等,并且总电压等于各支路两端的电压。

练习题:(1)一个小电动机工作时,要求电源电压是6伏,要用几节干电池,怎样连接?

(2)在图⑥甲中,VA=6伏,VB=______,VC=______,在乙图中,V1=2伏,V=6伏,V2=______。

(四)说明

用电压表测电压的实验,对于大多数学生来说,并不困难。教师在教学中应注意:

1.严格要求学生按电压表使用规则进行实验操作。

2.培养能力,其中包括:按要求画电路图,自己设计记录表格,分析归纳得出结论。

基于FPGA的电压表
TOP