单片机课设

时间:2024.5.8

目录

一、引言············································3

二、器件介绍·······································4

   1)51单片机89C52简介·························4

   2)A/D转换器芯片ADC0809简介················7

   3)74HC138简介·································9

三、软件的设计···································11

   1)软件所要实现的功能·························11

   2)程序流程图·································11

硬件电路设计·································16

五、心得体会·····································17

六、参考文献······································19

附录一、硬件原理图······························20

附录二、课设程序································21

一、引 言

  单片机(Single chip microcomputer)微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),单片机芯片常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。单片机由运算器、控制器、存储器、输入输出设备构成,相当于一个微型的计算机(最小系统),和计算机相比,单片机缺少了外围设备等。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。它最早是被用在工业控制领域。

由于单片机在工业控制领域的广泛应用,单片机由仅有CPU的专用处理器芯片发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。

    本次课设采用的STC89C52单片机是51系列单片机的一种代表,目前51系列单片机是国内目前应用最广泛的一种单片机之一。单片机以其系统硬件构架完整、价格低廉、学生能动手等特点,成为工科学生硬件设计的基础课。本次课程设计主要目的是为了更进一步学会使用和了解单片机,增强学生的动手能力,让我们更透彻的将平时所做的实验吃透学懂。

二、器件介绍

   本次课程设计的器件主要用到了89C52、ADC0809、74HC138、74HC374等下面将对它们进行介绍。

