水位显示及控制报告.doc

上传人:wj 文档编号:2719589 上传时间:2023-05-04 格式:DOC 页数:17 大小:1.08MB
下载 相关 举报
水位显示及控制报告.doc_第1页
第1页 / 共17页
水位显示及控制报告.doc_第2页
第2页 / 共17页
水位显示及控制报告.doc_第3页
第3页 / 共17页
水位显示及控制报告.doc_第4页
第4页 / 共17页
水位显示及控制报告.doc_第5页
第5页 / 共17页
水位显示及控制报告.doc_第6页
第6页 / 共17页
水位显示及控制报告.doc_第7页
第7页 / 共17页
水位显示及控制报告.doc_第8页
第8页 / 共17页
水位显示及控制报告.doc_第9页
第9页 / 共17页
水位显示及控制报告.doc_第10页
第10页 / 共17页
水位显示及控制报告.doc_第11页
第11页 / 共17页
水位显示及控制报告.doc_第12页
第12页 / 共17页
水位显示及控制报告.doc_第13页
第13页 / 共17页
水位显示及控制报告.doc_第14页
第14页 / 共17页
水位显示及控制报告.doc_第15页
第15页 / 共17页
水位显示及控制报告.doc_第16页
第16页 / 共17页
水位显示及控制报告.doc_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

水位显示及控制报告.doc

《水位显示及控制报告.doc》由会员分享,可在线阅读,更多相关《水位显示及控制报告.doc(17页珍藏版)》请在冰点文库上搜索。

水位显示及控制报告.doc

西南交通大学本科毕业设计(论文)第II页

-+-–-

西南交通大学

课程设计实习报告

水位显示与控制

(第八组)

年级:

学号:

姓名:

专业:

指导老师:

2013年7月

西南交通大学电子技术课程设计(报告)第XVII页

设计任务及要求

设计并制作一种水位显示与控制电路。

其原理框图如下。

基本要求:

(1)用10个发光二极管作为水位高低的指示(类似于音量指示)

(2)可以给出无水,水满等指示信号

提高部分:

(1)数字显示水位

(2)用水泵进行抽水和蓄水控制

频率/水位Ⅱ

扫描与驱动

二进制/BCD

自制

水位传感器

AC/DC

5V

4位7段LED显示

频率计数

频率/水位

10位

LED驱动电路

提高部分

图1系统框图

要求:

1)水位传感器由555电路构成,输出为不同频率的方波。

2)频率/水位Ⅰ实际就是一个并行比较器,这里用CPLD来实现,即粗略给出水位范围再由LEDBAR显示出来。

3)频率/水位Ⅱ主要是除法运算和减法运算,即精确计算出水位,也可以由CPLD完成。

4)根据计算出的水位给出控制信号(如水已满,无水,或继续加水)

5)根据计算出的水位用7段LED动态显示出来

摘要

用QuartusII软件Verilog语言编程,包括频率计数器、比较器、除法器、减法器、二进制转BCD码、动态扫描器、译码器、Motor驱动等模块单元,然后利用这些单元整合成功能电路,在计算机中模拟成功后下载到EPC2T114C8芯片中,以此为控制中心,对整个电路进行控制。

用漆包线和水杯做成电容型水位感应器,水位的高低可以改变电容的大小,以此作为信息采集平台。

电容变化信息通过频率计数器和555构成的振荡器进行波形处理,再经过比较器电路处理后经10个LED灯的亮灭粗略显示水位高低。

提高部分则进是通过除法器,减法器,二进制转BCD码,动态扫描,译码等单元模块对信号进一步处理,以毫米为单位通过四位数码管精确显示水位高低及变化情况。

通过对采集频率信号的分析,也可采用Motor电机通过抽水、放水等操作实现对水位的控制。

关键词:

QuartusII;Verilog;并行比较计数器;Motor;水位传感器;555电路;扫描驱动;数码管等

总体方案:

1、传感器

自制水杯+漆包线+导线

电容效应代替555中电容而改变555输出信号频率。

实物图如下:

2、555

利用555构成振荡电路对传感器传输信号进行处理,产生代表水位信息的脉冲信号,不同水位对应不同电容,从而对应不同频率。

图如下:

3、晶振

事先内封于实验板上的50MHZ晶振

