单片机课程设计报告-秒表设计

目录

一、   设计任务和要求………………………………………….….3

(1)设计任务…………………………..…………………...…..…3

(2)设计要求…………………..……………..………………....…3

二、   设计方案与论证………………………………………….....3

三、   单元电路设计与参数计算………………………………….4

(1)时钟电路…………………………………………………….4

(2)按钮电路…………………………………………………….4

(3)显示电路…………………………………………………….5

(4)单片机……………………………………………………….5

四、   原理图及器件清单………………………………………….6

( 1 )总原理图…………………………………………………..…..6

(2)PCB图………………………………………………….…….7

(3)Proteus仿真图…………………………………………….……7

(4)元器件清单………………………………………..……….….8

五、   安装与调试……………………………………………..…..8

(1)安装………………………………………………………...8

(2)调试………………………………………………………...8

六、   性能测试和分析…………………………………………….9

七、   结论和心得………………………………………………….9

八、   参考文献……………………………………………….…...9

秒表设计

一、    设计任务和要求错误!未找到目录项。

(1)设计任务

用AT89C51设计一个3位的LED数码作为“秒表”。

(2)设计要求

显示时间为0.0-99.9秒,每0.1秒自动加1,另外设计一个“开始”键、一个“复位”键和一个“停止”键。秒表可单独分别计时,且最多可计5次。

 

二、方案设计与论证

本设计分为时钟电路、按钮电路、显示电路和单片机四大部分,这些模块中单片机占主控地位。其模块电路如图2-1所示。时钟电路常用的有内部时钟方式和外部时钟方式,但因为本设计中只需要一片单片机,所以采用内部时钟方式比较简单。按钮电路中的“复位”按钮是按键手动复位,它有电平和脉冲两种方式,比较电路的复杂程度,本设计选择了按钮电平复位电路,其他几个按钮则是通过单片机判断高低电平的不同来控制按钮。显示电路所用的数码管有共阴和共阳之分,不管使用何种数码管,P0口作为I/O使用时都是需要上拉电阻才能驱动数码管。另外,因为单片机的4个并行I/O口的输出电流一般是1mA,短路电流为4mA左右,而数码管的最少驱动电流也需要10mA,因而不管在使用共阴数码管时,单片机输出口也必须使用上拉电阻提高输出电流,才能驱动数码管。为了使电路简单化,本设计选用共阳数码管。 但根据显示方式的不同选择,我们可以有几种方案:

方案一:使用静态显示方式。静态显示方式下的数码管的显示字符一经确定,相应锁存器锁存的断码输出將维持不变,直到送入另一个字符的断码为止。因而此设计中使用的显示位数使用了三个8位并行I/0口。如果另外想扩展单片机功能,则能使用的输出管脚很是有限。

方案二:使用动态显示方式。这个显示方式是将所有显示位的段码线的相应段并联在一起,由一个8位I/O口控制,而各位的共阴或共阴极分别由相应的I/O线控制,形成各位的分时选通。这种显示方式,简化了硬件电路,特别在多位数码管显示时尤为突出。

本小组尝试了各种方案,在此报告中以静态显示方式为例说明。(动态显示方式省略)

                       图2-1

三、单元电路设计与参数计算

注://单元电路设计中的网络标号的数字即为单片机的管脚//

1)时钟电路

         

       图3-1                         

时钟电路如图3-1所示,时钟电路的晶振频率越高,系统的时钟频率越高,单片机的运行速度也就越快。晶振频率根据设计需要设为12MHz,又根据谐振性质,电路中的电容C1、C2选择为30pF左右。该电容的的大少会影响振荡器频率的高低、振荡器的稳定性和起振的快速性。

2)按钮电路

  

            图3-2a                         图3-2b

A、复位按钮

