下载此文档

水位显示及控制报告.doc


文档分类:通信/电子 | 页数:约25页 举报非法文档有奖
1/25
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/25 下载此文档
文档列表 文档介绍
-+-–-西南交通大学课程设计实****报告水位显示与控制(第八组)年级:学号:姓名:专业:指导老师:2013年7月设计任务及要求设计并制作一种水位显示与控制电路。其原理框图如下。基本要求:用10个发光二极管作为水位高低的指示(类似于音量指示)可以给出无水,水满等指示信号提高部分:数字显示水位用水泵进行抽水和蓄水控制频率/水位Ⅱ扫描与驱动二进制/BCD自制水位传感器AC/DC5V4位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电路;扫描驱动;数码管等总体方案:传感器自制水杯+漆包线+导线电容效应代替555中电容而改变555输出信号频率。实物图如下:2、555利用555构成振荡电路对传感器传输信号进行处理,产生代表水位信息的脉冲信号,不同水位对应不同电容,从而对应不同频率。图如下:晶振事先内封于实验板上的50MHZ晶振频率计数模块总体分为分频+并行频率计数+锁存分频器:分频器通过调用w_count1模块,位数设置为20位,50M分频,再经过FenPin模块二分频。频率计数器:频率计数模块通过自编程序生成元器件实现,此处因程序所占逻辑单元过大而先对555输出频率进行分频再处理,此方法会将频率百位及以下位舍去而造成误差,但在允许范围内。程序代码如下:moduleW_count1(clkn,clk,W_counter);inputclkn,clk;output[15:0]W_counter;//DaiCe555signalregclk_2s; //1ssignaloutputreg[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;//1sFenPinend 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 //signalCountendmodule⒌LED驱动及显示模块比较器通过编写程序实现,程序代码如下:moduleled_count(data,led,cout);input[15:0]data;//inputsignaloutput[9:0]led;//blueLEDoutputcout;//redLEDregcout;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'

水位显示及控制报告 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数25
  • 收藏数0 收藏
  • 顶次数0
  • 上传人sanshenglu2
  • 文件大小1.07 MB
  • 时间2020-07-31