单片机课程设计心得

时间:2024.3.23

1. 单片机最小系统

ORG 0000H

AJMP MAIN

ORG 0030H

MAIN:

       MOV    R0,#0FFH

       MOV    R1,#00H

LOOP:  MOV    P2,R1

       LCALL  DELAY

       INC    R1

       DJNZ   R0,LOOP

       SJMP   MAIN

DELAY:

       MOV    R3,#04H

LOOP2: MOV    R4,#0FFH

LOOP1: MOV    R5,#0FFH

       DJNZ   R5,$

       DJNZ   R4,LOOP1

       DJNZ   R3,LOOP2

       RET

END

单片机最小系统

2、255计数:

ORG 0000H

LJMP MAIN

ORG  0030H

MAIN: MOV   TMOD,#50H  ;设置T1工作于工作方式1

      SETB    TR1

      MOV   A,TL1

      LCALL  LOOP       ;调用除法程序

      MOV   R1,#60H

      MOV   R6,#00H

      ;显示子程序

PALY:  MOV   A,R6

      MOV   P2,A

      MOV   A,@R1

      MOV   DPTR,#TAB

      MOVC  A,@A+DPTR

      MOV   P0,A

      LCALL  DELAY

      MOV   P0,#0FFH   ;消除残影

      INC    R1

      INC    R6

      CJNE   R6,#03H,PALY

      LJMP   MAIN

DELAY: MOV   R2,#02H    ;延时子程序

LOOP2:MOV   R3,#0FFH

      DJNZ   R3,$

      DJNZ   R2,LOOP2

      RET

LOOP: MOV   B,#64H

       DIV    AB

      MOV   60H,A

      XCH    A,B

      MOV   B,#0AH

      DIV    AB

      MOV   61H,A

      MOV   62H,B

      RET

TAB:  DB    0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H

255计数

3、50000计数:

        FIRST  EQU 71H     ;定义个位

        SECOND EQU 72H     ;定义十位

        THIRD  EQU 73H     ;定义百位

        FOURTH EQU 74H     ;定义千位

        FIFTH  EQU 75H     ;定义万位

        ORG 0000H          ;程序从0地址开始

        LJMP START         ;跳到STRAT处执行

        ORG 0013H          ;INT1中断向量

        LJMP INT_1         ;跳至INT_1处执行

        ORG 0030H

START:

        SETB EA            ;开中断

        SETB IT1           ;负跳变触发

        SETB EX1           ;外部中断1允许中断

CLEAR:                     ;初始化显示0000

        MOV     FIRST,#00H

        MOV     SECOND,#00H

        MOV     THIRD,#00H

        MOV     FOURTH,#00H

        MOV     FIFTH,#00H 