根据计算容抗的公式以及并联电阻变小的性质,可以知道,当S13断开时,C3的容抗大,管脚9处的电位U9为电阻R3上的压降,因而U9为低电平,复位键无效。当S13按下时,R2与C3的并联阻抗变小,R3上的压降增大,U9为高电平,复位键有效,实现复位功能。本设计中C3取值22uF,电阻R2取值100欧姆,R3取值1K欧姆。具体电路如图3-2a所示。

B、开始,停止、翻页按钮

   电路如图3-2b所示

3)显示电路

P1口控制显示的是十位,p0口控制显示的是个位,P2口控制显示的是十分位。

不同的数码管显示方式,对应的最适合的共阴或者共阳级的数码管也不同。静态显示的适宜选共阳的数码管,动态显示的适宜选共阴的数码管。如果动态显示方式下选择共阳的数码管,位选端直接用单片机驱动则数码管的亮度不够,因而应该在位选端使用上拉电阻以提高数码管的驱动电流,但因为显示那个的数据段选的数目不同,故而需要用电阻对各段进行限流,以保证显示的每个数据亮度相同。相同情况下,静态显示的数码管的亮度要比动态的亮。

4)单片机

单片机的程序可用汇编语言也可用C语言,为了提高使用汇编语言的能力,本设计特用了汇编语言了编写程序主程序流程图如下所示,具体程序见电子档。主程序流程图:

四、总原理图及元器件清单

(1)总原理图

2PCB

3Proteus仿真图

4)元器件清单

1) AT89C51的引脚图和数码管5101BS的引脚图

  

    4-3a AT89C51引脚图          4-3b 5101引脚图

2)元器件总清单

连接器con2

五、安装与调试

1)安装

制板的顺序依次是:画原理图、做封装、在原理图中添加元器件对应的封装、布PCB板、改焊盘大少、打印PCB图、用快速制板机将PCB图烤制到铜板上、腐蚀铜板、钻孔、放置元器件、烙铁焊好器件。一块电路板就安装完毕了。

2)调试

将外部电源接至电路板上,检验电路板是否完全实现设计要求。本设计中,发现按钮功能完全符合设计要求,但是数码管的显示中有些段码不亮,从而显示的数据乱码,用万用表检测对应的管脚是否有电压,发现焊盘有虚焊,引脚与引脚之间有短路,排查后电路板实现设计要求。

六、性能测试与分析

所制电路板虽然能实现设计中要求的功能,但是在实际使用中还是存在着许多缺陷。这块电路板不能随意查看记录的数据,而是必须在计完五次数据后才能依次的翻页查看,复位后所计数据便会丢失,不能翻看历史,所计数据组数不能满足现实需要。

七、结论与心得

在这三周的课程设计中,不管是在软件方面还是硬件方面我都有了更深入的学习。

………

八、参考文献

(1)单片机原理及接口技术  张毅刚 彭喜元著  人民邮电出版社

(2)单片机课程设计实例指导  李光飞等编著   北京航空航天大学出版社

(3)51系列单片机原理、开发与应用实例   孙进平等编著

(4)单片机程序设计实例   先锋工作室编著   清华大学出版社

(5)电子工程师之家 、豆丁网 、百度、搜狗、电子工程专辑  等等

附程序如下:

                    D   EQU  60H

                    E   EQU  61H

                    F   EQU  62H

                    G   EQU  63H

                    H   EQU  64H

                    I   EQU  65H

                ORG   0000H

            LJMP  MAIN

                ORG   000BH   ;定时器T0的入口地址

            LJMP  DINGSHI

            ORG   0013H   ;外部中断1的入口地址

            LJMP  STOP1

           

               ORG   0030H   ;主程序入口地址

MAIN:                   MOV P0,#0C0H  ;置初值

            MOV P2,#0C0H

                MOV P1,#0C0H

            MOV DPTR,#TABLE   ;数据指针指向表头地址

            SETB EA     ;开中断      

            SETB EX0   

            SETB EX1

                        SETB ET0

            SETB PX0    ;设中断优先级

            SETB PX1

            MOV  TMOD,#01H ;工作方式为方式1