151单片机89C52简介

      89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用ATMEL公司CMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。它结合了CMOS的高速和高密度技术及CMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统。

 51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是52系列的单片机一般不具备自编程能力。

 89C52内置8位中央处理单元、512字节内部数据存储器ROM、8k片内程序存储器(RAM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。

管脚说明

 VCC:供电电压。 GND:接地。

 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8个TTL门电流。当P0口的管脚第一次写“1”时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4个TTL门电流。P1口管脚写入“1”后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口作为AT89C51的一些特殊功能口,管脚备选功能。

 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的底位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA / VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

2、A/D转换器芯片ADC0809简介

    ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。目前仅在单片机初学应用设计中较为常见。

(1)内部结构

ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图1所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。

图1  ADC0809的内部结构

(2)外部特性(引脚功能)

IN0~IN7:8路模拟量输入端。

2-1~2-8:8位数字量输出端。

ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路。

ALE:地址锁存允许信号,输入端,高电平有效。

START: A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。

EOC: A/D转换结束信号,输出端,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。

OE:数据输出允许信号,输入端,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。

CLK:时钟脉冲输入端。要求时钟频率不高于640KHz。

REF(+)、REF(-):基准电压。

Vcc:电源,单一+5V。

GND:地。

(3)工作过程

首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。

转换数据的传送 A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。

(4)引脚图

引脚图如图2

          

图2  ADC0809引脚图

374HC138简介

     74HC138译码器可接受3位二进制加权地址输入(A0, A1和A2),并当使能时,提供8个互斥的低有效输出(Y0至Y7)。74HC138特有3个使能输入端:两个低有效(E1和E2)和一个高有效(E3)。除非E1和E2置低且E3置高,否则74HC138将保持所有输出为高。利用这种复合使能特性,仅需4片74HC138芯片和1个反相器,即可轻松实现并行扩展,组合成为一个1-32(5线到32线)译码器。任选一个低有效使能输入端作为数据输入,而把其余的使能输入端作为选通端,则74HC138亦可充当一个8输出多路分配器,未使用的使能输入端必须保持绑定在各自合适的高有效或低有效状态。74HC138的引脚图如图3所示。

     74HC138 作用原理于高性能的存贮译码或要求传输延迟时间短的数据传输系统,在 高性能存贮器系统中,用这种译码器可以提高译码系统的效率。将快速赋能电路用于高速存贮器时,译码器的延迟时间和存贮器的赋能时间通常小于存贮器的典型存取时间,这就是说由肖特基钳位的系统译码器所引起的有效系统延迟可以忽略不计。

         

图3  74HC138引脚图

 软件的设计

1、软件所要实现的功能:

 (1)开机后显示班级、学号 112- 16;

 (2)用的是实验箱键盘最后一排的六个键,依次为:“设定” “加一" "减一" "换位” ”确定“ ”运行“;

 (3)按“设定”键,默认第一位闪烁,此时按“加一”和“减一”键可以调整数值;

 (4)设定完一位后,按“换位”键可以对下一位进行设定;

 (5)四位都设定完之后,按“确定”键,去闪烁,并将参数01下设定的值保存;

 (6)再按下“确定”键,跳至参数02,此时可以依照步骤3对其进行设置;

 (7)参数01、02、03、04设定好之后,可以按“确定”键对设定的值查询;

 (8)在不同的参数下,按下“运行”键可以将以该设定值最大值,0为最小值的AD转换结果显示到前四位数码管上。

2、程序流程图

   所谓流程图,就是用各种符号、图形、箭头把程序的流向及过程用图形表示出来。绘制流程图是单片机程序编写前最重要的工作,通常我们的程序就是根据流程图的指向采用适当的指令来编写的。 绘制流程图时,首先画出简单的功能流程图,再对功能流程图进行扩充和具体化,把功能图上的每一个粗框图转化为具体的存储器或单元,从而绘制出详细的程序流程图,即细框图。

流程图如下

                 图4  主程序

图5  判定加 减 换位键

图6  运行键子程序

图7  确定键子程序

硬件电路设计

    本次的课程设计的所需的设备是:伟福系列单片机仿真的试箱,PC机。在搭建硬件电路时是以试验箱为设计平台,将相应的芯片端口以、信号采集端口以及必要的端口用导线正确连接即可。

    程序下载调试:

    (1)首先按照硬件设计要求的说明将伟福实验箱上所需要的相应的导线进行连接。确保连接无误

(2)将在电脑上仿真过的程序用伟福集成调试软件进行编译调试。(如出现问题及时在上面进行改正,直到编译无错误出现为止)

 (3)在(2)完成后,点击运行(软件自动将编译好的程序下载到实验箱上面)数码管会出现相应的相应。

根据课题要求当连续按“确定”键时,对应的行号从01-04循环变化。按下“运行”键,执行不同的程序,共有三种要求,我选择要求1:

执行数据采集程序(参考实验箱相应的硬件电路,但要求不同),采集模拟量0-5V,显示对应的物理量在0000-最大值之间变化。5V对应的显示值(最大值)是多少可以在设定时通过某行(四行参数中的一行)参数设置的数值选择确定。具体如下:

CS0809芯片的片选端口接在CS1上,数码管显示口接在CS0上面,电位器的输出口接在CS0809 的IN0通道上。所选用的按键为试验箱上面4*6按键中最下面的六个按键。其功能从左至右一次是:“设定”键、“加一”键、“减一”键、“换位”键、“确定”键、“运行”键。

五、心得体会

    一周半的单片机课程设计终于完成了,作为一名信息类专业的大三学生,我觉得做单片机课程设计是十分有意义的,而且是十分必要的。在已度过的大学时间里,我们大多数接触的是专业课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想做类似的课程设计就为我们提供了良好的实践平台。

    课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。

    在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。我们是在做单片机课程设计,但我们不是艺术家,他们可以抛开实际尽情在幻想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计。

     通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。我觉得作为一名自动化专业的学生,单片机的课程设计是很有意义的。更重要的是如何把自己平时所学的东西应用到实际中。

    这次课程设计让我受益匪浅,无论从知识上还是其他的各个方面。上课的时候的学习只是从理论的角度去理解枯燥乏味。但在实习中见过甚至使用了单片机及其系统,能够理论联系实际的学习,开阔了眼界,提高了单片机知识的理解和水平。

单片机是很重要的一门课程,老师和一些工作的朋友都曾说过,如果学好一门单片机,就凭这个技术这门手艺找一个好工作也不成问题。尽管我们在课堂学到的内容很有限,但在以后的学习中单片机还需要好好的深入研究和学习,学好了单片机也就多了一项生存的本钱。最后感谢老师对我们的精心指导和帮助,感谢同学们对我的帮助。

六、参考文献

[1]杨学昭,王东云.单片机原理及应用.西安:西安电子科技大学出版社,2009

[2]许珉.单片机原理及应用.北京:中国电力出版社,2007.08 

[3]三恒星科技.MCS-51单片机原理与应用实例.北京:电子工业出版社,2008.01

[4]康华光.电子技术基础(数字部分).北京:高等教育出版社,2000.6

[5]孙肖子,田根登.现代电子线路和技术实验.北京:高等教育出版社,2004.1

[6]戴佳,戴卫恒.《51单片机C语言应用程序设计实例精讲》.北京:电子工业出版社,2006.4

附录一、硬件原理图

附录二、课设程序

OUTBIT   EQU 08002H  ;位控制器

OUTSEG  EQU 08004H  ;段控制器

IN        EQU 08001H  ;键盘读入口

CS0809    EQU 09000H

LEDBUF   EQU 30H     ;显示缓冲区

CAN      EQU 51H     ;参数1234

       ORG 0000H

          LJMP START

       ORG 0020H

         START:MOV 25H,#00H

         MOV LEDBUF,#00H     ;班级、学号的序码

      MOV LEDBUF+1,#01H

      MOV LEDBUF+2,#01H

      MOV LEDBUF+3,#02H

      MOV LEDBUF+4,#01H

      MOV LEDBUF+5,#06H

      MOV 36H,#00H

      MOV 40H,#00H        ;参数1下的设定值缓冲区

      MOV 41H,#00H

      MOV 42H,#00H

      MOV 43H,#00H

      MOV 44H,#00H        ;参数2下的设定值缓冲区

      MOV 45H,#00H

      MOV 46H,#00H

      MOV 47H,#00H

      MOV 48H,#00H        ;参数3下的设定值缓冲区

      MOV 49H,#00H

      MOV 4AH,#00H

      MOV 4BH,#00H

      MOV 4CH,#00H        ;参数4下的设定值缓冲区

      MOV 4DH,#00H

      MOV 4EH,#00H

      MOV 4FH,#00H

      MOV 50H,#00H

      MOV CAN,#01H    ;参数1234

L2:MOV R0,#LEDBUF     ;显示班级、学号

   LCALL DISPLAYLED1   ;显示子程序,R0为参数

   LCALL TESTKEY      ;判断“有效键”是否按下?         JNB 20H.0,L2       ;没有键按下,则继续显示班级、学号

L3:MOV 25H,#00H

   MOV A,CAN

   MOV B,#04H

   MUL AB

   ADD A,#3CH         ;将参数首地址存入R0

   MOV R0,A           ;第一次有键按下默认显示参数1下设定的值,即:显示从40H单元开始的内容

   LCALL DISPLAYLED2  ;调用设定参数显示子程序

   LCALL TESTKEY      ;检测是否有键按下

   JNB 20H.0,L3       ;没有键按下,则继续显示参数1下设定的值

   LCALL PAZ          ;有键按下,则判断运行键是否按下

   CJNE R5,#05H,QD1

   LJMP SD            ;R5=5

QD1:LJMP S44

 SD:SETB 20H.1        ;20H.1置1

    MOV 36H,#00H

    MOV A,CAN

    MOV B,#04H

    MUL AB

    ADD A,#3CH        ;通过参数CAN来选择设定值的缓冲区(CAN=1,A=40H;CAN=2,A=44H;CAN=3,A=48H;CAN=4,A=4CH)

    ADD A,36H

    MOV R0,A

    MOV 70H,@R0       ;将闪值保存至70H单元

 H1:MOV A,CAN

    MOV B,#04H

    MUL AB

    ADD A,#3CH

    ADD A,36H

    MOV R0,A          ;R0指向闪烁寄存字节处

    JB 20H.1,S1

    MOV @R0,#10H

    SETB 20H.1

    LJMP DS1

 S1:MOV @R0,70H       ;将闪烁字节的值显示出来

    CLR 20H.1

 DS1:MOV A,CAN

    MOV B,#04H

    MUL AB

    ADD A,#3CH

    MOV R0,A          ;R0指向显示首区

    LCALL DISPLAYLED2

    LCALL TESTKEY

    JNB 20H.0,H1

    LCALL PAZ

    CJNE R5,#02H,S11  ;换位

    MOV A,CAN

    MOV B,#04H

    MUL AB

    ADD A,#3CH

    ADD A,36H

    MOV R0,A

    MOV @R0,70H

    INC 36H

HW1:MOV A,CAN

    MOV B,#04H

    MUL AB

    ADD A,#3CH

    ADD A,36H

    MOV R0,A

    MOV 70H,@R0

    MOV A,36H

    CJNE A,#04H,H1

    MOV 36H,#00H

    LJMP HW1

S11:CJNE R5,#04H,S22  ;加1

    INC 70H           ;闪烁值加1

    MOV A,70H

    CJNE A,#0AH,H1

    MOV 70H,#00H

    LJMP H1

S22:CJNE R5,#03H,S33  ;减1

    DEC 70H           ;闪烁值减1

    MOV A,70H

    CJNE A,#0FFH,H2

    MOV 70H,#09H

 H2:LJMP H1

S33:CJNE R5,#01H,H2   ;确定1(去掉闪烁,并将该参数下的设定值保存到对应的缓冲区)

    MOV A,CAN

    MOV B,#04H

    MUL AB

    ADD A,#3CH

    ADD A,36H

    MOV R0,A

    MOV @R0,70H

    LJMP L3

S44:CJNE R5,#01H,W1  ;确定2(将参数加1,并将该参数下的设定值显示到数码管上)

    INC CAN          ;参数加1,指向下一个参数

    MOV A,CAN

    CJNE A,#05H,L22

    MOV CAN,#01H

    LJMP L3

 W1:CJNE R5,#00H,L22

 YX:LCALL AD         ;采集(调用AD转换子程序,获得AD值)

    LCALL TESTKEY

    JB 20H.0,L22

    LJMP YX          ;运行

L22:LJMP L3

;判断"有效按键"子程序

TESTKEY:MOV DPTR,#OUTBIT

    MOV A,#00H

    MOVX @DPTR,A      ;6条列线全置0

    MOV DPTR,#IN

    MOVX A,@DPTR      ;读入键状态(哪一排有键按下,则对应的位为:0)

    ANL A,#01H        ;若是最后一排有键按下,则8NL之后A=0,否则A=1

    CJNE A,#01,B1     ;判断按下的是否是最后一排的键(有效按键)?

    CLR 20H.0         ;A=1,则最后一排没有键按下,将20H.0清0

    LJMP FH

 B1:SETB 20H.0        ;A=0,则最后一排有键按下,将20H.0置1

 FH:RET

判断键位,通过R5返回,运行--00H,确定-01H,换位--02H,减1--03H,加1--04H,设定--05H

 PAZ:MOV R4,#0FEH      ;1111 1110B

     MOV R5,#0FFH      ;1111 1111B

NEXT:MOV DPTR,#OUTBIT

     MOV A,R4

     MOVX @DPTR,A     ;只将第6列置0

     MOV DPTR,#IN

     MOVX A,@DPTR     ;读入键状态

     ANL A,#01H       ;若“运行”键按下,则ANL之后A=0;否则A=1

     CJNE A,#01H,QDZ  ;判断“运行”键是否按下?(依次判断最后一排的键)

     MOV A,R4

     RR A             ;否,则左移一位

     MOV R4,A

     INC R5           ;执行后,R5=00H

     LJMP NEXT

 QDZ:INC R5           ;按下“运行”键,则跳至此处,执行后,R5=00H

     MOV LEDBUF,R5    ;若前面没有按“运行”键,则R5=01H;有,则R5=00H

LOOP:LCALL TESTKEY

     JB 20H.0,LOOP    ;有键按,则循环检测按键

     RET

;显示1子程序(班级、学号)

DISPLAYLED1:MOV R2,#20H      ;选通第1位数码管

            MOV R3,#06H      ;6位数码管显示,控制循环6次

         L1:MOV DPTR,#OUTBIT

            MOV A,R2

            MOVX @DPTR,A

            RR A             ;右移一位,选通下一位数码管

            MOV R2,A

            MOV A,@R0

            MOV DPTR,#LEDMAP

            MOVC A,@A+DPTR   ;由序码求段码

            MOV DPTR,#OUTSEG

            MOVX @DPTR,A     ;输出段码

            LCALL DELAY      ;调用延时

            INC R0           ;指向下一个要显示的段码

            DJNZ R3,L1

            RET

;显示2子程序(设定值和参数)

DISPLAYLED2:MOV R2,#20H      ;选通第1位数码管

            SETB 21H.0       ;将21H.0置1

            MOV R3,#06H      ;6位数码管显示,控制循环6次

        L12:MOV DPTR,#OUTBIT

            MOV A,R2

            MOVX @DPTR,A

            RR A             ;右移一位,选通下一位数码管

            MOV R2,A

            CJNE A,#02H,L44  ;没选通第五位数码管(0000 0010B),则跳转,正常显示

            CLR 21H.0        ;选通了第五位数码管,则将21H.0清0

        L44:MOV A,@R0

            MOV DPTR,#LEDMAP

            MOVC A,@A+DPTR   ;由序码求段码

            MOV DPTR,#OUTSEG

            MOVX @DPTR,A     ;输出段码

            LCALL DELAY      ;调用延时

            JB 21H.0,H11     ;21H.0等于1,即没选通第五位数码管,则跳转

            MOV R0,#4FH      ;选通了第五位数码管,则给R0初始地址4FH

            SETB 21H.0

        H11:INC R0           ;(50H)=00H,第五位数码管显示“0”;(51H)=01H,第六位数码管显示“1”

            DJNZ R3,L12     

            RET

;AD转换子程序

AD:LCALL PXS          ;调系数

    MOV DPTR,#CS0809  ;采集

    MOV A,#00H

    MOVX @DPTR,A

    JNB P3.2,$        ;方法1:利用ADC0809的EOC信号触发中断INT0(P3.2口)

    ;MOV A,#40H

    ;DJNZ ACC,$       ;方法2:延时>100us

    MOVX A,@DPTR

    LCALL ZHUANHUAN

    MOV R0,#60H

    LCALL DISPLAYLED2

    MOV P1,#80H

    RET

;判系数子程序

  PXS:MOV A,CAN

      MOV B,#04H

      MUL AB

      ADD A,#3CH

      MOV R0,A

      MOV R1,A

      MOV A,@R0

      SWAP A

      INC R0

      ADD A,@R0

      MOV 53H,A

      INC R0

      MOV A,@R0

      SWAP A

      INC R0

      ADD A,@R0

      MOV 54H,A

      MOV A,53H

      ANL A,#0F0H

      CJNE A,#00,DYYQ

      MOV 25H,#01H

      INC R1

      MOV A,@R1

      SWAP A

      INC R1

      ADD A,@R1

      MOV 53H,A

      INC R1

      MOV A,@R1

      SWAP A

      ADD A,#00

      MOV 54H,A

 DYYQ:MOV 57H,#02H

      MOV 58H,#55H

      MOV 55H,#00H

      MOV 56H,#00H

      MOV 22H,#00H

      MOV R0,#0FFH

LOOP5:INC R0

      CLR C

      MOV A,56H

      ADD A,58H

      DA A

      MOV 56H,A

      MOV A,55H

      ADDC A,57H

      DA A

      MOV 55H,A

      CLR C

      MOV A,56H

      SUBB A,54H

      MOV 22H.0,C

      MOV A,55H

      SUBB A,53H

      MOV 22H.1,C

      MOV R2,22H

      CJNE R2,#00,NEXT5

      MOV A,56H

      CJNE A,54H,NEXT5

      INC R0

NEXT5:MOV C,22H.1

      JC LOOP5

      MOV 22H,#00H

      CLR C

      MOV B,R0

      RET

;转换子程序

ZHUANHUAN:MUL AB

          MOV 6AH,B

          MOV 6BH,A

          MOV 6CH,#03H

          MOV 6DH,#0E8H

          MOV R0,#0FFH

    LOOP1:INC R0        ;判定千位

          MOV A,6BH

          MOV 2BH,6BH

          SUBB A,6DH

          MOV 6BH,A

          MOV A,6AH

          MOV 2AH,6AH

          SUBB A,6CH

          MOV 6AH,A

    NEXT1:JNC LOOP1

          MOV 60H,R0

          MOV 6AH,2AH

          MOV 6BH,2BH

          MOV 22H,#00H  ;判定百位

          CLR C

          MOV 6CH,#00H

          MOV 6DH,#64H

          MOV R0,#0FFH

    LOOP2:INC R0

          MOV A,6AH

          CJNE A,#00H,BW1

          MOV A,6BH

          MOV 2BH,6BH

          SUBB A,6DH

          MOV 6BH,A

          LJMP NEXT2

      BW1:MOV A,6BH

          SUBB A,6DH

          MOV 6BH,A

          MOV A,6AH

          SUBB A,6CH

          MOV 6AH,A

          LJMP LOOP2

    NEXT2:JNC LOOP2

          MOV 61H,R0

          MOV 6BH,2BH

          MOV 22H,#00H  ;判定十位

          CLR C

          MOV 6DH,#0AH

          MOV R0,#0FFH

    LOOP3:INC R0

          MOV A,6BH

          MOV 2BH,6BH

          SUBB A,6DH

          MOV 6BH,A

    NEXT3:JNC LOOP3

          MOV 62H,R0

          MOV 63H,2BH

          MOV A,25H

          CJNE A,#01H,TZ1

          MOV 63H,62H

          MOV 62H,61H

          MOV 61H,60H

          MOV 60H,#00H

      TZ1:RET

;延时子程序

DELAY:MOV R6,#06

   D1:MOV R7,#210

      DJNZ R7,$

      DJNZ R6,D1

      RET

;数码管字形段码                   ;显示字形

LEDMAP:DB 3FH,06H,5BH,4FH,66H     ;01234

       DB 6DH,7DH,07H,7FH,67H     ;56789

       DB 77H,7CH,39H,5EH,79H     ;ABCDE

       DB 71H,00H,76H             ;F灭H

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

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

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

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

单片机课程设计心得体会

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

单片机课设报告

燕山大学课程设计说明书题目虚拟电子琴设计学院系电气工程学院年级专业学号学生姓名指导教师教师职称电气工程学院课程设计任务书说明1此表一式四份系指导教师学生各一份报送院教务科一份2学生那份任务书要求装订到课程设计报...

单片机课程设计小结

单片机课程设计小结单片机课程设计小结一做了两周的课程设计有很多的gt心得体会有关于单片机方面的更多的是关于人与人之间关系方面的我们组一共有三个人但其他两个人是真的神龙见首不见尾除了在最后答辩的时候他们一起坐在了...

单片机课程设计心得

课程设计心得课设的选题,方案的设计与确定,元器件的选择,硬件的焊接,这一系列的课设准备工作早在课设开始之前,老师就向我们做了相关的介绍和明确的说明,同时非常友好的提示我们早点着手准备自己的课设项目。但是如此语重…

单片机课程设计总结

单片机基础知识单片机的外部结构:1、DIP40双列直插;2、P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平)3、电源VCC(PIN40)和地线GND(PIN20);4、高电平…

