水位显示及控制报告.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
-+-–- 西 南 交 通 大 学 课程设计实习报告 水位显示与控制 (第八组) 年 级: 学 号: 姓 名: 专 业: 指导老师: 2013年7月 设计任务及要求 设计并制作一种水位显示与控制电路。其原理框图如下。 基本要求: 用10个发光二极管作为水位高低的指示 图1 系统框图 要求: 1)水位传感器由555电路构成,输出为不同频率的方波。 2)频率/水位Ⅰ实际就是一个并行比较器,这里用CPLD来实现,即粗略给出水位范围再由LED BAR显示出来。 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输出频率进行1000000分频再处理,此方法会将频率百位及以下位舍去而造成误差,但在允许范围内。程序代码如下: module W_count1(clkn,clk,W_counter); input clkn,clk; output[15:0] W_counter;//Dai Ce 555 signal reg clk_2s; //1s signal output reg[15:0] W_counter; reg[15:0] data_out; parameter N=100000000; integer n=0; always@(posedge clk) begin if(nN-1) n=0; else n=n+1; if (n(N/2)) clk_2s=1b1; else clk_2s=1b0; //1s Fen Pin end always@(posedge clkn) begin if(clk_2s==1b1) data_out=data_out+1; else begin if(data_out!=0) W_counter=data_out; data_out=0; end end //signal Count endmodule ⒌ LED驱动及显示模块 比较器通过编写程序实现,程序代码如下: module led_count(data,led,cout); input[15:0] data; //input signal output[9:0] led; //blue LED output cout; //red LED reg cout; reg[9:0] led; always@(data) begin if(data16d17302) begin led=b0000000000; cout=1b1;//warning empty en

文档评论(0)

xingyuxiaxiang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档