SHOW:                      ;显示子程序

        ;万位显示

        MOV   DPTR,#TAB      ;DPTR指向编码表位置

        MOV   A,FIFTH         ;将FIFTH的内容复制到ACC

        MOVC  A,@A+DPTR     ;根据ACC的值取出编码表中的编码

        MOV   P0,A           ;由P0口输出ACC的内容

        MOV   A,#00H         ;选择第一个数码管显示

        MOV   P2,A           ;置位P2

        LCALL  DELAY          ;调用延时子程序

        MOV   P0,#0FFH       ;消除残影

        ;千位显示

        MOV   DPTR,#TAB      ;DPTR指向编码表位置

        MOV   A,FOURTH       ;将FOURTH的内容复制到ACC

        MOVC  A,@A+DPTR     ;根据ACC的值取出编码表中的编码

        MOV   P0,A           ;由P0口输出ACC的内容

        MOV   A,#01H         ;选择第二个数码管显示

        MOV   P2,A           ;置位P2

        LCALL  DELAY          ;调用延时子程序

        MOV   P0,#0FFH       ;消除残影

        ;百位显示

        MOV   DPTR,#TAB      ;DPTR指向编码表位置

        MOV   A,THIRD        ;将THIRD的内容复制到ACC

        MOVC  A,@A+DPTR     ;根据ACC的值取出编码表中的编码

        MOV   P0,A           ;由P0口输出ACC的内容

        MOV   A,#02H         ;选择第三个数码管显示

        MOV   P2,A           ;置位P2

        LCALL  DELAY          ;调用延时子程序

        MOV   P0,#0FFH       ;消除残影

        ;十位显示

        MOV   DPTR,#TAB      ;DPTR指向编码表位置

        MOV   A,SECOND       ;将SECOND的内容复制到ACC

        MOVC  A,@A+DPTR     ;根据ACC的值取出编码表中的编码

        MOV   P0,A           ;由P0口输出ACC的内容

        MOV   A,#03H         ;选择第四个数码管显示

        MOV   P2,A           ;置位P2

        LCALL  DELAY          ;调用延时子程序

        MOV   P0,#0FFH       ;消除残影

        ;个位显示

        MOV   DPTR,#TAB      ;DPTR指向编码表位置

        MOV   A,FIRST        ;将FIRST的内容复制到ACC

        MOVC  A,@A+DPTR     ;根据ACC的值取出编码表中的编码

        MOV   P0,A           ;由P0口输出ACC的内容

        MOV   A,#04H         ;选择第五个数码管显示

        MOV   P2,A           ;置位P2

        LCALL  DELAY          ;调用延时子程序

        MOV   P0,#0FFH       ;消除残影

       

        LJMP    SHOW        ;调用显示子程序

INT_1:                       ;中断子程序

        INC   FIRST          ;FIRST的内容加1

        MOV  A,FIRST        ;将FIRST的内容复制到ACC

        CJNE  A,#0AH,EXIT    ;如果A不等于10,则跳至EXIT处执行

        MOV  FIRST,#00H     ;将0复制到FIRST

        INC   SECOND        ;将SECOND的内容加1

        MOV  A,SECOND       ;将SECOND的内容复制到ACC

        CJNE  A,#0AH,EXIT     ;如果A不等于10,则跳至EXIT处执行

        MOV  SECOND,#00H    ;将0复制到SECOND

        INC  THIRD          ;将THIRD的内容加1

        MOV  A,THIRD        ;将THIRD的内容复制到ACC

        CJNE  A,#0AH,EXIT    ;如果A不等于10,则跳至EXIT处执行

        MOV  THIRD,#00H     ;将0复制到THIRD

        INC   FOURTH         ;将FOURTH的内容加1

        MOV  A,FOURTH       ;将FOURTH的内容复制到ACC

        CJNE  A,#0AH,EXIT    ;如果A不等于10,则跳至EXIT处执行

        MOV  FOURTH,#00H    ;将0复制到FOURTH

        INC   FIFTH

        MOV  A,FIFTH        ;将FIFTH的内容复制到ACC

        CJNE  A,#05H,EXIT    ;如果A不等于10,则跳至EXIT处执行

        MOV  FIFTH,#00H     ;将0复制到FIFTH

EXIT:                        ;跳出中断子程序

        RETI                 ;返回主程序

DELAY:                       ;延时子程序

        MOV   R2,#02H

LOOP2:  MOV   R3,#0FFH

        DJNZ  R3,$

        DJNZ  R2,LOOP2

        RET              

TAB:                         ;编码表

        DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;编码

50000计数.

4、出租车收费系统:

        FIRST      EQU 71H    ;定义个位

        SECOND     EQU 72H    ;定义十位

        THIRD      EQU 73H    ;定义百位

        FOURTH     EQU 74H    ;定义千位

        FIFTH      EQU 75H    ;定义万位

        SIXTH      EQU 76H    ;定义十万位

        ORG 0000H             ;程序从0地址开始

        LJMP START            ;跳到STRAT处执行

        ORG 0013H             ;INT1中断向量

        LJMP INT_1            ;跳至INT_1处执行

        ORG 0030H

START:

        SETB EA               ;开中断

        SETB IT1              ;负跳变触发

        SETB EX1              ;外部中断1允许中断