单片机课程设计

基于单片机的数字电子钟序列号论文题目基于单片机的数字电子钟课程名称单片机原理机接口技术LKH12120xx1基于单片机的数字电子钟目录1123456789LKH12120xx2基于单片机的数字电子钟目录2目录1...

自动化专业单片机课程设计

单片机课程设计题目数字时钟的设计姓名班级指导老师1主要内容根据单片机课程所学内容结合其他相关课程知识设计电子时钟以加深对单片机知识的理解锻炼实践动手能力为以后的毕业设计和工作打下坚实基础2基本要求本设计以MCS...

单片机课程设计报告书写要求

单片机原理与应用课程设计题目1616点阵实验专业班级电气化09级2班学号20xx20xx姓名刘晓飞20xx年12月10日一设计依据16x16点阵需要32个驱动分别为16个列驱动及16个行驱动每个行与每个列可以选...

单片机课程设计说明书格式

广州大学松田学院课程设计说明书题目姓名专业班级系部指导教师二0一一年十二月日广州大学松田学院单片机原理及应用课程设计说明书目录摘要错误未定义书签第1章绪论错误未定义书签11选题的背景错误未定义书签12电子密码锁...

兰州交通大学单片机课设流水灯

单片机原理及系统课程设计专业电气工程及其自动化班级姓名学号指导教师兰州交通大学自动化与电气工程学院20xx年3月7日单片机原理及系统课程设计报告基于单片机的流水灯设计摘要单片机是一种集成在电路芯片是采用超大规模...

单片机课设总结(30篇)