;********************************************                          

;开始及计数程序

;********************************************

START:          MOV   R0,#40H 

                MOV   R1,#50H        

            MOV   R2,#00H

        CLR   P1.0

            MOV  TH0,#0D8H  ;置计数初始值

            MOV TL0,#0F0H

            MOV  R3,#00H

            MOV  R4,#00H

        MOV  R7,#00H

            MOV  B,#10    

            MOV  SP,#30H

        MOV  D,#60H

        MOV  E,#61H

        MOV  F,#62H

        MOV  G,#63H

        MOV  I,#65H

        MOV  R5,#05

XUNHUAN:  JB     P1.7,START1  ;p1.7=0是开始

          LCALL DELAY10     ;按键消抖

          JB     P1.7,XUNHUAN      

           JNB   P1.7,$

           LJMP  GN1

           LJMP  XUNHUAN

       

START1:   JB P3.0,XUNHUAN    

          LCALL DELAY10        

          JB P3.0,XUNHUAN       

          JNB   P3.0,$

          LCALL FANYE

          LJMP XUNHUAN

;********************************************

;翻页模块

;********************************************

FANYE:  MOV  A,@R0       

    MOV  R3,A

        MOV  A,@R1

        MOV  R4,A

    DEC  R5

        CJNE  R5,#04,LOP1

        MOV  A,D

        MOV  R7,A

    LJMP  L1

LOP1:   CJNE  R5,#03,LOP2

    MOV  A,E

        MOV  R7,A

    LJMP  L1

LOP2:   CJNE  R5,#02,LOP3

    MOV  A,F

        MOV  R7,A

    LJMP  L1

LOP3:   CJNE  R5,#01,LOP4

    MOV  A,G

        MOV  R7,A

    LJMP  L1

LOP4:   CJNE  R5,#00,FANYE

    MOV  A,I

        MOV  R7,A

    LJMP  L1

L1:     INC   R0

        INC   R1

       

        INC   R2

        CJNE  R2,#5,LOOP2

        MOV  R0,#40H

        MOV  R1,#50H

   

        MOV  R2,#00H

 LOOP2:LCALL XIANSHI

       RET

       

;********************************************

;数码管记录程序

;********************************************

GN1:            SETB  TR0    

LOOP:       CJNE  R2,#05H,LOOP

            MOV  R0,#40H

       

            MOV  R1,#50H

       

            MOV  R2,#00H

            CLR   EA

            AJMP XUNHUAN   

;********************************************

;1毫秒延时子程序

;********************************************

DELAY1:     MOV    R6,#2

DL1:        MOV    H,#248

            DJNZ    H,$

            DJNZ    R6,DL1

            RET

;********************************************

;10毫秒延时子程序

;********************************************

DELAY10:  MOV   R6,#20

DL2:      MOV    H,#248

          DJNZ    H,$

          DJNZ    R6,DL2

          RET

;********************************************

;外部中断1中断程序,停止模块

;********************************************

STOP1 :    PUSH   ACC

          PUSH   PSW

          LCALL  DELAY10            ;延时10毫秒消抖

          JB     P3.3, FAN1

          JNB    P3.3,$        

          MOV   A, R3

          MOV   @R0  , A

          MOV   A, R4

          MOV   @R1, A

        DEC    R5

        CJNE   R5, #04, LOP5

          MOV   A, R7

          MOV   D, A

        LJMP   L4

LOP5:     CJNE   R5, #03, LOP6

          MOV   A, R7

          MOV   E, A

          LJMP   L4

LOP6:     CJNE   R5, #02, LOP7

          MOV   A, R7

          MOV   F, A

         LJMP   L4

LOP7:     CJNE   R5, #01, LOP8

      MOV   A, R7

          MOV   G, A

      LJMP   L4

