北京科技大学EDA课程设计报告
- 格式:doc
- 大小:481.50 KB
- 文档页数:12
《EDA课程实验设计报告》洗衣机自动控制器设计一实验要求:1、由一个按键控制洗衣机的启动、暂停。
2、洗衣机洗涤一定时间后,能自动停止,由一个LED灯闪烁提示,并发出报警提示。
3、洗涤时间能用数码管显示,暂停时时间停止,暂停后时间在停止的时间基础上继续计时。
4、用至少四个LED指示灯的流动表示洗衣机的正转和反转。
即当正转20秒时,四个指示灯从右向左循环移动;反转20秒时,四个指示灯从右向左循环移动。
5、暂停10秒时,四个指示灯闪烁来表示电机停止转动。
二.设计总体思路,基本原理1.设计总体思路从课程设计要求来看,要求实现电机的正传、反转、暂停,用四个LED灯的状态来表示,当显示时间前20秒正传、暂停10秒、反转20秒、再暂停10秒,如此一来,周期恰好是60秒,理所当然的分钟计数器、秒计数器是一定要有的。
接下来脉冲是一定的了,但是有分钟计数器和秒钟计数器还要考虑是不是要60分频器,就我们所学过的来说实现循环有移位寄存器;还有个问题,当洗涤时间到了,报警还要一个报警电路,根据要求,报警的蜂鸣器不可以长时间的叫,要有个合理的时间,我们可以用一个单稳态电路来实现。
方案为:直接从数值上进行提取信号来控制一个可以实现循环的74LS194来实现。
2.基本原理首先,从秒脉冲出来的信号,经过一个控制电路后进入秒计数器进行秒计数,进行清零,这时用户置入洗涤时间,并按开始按钮,洗衣机开始工作。
当秒计数器变为零的时候,去分钟计数器上面借数;与此同时,从十秒位转化出来的信号进入移位寄存器后,LED灯表示出电机运转状态;当用户设定的洗涤时间结束后,电路报警并清零。
三.单元电路设计1.一百进制分计数器和六十秒计数器的设计(1)分、秒计数器的设计分、秒计数器我们都用74192片,74192上升沿触发,由UP,DOWN两管脚控制加减计数,有异步置数端LOAR和异步复位端CLR,BO’和CO’分别输出高电平表示加进位和减进位。
由于74192没有保持脚,故需要外围电路实现保持功能。
实用成绩:EDA课程设计报告课程 EDA课程设计专业学号姓名指导教师日期 2012.06.21机械与电子信息学部一、设计任务与要求1.任务:制作并调试EDA学习板2.了解并能识别学习板上的各种元器件,会读元器件标示;3.会看电路原理图;4.制作EDA学习板;5.编写VHDL程序进行跑马灯控制6.编写VHDL程序进行步进电机的转速控制7.学会使用QuartusⅡ软件下载调试程序;8.用调试程序将学习板调试成功。
9.二.课程设计目的通过编写VHDL程序,结合硬件电路设计,实现跑马灯和步进电机的转速控制。
经过本次课程设计,能够将所学专业理论知识进行综合实际运用,锻炼学生的动手能力以及提高学生的综合专业素质。
三、实验内容1.芯片工作电路,利用晶振提供控制信号。
2.10引脚下载口与芯片相关引脚相连完成下载电路。
3.利用16个开关做成键盘,实现输入号对已编程的芯片的控制并通过数码管显示0--F。
4.用2片74HC573N具有锁存功能芯片与8个数码管相连,通过编程实现位选和段选实现输出信号的显示功能。
5.使用74HC573N锁存功能结合ULN2003AG芯片8非门芯片和74HC04N6非门芯片与4个2N5551三极管实现对步进电机的控制,和控制步进电机6.信号结合LED输出显示的功能。
7.利用1片74HC573N芯片与8个共阴极LED实现跑马灯功能。
四.课程设计器材清单六.程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cc isport(clk: in std_logic;bj:out std_logic_vector(3 downto 0);start:in std_logic;kbcol:in std_logic_vector(3 downto 0);kbrow:out std_logic_vector(3 downto 0);seg1_out:out std_logic_vector(3 downto 0);seg2_out:out std_logic_vector(3 downto 0);qq_out:out std_logic_vector (7 downto 0);qq1_out:buffer std_logic_vector(7 downto 0);sk:in bit);end;architecture one of cc istype btype is(s0,s1,s2,s3);signal current_state,next_state:btype;signal count: std_logic_vector(1 downto 0);signal sta: std_logic_vector(1 downto 0);signal seg1: std_logic_vector(3 downto 0);signal seg2: std_logic_vector(3 downto 0);signal fn: std_logic;signal ks:std_logic_vector(1 downto 0);signal qq: std_logic_vector (7 downto 0);signal qq1:std_logic_vector (7 downto 0);signal sp1,sp2:std_logic_vector(3 downto 0);beginpqq:process (clk)beginif clk'event and clk='1' thenqq<=qq+1;end if;end process;qq_out<=qq;reg:process (qq(7))beginif qq(7)'event and qq(7)='1'thencurrent_state <=next_state;end if;end process reg;com:process (current_state)begincase current_state iswhen s0=> bj<="0011";next_state <=s1; when s1=> bj<="1001";next_state <=s2; when s2=> bj<="1100";next_state <=s3; when s3=> bj<="0110";next_state <=s0; when others=>next_state <=s0;end case;end process com;process(clk)beginif clk'event and clk='1'then count<=count+1; end if;end process;process(clk)beginif clk'event and clk='1'thencase count iswhen "00"=>kbrow<="0001";sta<="00";when "01"=>kbrow<="0010";sta<="01";when "10"=>kbrow<="0100";sta<="10";when "11"=>kbrow<="1000";sta<="11";when others=>kbrow<="1111";end case;end if;end process;process(clk,start)beginif start='0'then seg1<="0000";seg2<="0000"; elsif clk'event and clk='1'thencase sta iswhen "00"=>case kbcol iswhen "0001"=>seg1<="0000";seg2<="0001"; when "0010"=>seg1<="0000";seg2<="0010";when "0100"=>seg1<="0000";seg2<="0011";when "1000"=>seg1<="0000";seg2<="0100";when others=>seg1<="1111";seg2<="1111";end case;when "01"=>case kbcol iswhen "0001"=>seg1<="0000";seg2<="0101";when "0010"=>seg1<="0000";seg2<="0110";when "0100"=>seg1<="0000";seg2<="0111";when "1000"=>seg1<="0000";seg2<="1000";when others=>seg1<="1111";seg2<="1111";end case;when "10"=>case kbcol iswhen "0001"=>seg1<="0000";seg2<="1001";when "0010"=>seg1<="0001";seg2<="0000";when "0100"=>seg1<="0001";seg2<="0001";when "1000"=>seg1<="0001";seg2<="0010";when others=>seg1<="1111";seg2<="1111";end case;when "11"=>case kbcol iswhen "0001"=>seg1<="0001";seg2<="0011";when "0010"=>seg1<="0001";seg2<="0100";when "0100"=>seg1<="0001";seg2<="0101";when "1000"=>seg1<="0001";seg2<="0110";when others=>seg1<="1111";seg2<="1111";end case;when others=>seg1<="1111";seg2<="1111";end case;end if;end process;fn<=not(seg1(0)and seg2(0)and seg2(1)and seg2(2)and seg2(3)); process(fn)beginif fn'event and fn='1'thenseg1_out<=seg1;seg2_out<=seg2;end if;end process;process (qq(7))variable c:integer range 7 downto 0; beginif qq(7)'event and qq(7)='1'thenc:=c+1;if c=7 thenqq1<=qq1+1;end if;end if;end process;process (fn,qq1)beginif fn'event and fn='1' thencase seg1 iswhen "0000"=>case seg2 iswhen "0001"=>qq1_out<="00011001"; when "0010"=>qq1_out<="00110010"; when "0011"=>qq1_out<="01001011"; when "0100"=>qq1_out<="01100100"; when "0101"=>qq1_out<="01111111"; when "0110"=>qq1_out<="10010110"; when "0111"=>qq1_out<="10101111"; when "1000"=>qq1_out<="11001000"; when "1001"=>qq1_out<="11100001"; when others=>qq1_out<=qq1;end case;when "0001"=>case seg2 iswhen "0000"=>qq1_out<="11110000"; when "0001"=>qq1_out<="11111111"; when "0010"=>qq1_out<="00000000"; --when "0011"=>qq1_out<=qq1;when others=>qq1_out<=qq1;end case;when others=>qq1_out<=qq1;end case;end if;end process;process(sk,start,sp1,sp2)beginif start='0' then sp1<="0000";sp2<="0000";elsif sk'event and sk='1' thenif sp2<"1001" then sp2<=sp2+1;else sp2<="0000";end if;end if;if sp2="1001" then sp1<=sp1+1;end if;end process;end;七.元件调试1、否短路用万用表检查P2两端是短路。
EDA-课程设计报告书《电子设计自动化EDA》课程设计报告书学号:08057102 班级:自动化081 姓名:陈婷指导教师:刘伟目录一、设计思想(一)、设计要求1、具有以24小时制时、分、秒记时、显示功能。
2、具有整点报时功能,整点报时的同时LED花样显示。
3、具有消零,调节小时,分钟功能。
4、设计精度要求为1s。
(二)、系统功能描述1.、系统输入:调时、调分,清零信号,分别用按键开关SETHOUR、SETMIN、RESET控制;计数时钟信号CLK采用2HZ时钟源,扫描时钟信号CLKDSP采用32HZ时钟源或更高;2、系统输出:8位八段共阴极数码管显示输出;LED花样显示输出;3、系统功能详细描述:计时:正常工作状态下,每日按24小时计时制,蜂鸣器无声,逢整点报时。
显示:要求采用扫描显示方式驱动8位8段数码管显示。
整点报时:蜂鸣器在“51”、“53”、“55”、“57”、“59”秒发音,结束时为整点;校时:在计时状态下,按下按键SETMIN设定分钟,按下按键SETHOUR设定小时。
(三)设计思路1、分别写出六进制、十进制、二十四进制、清零、设置时分、LED译码部分,在主体部分用元件例化语句计时,清零设置时分、LED译码,再加上扫描模块2、将六进制、十进制、二十四进制、清零、设置时分、LED译码、扫描模块分模块写在一个主中(四)系统电路结构框图二、设计步骤(一)各种进制的计时及时钟控制模块程序1、6进制library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity counter6 isport( clk,reset,set: in std_logic;ain:in std_logic_vector(3 downto 0);aout: out std_logic_vector(3 downto 0);co: out std_logic);end counter6;architecture art2 of counter6 issignal count:std_logic_vector(3 downto 0);beginprocess(clk)beginif (clk'event and clk='1')thenif(reset='0')then count<="0000";elsif(set='1')then count<=ain;elsif (count="0101")thencount<="0000";co<='1';else count<=count+1;co<='0';end if;end if;end process;aout<=count;end art2;2、10进制library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity counter10 isport(clk,reset,set: in std_logic;ain:std_logic_vector(3 downto 0);aout:out std_logic_vector(3 downto 0); co:out std_logic);end counter10;architecture art1 of counter10 issignal count:std_logic_vector(3 downto 0);beginprocess(clk)beginif(clk'event and clk='1') thenif(reset='0')then count<="0000";elsif(set='1')then count<=ain;elsif(count="1001") thencount<="0000";co<='1';else count<=count+1;co<='0';end if;end if;end process;aout<=count;end art1;3、24进制ibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity counter24 isport( clk,reset,set: in std_logic;ainh:in std_logic_vector(3 downto 0);ainl:in std_logic_vector(3 downto 0);aout: out std_logic_vector(7 downto 0)); end counter24;architecture art3 of counter24 issignal count:std_logic_vector(7 downto 0); beginprocess(clk)beginif(clk'event and clk='1') thenif(reset='0')then count<="00000000";elsif(set='1')then count(7 downto 4)<=ainh;count(3 downto 0)<=ainl;elsif(count(7 downto 4)<"0011" ) thenif(count(7 downto 4)="0010" and count(3 downto 0)="0011") thencount<="00000000";elsif(count(3 downto 0)="1001") thencount(3 downto 0)<="0000";count(7 downto 4)<=count(7 downto 4)+1;else count(3 downto 0)<=count(3 downto 0)+1;end if;end if;end if;--end if;end process;aout<=count;end art3;(二)系统整体程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clock isport(clk,b1,clks: in std_logic;reset: in std_logic;setmin,sethour: in std_logic;minutell,minutehh,hourll,hourhh,b2:instd_logic_vector(3 downto 0);secondl,secondh:out std_logic_vector(3 downto 0);--second0,second2:out std_logic_vector(6 downto 0);minutel,minuteh:out std_logic_vector(3 downto 0);--minute0,minute2:out std_logic_vector(6 downto 0);hourl,hourh:out std_logic_vector(3 downto 0); --hour0,hour2,dout:out std_logic_vector(6 downto 0);dout:out std_logic_vector(6 downto 0);s:out std_logic_vector(2 downto 0); singing,light: out std_logic);end clock;architecture art of clock iscomponent counter10 isport(clk,reset,set: in std_logic;ain:in std_logic_vector(3 downto 0);aout:out std_logic_vector(3 downto 0);co:out std_logic);end component;component counter6 isport(clk,reset,set: in std_logic;ain:in std_logic_vector(3 downto 0);aout:out std_logic_vector(3 downto 0);co:out std_logic);end component;component counter24 isport(clk,reset,set: in std_logic;ainh,ainl:std_logic_vector(3 downto 0);aout:out std_logic_vector(7 downto 0));end component;component led7 isport(ain: in std_logic_vector(3 downto 0);aout:out std_logic_vector(6 downto 0));end component;signal cs0,cs1,cm0,cm1:std_logic;signals0,s1,m0,m1,h0,h1,cout:std_logic_vector(3 downto 0);signal h:std_logic_vector(7 downto 0);signal count:std_logic_vector(2 downto 0);beginh0<=h(3 downto 0);h1<=h(7 downto 4);u1:counter10 port map(clk=>clk,reset=>reset,set=>b1,ain=>b2,aou t=>s0,co=>cs0);u2:counter6 port map(clk=>cs0,reset=>reset,set=>b1,ain=>b2,aout=>s1,co=>cs1);u3:counter10portmap(clk=>cs1,reset=>reset,set=>setmin,ain=>mi nutell,aout=>m0,co=>cm0);u4:counter6portmap(clk=>cm0,reset=>reset,set=>setmin,ain=> minutehh,aout=>m1,co=>cm1);u5:counter24portmap(clk=>cm1,reset=>reset,set=>sethour,ainl=> hourll,ainh=>hourhh,aout=>h);u6:led7 port map(ain=>cout,aout=>dout);secondl<=s0;secondh<=s1;minutel<=m0;minute h<=m1;hourl<=h0;hourh<=h1;process(m1,m0,s1,s0)beginif(m1="0101" and m0="1001" and s1="0101" and s0="1001") thensinging<='1';light<='1';else singing<='0';light<='0';end if;end process;process(clks)beginif(clks'event and clks='1') thenif (count="101") thencount<="000";else count<=count+1;end if;s<=count;CASE count ISwhen"000"=> cout<=s0;when"001"=> cout<=s1;when"010"=>cout<=m0;s<="010";when"011"=> cout<=m1 ;when"100"=> cout<=h0;when"101"=> cout<=h1;when others=> cout<="0000";end case;end if;end process;end art;三、调试过程(一)仿真波形1、6进制程序仿真波形2、10进制程仿真波形3、24进制程序仿真波形4、系统程序仿真波形(二)分析问题1:u6:led7 port map(ain=>secondl,aout=>second0);u7:led7 port map(ain=>secondh,aout=>second1);u8:led7 port map(ain=>minutel,aout=>minute0);u9:led7 port map(ain=>minuteh,aout=>minute1);u10:led7 port map(ain=>hourl,aout=>hour0);u11:led7 port map(ain=>hourh,aout=>hour1);问题分析:元件例化是并行语句,按此段代码LDE并行显示,每一个数码管都需要八个端口,这样就需要八排插口,而试验箱只有一排端口。
课程设计报告(理工类)课程名称: EDA技术专业班级:电子信息工程101 学生学号:学生姓名:所属院部:指导教师:20 11 ——20 12 学年第 2 学期设计项目名称:数字秒表设计实验地点:同组学生姓名:设计成绩:批改教师:批改时间:1.课程设计目的2.课程设计的基本要求3.课程设计类型二、仪器和设备三、设计过程1.设计内容和要求2.设计方法和开发步骤3.设计思路4.设计难点四、设计结果与分析1.思路问题以及测试结果失败分析2.程序简要说明1.课程设计目的1)根据设计要求,完成对数字秒表的设计。
2)进一步加强对MaxplusⅡ软件的应用和对VHDL语言的使用。
2.课程设计的基本要求1)提供的时钟信号频率为100Hz,实现计数从0.01s到0.1s,再到1s,10s,1min,10min,1h。
3.课程设计类型1)综合应用设计二、仪器和设备1.计算机,1台三、设计过程1.设计内容和要求1)用MaxplusⅡ软件编程实现六进制计数器、十进制计数器、分频器(3MHz——100MHz)模块。
2)编译各个模块,连接各模块,最终实现一小时的秒表计数功能。
2.设计方法和开发步骤1)编程实现十进制计数器十进制计数器源代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity cnt10 isport(clk: in std_logic;clr: in std_logic;ena: in std_logic;cq: out integer range 0 to 15;carry_out: out std_logic);end entity cnt10;architecture art of cnt10 issignal cqi: integer range 0 to 15; beginprocess(clk,clr,ena)isbeginif clr='1'then cqi<=0;elsif clk'event and clk='1'then if ena='1'thenif cqi<9 then cqi<=cqi+1; else cqi<=0;end if;end if;end if;end process;process(cqi)isbeginif cqi=9 then carry_out<='1';else carry_out<='0';end if;end process;cq<=cqi;end architecture art;2)编程实现六进制计数器六进制计数器源代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity cnt6 isport(clk: in std_logic;clr: in std_logic;ena: in std_logic;cq: out std_logic_vector(3 downto 0);carry_out: out std_logic);end entity cnt6;architecture art of cnt6 issignal cqi: std_logic_vector(3 downto 0);beginprocess(clk,clr,ena)isbeginif clr='1'then cqi<="0000";elsif clk'event and clk='1'thenif ena='1'thenif cqi="0101"then cqi<="0000";else cqi<=cqi+'1';end if;end if;end if;end process;process(cqi)isbeginif cqi="0000"then carry_out<='1';else carry_out<='0';end if;end process;cq<=cqi;end architecture art;3)编程实现分频器模块分频器源代码(3MHz—100Hz)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity clkgen isport(clk: in std_logic;newclk: out std_logic);end entity clkgen;architecture art of clkgen issignal cnter:integer range 0 to 10#29999#; beginprocess(clk) isbeginif clk'event and clk='1' thenif cnter=29999 then cnter<=0;else cnter<=cnter+1;end if;end if;end process;process(cnter) isbeginif cnter=29999 then newclk<='1';else newclk<='0';end if;end process;end architecture art;3.设计思路因为实验硬件仿真提供3MHz的时钟信号,所以要用分频器实现3MHz 到100Hz的时钟信号的转换。
《EDA技术及应用课程设计》报告系别:专业班级:学生姓名:指导教师:(课程设计时间:年月日——年月日)。
校秒表是人们日常生活中常用的测时仪器,它能够简单的完成计时、清零等功能,从一年一度的校际运动会到NBA、世界杯、奥运会,都能看到秒表的身影。
1.系统设计要求学习使用EDA集成设计软件MaxplusⅡ设计一个计时范围为0.01秒~1小时的数字秒表,能够精确反映计时时间,并完成复位、计时功能。
秒表计时的最大范围为1小时,精度为0.01秒。
秒表可得到计时时间的分、秒、0.1秒等度量,且各度量单位间可正确进位。
当复位清零有效时,秒表清零并做好计时准备。
任何情况下,只要按下复位开关,秒表都要无条件的进行复位操作,即使在计时过程中也要无条件的清零。
了解全过程中VHDL程序的基本结构,掌握使用EDA工具设计数字系统的设计思路和设计方法。
学习VHDL基本逻辑电路的综合设计应用。
根据电路持点,用层次设计概念。
将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,同时加深层次化设计概念;考虑软件的元件管理深层含义,以及模块元件之间的连接概念,对于不同目录下的同一设计,如何熔合等问题。
2.系统设计方案根据上述设计要求,可以预先设计若干个不同进制的计数器单元模块,然后将其进行例化组合来得到数字秒表系统。
要满足数字秒表的精度,首先要获得精确的计时基准信号,这里的系统精度要求为0.01秒,因此必须设置周期为0.01秒的时钟脉冲。
1/100秒、秒、分等计时单位之间的进位转换可以通过不同进制的计数器实现,我们分别设计十进制计数器和六进制计数器,每位计数器均能输出相应计时单位计数结果,其中,十进制计数器可以实现以0.01秒、0.1秒、1秒和1分为单位的计数,六进制计数器可以实现以10秒、10分为单位的计数,把各级计数器级联,即可同时显示百分秒、秒和分钟。
停止和启动功能可以通过计时使能信号完成。
信号有效时正常计时,否则没有脉冲输入到计数器,从而停止计时。
EDA课程设计报告•相关推荐EDA课程设计报告在我们平凡的日常里,报告的使用成为日常生活的常态,报告中涉及到专业性术语要解释清楚。
那么报告应该怎么写才合适呢?以下是小编为大家整理的EDA课程设计报告,希望对大家有所帮助。
EDA课程设计报告1实训任务:一、实训目的和要求:(1)熟练掌握keil c51集成开发环境的使用方法(2)熟悉keil c51集成开发环境调试功能的使用和dp?51pro。
net单片机仿真器、编程器、实验仪三合一综合开发平台的使用。
(3)利用单片机的p1口作io口,学会利用p1口作为输入和输出口。
(4)了解掌握单片机芯片的烧写方法与步骤。
(5)学会用单片机汇编语言编写程序,熟悉掌握常用指令的功能运用。
(6)掌握利用protel 99 se绘制电路原理图及pcb图。
(7)了解pcb板的制作腐蚀过程。
二、实训器材:pc机(一台)pcb板(一块)520ω电阻(八只)10k电阻(一只)led发光二极管(八只)25v 10μf电容(一只)单片机ic座(一块)at89c51单片机芯片(一块)热转印机(一台)dp?51pro。
net单片机仿真器、编程器、实验仪三合一综合开发平台(一台)三、实训步骤:(2)将流水灯程序编写完整并使用tkstudy ice调试运行。
(4)打开电源,将编写好的程序运用tkstudy ice进行全速运行,看能否实现任务要求。
(6)制板。
首先利用protel 99 se画好原理图,根据原理图绘制pcb图,然后将绘制好的pcb布线图打印出来,经热转印机转印,将整个布线图印至pcb板上,最后将印有布线图的pcb板投入装有三氯化铁溶液的容器内进行腐蚀,待pcb板上布线图外的铜全部后,将其取出,清洗干净。
(7)焊接。
将所给元器件根据原理图一一焊至pcb板相应位置。
(8)调试。
先把at89c51芯片插入ic座,再将+5v电源加到制作好的功能板电源接口上,观察功能演示的整个过程(看能否实现任务功能)。
目录1、概述 (4)2、设计要求 (4)3、设计内容 (5)4、方案设计与原理分析 (6)5、锁存译码设计 (9)6、报警信号发生器 (16)7、密码锁控制电路仿真结果及下载分析(18)8、心得体会 (22)电子技术综合任务书姓名学号学院班级题目简易14位数字密码锁控制电路设计设计任务1、基本要求(1)、14位数字密码分成高7位(DH6….D H0)和低7位(DL6….D L0),用数字逻辑开关预置,输出信号out为1表示开锁,否则关闭。
;(2)、14位数字密码分时操作,先预置高7位,然后再置入低7位,(3)要求电路工作可靠,保密性强,开锁出错立即报警,(4)、利用MAXPLUS2软件进行设计、编译、并在FPGA芯片上实现;(5)、14位密码自己设定。
时间进度总体时间为1周;星期一上午:讲解;星期一下午:理解电路原理;星期二下午:编辑源程序设计电路;星期四下午:验收电路图,检验程序是否正确;星期五之前:上交课程设计报告;主要参考文献【1】刘爱荣、王振成。
EDA技术与CPLD︱FPGA开发应用简明教程。
北京:清华大学出版社;【2】刘吕华。
数字逻辑EDA设计与实践。
北京:国防工业出版1、概述现在EDA技术应用广泛,包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。
目前EDA 技术已在各大公司、科研和教学部门广泛使用。
在产品设计与制造方面,EDA 技术可实现前期的计算机仿真、系统级模拟及测试环境的仿真、PCB的制作、电路板的焊接、ASIC的设计等。
EDA是随着集成电路和计算机技术的飞速发展应运而生的一种高级、快速、有效的电子设计自动化工具。
它是为解决自动控制系统设计而提出的,从七十年代经历了计算机辅助设计CAD,计算机辅助工程CAE,电子系统设计自动化ESDA三个阶段。
前两个阶段的EDA产品都只是个别或部分的解决了电子产品设计中的工程问题;第三代EDA工具根据工程设计中的瓶颈和矛盾对设计数据库实现了统一管理,并提供了并行设计环境概念,提供了独立与工艺和厂家的系统级的设计工具。
EDA课程设计报告基于8051的可编程电量监测及显示系统仿真电路设计院(系):自动化专业:自动化学生姓名:宋凯学号: 41351080指导教师:王玲小组分工赵子秋:负责电路系统搭建。
宋凯:负责程序设计及调试。
陈经纬:负责课题选择、资料搜集以及协助调试电路及程序。
2015年10月 28 日目录一、概述 (3)二、设计要求 (3)2.1硬件要求 (3)2.2软件要求 (3)2.3其他要求 (4)三、总体框图 (4)四、功能模块 (5)4.1模拟电源模块: (5)4.2A/D采样模块 (6)4.38051控制、1602显示模块及蜂鸣器低电位报警模块 (6)五、总体设计电路图 (7)六、系统测试与结果分析 (10)七、设计心得体会 (12)八、参考文献 (12)概述本设计主要想法来自与生活中常用到的电池的电量显示,采用multisim中MCU库内的8051可编程控制芯片做主要控制芯片。
外围模块包括LCD1602显示模块、蜂鸣器报警模块和电源电量模拟模块。
通过外围电路的连接以及对8051写入相应程序,最终利用MULTISIM实现了对一个电源电量监测及显示系统的仿真。
设计要求硬件要求为了很好的实现在Multisim中对系统功能的实现,首先我们得了解8051可编程芯片的功能。
由于8051自身不带A/D、D/A转换模块,我们还得了解A/D模块的使用方法。
由于本次设计的显示模块用到了LCD1602,我们还得掌握LCD1602的配置使用方法及通信方式。
最后搭建的电路要实现稳定输出、走线美观等要求。
软件要求首先我们必须熟练掌握Multisim仿真软件的使用,其次因为本设计用到了可编程芯片8051,所以我们还得掌握一个编程软件的应用(本次设计选用的是Keil5)。
其他要求我们必须掌握一些简单的数字电路的应用及查阅相关的相关技巧。
总体框图功能模块1、模拟电源模块:说明:为了模拟生活中电源电量,我们采用了如上图的电路结构。
eda课程设计报告一、课程目标知识目标:1. 学生能理解EDA(电子设计自动化)的基本概念,掌握EDA工具的使用方法。
2. 学生能运用EDA软件进行电路设计与仿真,理解并掌握数字电路的设计原理。
3. 学生了解并掌握基础的硬件描述语言(如VHDL/Verilog),能完成简单的数字系统设计。
技能目标:1. 学生通过EDA软件的操作,培养电子电路设计、仿真与验证的实际操作能力。
2. 学生通过小组合作完成设计项目,提高团队协作与沟通技巧。
3. 学生能够运用所学知识解决实际问题,具备一定的创新意识和动手能力。
情感态度价值观目标:1. 学生在EDA课程学习中,培养对电子科学技术的兴趣和探究精神。
2. 学生通过课程实践,增强自信心和成就感,激发进一步学习的动力。
3. 学生在学习过程中,树立正确的工程伦理观念,认识到技术发展对社会的责任和影响。
课程性质:本课程为电子信息工程及相关专业高年级学生的专业核心课程,旨在通过理论与实践相结合的教学,提高学生的电子设计能力。
学生特点:学生已具备一定的电子技术基础,具有较强的学习能力和实践欲望,对新技术和新工具充满好奇心。
教学要求:结合学生特点,注重培养实际操作能力,鼓励学生创新思维,提高解决实际问题的能力。
通过课程目标分解,确保学生在知识、技能和情感态度价值观方面的全面成长。
后续教学设计和评估将以此为基础,关注学生的学习成果。
二、教学内容根据课程目标,教学内容分为以下三个模块:1. EDA基本概念与工具使用- 教材章节:第一章 EDA技术概述,第二章 EDA工具简介- 内容列举:EDA发展历程,常用EDA软件介绍,软件安装与配置,基本操作流程。
2. 数字电路设计与仿真- 教材章节:第三章 数字电路设计基础,第四章 仿真技术- 内容列举:数字电路设计原理,EDA软件电路设计流程,仿真参数设置,波形分析与验证。
3. 硬件描述语言与数字系统设计- 教材章节:第五章 硬件描述语言,第六章 数字系统设计实例- 内容列举:硬件描述语言基础,VHDL/Verilog语法要点,简单数字系统设计方法,设计实例分析与实操。
课 程 设 计课程名称 EDA 技术课程设计课题名称 键盘扫描显示与加减运算电路设计 专 业 电子科学与技术 班 级 1101班学 号姓 名指导教师2014 年 3 月 20 日湖南工程学院课程设计任务书课程名称:eda技术题目:键盘扫描显示与加减运算电路设计专业班级:电子科学与技术1101班学号:学生姓名:指导老师:审批:任务书下达日期2014 年3 月10 日设计完成日期2014 年3 月20 日目录一总体设计思路系统组成 (2)1.1 基本设计思路 (2)1.2 总体设计框图 (2)二子模块设计与分析 (3)2.1 键盘扫描模块 (3)2.2 编码模块 (4)2.3 消抖模块 (6)2.4加减功能模块 (7)2.5 数码显示模块 (9)三总电路 (11)3.1 电路连接图 (11)四程序下载 (13)4.1 程序下载 (13)4.2 引脚固定 (14)4.3 程序下载步骤 (14)4.4 实际连线图 (15)五总结与体会 (16)六附录 (17)6.1 各模块程序 (17)6.2 参考文献 (27)电气信息学院课程设计评分表 (28)一总体设计思路系统组成1.1 基本设计思路本设计利用键盘扫描程序完成3*4键盘的扫描并编码输出按键值,然后对按键输出值进行消抖,以保证每次按键值都能准确无误的输出,同时利用加减功能模块对输入值进行简单的加法、减法操作,并将加减之后的结果转换成BCD码输出到显示控制模块,通过显示控制模块将加减后的结果显示在数码管上。
本设计对时钟的利用充分,通过同一个时钟使各个模块之间协同工作,充分利用时钟的上下边沿,使整个系统处于一种高速工作状态,以提高整个系统工作效率。
1.2 总体设计框图二子模块设计与分析2.1 键盘扫描模块设计思路:本模块采用行输入,列输出,并定义一个4进制计数信号,在时钟脉冲的上升沿输入时计数,利用4进制提供行扫描信号,由于计数信号循环计数所以在没有按键按下时,行扫描的输出信号按照计数信号00→01→10→11→00→……的变化而变化,其顺序为1110→1101→1011→0111→1110→……依次周而复始。
EDA课程设计报告基于8051的可编程电量监测及显示系统仿真电路设计院(系):自动化专业:自动化学生姓名:宋凯学号: 41351080指导教师:王玲小组分工赵子秋:负责电路系统搭建。
宋凯:负责程序设计及调试。
陈经纬:负责课题选择、资料搜集以及协助调试电路及程序。
2015年10月 28 日目录一、概述 (3)二、设计要求 (3)2.1硬件要求 (3)2.2软件要求 (3)2.3其他要求 (4)三、总体框图 (4)四、功能模块 (5)4.1模拟电源模块: (5)4.2A/D采样模块 (6)4.38051控制、1602显示模块及蜂鸣器低电位报警模块 (6)五、总体设计电路图 (7)六、系统测试与结果分析 (10)七、设计心得体会 (12)八、参考文献 (12)概述本设计主要想法来自与生活中常用到的电池的电量显示,采用multisim中MCU库内的8051可编程控制芯片做主要控制芯片。
外围模块包括LCD1602显示模块、蜂鸣器报警模块和电源电量模拟模块。
通过外围电路的连接以及对8051写入相应程序,最终利用MULTISIM实现了对一个电源电量监测及显示系统的仿真。
设计要求硬件要求为了很好的实现在Multisim中对系统功能的实现,首先我们得了解8051可编程芯片的功能。
由于8051自身不带A/D、D/A转换模块,我们还得了解A/D模块的使用方法。
由于本次设计的显示模块用到了LCD1602,我们还得掌握LCD1602的配置使用方法及通信方式。
最后搭建的电路要实现稳定输出、走线美观等要求。
软件要求首先我们必须熟练掌握Multisim仿真软件的使用,其次因为本设计用到了可编程芯片8051,所以我们还得掌握一个编程软件的应用(本次设计选用的是Keil5)。
其他要求我们必须掌握一些简单的数字电路的应用及查阅相关的相关技巧。
总体框图功能模块1、模拟电源模块:说明:为了模拟生活中电源电量,我们采用了如上图的电路结构。
电路总电量是5V,其中Key=D是切换开关,当开关置于下端时,通过调节电位器R2可以对5V进行分压送入A/D模块采样端,模拟电源剩余电量不同时的情景,便于调试后面的显示电路时观测。
当开关置于上端时,电容C1作为电源,R1作为生活中消耗电源电量的用电设备,S3的开断则表示用电设备用电与否,U6A的基极接到了8051芯片的PB3端,便于编程控制实现当检测到电源电量(即电容存放的电量)低于设定百分比时即刻给电容充满,同时接在PB3端的灯泡X2亮表示正在充电。
完成充电后电容放电表示正在用电,如此循环,最终达到模拟生活中电源用电的目的。
2、A/D采样模块说明:本设计A/D采样模块采用了Multisim自带的ADC模块,Vin端为模拟电源模块送来的模拟量(电源电压值),经过芯片内部转换成D0—D7端8位数字量送给8051可编程芯片进行程序处理。
3、8051控制、1602显示模块及蜂鸣器低电位报警模块说明:8051可编程控制芯片的P1口接A/D模块送来的数字量,P0口接LCD1602的八个并行数据端。
其中的蜂鸣器BUZZER则可在电量低于25%(程序控制)时产生“嘟嘟”的报警声,同时小灯泡X1也会亮起报警信号。
总体设计电路图程序源码:#include <reg51.h>#include <string.h>#include <intrins.h>sbit RS=P3^5;sbit E=P3^4;sbit RW=P3^6;sbit BUZZER=P3^7;sbit CHARGE=P3^3;typedef unsigned char u8;typedef unsigned int u16;void delay(void){_nop_();}void write1bytecmd(u8 byte){RS=0;RW=0;E=1;delay();P0=byte;delay();E=0;RS=1;RW=1;}void write1bytedata(u8 byte) {RS=1;RW=0;E=1;delay();P0=byte;delay();E=0;RS=1;RW=1;}void InitHD44780(void) {write1bytecmd(0x38); write1bytecmd(0x0c); write1bytecmd(0x06); write1bytecmd(0x01);}void Display(void){write1bytecmd(0x80);write1bytedata('V');write1bytedata('o');write1bytedata('l');write1bytedata('t');write1bytedata('a');write1bytedata('g');write1bytedata('e');write1bytedata(':');write1bytecmd(0xc0);write1bytedata('R');write1bytedata('e');write1bytedata('m');write1bytedata('a');write1bytedata('i');write1bytedata('n');write1bytedata(':');}void main(void){u16 advalue;float voltage;int z,x;int temp;int b,s,g;int pb,ps,pg;int percent;BUZZER=0;InitHD44780();Display();while(1){advalue=P1;voltage=(advalue)/256.0*5;percent=voltage*20;temp=(int)voltage;if(percent<=25)BUZZER=1;elseBUZZER=0;if(percent<10)CHARGE=1;if(percent>85)CHARGE=0;z=temp;x=(voltage-temp)*1000;write1bytecmd(0x88);write1bytedata(0x30+z);write1bytecmd(0x89);write1bytedata('.');b=x/100;s=(x-b*100)/10;g=x%10;pb=percent/100;ps=(percent-pb*100)/10;pg=percent%10;write1bytecmd(0x8a);write1bytedata(0x30+b);write1bytecmd(0x8b);write1bytedata(0x30+s);write1bytecmd(0x8c);write1bytedata(0x30+g);write1bytecmd(0x8d);write1bytedata('V');write1bytecmd(0xc7);if(pb==0)write1bytedata(' ');if(pb==1)write1bytedata(0x31);write1bytecmd(0xc8);if(ps==0)write1bytedata(' ');elsewrite1bytedata(0x30+ps);write1bytecmd(0xc9);write1bytedata(0x30+pg);write1bytecmd(0xca);write1bytedata('%');}}系统测试与结果分析模拟电源充满电时:此时按下模拟负载放电开关C:此时观察到LCD显示电压正在下降。
当电量低于25%时,X1低电压报警灯亮,如图所示:当电量低于10%时,X2充电指示灯亮,模拟电源充电值满电压的85%以上。
如图所示:SPACE开关为LCD背光,S3开关为模拟负载放电,S4开关为选择正常模式和模拟电压输入测试。
设计心得体会本次设计我们以掌握实际应用电路设计方法为出发点,假想在使用Altium Designer设计PCB板之前要先进行仿真设计,从而通过这个简单的可编程控制电路的仿真了解了在进行EDA设计时Multisim仿真的应用。
为我们后期制作小型控制系统打下了坚实的基础,为我们在设计PCB电路时增加了一道保险,为我们理解可编程芯片与外围电路的应用提供了很好的机会。
参考文献[1],LCD1602液晶完整中文资料。
指导教师评语及学生成绩。