CLEAR:                        ;初始化显示0000

        MOV     R0,#05H       ;给R0赋值

        MOV     FIRST,#00H

        MOV     SECOND,#00H

        MOV     THIRD,#00H

        MOV     FOURTH,#00H

        MOV     FIFTH,#05H

        MOV     SIXTH,#00H   

SHOW:                         ;显示子程序

        ;十万位显示

        MOV   DPTR,#TAB         ;DPTR指向编码表位置

        MOV   A,SIXTH           ;将SIXTH的内容复制到ACC

        MOVC  A,@A+DPTR        ;根据ACC的值取出编码表中的编码

        MOV   P0,A              ;由P0口输出ACC的内容

        MOV   A,#00H            ;选择第一个数码管显示

        MOV   P2,A              ;置位P2

        LCALL  DELAY            ;调用延时子程序

        MOV   P0,#0FFH         ;消除残影

        ;万位显示

        MOV   DPTR,#TAB         ;DPTR指向编码表位置

        MOV   A,FIFTH           ;将FIFTH的内容复制到ACC

        MOVC  A,@A+DPTR        ;根据ACC的值取出编码表中的编码

        MOV   P0,A              ;由P0口输出ACC的内容

        CLR    P0.7              ;使P0.7位为零,让小数点位显示

        MOV   A,#01H            ;选择第二个数码管显示

        MOV   P2,A              ;置位P2

        LCALL  DELAY            ;调用延时子程序

        MOV   P0,#0FFH         ;消除残影

        ;千位显示

        MOV   DPTR,#TAB         ;DPTR指向编码表位置

        MOV   A,FOURTH          ;将FOURTH的内容复制到ACC

        MOVC  A,@A+DPTR        ;根据ACC的值取出编码表中的编码

        MOV   P0,A              ;由P0口输出ACC的内容

        MOV   A,#02H            ;选择第三个数码管显示

        MOV   P2,A              ;置位P2

        LCALL  DELAY            ;调用延时子程序

        MOV   P0,#0FFH         ;消除残影

        ;百位显示

        MOV   DPTR,#TAB         ;DPTR指向编码表位置

        MOV   A,THIRD           ;将THIRD的内容复制到ACC

        MOVC  A,@A+DPTR        ;根据ACC的值取出编码表中的编码

        MOV   P0,A              ;由P0口输出ACC的内容

        MOV   A,#03H            ;选择第四个数码管显示

        MOV   P2,A              ;置位P2

        LCALL  DELAY            ;调用延时子程序

        MOV   P0,#0FFH         ;消除残影

        ;十位显示

        MOV   DPTR,#TAB         ;DPTR指向编码表位置

        MOV   A,SECOND          ;将SECOND的内容复制到ACC

        MOVC  A,@A+DPTR        ;根据ACC的值取出编码表中的编码

        MOV   P0,A              ;由P0口输出ACC的内容

        CLR    P0.7              ;使P0.7位为零,让小数点位显示

        MOV   A,#04H            ;选择第五个数码管显示

        MOV   P2,A              ;置位P2

        LCALL  DELAY            ;调用延时子程序

        MOV   P0,#0FFH         ;消除残影

        ;个位显示

        MOV   DPTR,#TAB         ;DPTR指向编码表位置

        MOV   A,FIRST           ;将FIRST的内容复制到ACC

        MOVC  A,@A+DPTR        ;根据ACC的值取出编码表中的编码

        MOV   P0,A              ;由P0口输出ACC的内容

        MOV   A,#05H            ;选择第六个数码管显示

        MOV   P2,A              ;置位P2

        LCALL  DELAY            ;调用延时子程序

        MOV   P0,#0FFH        ;消除残影

       

        LJMP    SHOW          ;调用显示子程序

INT_1:                         ;中断子程序

        DEC   R0

        MOV  A,R0

        JZ    LOOP              ;判断中断次数是否达到4次

