《汇编语言课程设计交通信号灯控制系统.doc》由会员分享,可在线阅读,更多相关《汇编语言课程设计交通信号灯控制系统.doc(13页珍藏版)》请在三一办公上搜索。
1、汇编语言课程设计交通信号灯控制系统初始界面:实现功能齐全。思路清晰一、设计要求利用PC机键盘和屏幕实现交通灯信号灯,控制系统。二、设计内容与要求基本要求:1、完成一个十字路口的红绿灯正常状态的控制:实现日常生活中正常的交通路口的控制功能,实现南北、东西方向的切换。2、显示时间,精确到秒;灯亮时间长短可变。3、具有自动和手动控制功能。提高要求:1、完成夜间状态的控制:由于夜间车辆和行人很少,实现南北、东西方向的黄灯闪烁,进入夜间控制状态。2、完成紧急状态的控制:南北双方向都设置为红灯,利于执行紧急公务。3、完成交通堵塞状态的控制:由于交通事故等原因出现南北或东西某一方向堵塞,可人为地调整每个方向
2、的红灯时间,进入手动控制状态。附加要求:必要的辅助功能(设置、修改等)。三、编程提示要求用汇编语言进行编程,下面是编写过程中主要涉及的知识点(其中举例只是实现方法之一,同学可根据自己对知识的掌握情况进行设计并调试):1、视频显示程序设计:一般由DOS 或BIOS调用来完成。有关显示输出的DOS功能调用不多,而BIOS调用的功能很强,主要包括设置显示方式、光标大小和位置、设置调色板号、显示字符、显示图形等。用INT 10H即可建立某种显示方式。用DOS功能调用显示技术,把系统功能调用号送至AH,把程序段规定的入口参数,送至指定的寄存器,然后由中断指令 INT 21H来实现调用,例:要输出多于一个
3、字符时,利用DOS功能调用9。2、键盘扫描程序设计:检测键盘状态,有无输入,并检测输入各值。例:利用DOS系统功能调用的01号功能,接受从键盘输入的字符到AL寄存器。3、定时器中断处理程序:在此中断处理程序中,计数器中断的次数记录在计数单元count中,由于定时中断的引发速率是每秒18.2次,即计数一次为55ms,当count计数值为18时,sec计数单元加一(为1秒)。例:在系统定时中断处理程序中,有一条中断指令INT 1CH指令,在ROM BIOS中,1CH的处理仅一条IRET指令,实际上它并没有做任何工作而只是为用户提供了一个软中断类型号,所以INT 1CH指令每秒也将执行18.2次,设
4、计中可用这个定时周期性工作的处理程序来代替原有的1CH程序,实现定时。4、显示时间子程序:将计时单元的二进制转换为十进制数加以显示。参考资料:1微型计算机接口技术及应用2汇编语言程序设计3微型计算机汇编语言程序设计一、教科书中关于IBM-PC/XT机系统硬件的内容,包括8250(串行口控制器),8253,8255,8259等。二、DOS系统功能调用。INT21H1、 显示显示单个字符入参:AH=02HDL=字符ASCII值出参:无显示字符串入参:AH=09HDS:DX 此寄存器对指向内存中字符串的首地址,字符串以$结束出参:无2、 键盘检查键盘状态入参:AH=0BH出参:AL=00H无输入 0
5、FFH有一字符读键盘字符入参:AH=08H出参:AL=字符ASCII值3、 其它退出程序,返回系统入参:AH=4CH出参:无取中断矢量入参:AH=35HAL=中断类型号出参:ES:BX 中断矢量,ES为段地址,BX为偏移地址置中断矢量入参:AH=25HAL=中断类型号DS:DX 中断矢量,DS为段地址,DX为偏移地址出参:AL=字符ASCII值三、BIOS屏幕功能调用。INT10H1、清屏操作MOV AX,0600HMOV CX,0000HMOV DX,184FHMOV BH,07HINT 10H2、移动光标MOV AH,02HMOV DH,* ;*为目的地行数(0-24)MOV DL,* ;
6、*为目的地列数(0-79)MOV BH,00HINT 10H3、禁止光标显示MOV AH,01HMOV CX,2000HINT 10H4、恢复光标显示MOV AH,01HMOV CX,0C0DHINT 10H;/*/; 微机原理课程设计; 交通信号灯控制系统设计; 电子0803班; ; ; 2010-4-17 18:55;/*/STACK SEGMENTSTACK DW64 DUP(?)STACKENDS ;/*/; 功能:显示宏定义;/*/SHOWLINEMACROSTR,STA,LEN,POS,COL ;显示字符串宏 PUSH DX PUSH BX PUSH AX ;/10 MOV BP,
7、OFFSET STR ;显示起始位置 ADD BP,STA ;第几个开始 MOV DX,POS ;位置 MOV CX,LEN ;长度 MOV BX,COL ;颜色 MOV AX,1301H ;字符串显示中断 INT 10H POP AX POP BX POP DX ;/20 ENDM ;/*/; 宏功能:读取时间子程序;/*/TIMEBUF0 MACROTIME,BUF ;显示字符串宏 PUSHBX PUSHAX ;/10 MOV DI,OFFSET BUF MOV AL,TIME MOV BL,0AH MOV AH,00H DIV BL ADD AL,30H ADD AH,30H MOV D
8、I,AL INC DI MOV DI,AH POP AX POP BXENDM ;/*/;功能: 延时一秒宏定义,8253每秒中断18.2次;/*/DELAY MACRO ;延时一秒 LOCAL DLOOP ;利用INT 1AH/00H取得中断次数(DX), PUSHAX PUSHBX PUSHDX MOV AH,00H ;BIOS调用 /30 INT 1AH ;55ms引起一次中断,作为定时信号。 ADD DL,18 ;定时1S,需要18个定时单位 MOV BL,DL INC BLDLOOP:MOV AH, 00H INT 1AH CMP DL,BL ;是否累计到1S JNZ DLOOP ;
9、没到,继续读 POP DX POP BX POP AX ;/40ENDM ;/*/;功能: ;数据定义 ;/*/DATA SEGMENT TIME_Y DB 2 TIME DB 10 TIME0 DB 7 TIME_G DB 7 TIME_R DB 10 BUF0 DB 0FH BUF_X DB 00 ;定义交通路口 BUF_Y DB 00 BUF DB 00 TABLE01 DB Traffic Lights Control System TABLE02 DB TABLE03 DB - TABLE04 DB ,0B3H, | ,0B3H, | TABLE05 DB ,0B3H, ,0B3H,
10、 | SETTING TABLE06 DB ,0B3H, | ,0B3H, | TABLE07 DB ,0B3H, N ,0B3H, | 1. CHANGETIME : C TABLE08 DB ,0B3H, | ,0B3H, | 2. DOBY : D TABLE09 DB ,0B3H, ,0B3H, | 3. NIGHT : N TABLE10 DB 13 DUP(0C4h) ,0D9h, ,0C0h, 11 DUP(0c4h) ,| 4. EMERGEN : E TABLE11 DB | 5. QUIT : Q TABLE12 DB ,0FH, | ;/60 TABLE13 DB | T
11、ABLE14 DB - - - -E- - ,0FH, ,0FH, - -W- - -|- TABLE15 DB | TABLE16 DB ,0FH, | NOW : NORMAL TABLE17 DB | TABLE18 DB 13 DUP(0C4H) ,0BFh, ,0DAH, 11 DUP(0C4H),| 1. Quit system Q TABLE19 DB ,0B3H, ,0B3H, | TABLE20 DB ,0B3H, | ,0B3H, |- TABLE21 DB ,0B3H, S ,0B3H, | TABLE22 DB ,0B3H, | ,0B3H, | Write by QI
12、ULI ;/70 TABLE23 DB ,0B3H, ,0B3H, | Tle:1522xxxxxxx TABLE24 DB ,0B3H, | ,0B3H, | Mail: STR DB Please input times R: ;G: ;Y: ;Y/N STR1 DB CHANGETIME STR2 DB DOBY STR3 DB NIGHT STR4 DB Quit system Q STR5 DB NORMAL STR6 DB 1. Quit system Q STR7 DB 2. Back to NORMAL B STR8 DB EMERGEN STR9 DBX-G,Y-R:X ;X
13、-R,Y-G:Y STRCL DB STR10 DB : FLG DB 0 FLG0 DB 0 DATAENDS CODESEGMENTASSUME CS:CODE, DS:DATA,SS:STACK;/*/ ;/80;功能:;主函数;/*/MAIN PROC FAR MOV AX, DATA MOV DS, AX MOV ES, AX FUNCT: MOV AH,01H ;清除光标 MOV CX,2000H INT 10H CALL INITIAL N1: CALL SHOWTIME CALL GETCHAR CMP AL,C ;调整时间 JNE LOOP1 CALL CHANGTIME J
14、MP FUNCTLOOP1: CMP AL,D ;手动/自动控制状态 JNE LOOP2 ;100 CALL DOBYLOOP2: CMP AL,N ;夜间模式 JNE LOOP3 CALL NIGHTLOOP3: CMP AL,E ;紧急模式 JNE LOOP4 CALL EMERGENLOOP4: CMP AL,Q ;退出 JNE N1 ESC: MOV AH,4CH ;/145 INT 21H ;/*/ ;功能:紧急情况子函数;/*/EMERGEN PROC NEAR ;/150 MOV TIME,20 MOV FLG,1 TIMEBUF0 TIME,BUF CALL EMTN0: CA
15、LL GETCHAR CMP AL,B ;紧急控制按钮是否按下 JNE TN1 JMP FUNCTTN1: CMP AL,Q ;退出控制按钮是否按下 JNE TN0 JMP ESC RET ;/130EMERGEN ENDP ;/170;/*/ ;功能:紧急情况界面初始化;/*/EM PROC NEAR ;/150 SHOWLINE BUF,0,2,0A12H,0004H ;红灯 ;紧急情况 SHOWLINE BUF,0,2,1212H,0004H ;红灯 ;/120 SHOWLINE BUF,0,2,0E0CH,0004H ;红灯 SHOWLINE BUF,0,2,0E18H,0004H ;
16、红灯 SHOWLINE BUF0,0,1,0C12H,0004H ;红灯 SHOWLINE BUF0,0,1,1013H,0004H ;红灯 SHOWLINE BUF0,0,1,0E0FH,0004H ;红灯 ;/160 SHOWLINE BUF0,0,1,0E16H,0004H ;红灯 SHOWLINE STR8,0,10,1038H,000FH ; SHOWLINE STR6,0,25,122CH,000FH ; ;/160 SHOWLINE STR7,0,25,132CH,000FH ; RET ;/130EM ENDP ;/170;/*/;功能: 夜晚模式子函数;/*/NIGHT PR
17、OC NEAR MOV TIME,0 TIMEBUF0 TIME,BUFNG2: CALL NI DELAY CALL GETCHAR CMP AL,B ;夜间控制按钮是否按下 JNE NG1 JMP FUNCTNG1: CMP AL,Q JNE NG2 JMP ESC RETNIGHT ENDP ;/*/;功能: 夜晚模式显示界面函数;/*/NI PROC NEAR SHOWLINE BUF,0,2,0A12H,000EH ;黄灯 ;夜间显示控制 SHOWLINE BUF,0,2,1212H,000EH ;黄灯 SHOWLINE BUF,0,2,0E0CH,000EH ;黄灯 SHOWLIN
18、E BUF,0,2,0E18H,000EH ;黄灯 SHOWLINE BUF0,0,1,0C12H,000EH SHOWLINE BUF0,0,1,1013H,000EH SHOWLINE BUF0,0,1,0E0FH,000EH SHOWLINE BUF0,0,1,0E16H,000EH SHOWLINE STR3,0,10,1038H,000FH ; SHOWLINE STR6,0,25,122CH,000FH ; ;/160 SHOWLINE STR7,0,25,132CH,000FH ; RETNI ENDP ;/*/; 功能:手动模式子函数;/*/DOBY PROC NEAR ;开关
19、子函数 MOV FLG,0OP: CALL DOOP4: CALL GETCHAR ;调用输入控制字符 CMP AL,Y ;手动控制下开 JNE OP1 MOV FLG,1 JMP OPOP1: CMP AL,X ;手动控制下关 JNE OP2 MOV FLG,2 JMP OPOP2: CMP AL,Q JNE OP3 ;退出 JMP ESC OP3: CMP AL,B JNE OP4 ;手动/自动控制 JMP FUNCT RETDOBY ENDP;/*/;手动模式显示函数;/*/DO PROC NEAR ;开关子函数 CMP FLG,0 JA DO0; SHOWLINE BUF,0,2,0A
20、12H,000EH ;黄灯 SHOWLINE BUF,0,2,1212H,000EH ;黄灯 SHOWLINE BUF,0,2,0E0CH,000EH ;黄灯 SHOWLINE BUF,0,2,0E18H,000EH ;黄灯 JMP DO2DO0: CMP FLG ,1 JNE DO1 SHOWLINE BUF,0,2,0A12H,0002H ; SHOWLINE BUF,0,2,1212H,0002H ; SHOWLINE BUF,0,2,0E0CH,0004H ; SHOWLINE BUF,0,2,0E18H,0004H ; JMP DO2DO1: SHOWLINE BUF,0,2,0A1
21、2H,0004H ; SHOWLINE BUF,0,2,1212H,0004H ; SHOWLINE BUF,0,2,0E0CH,0002H ; SHOWLINE BUF,0,2,0E18H,0002H ; SHOWLINE BUF0,0,1,0C12H,0004H SHOWLINE BUF0,0,1,1013H,0004H SHOWLINE BUF0,0,1,0E0FH,0002H SHOWLINE BUF0,0,1,0E16H,0002H JMP DO3DO2: CMP FLG,0 JNE DO4 SHOWLINE BUF0,0,1,0C12H,000EH SHOWLINE BUF0,0,
22、1,1013H,000EH SHOWLINE BUF0,0,1,0E0FH,000EH SHOWLINE BUF0,0,1,0E16H,000EH JMP DO3DO4: CMP FLG,1 JNE DO3 SHOWLINE BUF0,0,1,0C12H,0002H SHOWLINE BUF0,0,1,1013H,0002H SHOWLINE BUF0,0,1,0E0FH,0004H SHOWLINE BUF0,0,1,0E16H,0004H DO3: SHOWLINE STR9,0,30,112AH,000FH ; SHOWLINE STR2,0,10,1038H,000FH ; SHOWLINE STR6,0,25,122CH,000FH ; ;/160 SHOWLINE STR7,0,25,132CH,000FH ;