EDA洗衣机控制器.doc_第1页
EDA洗衣机控制器.doc_第2页
EDA洗衣机控制器.doc_第3页
EDA洗衣机控制器.doc_第4页
EDA洗衣机控制器.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

EDA课程作业报告洗衣机控制器 学院 电气学院 专业 建筑电气与智能化 班级 092 班 姓名 何 涛 学号 109035039 浙江科技学院2012年10月29日目录1.设计内容与目的. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 1.1课题选择. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 1.2设计思路. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12.程序设计与思路. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 2.1定义输入输出和中间变量. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2.2分频. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 2.3停机与复位. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.4设定定时时间(分)与复位. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 2.5工作状态选择. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 2.6工作状态输出. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 2.7数码管选择与显示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43.结果截图. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 3.1程序框图. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 3.2引脚设置. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 3.3仿真波形. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64.调试中遇到的问题和解决方法. . . . . . . . . . . . . . . . . . . . . . . . .65.心得与体会. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66.附录:所有程序. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71.设计内容与目的1.1课题选择项目5:洗衣机控制器l 设计要求:l 设计一个洗衣机洗涤程序控制器,控制洗衣机的电机作如下规律运转: 定时启动正转(20秒)暂停(10秒)反转(20秒)暂停(10秒)停止定时到定时未到l 用两位数码管预置洗涤时间(分钟数),洗涤过程在送入预置时间后开始运转,洗涤中按倒计时方式对洗涤过程作计时显示,用LED表示电机的正、反转,如果定时时间到,则停机并发出音响信号。1.2设计思路根据课题要求,首先需要一个输入,设定定时时间,然后计时启动,分别在0秒、20秒、30秒、50秒时输出正传、暂停、反转、暂停的信号并保持,60秒时正好一个循环,所以可以每次循环结束后计数,与设定定时时间比较,判断后选择停止(蜂鸣器发出警报)或继续循环输出。由于使用的EPM240T100C5开发板上引脚是低电平有效,所以要讲没有用到的引脚全部设置高电平,在主菜单Assignments Device Device & Pin Option Unused Pins下拉菜单选择As input tri-stated。2.程序设计与分析2.1定义输入输出和中间变量clk50mhz是芯片晶振输入;beep是蜂鸣器输出;led1、led2、led3分别代表电机正转、反转、暂停;ledout是7位数码管输出;shuout是数码管选择输出;start是电机开关,start=0,则电机启动,start=1则电机停止;count,count1,count2,counter,count1,都是计数变量;num存储定时时间;flag是选择工作状态信号。2.2分频将50mhz晶振分频,其中200hz用于扫描数码管, 50hz用于输入按键的消抖, 1hz用于计数单位。2.3停机与复位当内部计数count2等于定时时间num时,表示定时时间到了,控制电机停机en=0,start=0时,复位en=1。2.4设定定时时间(分)与复位每输入set定时时间增加1分钟,到9之后回到0,最多定时9分钟,输入clr则定时清02.5工作状态选择根据计数,flag赋值,flag=0正转;flag=1暂停;flag=反转,;lag=3暂停;判断定时是否到,如到,则计数变量清零,否则继续循环。2.6工作状态输出正转20秒,暂停10秒,反转20秒,暂停10秒。2.7数码管选择与显示3.结果截图3.1程序框图:3.2引脚设置:3.3仿真波形:4.调试中遇到的问题和解决方法:按照计划编写完所有程序后第一次编译,错误很多,有漏写end的,有把变量名num错写成sum的,有在两条子程序中对同一个变量赋值的,等等。最后根据错误提示内容,找出错误并一一改正。仿真时,因为实际所需频率过高,而把分频比例改小后再仿真,缩小仿真时间。将程序下载到开发板上调试时,由于程序写的不够严谨,而出现的,定时到了之后虽然蜂鸣器发出警报,但表示电机正转、反转和暂停的LED灯继续循环交替亮着,然后再在程序中补写了一个“停机与复位”子程序,计时时间到了之后将所有计数器清0,并且控制使能信号en阻止程序运行,也就没有了输出。另外,由于1hz、50hz、200hz变量定义问题,只能定义输出引脚,否则会随机选择引脚输出,还是自己定义一下引脚好了。5.心得与体会:再一次的体验到了细心对一个编程者的重要性,和程序的规范性对于程序的重要性,这些平时我们忽略的问题,其实有时候关乎着我们编程的成功率;再者,在verilog语言中,我们必须注意其与C语言的异同,比如格式和变量定义,还有模块的调用,和时钟信号的应用。还有,verilog HDL设计语言是一门很好的硬件描述语言,可以直白的描述实际的电路,实际的系统模型,易懂而且易于实现,我觉得在以后多加练习,可以对以后的学习和工作带来莫大的帮助。这次期末的课程设计就是对我们的一次考核,也可以说是一次考验,在平时做题目比较简单,而这次课程设计综合考核了我们的学习结果。课程设计培养了学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。这次的课题洗衣机控制器的设计,让我对身边的电气控制的设计产生了兴趣,希望这可以成为我今后不断前进的第一个动力。6.附录:所有程序:module xiyiji1(clk50mhz,clr,set,start,led1,led2,led3,beep,_1hz,_200hz,_50hz,ledout,shuout); input clk50mhz,clr,set,start; output reg led1,led2,led3,beep,_1hz,_200hz,_50hz,shuout; output reg 6:0 ledout; reg 3:0 flag,num,count2,counter1; reg 7:0 count1; reg 31:0 counter,count; reg en;/分频,从50mhz分频到200hzalways (posedge clk50mhz) begin if(counter=32d124999) begin counter=1b0;_200hz=_200hz; end else begin counter=counter+1b1;end end /分频,从200hz分频到50hzalways (posedge _200hz) begin if(counter1=4d9) begin counter1=1b0;_50hz=_50hz; end else begin counter1=counter1+1b1;end end /分频,从200hz分频到1hzalways (posedge _200hz) begin if(count=32d99) begin count=1b0;_1hz=_1hz; end else begin count=count+1b1;end end /设定时间(分)always (posedge _50hz) begin if(!clr) begin num=1b0;end else begin if(num=4d10) num=1b0; else if(set=0) num=num+1b1; end end /停机&复位always (posedge clk50mhz) begin if(!start) begin if(count2=num) begin en=0; end end else begin en=1; end end/工作状态选择always ( posedge _1hz) begin if(!start) begin if(en) begin if(count1=8d60) begin count1=1b0; count2=count2+1b1; end else if(count2=num) begin count2=1b0;end else begin case(count1) 8d0 : flag=2d0; 8d20: flag=2d1; 8d30: flag=2d2; 8d50: flag=2d3; default:flag=flag; endcase count1=count1+1b1; end end else begin count1=1b0;count2=1b0;end end else begin count1=1b0;count2=1b0;end end /工作状态输出always (posedge clk50mhz) begin if(!start) begin if(en) begin case(flag) 2d0: begin led1=0;led2=1;led3=1; end 2d1: begin led1=1;led2=1;led3=0; end 2d2: begin led1=1;led2=0;led3=1; end 2d3: begin led1=1;led2=1;led3=0; end default: begin led1=1;led2=1;led3=1; end endcase end else begin beep=0;led1=1;led2=1;led3=1;end end else begin beep=1;led1=1;led2=1;led3=1;end end/数码管显示always(posedge clk50mhz) begin case (num) 4d0:ledout=7b1000000; 4d1:ledout=7b1111001; 4d2:l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论