LOOP1:  MOV   A,FIRST           ;将FIRST的内容复制到ACC

        ADD   A,#05H            ;将ACC的内容FIRST和5相加

        MOV   FIRST,A           ;将ACC的内容复制到FIRST

        CJNE   A,#0AH,EXIT      ;如果A不等于10,则跳至EXIT处执行

        MOV   FIRST,#00H        ;将0复制到FIRST

        INC    SECOND            ;将SECOND的内容加1

        MOV   A,SECOND          ;将SECOND的内容复制到ACC

        CJNE   A,#0AH,EXIT      ;如果A不等于10,则跳至EXIT处执行

        MOV   SECOND,#00H       ;将0复制到SECOND

        INC    THIRD             ;将THIRD的内容加1

        MOV   A,THIRD           ;将THIRD的内容复制到ACC

        CJNE   A,#0AH,EXIT      ;如果A不等于10,则跳至EXIT处执行

        MOV   THIRD,#00H        ;将0复制到THIRD

LOOP:   MOV   R0,#01H

        MOV   A,FOURTH          ;将FOURTH的内容复制到ACC

        ADD    A,#08H            ;将ACC中的FOURTH和8相加

        MOV   B,#0AH           

        DIV    AB               

        MOV   FOURTH,B          ;将除法后的余数B赋给FOURTH

        CJNE   A,#01H,LOOP1     ;如果A不等于1,则跳至LOOP1处执行

        INC    FIFTH             ;将FIFTH的内容加1

        MOV   A,FIFTH           ;将FOURTH的内容复制到ACC

        CJNE   A,#0AH,LOOP1     ;如果A不等于10,则跳至LOOP1处执行

        MOV   FIFTH,#00H        ;将0复制到FIFTH

        INC    SIXTH             ;将SIXTH的内容加1

        MOV   A,SIXTH           ;将FOURTH的内容复制到ACC

        CJNE   A,#0AH,LOOP1     ;如果A不等于10,则跳至LOOP1处执行

        MOV   SIXTH,#00H        ;将0复制到SIXTH

EXIT:                         ;跳出中断子程序

        RETI                  ;返回主程序

DELAY:                        ;延时子程序

        MOV   R2,#02H

LOOP2:  MOV   R3,#0FFH

        DJNZ   R3,$

        DJNZ   R2,LOOP2

        RET                 

TAB:                          ;编码表

        DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;编码

出租车收费系统

设计心得

我们的课程设计有四个内容:设计一个单片机最小系统、外部脉冲自动计数、设计一个出租车计费系统、单片机最小系统实训板的设计。

在设计一个单片机最小系统时,因为平常做实验都做过所以很容易就搞定了,但是在做外部脉冲自动计数时候遇到了很多的问题,尤其是开始都没有什么经验的时候,根本就不知道问题的原因所在,有时候想破脑袋也想不出,后来在同学的帮助下把255计数的设计做出来了,所以在做50000计数设计时就变得相对简单了些,不过还是因为对某些概念理解不清导致了致命的错误。和别人的程序对比了下终于找到了错误的原因,看来团队合作还是挺重要的。

有了前面255计数和50000计数的经验积累,做出租车收费系统设计就有些太过顺利了,几乎是写完程序调试下就可以在仿真上面正确显示了,这说明了基础还是挺重要的。

    通过对这程序的制作,使我对汇编语言的基本知识的使用更加熟练,同时也增加了我对汇编语言的一些认识,在作业完成过程中通过和同学的交流,也增加了合作的技巧。通过查阅以下资料也学到了一些课本上没有的东西,拓宽了自己的知识面,增加了学好汇编语言的信心。

    这不是第一次用汇编语言来设计一个小程序,平时做了很多实验,写了很多小程序。但这次是一个综合的程序,平时的很多程序都用到了。很多子程序的设计是固定的,因此可以直接从指导资料中调用,大多只需要修改几个参数就可以,这大大方便了我们的设计,为我们节省了很多的时间。

    这次实习让我受益匪浅,无论从知识上还是其他的各个方面。上课的时候的学习从来没有见过真正的单片机,只是从理论的角度去理解枯燥乏味。但在实习中见过甚至使用了单片机及其系统,能够理论联系实际的学习,开阔了眼界,提高了单片机知识的理解和水平。在这次课程设计中又让我体会到了合作与团结的力量,当遇到不会或是设计不出来的地方,我们就会在QQ群里讨论或者是同学之间相互帮助。团结就是力量,无论在现在的学习中还是在以后的工作中,团结都是至关重要的,有了团结会有更多的理念、更多的思维、更多的情感。
  单片机是很重要的一门课程,老师和一些工作的朋友都曾说过,如果学好一门单片机,就凭这个技术这门手艺找一个好工作也不成问题。尽管我们在课堂学到的内容很有限,但在以后的学习中单片机还需要好好的深入研究和学习,学好了单片机也就多了一项生存的本钱。最后感谢老师对我们的精心指导和帮助,感谢同学们对我的帮助。

