1、74LS245还具有双向三态功能,既可以输出,也可以输入数据。 当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。当片选端/CE低电平有效时,DIR=“0”,信号由 B 向 A 传输;(接收)DIR=“1”,信号由 A 向 B 传输;(发送)当CE为高电平时,A、B均为高阻态。由于P2口始终输出地址的高8位,接口时74LS245的三态控制端1G和2G接地,P2口与驱动器输入线对应相连。P0口与74LS245输入端相连,E端接地,保证数据线畅通。8051的/RD和/PSEN相与后接DIR,使得RD且PSEN有效时,74LS245输入(P0.1D1)
2、,其它时间处于输出(P0.1D1)。3 软件设计程序流程框图程序:C语言:#include#define uchar unsigned char#define uint unsigned intsbit RED_A=P00; /东西向指示灯sbit YELLOW_A=P01;sbit GREEN_A=P02;sbit RED_B=P03; /南北向指示灯sbit YELLOW_B=P04;sbit GREEN_B=P05;/延时倍数,闪烁次数,操作类型变量uchar Time_Count=0,Flash_Count=0,Operation_Type=1;/定时器0中断函数void T0_INT
3、() interrupt 1 TL0=-50000/256; TH0=-50000%256; switch(Operation_Type) case 1: /东西向绿灯与南北向红灯亮 RED_A=0;YELLOW_A=0;GREEN_A=1; RED_B=1;YELLOW_B=0;GREEN_B=0; if(+Time_Count!=100) return; /65s(65*100*50ms)切换 Time_Count=0; Operation_Type=2; break; case 2: /东西向黄灯开始闪烁,绿灯关闭=8) return; YELLOW_A=YELLOW_A;GREEN_A
4、=0; if(+Flash_Count!=10) return; /闪烁 Flash_Count=0; Operation_Type=3; case 3: /东西向红灯与南北向绿灯亮 RED_A=1; RED_B=0;GREEN_B=1; /30s(30*100*50ms)切换 Operation_Type=4; case 4: /南北向黄灯开始闪烁,绿灯关闭 YELLOW_B=YELLOW_B; Operation_Type=1; /主程序void main() TMOD=0x01; /T0方式1 IE=0x82; TR0=1; while(1);汇编语言: ZX EQU 42H ZW EQ
5、U 43H KCOUNTER EQU 50H ORG 0 LJMP MAIN ORG 0BH LJMP T0INT ORG 30HMAIN: MOV SP,#6FH MOV 46H,#2;0.1s MOV TMOD,#01H MOV TH0,#3CH;50ms MOV TL0,#0D4H MOV IE,#82H SETB TR0 LP1: LCALL ZT1 SJMP LP1T0INT: CLR TR0 PUSH ACC PUSH 0 DJNZ 46H,T0 MOV 46H,#2 INC R1;判断用数字变量 DEC R2;南北计时变量 DEC R3;东西数字变量 T0: MOV TH0,#3
6、CH SETB TR0P0P 0 POP ACC RETIZT1: MOV R2,#60 MOV R3,#66 ;南北绿灯60s,东西红灯65s L0:MOV P1,#23H MOV P3,#21H LCALL DATAPRO LCALL KEYPRO LCALL DISP MOV A,R2 H1:CJNE R1,#61,L0 MOV R1,#0 MOV P1,#43H MOV P3,#41H MOV R2,#5 ;南北黄灯5秒,东西仍是红灯 H2:MOV A,R1 ;南北黄灯闪烁开始 MOV B,#2 DIV AB MOV A,B CJNE A,#1,L1 SJMP L2 L1:MOV P1
7、,#03H MOV P3,#01H L2:CJNE R1,#6,H2 MOV R1,#0 ;南北黄灯闪烁结束 MOV R2,#36 MOV R3,#30;南北红灯35秒,东西绿灯30秒 T1:MOV P1,#15H MOV P3,#12H H3:CJNE R1,#36,T1 MOV P1,#19H MOV P3,#14H MOV R3,#5;南北仍是红灯,东西黄灯5秒 H4:东西黄灯闪烁开始 CJNE A,#1,L3 MOV P1,#18H SJMP L4 L3:MOV P1,#11H MOV P3,#10H L4:CJNE R1,#6,H4东西黄灯闪烁结束 RETDISP: MOV R0,#
8、20H MOV 44H,#8 MOV ZW,#0FEHLP2: MOV ZX,R0 LCALL DISPLED INC R0 MOV A,ZW RL A MOV ZW,A DJNZ 44H,LP2DISPLED: MOV P0,A MOV DPTR,#TAB MOV A,ZX MOVC A,A+DPTR MOV P2,A LCALL DELAYDELAY: MOV 41H,#20 DL1: MOV 42H,#50 DL2: DJNZ 42H,DL2 DJNZ 41H,DL1TAB: DB 03FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHDATAPRO: MOV
9、A,R2;将计时变量分十位,个位 MOV B,#10 MOV 20H,A MOV 26H,A MOV 21H,B MOV 27H,B MOV A,R3 MOV B, #10 MOV 22H,A MOV 24H,A MOV 23H,B MOV 25H,B4 实验结果5 心得 经过了8周的单片机课程的学习,我们掌握了一定的单片机原理知识,但是却没有运用实践的过程,因此在实际操作方面匮乏一定的经验。此次课程设计就为我们带来的很好的机会,通过使用Vmware Workstatio12.0虚拟机运行Keil3来不断进行调试单片机,我成功的将课本上的知识运用到了实际中去,在实践中锻炼了动手能力,增加了对单片机的兴趣,也巩固了课堂上学到的东西。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1