您现在的位置是:首页 >动态 > 2024-03-01 15:10:36 来源:

交通灯程序设计(交通灯程序)

导读 大家好,我是小夏,我来为大家解答以上问题。交通灯程序设计,交通灯程序很多人还不知道,现在让我们一起来看看吧!1、这个是我以前单片机...

大家好,我是小夏,我来为大家解答以上问题。交通灯程序设计,交通灯程序很多人还不知道,现在让我们一起来看看吧!

1、这个是我以前单片机课程设计上我做的程序,希望对你有一定帮助。

2、要求:根据TD-PIT-B实验箱现有的实验电路,设计电路并编写程序使六个灯按照交通灯变化规律亮、灭或者闪烁。十字路口交通灯的变化规律要求:

3、(6) 南北路口的绿灯,东西路口的红灯同时亮30秒。

4、(7) 南北路口的黄灯闪烁3次,同时东西路口的红灯继续亮。

5、(8) 南北路口的红灯,东西路口的绿灯同时亮30秒。

6、(9) 南北路口的红灯继续亮,同时东西路口的黄灯闪烁3次。

7、(10) 转(11)重复。

8、(

9、当时我们采用的只是二极管p7~p0

10、东西交通灯我采用的是P7P6P5分别代表红黄绿灯

11、 南北交通灯我采用的是P2P1P0分别代表红黄绿灯,中间的P3P4我空起没用)

12、LED方面的自己去摸索哈!

13、实验代码如下:

14、M8255COUNTB EQU 0D061H

15、M8255COUNTC EQU 0D062H

16、M8255MODE EQU 0D063H

17、M8254COUNT0 EQU 0D040H

18、M8254MODE EQU 0D043H

19、CODE SEGMENT

20、 ASSUME CS:CODE

21、START:MOV DX,M8255MODE ;初始化8255

22、 MOV AL,81H ; 工作方式是B口输出,方式0

23、 OUT DX,AL

24、 MOV DX,M8255COUNTB

25、 MOV AL,00H ; 初始状态,灯全亮

26、 OUT DX,AL

27、 CALL DELAY

28、 CALL L00 ;第一个状态,即南北绿灯亮,东西红灯亮

29、 CALL L01 ;第二个状态,即南北黄灯闪,东西红灯亮

30、 CALL L02 ;第三个状态,即南北红灯亮,东西绿灯亮

31、 CALL L03 ;第四个状态,即南北红灯亮,东西黄灯闪

32、 CALL L04 ;返回状态一

33、 MOV AX,4C00H ;结束返回DOS

34、 INT 21H

35、L00 PROC NEAR

36、 MOV DX,M8255COUNTB

37、 MOV AL,10000001B ;第一个状态,即南北绿灯亮,东西红灯亮

38、 OUT DX,AL

39、 CALL DELAY

40、 CALL GGG ;延时30S

41、RET ;返回

42、L00 ENDP

43、L01 PROC NEAR ;第二个状态,即南北黄灯闪,东西红灯亮

44、 PUSH CX

45、 MOV CX,3

46、STA1:MOV DX,M8255COUNTB

47、 MOV AL,10000010B ;南北黄灯亮,东西红灯亮

48、 OUT DX,AL

49、 CALL DELAY

50、 CALL YYY ;延时1S

51、 MOV DX,M8255COUNTB

52、 MOV AL,10000000B ;南北黄灯灭,东西红灯亮

53、 OUT DX,AL

54、 CALL DELAY

55、 CALL YYY

56、 LOOP STA1

57、 POP CX

58、 RET

59、L01 ENDP

60、L02 PROC NEAR ; 第三个状态

61、 MOV DX,M8255COUNTB

62、 MOV AL,00100100B ; 即南北红灯亮,东西绿灯亮

63、 OUT DX,AL

64、 CALL DELAY

65、 CALL GGG ;延时30S

66、RET

67、L02 ENDP

68、L03 PROC NEAR ;第四个状态,即南北红灯亮,东西黄灯闪

69、 PUSH CX

70、 MOV CX,3

71、STA3:MOV DX,M8255COUNTB

72、 MOV AL,01000100B ; 南北红灯亮,东西黄灯亮

73、 OUT DX,AL

74、 CALL DELAY

75、 CALL YYY

76、 MOV DX,M8255COUNTB

77、 MOV AL,00000100B ;南北红灯亮,东西黄灯灭

78、 OUT DX,AL

79、 CALL DELAY

80、 CALL YYY

81、 LOOP STA3 ;循环STA3

82、 POP CX

83、 RET

84、L03 ENDP

85、L04 PROC NEAR ;回状态一

86、 MOV DX,M8255COUNTB

87、 MOV AL,10000001B ;南北绿灯亮,东西红灯亮

88、 OUT DX,AL

89、 CALL DELAY

90、RET

91、L04 ENDP

92、DELAY PROC NEAR

93、 PUSH CX

94、 MOV CX,0FFH

95、L3:LOOP L3

96、 POP CX

97、 RET

98、DELAY ENDP

99、YYY PROC NEAR

100、 MOV DX,M8254MODE

101、 MOV AL,15H ;采用0号计数器,写入低8位,高8位置0

102、 OUT DX,AL

103、 MOV DX,M8254COUNT0

104、 MOV AL,10H

105、 OUT DX,AL

106、L2: CALL BREAK

107、 MOV DX,M8255COUNTC

108、 IN AL,DX

109、 TEST AL,02H ;测试PC1位

110、 JNZ L2

111、 RET

112、YYY ENDP

113、GGG PROC NEAR

114、 MOV DX,M8254MODE

115、 MOV AL,25H ;写入高8位,低8位置0

116、 OUT DX,AL

117、 MOV DX,M8254COUNT0

118、 MOV AL,03H ; 计数时间30s

119、 OUT DX,AL

120、L1: CALL BREAK

121、 MOV DX,M8255COUNTC

122、 IN AL,DX

123、 TEST AL,02H ;测试PC1位

124、 JNZ L1

125、 RET

126、GGG ENDP

127、BREAK PROC NEAR ;防止进入死循环

128、 MOV AH,06H

129、 MOV DL,0FFH

130、 INT 21H

131、 JE RETURN

132、RETURN: RET

133、BREAK ENDP

134、CODE ENDS

135、 END START

本文到此讲解完毕了,希望对大家有帮助。