• 148.50 KB
  • 18页

可编程逻辑器件应用项目报告书-病房呼叫系统报告

  • 18页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'可编程逻辑器件应用项目报告书项目名称:病房呼叫系统指导老师:姓名:学号:班级:08电子2班 目录一、设计要求--------------------------------------------------------------------------------二、设计方案--------------------------------------------------------------------------------三、设计程序--------------------------------------------------------------------------------四、管脚分配---------------------------------------------------------------------------------五、硬件下载实现现象描述-----------------------------------------------------------六、体会与收获----------------------------------------------------------------------------- 一、设计要求1.用1~9个开关模拟9个病房的呼叫输入信号,1号优先级最高;1~9优先级依次降低;2.用一个数码管显示呼叫信号的号码;没信号时显示0;有多个信号呼叫时,显示优先级最高的呼叫号(其他呼叫用指示灯显示);3.凡有呼叫发出5秒的呼叫声;4.对低优先级的呼叫进行存储,处理完高优先级的呼叫,再进行低优先级呼叫的处理(附加)。二、设计方案用层次化的设计,将功能分为三个部分,第一部分输入模块,用来输入八个病房的房号。第二部分输出模块,用来显示八个病房的房号。第三部分显示模块,使优先级低的病房房号用彩灯显示出来。三、设计程序第一部分:抢答模块libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all; entityjnbisport(clk,i:instd_logic;u,r,t,y:instd_logic;led3:outstd_logic_vector(3downto0);k:outstd_logic_vector(2downto0);o:outstd_logic_vector(3downto0));end;architectureoneofjnbissignaln:integerrange0to1;signalclk_1k,clk_100h:std_logic;signaldata:std_logic_vector(3downto0);signals:std_logic_vector(6downto0);signalh:std_logic_vector(2downto0);signalj:std_logic_vector(3downto0);beginprocess(clk)variablecnt1:integerrange0to250;variablecnt2:integerrange0to100; beginifclk"eventandclk="1"thenifcnt1=250thencnt1:=0;ifcnt2=100thencnt2:=0;clk_1k<=notclk_1k;elsecnt2:=cnt2+1;endif;elsecnt1:=cnt1+1;endif;endif;endprocess;process(clk_1k)beginifi="1"thenifn=0then ifu="0"thenled3<="0001";j<="0111";n<=n+1;elsifr="0"thenled3<="0010";j<="1011";n<=n+1;elsift="0"thenled3<="0011";j<="1101";n<=n+1;elsify="0"thenled3<="0100";j<="1110";n<=n+1;endif;endif;elseh<="100";n<=0; led3<="0000";j<="1111";endif;k<=h;o<=j;endprocess;end;第二部分:数值输入模块libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entityWERisport(rst,clk,tsr,en:instd_logic;p:outstd_logic;c,d:instd_logic_vector(3downto0);duon:outstd_logic_vector(5downto0);led3:instd_logic_vector(3downto0);cout:outstd_logic_vector(6downto0));end; architectureoneofWERissignalt,r:integerrange0to1;signalw:integerrange0to6;signalclk_1k:std_logic;signalclk_100h:std_logic;signalcnt6:integerrange0to3;signaldata:std_logic_vector(3downto0);signaldout:std_logic_vector(5downto0);signals:std_logic_vector(6downto0);signalled1,led2:std_logic_vector(3downto0);beginprocess(clk)variablecnt1:integerrange0to250;variablecnt2:integerrange0to100;beginifclk"eventandclk="1"thenifcnt1=250thencnt1:=0; ifcnt2=100thencnt2:=0;clk_1k<=notclk_1k;elsecnt2:=cnt2+1;endif;elsecnt1:=cnt1+1;endif;endif;endprocess;process(clk)variablecnt1:integerrange0to5000;variablecnt2:integerrange0to5000;beginifclk"eventandclk="1"thenifcnt1=5000thencnt1:=0;ifcnt2=5000thencnt2:=0; clk_100h<=notclk_100h;elsecnt2:=cnt2+1;endif;elsecnt1:=cnt1+1;endif;endif;endprocess;process(clk_1k)beginifclk_1k"eventandclk_1k="1"thenifcnt6=33thencnt6<=0;elsecnt6<=cnt6+1;endif;endif;endprocess; process(cnt6)begincasecnt6iswhen0=>dout<="111110";when1=>dout<="111101";when2=>dout<="111011";whenothers=>null;endcase;endprocess;process(dout)begincasedoutiswhen"111110"=>data<=led1;when"111101"=>data<=led2;when"111011"=>data<=led3;whenothers=>null;endcase;endprocess; process(clk_100h)beginiftsr="0"thenled1<="0000";led2<="0000";t<=0;elseifrst="0"thent<=1;p<="0";led2<=c;led1<=d;elsifclk_100h"eventandclk_100h="1"andt=1thenifen="1"thenif(led1<="0000")thenled1<="1001";led2<=led2-1;if(led2<="0000")thenled1<="0000";led2<="0000";ifw<=5thenp<="1"; w<=w+1;elsep<="0";endif;elsep<="0";endif;elseled1<=led1-1;endif;elset<=t-1;endif;endif;endif;endprocess;process(data)begincasedataiswhen"0000"=>s<="0111111";--0 when"0001"=>s<="0000110";--1when"0010"=>s<="1011011";--2when"0011"=>s<="1001111";--3when"0100"=>s<="1100110";--4when"0101"=>s<="1101101";--5when"0110"=>s<="1111101";--6when"0111"=>s<="0000111";--7when"1000"=>s<="1111111";--8when"1001"=>s<="1101111";--9whenothers=>null;endcase;endprocess;duon<=dout;cout<=s;end;第三部分:译码模块libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all; entityyimaisport(h:instd_logic_vector(6downto0);a,b,c,d,e,f,g:outstd_logic);end;architectureoneofyimaisbeging<=h(6);f<=h(5);e<=h(4);d<=h(3);c<=h(2);b<=h(1);a<=h(0);endone;总体框图: 四、管脚分配 五.硬件下载实现现象描述 和预想的效果一样。当主持人按下复位开关时,四个按键开关生效。选手开始抢答。抢答完后,显示管显示选手的号数。这时主持人可以设置答题时间的初始值此时,显示器从初始值开始倒计时,计至0时停止计数,同时扬声器发出超时报警信号。若参赛者在规定的时间内回答完问题,主持人可以用开关给出计时停止信号,以免扬声器鸣叫。六、体会与收获再次用到'