数电 电子课设交通灯课程设计报告2文档格式.docx
- 文档编号:20253887
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:19
- 大小:535.87KB
数电 电子课设交通灯课程设计报告2文档格式.docx
《数电 电子课设交通灯课程设计报告2文档格式.docx》由会员分享,可在线阅读,更多相关《数电 电子课设交通灯课程设计报告2文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
三、模块功能描述
1.主控制器
主控制器决定控制电路的状态变化及输出两条干道上倒计时间(两位BCD码)。
主控制器的输入信号有:
复位R,‘1’有效、特殊状态EMERGE,‘1’有效。
功能如下表所示:
R
EMERGE
主干道(东西向)
支干道(南北向)
时间
状态
G
Y
1
X
复位
交替显示
暂停
50秒
东西通车
5秒
过渡态
30秒
南北通车
其中在紧急状态(emerge=1)时,能实现设计所要求的扩展功能。
2.LCD控制译码及显示模块
JTDLCD--目的:
在LCD上按格式显示交通灯的2个2位BCD码,红绿黄灯
--输入:
EW[7..0]、SN[7..0]东西、南北向的2个2位BCD码
--EWRYG[2..0]、SNRYG[2..0]东西南北的红绿灯信号,顺序为红黄绿
--CPIN时钟脉冲输入按10MHz设计;
复位R
然后JLDLCD的输出数据到altium自带的LCD16X2ALCD控制核,由该内核控制LCD显示
3.蜂鸣器模块
当emerge=1时,cp脉冲促使蜂鸣器发声,否则蜂鸣器不发声。
4.系统顶层模块
总框图:
四、程序
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_unsigned.ALL;
useIEEE.STD_LOGIC_arith.ALL;
entityjiaotongdengis
Port(
R,CLK:
inSTD_LOGIC;
--复位("
1“有效)及时钟输入
EMERGE:
--紧急状态输入,‘1’有效
EWRYG:
outSTD_LOGIC_VECTOR(2downto0);
--东西向状态输出,顺序为红黄绿
SNRYG:
--南北向状态输出,顺序为红黄绿
EW:
outSTD_LOGIC_VECTOR(7downto0);
--东西向两位BCD码计数输出
SN:
outSTD_LOGIC_VECTOR(7downto0)--南北向两位BCD码计数输出
);
endjiaotongdeng;
architectureBehavioralofjiaotongdengis
signalcnt,atime,aregtime,btime,bregtime,EWH,EWL,SNH,SNL:
integerrange0to90;
begin
process(clk,emerge,r)--由复位端及紧急状态控制大计数循环的置数,暂停或减一操作
if(R='
1'
)then
cnt<
=90;
elsif(rising_edge(clk))then
if(cnt=0)then
elsif(emerge='
=cnt;
else
=cnt-1;
endif;
endprocess;
a:
process(clk)--东西向倒计时二进制码输出控制以及东西南北向状态灯颜色控制
variablep:
integerrange0to1;
if(rising_edge(clk))then
if(emerge='
)then--紧急状态时状态灯全置红,东西向倒计数在当前状态跟全零间交替显示
EWRYG<
="
100"
;
SNRYG<
;
if(p=0)then
p:
=1;
atime<
=aregtime;
=p-1;
=0;
if(cnt>
=40)then
aregtime<
=cnt-40;
EWRYG<
001"
SNRYG<
elsif(cnt>
=35)then
aregtime<
=cnt-35;
010"
elsif(cnt>
=0)then
=cnt-0;
=5)then
endprocess;
b:
process(clk)--南北向二进制码倒计时输出控制
variableq:
)then--紧急状态时南北向到计数在全零跟当天状态间交替显示
if(q=0)then
q:
btime<
=bregtime;
=q-1;
bregtime<
=cnt-35;
=cnt-5;
=cnt-0;
process(atime)--将东西向二进制码转换成两位BCD码
if(atime>
=90)then
EWH<
=9;
EWL<
=atime-90;
elsif(atime>
=80)then
=8;
=atime-80;
=70)then
=7;
=atime-70;
=60)then
=6;
=atime-60;
=50)then
EWH<
=5;
=atime-50;
=40)then
=4;
=atime-40;
=30)then
=3;
=atime-30;
=20)then
=2;
=atime-20;
=10)then
=atime-10;
=atime;
endif;
withEWHselect
EW(7downto4)<
="
1001"
when9,"
1000"
when8,"
0111"
when7,"
0110"
when6,"
0101"
when5,
"
0100"
when4,"
0011"
when3,"
0010"
when2,"
0001"
when1,"
0000"
when0,
whenothers;
withEWLselect
EW(3downto0)<
process(btime)--将南北向七位二进制码装换成两位BCD码输出
if(btime>
SNH<
SNL<
=btime-90;
elsif(btime>
SnL<
=btime-80;
=btime-70;
=btime-60;
SNH<
=btime-50;
=btime-40;
=btime-30;
=btime-20;
=btime-10;
=btime;
withSNHselect
SN(7downto4)<
withSNLselect
SN(3downto0)<
endBehavioral;
2.LCD控制器
--FilenameJTDLCD
--目的:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
entityJTDLCDis
port(CPIN,R,BUSY:
INSTD_LOGIC;
EW,SN:
INSTD_LOGIC_VECTOR(7DOWNTO0);
EWRYG,SNRYG:
INSTD_LOGIC_VECTOR(2DOWNTO0);
CLK,RST,STROBE,OUTLINE:
OUTSTD_LOGIC;
DATA:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
ADDR:
OUTSTD_LOGIC_VECTOR(3DOWNTO0)
endentity;
architectureJGTofJTDLCDis
TYPESTATESIS(S0,S1,S2,S3,S4);
SIGNALS:
STATES;
SIGNALLCDPT:
INTEGERRANGE0TO10;
SIGNALCPCT:
INTEGERRANGE0TO65535;
SIGNALCP:
STD_LOGIC;
SIGNALASCEW,ASCSN:
STD_LOGIC_VECTOR(7DOWNTO0);
begin
PROCESS(CPIN,R)
BEGIN
CLK<
=CPIN;
IFR='
THEN
CPCT<
=65535;
ELSIFCPIN='
ANDCPIN'
EVENTTHEN
IFCPCT=0THEN
CP<
=NOTCP;
ELSE
=CPCT-1;
ENDIF;
ENDIF;
ENDPROCESS;
--分频为500US周期
--主进程:
拟采用500us时钟,即在500us后完成状态转换,修改LCDPT指针
--S0:
初始状态,在R=1时,处于S0状态,LCDPT=0
--流程:
输出rst=1,转S1
--S1:
输出RST=0;
判断BUSY=0?
:
Y:
LCDPT+1;
LCDPT到固定最后?
:
N:
->
S2
--:
转S3
--;
N;
NULL
--S2:
给出STROBE信号。
转S1
--S1,S2完成初始化固定显示的功能
PROCESS(CP,R)
S<
=S0;
LCDPT<
RST<
='
ELSIFCP='
ANDCP'
CASESIS
WHENS0=>
=S1;
WHENS1=>
RST<
0'
STROBE<
IFBUSY='
LCDPT<
=LCDPT+1;
IFLCDPT=5THEN
=S3;
=S2;
WHENS2=>
--S3~S4完成扫描显示功能
--S3:
BUSY=0?
LCDPT循环+1,转S4
--S4:
给出STROBE信号,转S3
WHENS3=>
STROBE<
IFLCDPT=10THEN
=S4;
WHENS4=>
S<
WHENOTHERS=>
NULL;
ENDCASE;
ENDPROCESS;
--选择输出进程(LCDPT)
--LCDPT=0,NULL
--=1~4显示EWSNE45H,5W57H,6S53H,9N4EH,10
PROCESS(LCDPT,EW,ASCEW,SN,ASCSN)
CASELCDPTIS
WHEN0=>
WHEN1=>
DATA<
01000101"
ADDR<
OUTLINE<
WHEN2=>
01010111"
WHEN3=>
01010011"
WHEN4=>
01001110"
1010"
--LCDPT=5,6EWBCD码EH,5EL,6
--LCDPT=7EW红绿灯R,4
--LCDPT=89SNBCD码SH,9SL,10
--LCDPT=10SN红绿灯。
G,8R52H;
Y59H;
G47H
WHEN5=>
DATA<
&
EW(7DOWNTO4);
WHEN6=>
EW(3DOWNTO0);
WHEN7=>
=ASCEW;
WHEN8=>
SN(7DOWNTO4);
WHEN9=>
SN(3DOWNTO0);
WHEN10=>
=ASCSN;
WHENOTHERS=>
ENDCASE;
PROCESS(EWRYG)
CASEEWRYGIS
WHEN"
=>
ASCEW<
01010010"
01011001"
01000111"
PROCESS(SNRYG)
CASESNRYGIS
ASCSN<
endarchitectureJGT;
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityspeais
port(emerge,cp:
instd_logic;
speakers:
outstd_logic
endspea;
architecturejgtofspeais
signalcpct:
integerrange0to5;
signalspeak:
std_logic;
process(cp,emerge)
ifemerge='
then
cpct<
speak<
elsifcp='
andcp'
eventthen
ifcpct=5then
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数电 电子课设 交通灯课程设计报告2 电子 交通灯 课程设计 报告