单片机实训指导书
一、实训的性质、目的及任务:
1、课程性质:本课程属专业技能实操课。
2、课程目的:使学生熟悉单片机实用技术的开发过程,提高汇编语言的编写能力,提高对汇编语言的编辑、汇编、调试运行等技能,通过实际应用和亲身体验,加深对所学知识的理解,增强动手能力
3 课程任务:通过本课程实训使学生熟悉单片机的基本知识,能利用单片机技术制作简单电子技术产品,培养和锻炼学生进行调试、检测和分析的能力。
二、适合专业:    电子信息技术/生产过程自动化
三、主要仪器设备:单片机仿真器一台、电脑一台、导线等。
四、实训项目与内容提要
附表:《单片机原理与应用》课程实训项目名称及时间安排
序号
实训项目名称
实训项目的内容提要
时间
1
彩灯的制作
通过并行I/O口控制8个发光二极管,输出两种或三种
节日灯,并利用外中断,在两种或三种状态之间切换。
根据题目,编写汇编程序。编辑、汇编、连接、装载程序,调试运行,直至成功。
1.5
2
电子钟的制作
用单片机实现由LED数码管显示的秒表,并设置清零键或者暂停键。根据题目,编写汇编程序。编辑、汇编、连接、装载程序,调试运行,校准时间。
2
3
动态显示器的制作
用单片机实验16×16矩阵LED的显示,要求:动态显示完整的英文/中文字符和图形。根据题目,编写汇编程序。编辑、汇编、连接、装载程序,调试运行,直至成功。
1.5
五、成绩评定:
实训结束,由实训指导教师按如下几点对学生进行考核。出勤,占总成绩的20%;认真程度,占总成绩的20%;实训报告,占总成绩的30%;考核,占总成绩的30%。评定等级分为优、良、中、合格、不合格五种。
实训参考资料
任务一:单片机上电,单灯按1HZ频率循环,一旦按下P3.2所接的按键,发光二极管按双灯循环,松开此键,单灯继续原来的循环。
控制程序

ORG    0000H
            LJMP    MAIN
            ORG 0003H
            LJMP    INT_0
            ORG 001BH
            LJMP    DELAY
MAIN:      SETB    IT0
            MOV TMOD,#01H
            MOV TL0,#00H
            MOV TH0,#4CH
            SETB    PT0
            SETB    EA
            SETB    EX0
            SETB    ET0
            MOV B,#20
            SETB    TR0
            MOV A,#0FEH
BEGIN:      MOV P1,A
            CJNE    B,#00,$
            MOV B,#20
            RL      A
            SJMP    BEGIN
INT_0:      PUSH  ACC
MOV A,#0FBH
LOOP:      MOV P1,A
CJNE    B,#00,$
            MOV B,#20
            RL      A
            JNB    P3.2,LOOP
            POP    ACC
            RETI
DELAY:      MOV TL0,#00H
            MOV    TH0,#4CH
            DJNZ    B,LOOP1   
LOOP1:      RETI
            END

任务二:51单片机秒表程序,以8LED右边2位显示秒,左边6位显示0,实现秒表计时显示。以4×4矩阵键盘的KE0KE1KE23键分别实现启动、停止、清零等功能。方法:用单片机定时器T0中断方式,实现1秒定时;利用单片机定时器1方式3计数,实现60秒计数。用动态显示方式实现秒表计时显示,用键盘扫描方式取得KE0KE1KE2的键值,用键盘处理程序实现秒表的启动、停止、清零等功能。
按照上述思路可编制源程序如下:
                  ORG                    0000H
          AJMP    MAIN
        ORG    000BH
        AJMP    CONT
;主程序
;――――――――――初始化程序―――――――――――
MAIN    MOV    TMOD#61H    ;置T0方式1定时,T1方式2计数
                    MOV    TH0#3CH            T0置初值
                    MOV    TL0#0B0H
                    MOV    TH1#0C4H            T1置初值
                    MOV    TL1#0C4H     
                    MOV    DPTR#4400H        8155控制口地址送DPTR
                    MOV    A#43H                ;设置8155工作方式字
                    MOVX    @DPTRA            ;设置PAPB口输出,PC口输入
                    MOV    20H#00H            60秒计数单元置初值
                    MOV    21H#14H              50ms计数单元置初值
                    MOV    SP#3FH            ;堆栈指针置初值
                    MOV    R2#08H            LED待显示位数送R2
                    MOV    R0#30H            ;显示缓冲区首址送R0
STAR    MOV    @R0#00H            ;显示缓冲区清零
          INC    R0
                    DJNZ    R2STAR
                    CLR        A                    ;累加器清零
;―――――――――――键盘查询程序――――――――――
汇编语言指导书  KEY        ACALL    KS            ;调按键查询子程序判是否有键按下                         
    JNZ    K1            ;有键按下转移
                    ACALL    DISP                ;无键按下,调显示子程序延时
                    AJMP    KEY        ;继续查询按键
;―――――――――――键盘扫描程序――――――――――
K1        ACALL    DISP        ;键盘去抖延时
          ACALL    DISP
                    ACALL    KS                    ;再次判别是否有键按下
                    JNZ    K2                    ;有键按下转移
    AJMP    KEY                ;无按键,误读,继续查询按键
K2:          MOV    R3#0FEH            ;首列扫描字送R3
    MOV    R4#00H            ;首列号送R4
K3        MOV    DPTR#4401H        PA口地址送DPTR,开始列扫描
                    MOV    AR3               
                    MOVX    @DPTRA            ;列扫描字送PA
                    INC    DPTR                ;指向PC
          INC    DPTR
                    MOVX    A@DPTR            ;读取行扫描值
                    JB    ACC.0L1            ;第0行无键按下,转查第1
                    MOV    A#00H                ;第0行有键按下,行首键号送A
                    AJMP    LK                    ;转求键号
L1        JB    ACC.1L2            ;第1行无键按下,转查第2
                    MOV    A#08H                ;第1行有键按下,行首键号送A
                    AJMP    LK                    ;转求键号
L2          JB    ACC.2L3            ;第2行无键按下,转查第3
                    MOV    A#10H                ;第2行有键按下,行首键号送A
                    AJMP    LK                    ;转求键号
L3          JB    ACC.3NEXT        ;第3行无键按下,转查下一列
                    MOV    A#18H                ;第3行有键按下,行首键号送A
          AJMP    LK
LK        ADD    AR4                ;形成键码送A
                    PUSH    ACC                ;键码入栈保护
K4        ACALL    DISP
                    ACALL    KS                ;等待键释放
                    JNZ    K4                    ;未释放,等待
                    POP    ACC                ;键释放,弹栈送A
                    AJMP    PR                    ;转键盘处理程序
NEXT    INC    R4            ;修改列号
                    MOV    AR3
                    JNB    ACC.3KEY            4列扫描完返回按键查询状态
                    RL        A                    ;未扫描完,改为下列扫描字
                    MOV    R3A                ;扫描字暂存R3
                    AJMP    K3                    ;转列扫描程序
;―――――――――――键盘处理程序―――――――――――――――
PR        CJNE    A#00HPR01        ;不是KE0键码,转KE1
                    AJMP    KE0                    ;转KE0键处理程序
PR01        CJNE    A#01HPR02        ;不是KE1键码,转KE2
                    AJMP    KE1                    ;转KE1键处理程序
PR02        CJNE    A#02HPR03        ;不是KE2键码,返回按键查询
                    AJMP    KE2                    ;转KE2键处理程序

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。