4、频率计数模块

总体分为分频+并行频率计数+锁存

分频器:

分频器通过调用w_count1模块,位数设置为20位,50M分频,再经过FenPin模块二分频。

频率计数器:

频率计数模块通过自编程序生成元器件实现,此处因程序所占逻辑单元过大而先对555输出频率进行1000000分频再处理,此方法会将频率百位及以下位舍去而造成误差,但在允许范围内。

程序代码如下:

moduleW_count1(clkn,clk,W_counter);

inputclkn,clk;

output[15:

0]W_counter;//DaiCe555signal

regclk_2s; //1ssignaloutput

reg[15:

0]W_counter;

reg[15:

0]data_out;

parameterN=100000000;

integern=0;

always@(posedgeclk)

begin

if(n>N-1)n=0;

elsen=n+1;

if(n<(N/2))clk_2s=1'b1;

elseclk_2s=1'b0;//1sFenPin

end

always@(posedgeclkn)

begin

if(clk_2s==1'b1)

data_out=data_out+1;

else

begin

if(data_out!

=0)

W_counter=data_out;

data_out=0;

end

end //signalCount

endmodule

⒌LED驱动及显示模块

比较器通过编写程序实现,程序代码如下:

moduleled_count(data,led,cout);

input[15:

0]data;//inputsignal

output[9:

0]led;//blueLED

outputcout;//redLED

regcout;

reg[9:

0]led;

always@(data)

begin

if(data>16'd17302)

begin

led='b0000000000;

cout=1'b1;//warningempty

end

elseif(data>16'd10856)

begin

led='b0000000001;

cout=1'b0;//1LEDs

end

elseif(data>16'd8142)

begin

led='b0000000011;

cout=1'b0;//2LEDs

end

elseif(data>16'd6835)

begin

led='b0000000111;

cout=1'b0;//3LEDs

end

elseif(data>16'd5767)

begin

led='b0000001111;

cout=1'b0;//4LEDs

end

elseif(data>16'd5174)

begin

led='b0000011111;

cout=1'b0;//5LEDs

end

elseif(data>16'd4496)

begin

led='b0000111111;

cout=1'b0;//6LEDs

end

elseif(data>16'd4041)

begin

led='b0001111111;

cout=1'b0;//7LEDs

end

elseif(data>16'd3643)

begin

led='b0011111111;

cout=1'b0;//8LEDs

end

elseif(data>16'd3335)

begin

led='b0111111111;

cout=1'b0;//9LEDs

end

elseif(data>16'd3058)

begin

led='b1111111111;

cout=1'b0;//10LEDs

end

elseif(data<=16'd3058)

begin

led='b1111111111;

cout=1'b1;//warningfull

end

end

endmodule

6.除法减法模块

除法器:

通过调用lpmdivid器件实现。

减法器:

通过调用lpm—add—sub器件实现

7.二进制转BCD码模块

除法减法模块出来的是二进制信号,而数码管显示十进制,为了使显示方便,此处进行二进制和BCD码的转换,程序核心是add3中移位,判断是否加三,具体程序代码如下:

moduleB_to_D(b,bcd);

parameterB_SIZE=8;

inputb;

outputbcd;

wire[19:

0]b;

reg[19:

0]bin;

reg[22:

0]bcd;

reg[22:

0]result;

always@(b)

begin

bin=b;

result=0;

/*if(ena==0)

bcd<=0;

else*/

repeat(15)

begin

result[0]=bin[15];

if(result[3:

0]>4)

result[3:

0]=result[3:

0]+4'd3;

if(result[7:

4]>4)

result[7:

4]=result[7:

4]+4'd3;

if(result[11:

8]>4)

result[11:

8]=result[11:

8]+4'd3;

if(result[15:

12]>4)

result[15:

12]=result[15:

12]+4'd3;

if(result[19:

16]>4)

result[19:

16]=result[19:

16]+4'd3;

result=result<<1;

bin=bin<<1;

end

result[0]=bin[19];

if(result>'d553677)

bcd<=0;

else

bcd<=result;

//end

end

endmodule

8.动态扫描模块

前面转码模块产生4个4位BCD码信号,扫描模块则在每个扫描时钟上升沿对信号进行扫描后输出一个选中的4位BCD码,同时有4个一位的选位信号产生,仅被选信号的选位信号为高电平。

动态扫描码程序代码如下:

moduleh_to_b(data_in,BCD_1,BCD_2,BCD_3,BCD_4);

input[22:

0]data_in;//Hzinput

output[3:

0]BCD_1,BCD_2,BCD_3,BCD_4;//WeiXuan

reg[3:

0]BCD_1,BCD_2,BCD_3,BCD_4;

always@(data_in)

begin

BCD_1=data_in[15:

12];

BCD_2=data_in[11:

8];

BCD_3=data_in[7:

4];

BCD_4=data_in[3:

0];

end

endmodule

modulescan(clk,BCD_1,BCD_2,BCD_3,BCD_4,

BCD_out_1,BCD_out_2,BCD_out_3,BCD_out_4,data);

inputclk;//Saomiaoclocksignal

input[3:

0]BCD_1,BCD_2,BCD_3,BCD_4;

outputBCD_out_1,BCD_out_2,BCD_out_3,BCD_out_4;//WeiXuan

output[3:

0]data;

//output[2:

0]sel;

regBCD_out_1,BCD_out_2,BCD_out_3,BCD_out_4;

reg[3:

0]data;

reg[2:

0]sel=3'b000;

always@(posedgeclk)

begin

if(sel<3'b011)sel=sel+1;

elsesel=0;//SaoMiao

end

always@(selorBCD_1orBCD_2orBCD_3orBCD_4)

begin

case(sel)

3'b000:

begindata=BCD_1;BCD_out_1=1;BCD_out_2=0;

BCD_out_3=0;BCD_out_4=0;end

3'b001:

begindata=BCD_2;BCD_out_1=0;BCD_out_2=1;

BCD_out_3=0;BCD_out_4=0;end

3'b010:

begindata=BCD_3;BCD_out_1=0;BCD_out_2=0;

BCD_out_3=1;BCD_out_4=0;end

3'b011:

begindata=BCD_4;BCD_out_1=0;BCD_out_2=0;

BCD_out_3=0;BCD_out_4=1;end//WeiXuanSaoMiao

endcase

end

endmodule

9.译码模块

动态扫描输出一个4位信号,通过译码模块转换成相应的数码管点亮信号,传输给数码管。

译码器程序代码如下:

moduleBCD_Dec7(data_in,Dout);

input[3:

0]data_in;//BCD_datas

output[7:

0]Dout;//7_segDuanXuan

reg[7:

0]Dout;

always@(data_in)

begin

case(data_in)

4'b0000:

Dout<=8'b00111111;

4'b0001:

Dout<=8'b00000110;

4'b0010:

Dout<=8'b01011011;

4'b0011:

Dout<=8'b01001111;

4'b0100:

Dout<=8'b01100110;

4'b0101:

Dout<=8'b01101101;

4'b0110:

Dout<=8'b01111101;

4'b0111:

Dout<=8'b00000111;

4'b1000:

Dout<=8'b01111111;

4'b1001:

Dout<=8'b01101111;

4'b1010:

Dout<=8'b01110111;

4'b1011:

Dout<=8'b01111100;

4'b1100:

Dout<=8'b00111001;

4'b1101:

Dout<=8'b01011110;

4'b1110:

Dout<=8'b01111001;

4'b1111:

Dout<=8'b01110001;

endcase

end

endmodule

10.Motor驱动

通过程序实现对驱动电机高低信号电平的输出控制,程序如下:

modulemotor(lever,data_in,IN1_3,IN2_4);

input[15:

0]lever,data_in;

outputIN1_3=1,IN2_4=1;

regIN1_3,IN2_4;

integern,m;

always@(data_in)

begin

if(data_in

begin

IN1_3=0;

IN2_4=1;

end

elseif(data_in>lever+14000)

begin

IN1_3=1;

IN2_4=0;

end

else

begin

IN1_3=1;

IN2_4=1;

end

end

endmodule

⒒数码管

以毫米为单位显示个、十、百、千4位数水位信息,稳定后仅个位数在部分情况下有加减较小的变化,误差控制在10%以内。

此实验因为使用铜线较细,导致所测频率过大而使参数A过大,而使程序所占逻辑单元太多,QuartusII软件不能编译,为解决此问题,对555输出信号进行1000000分频,相应的A会缩小1000000倍,而解决了位数过大的问题,然而,这样做会将一部分频率舍去,必然会使误差加大。

4位数码管在选位信号及译码器输出信号作用下被点亮,此时数码管是一位一位亮的,4个时钟为周期,每个时钟亮一位,但在频率高时,人眼区别不了闪烁,所以看起来就像是4位同时亮了。

(注:

需用10K电阻+NPN型BJT制作驱动电路。

Protel电路图

、以及铜线形状

12.电路模拟结果:

模拟电路图:

仿真波形图:

13.Protel原理图

PCB图

测试数据:

水位高度\mm

频率1\Hz

频率2\Hz

0

51676

51334

25

17302

18445

40

10856

10899

55

8142

8289

70

6835

7135

85

5767

5933

100

5174

5168

115

4465

4394

130

4041

3996

145

3642

3588

160

3335

3389

170

3058

3034

通过数据可大致估得:

A=553000;

B=8;

实物照片:

测试步骤:

1、程序调试

程序测试过程当中,我们组采用分功能模块测试的办法,先将各功能模块电路进行波形分析,具体可如以下系列图所示:

(1)LED灯控制模块

波形图

(2)数码管显示模块

波形图

(3)motor模块波形图

2、硬件调试

使用说明:

首先保证开关电源处在打开状态,将编译通过的各模块下载到开发板内。

将水位传感器的地线及信号输入线分别接入开发板相应位置,开始往水瓶内加水在此过程当中可以明显的看到,随着水位的上升,亮着的LED灯的数目会随着增加,同时数码管也能相对比较准确的反映出此时水位的高度并通过数字(以毫米为最小单位)显示出来。

此时打开控制水泵的开关(我们组事先已经在程序内设定当水位处在下警戒水位以下以及上警戒水位以上时,水泵会自己进行抽水或排水操作),当水位传感器测出水位处在下警戒水位以下时,水泵会启动并进行抽水操作往水瓶内抽水,当水位在上警戒水位以上时,水泵则会启动将水瓶内的水往外抽,而若当水位处于两警戒水位中间时,水泵则保持不工作状态。

收获体会:

此次暑期实习,我们组三人完成了水位显示与控制课题的基础要求以及数码管显示水位、电机抽水蓄水的提高部分要求的设计及制作,能够通过LED灯的数量大致反映水位高情况以及数码管相对精确反应水位情况,按时完成并实现课题实验的所有要求。

在老师的指导下,我们掌握了通过555电路频率换算的测量方法,在此期间我们巩固并强化了数字电路及模拟电路实验中的各项知识点,掌握了电子课程设计,protel软件学习及quartus软件应用的基本要点,并在此基础上编写程序,实现各项功能,真正做到了学有所用,达到了老师的要求。

在此感谢史燕老师对我们的细心教学及耐心指导,让我们了解简单的电子课程设计和制作过程,也让我们认识到电子信息理论与实际结合的重要性和必要性,以及实验在今后工程项目中的重要地位。

当然,在此过程当中也走了很多弯路,比如说在线路连接过程当中,线路连接出来了,但测试的时候结果总和预期的不同,没办法的情况下,我们组的每个人都自己连了一遍,最后还是不行,绝望之余的无意间才发现是电路有地方接触不良;还有程序在使用过程当中也走了不少的弯路,程序调好之后使用时总发现显示不好,调了好长时间才发现是有些参数使用不当、、、这些问题看似微小,但却非常的浪费时间,从而使得我们在设计过程当中的效率大大降低。

但是事后细想之余,感觉还是收获很多。

正因为我们在这走了很多的弯路,我们以后在做其他设计时才会有所注意,我们的思考面才会更宽广,从而大大提高我们工作的效率。

当然,我们还有很多亟待解决的问题,而这些实际上是本次实习最宝贵的地方,只有出现问题,解决问题才能很好地总结经验,才能在解决问题中学会最全面的知识。

通过本次实习,我们的动手能力及理论运用能力也提升了,当然我们还需要更加努力地在学习中成长,同时以一种严谨的态度对待专业知识。

并在以后的学习当中不断进取,争取早日成为合格的人才。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2