更多相关推荐:
单片机课程设计总结

单片机课程设计心得体会这个学期的单片机课已经早早的上完了但是理论纯属理论没有与实践的结合总让我们学的不踏实感觉没有达到学以致用的效果所庆幸的是在课程介绍考试完之后老师给我们安排了这次单片机课程设计给了我们学以致...

单片机课程设计及个人心得感受

本科课程设计(论文)单片机控制流水灯的正常工作及外部中断控制灯的亮灭学院名称:汽车与交通工程学院专业:汽车服务工程班级:13汽服B学号:*************姓名:*******指导教师姓名:***二〇**…

单片机课程设计体会

课程设计体会作为一名自动化专业的大三学生我觉得做单片机课程设计是十分有意义的而且是十分必要的在已度过的大学时间里我们大多数接触的是专业课我们在课堂上掌握的仅仅是专业课的理论知识如何去锻炼我们的实践能力如何把我们...

单片机课程设计心得体会(持续更新)

心得体会课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的…

单片机课程设计心得体会

单片机课程设计心得体会文章发布课程设计网发布时间20xx0505做了两周的课程设计有很多的心得体会有关于单片机方面的更多的是关于人与人之间关系方面的我们组一共有三个人但其他两个人是真的神龙见首不见尾除了在最后答...

单片机设计心得

四周的毕业设计结束了,在这次的毕业设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合…

单片机课程设计心得

单片机课程设计实训体会两周的单片机课程设计实训真是让我们受益匪浅学到了很多东西不管怎么样先感谢学校给我的这么多机会真正的学到了东西此次课程设计软件与硬件相结合考察了我们的焊接水平与编程能力因为以前做过关于焊接的...

单片机课程设计

单片机课程设计姓名学号班级电气一班专业电气工程及其自动化老师任家富实验一运用PWM在发光二极管上实现流星雨大家应该在电力电子技术中学过了PWM单片机可以用PWM实现发光二极管的亮暗程度的控制因为流星雨在前端是很...

单片机课程设计

112020xx课程设计论文课程名称单片机题目名称简易密码锁的设计学院高等技术学院专业班级高1109学号20xx3869学生姓名刘欢指导教师胡立强20xx年11月28日1112020xx目录一任务目的3二任务要...

单片机课程设计

成都理工大学应用技术学院单片机课程设计实习报告设计题目姓名学号专业学期任课教师驱动数码管显示梁银220xx5103041209级机电一体化四班五吴建平成都理工大学实习报告课程设计一实验目的1学习keilu4集成...

单片机课程设计-智能交通灯(完整版)

单片机课程设计报告交通灯这个是我亲自做过的保证能用希望对大家有所帮助但是不要照抄照搬哦智能交通灯控制系统设计摘要近年来随着我国国民经济的快速发展我国机动车辆发展迅速而城镇道路建设由于历史等各种原因相对滞后交通拥...

单片机课程设计

吉林大学珠海学院课程设计报告专业班级15班学生姓名吴聪课程名称单片机课程设计任课老师刘立勋张弓设计时间设计地点实验楼吉林大学珠海学院电子信息系20xx年11月29日目录一设计内容及设计任务二本次课程设计已实现的...

单片机课程设计心得(40篇)