LOP8:     CJNE   R5, #00, STOP1

           MOV   A, R7

          MOV   I,A

         LJMP   L4

L4:      INC    R0

         INC    R1

         

          INC    R2

FAN1:     POP   PSW

          POP    ACC

          RETI

;********************************************

;显示子程序

;********************************************

XIANSHI:

        MOV   A ,R3  ;扫描十分位上的数字

        MOV   DPTR ,#TABLE

       MOVC  A ,@A+DPTR

       MOV   P2 ,A

       MOV   A ,R4 ;扫描个位上的数字

       MOV   DPTR ,#TABLE

       MOVC  A ,@A+DPTR

       MOV   P0 ,A

        MOV   A ,R7 ;扫描十位上的数字

       MOV   DPTR ,#TABLE

       MOVC  A ,@A+DPTR

        MOV   P1 ,A

       RET

;********************************************

;定时器T0中断程序

;********************************************

DINGSHI:PUSH  ACC

        PUSH  PSW

        DJNZ  B,DH1

        MOV  B,#10

        AJMP  COUNT

COUNT:  INC     R3

        CJNE   R3,#0AH,DH2

        MOV   R3,#00H

        INC    R4

        CJNE   R4,#0AH,DH2

        MOV   R4,#00H

        INC    R7

        CJNE   R7,#0AH,DH2

        MOV   R7,#00H

 DH1:  MOV  TH0,#0D8H

        MOV  TL0,#0F0H

        SETB   TR0

DH2:    POP   PSW

        POP   ACC

        LCALL XIANSHI

        RETI

TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

END

 

第二篇:单片机课程设计报告 秒表

单片机课程设计报告

院    系:****

班    别:****

课程名称:****

姓    名:****

学    号:****

指导老师:****

日期:****年**月**日


一、  设计任务与要求

用89C51设计一个2位的LED数码作为“秒表”。显示时间为00—99秒,每秒自动加1,另设计一个“开始”键和一个“复位”键。能存储三组计时。按一次开始键,开始计数,第二次按开始键后,计时停止。之后再按开始键,则轮流显示存储的三个计时值,直到按复位键后,再按开始键,则开始重新计时。

二、  设计思想和设计说明

本设计利用AT89C52单片机的定时器/计时器定时和计数的原理,使其能精确计时。设计中包括硬件电路的设计和系统程序的设计,其硬件电路主要有主控制器、计时与显示电路和复位电路等。主控制器用AT89C52,显示电路采用共阴极LED数码管显示计时时间。利用中断系统使其能实现开始暂停的功能。P3.2,P3.3开口接2个按钮,分别实现开始,暂停,复位的功能。电路原理图设计最基本得要求是正确性,其次布局合理,最后在正确性和布局合理的前提下力求完美。

三、  硬件原理框图

 

四、  硬件原理图与其软件配合

五、  程序存储器和数据存储器的单元分配

1、程序存储器                                                  

 2、数据存储器                         

 

六、  程序流程图

七、  源程序清单

======================================================

        ORG  0000H

        AJMP MAIN

        ORG  0003H

        AJMP X0_INT

        ORG  000BH

        AJMP T0_INT

        ORG  0013H

        AJMP X1_INT

MAIN:

        MOV  TMOD,#01H            ;T0定时方式1

        MOV  TH0, #(65536-50000) / 256    ;50ms@12MHz

        MOV  TL0, #(65536-50000) MOD 256;

        SETB TR0

        SETB ET0                 ;开启定时中断

        SETB EX0

        SETB EX1

        SETB EA                  ;定时器初始化结束,下面循环显示即可

        MOV  R1, #99H            ;0~99计数.

        MOV  R7, #1              ;50ms计数.

        MOV  P0, #3FH

        MOV  P2, #3FH

LOOP:

        SJMP LOOP

;-----------------------------------------------------------

DELAY:                           ;延时子程序.

