电子系统设计实验
实验内容:按键扫描与数码管显示
一 实验要求
编写按键扫描与数码管显示程序,并实现功能:按下K1-K10,数码管最高位显示对应按键的数字并把前一次显示的数字推到低位的功能,并使用ICD2仿真器进行程序的烧写和仿真调试。
二 实验目的
1.了解按键扫描与数码管显示的基本原理。
2.学习按键扫描与数码管显示程序的编写。
3.学习PIC18F452单片机最小系统的制作。
4.掌握使用通过ICD2仿真器把程序写入单片机的办法。
三 实验原理图
四 实验设备
PC机一台、MPLAB开发软件、ICD2仿真器、PIC18F452-I/P单片机最小系统。
五 实验线路及连线
1.连接好PC机与ICD2仿真器、ICD2仿真器与PIC单片机。
2.给单片机和仿真器上电。
六 实验步骤
1、打开MPLAB IDE,新建工程Project。
2、新建空白文档,并保存为ASM格式。
3、编写程序,编译并调试程序,直到没有错误(程序见附1)。
4、连接ICD2仿真器,安装驱动,选择USB连接模式。
5、选择仿真类型为ICD2。
6、设置环境变量,把晶振改为XT,并关闭看门狗等没有用到的模块。
7、烧写程序到单片机中,并运行,查看运行结果。
七 实验程序
#include "p18f452.inc"
org 0000h
goto main
main
MOVLW 0X00
MOVWF TRISD
MOVWF TRISC
MOVLW 0XFF
MOVWF TRISB
BANKSEL PORTB
MOVLW 0X7F
MOVWF INTCON2
CLRF PORTE
MOVLW 0X00
MOVWF TRISE
MOVWF LATC;定义端口
CLRF 0X10
CLRF 0X20
CLRF 0X30
CLRF 0X40
CLRF 0X50;清零
MAL
CALL E0
CALL E1
CALL SHUMA
GOTO MAL
E0
MOVLW 0X02
MOVWF LATE
BTFSS PORTB,0
GOTO LOP0
BTFSS PORTB,1
GOTO LOP1
BTFSS PORTB,2
GOTO LOP2
BTFSS PORTB,3
GOTO LOP3
BTFSS PORTB,4
GOTO LOP4
BTFSS PORTB,5
GOTO LOP5
RETURN;
E1
MOVLW 0X01
MOVWF LATE
BTFSS PORTB,2
GOTO LOP6
BTFSS PORTB,3
GOTO LOP7
BTFSS PORTB,4
GOTO LOP8
BTFSS PORTB,5
GOTO LOP9
RETURN
LOP0
MOVLW 0X3F
MOVWF 0X10
CALL SHUMA
BTFSS PORTB,0
GOTO LOP0
CALL DELAY
GOTO MAL
LOP1
MOVLW 0X06
MOVWF 0X10
CALL SHUMA
BTFSS PORTB,1;按键释放
GOTO LOP1
CALL DELAY
GOTO MAL
LOP2
MOVLW 0X5B
MOVWF 0X10
CALL SHUMA
BTFSS PORTB,2
GOTO LOP2
CALL DELAY
GOTO MAL
LOP3
MOVLW 0X4F
MOVWF 0X10
CALL SHUMA
BTFSS PORTB,3
GOTO LOP3
CALL DELAY
GOTO MAL
LOP4
MOVLW 0X66
MOVWF 0X10
CALL SHUMA
BTFSS PORTB,4
GOTO LOP4
CALL DELAY
GOTO MAL
LOP5
MOVLW 0X6D
MOVWF 0X10
CALL SHUMA
BTFSS PORTB,5
GOTO LOP5
CALL DELAY
GOTO MAL
LOP6
MOVLW 0X7D
MOVWF 0X10
CALL SHUMA
BTFSS PORTB,2
GOTO LOP6
CALL DELAY
GOTO MAL
LOP7
MOVLW 0X07
MOVWF 0X10
CALL SHUMA
BTFSS PORTB,3
GOTO LOP7
CALL DELAY
GOTO MAL
LOP8
MOVLW 0X7F
MOVWF 0X10
CALL SHUMA
BTFSS PORTB,4
GOTO LOP8
CALL DELAY
GOTO MAL
LOP9
MOVLW 0X6F
MOVWF 0X10
CALL SHUMA
BTFSS PORTB,5
GOTO LOP9
CALL DELAY
GOTO MAL
DELAY
MOVFF 0X40,0X50
MOVFF 0X30,0X40
MOVFF 0X20,0X30
MOVFF 0X10,0X20
DELAY2
MOVLW 0X03
MOVWF 0X22
DECFSZ 0X22
GOTO DELAY2
RETURN
SHUMA
MOVLW 0XEF
MOVWF LATD
MOVFF 0X20,LATC
CALL DELAY2
CLRF LATC;
MOVLW 0XDF
MOVWF LATD
MOVFF 0X30,LATC
CALL DELAY2
CLRF LATC;
MOVLW 0XBF
MOVWF LATD
MOVFF 0X40,LATC
CALL DELAY2
CLRF LATC;
MOVLW 0X7F
MOVWF LATD
MOVFF 0X50,LATC
CALL DELAY2
CLRF LATC;
RETURN
END