AA4:    MOV  R4,  #0

        DJNZ R4,  $

        DJNZ R4,  $

        RET

;-----------------------------------------------------------

X0_INT:                          ;启动/停止

        CPL  F0

        RETI

;-----------------------------------------------------------

X1_INT:                          ;清零

        MOV  R1, #0

        MOV  P0, #3FH

        MOV  P2, #3FH

        RETI

;-----------------------------------------------------------

T0_INT:                          ;50ms中断执行一次.

        MOV TL0, #(65536-50000) MOD 256;

        MOV TH0, #(65536-50000) / 256    ;50ms@12MHz

        DJNZ R7, T0_END          ;中断不到20次.

        MOV  R7, #20

        JNB  F0, T0_END

        MOV  A,  R1

        ADD  A,  #1

        DA   A

        MOV  R1, A

        ANL  A,  #0FH

        MOV  DPTR, #TAB

        MOVC A, @A+DPTR          ;查出段码

        MOV  P2, A

        MOV  A,  R1

        SWAP A

        ANL  A,  #0FH

        MOVC A, @A+DPTR          ;查出段码

        MOV  P0, A               ;显示十位数.

T0_END:

        RETI

;-----------------------------------------------------------

TAB:

        DB   3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH, 6FH

        END

===========================================================

八、  芯片资料

AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。

     

AT89C52实物图                      图2  AT89C52引脚图

主要功能特性:

1、兼容MCS51指令系统

2、8k可反复擦写(大于1000次)Flash ROM;

3、32个双向I/O口;

4、256x8bit内部RAM;

5、3个16位可编程定时/计数器中断;

6、时钟频率0-24MHz;

7、2个串行中断,可编程UART串行通道;

8、2个外部中断源,共8个中断源;

9、2个读写中断口线,3级加密位;

10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;

11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。

管脚说明:
VCC、VPP:接电压。   VSS:接地。
   P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码。
    P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入, P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
    P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写"1"时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址"1"时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。 P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P2.6和P2.7端口分别控制数码管的十位和个位的供电,当相应的端口变成低电平时,驱动相应的三极管会导通,+5V通过IN4148二极管和驱动三极管给数码管相应的位供电,这时只要P0口送出数字的显示代码,数码管就能正常显示数字。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入"1"后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
    P3口也可作为AT89C51的一些特殊功能口,口管脚 备选功能
P3.0 RXD(串行输入口)     P3.1 TXD(串行输出口)     P3.2 /INT0(外部中断0)       P3.3 /INT1(外部 中断1)
P3.4 T0(记时器0外部输入)      P3.5 T1(记时器1外部输入)      P3.6 /WR(外部数据存储器写选通)
P3.7 /RD(外部数据存储器读选通)             P3口同时为闪烁编程和编程校验接收一些控制信号。
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编程电源(VPP)。

九、  收获体会

通过这次的秒表设计,我对一些专业知识和电子设计有了更深的了解,同时也尝试着去应用自己的所掌握的知识。本次设计主要是对已学习的模拟电子技术、数字电子技术和单片机的综合应用,同时加上电路等知识,设计完成了利用软件模拟的秒表。经过几天的奋战,我感受很深。                                     

在设计过程中深感自己在培养动手能力这方面还需很大的努力。单片机课程设计不仅给我提供了一个很好的展现应用自己所掌握的知识的平台,又是检验自己所学知识的一次考核。在设计的过程中我也不可避免的遇到了很多的问题。尤其是在调试过程中,会因为某些原因出不来结果,但通过老师对我的帮助最后还是成功的完成了这次的设计。经过过这次的系统设计,我也发现了不少自己不会的知识,通过查询各方面资料,我也进步了很多,也学会了很多上课时没掌握的东西, 最后在调试结果出来后,我更是无比的兴奋,无比的自豪。总之,通过这次电子课程设计,我对自己的知识有了更好的掌握和应用,这使我在以后的学习和生活中受用终身。


相关推荐