最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

基于MCS-51单片机的可调频率方波发生器课程设计报告

来源:动视网 责编:小OO 时间:2025-09-30 22:15:39
文档

基于MCS-51单片机的可调频率方波发生器课程设计报告

摘要本实验是基于PHILIPSATC51单片机所设计的,可以实现键位与数字动态显示的一种频率可调方波发生器。通过键盘键入(10HZ-9999HZ)随机频率,使用七段数码管显示,每一个数码管对应一个键位。单片机对各个键位进行扫描,确定键位的输入,然后数码管显示输入的数值,方波发生器输出以数码管显示的数值为频率的方波。关键词:单片机七段数码管键盘电路频率可调方波发生器一、目的和功能1.1目的:设计一种频率范围限定且可调的方波发生器,志在产生特定频率的方波。1.2功能:假设键盘是4*4的键盘,当
推荐度:
导读摘要本实验是基于PHILIPSATC51单片机所设计的,可以实现键位与数字动态显示的一种频率可调方波发生器。通过键盘键入(10HZ-9999HZ)随机频率,使用七段数码管显示,每一个数码管对应一个键位。单片机对各个键位进行扫描,确定键位的输入,然后数码管显示输入的数值,方波发生器输出以数码管显示的数值为频率的方波。关键词:单片机七段数码管键盘电路频率可调方波发生器一、目的和功能1.1目的:设计一种频率范围限定且可调的方波发生器,志在产生特定频率的方波。1.2功能:假设键盘是4*4的键盘,当
摘要

本实验是基于PHILIPS ATC51 单片机所设计的,可以实现键位与数字动态显示的一种频率可调方波发生器。通过键盘键入(10HZ-9999HZ)随机频率,使用七段数码管显示,每一个数码管对应一个键位。单片机对各个键位进行扫描,确定键位的输入,然后数码管显示输入的数值,方波发生器输出以数码管显示的数值为频率的方波。

关键词:单片机 七段数码管  键盘电路  频率可调方波发生器

一、目的和功能

1.1 目的:

设计一种频率范围限定且可调的方波发生器,志在产生特定频率的方波。

1.2功能:

假设键盘是4*4的键盘,当键盘输入范围在10hz-9999hz的数字,单片机控制数码管显示该数值,并把该数值当做方波发生器的输入频率,单片机控制该方波发生器以该数值作为频率显示方波,从而得到我们想要频率的方波。

二、硬件设计

2.1 硬件设计思想

键盘的数字和键位关系固定,通过键盘输入产生频率,通过LED数码管显示出来,每一个数码管对应一个键位。基本设备是基于PHILIPS ATC51单片机,外围设备采用的是4个七段数码管,PHILIPS ATC51单片机,1个OSCILLOSCOPE 方波发生器,16个Button,若干电阻,电源电池。

2.2 部分硬件方案论述

2.2.1 七段数码管扫描显示方式的方案比较

方案一: 静态显示方式:静态显示方式是指当显示器显示某一字符时,七段数码管的每段发光二极管的位选始终被选中。在这种显示方式下,每一个LED数码管显示器都需要一个8位的输出口进行控制。静态显示主要的优点是显示稳定,在发光二极管导通电流一定的情况下显示器的亮度大,系统运行过程中,在需要更新显示内容时,CPU才去执行显示更新子程序,这样既节约了CPU的时间,又提高了CPU的工作效率。其不足之处是占用硬件资源较多,每个LED数码管需要独占输出线。随着显示器位数的增加,需要的I/O口线也将增加。

方案二: 动态显示方式:动态显示方式是指一位一位地轮流点亮每位显示器(称为扫描),即每个数码管的位选被轮流选中,多个数码管公用一组段选,段选数据仅对位选选中的数码管有效。对于每一位显示器来说,每隔一段时间点亮一次。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。通过调整电流和时间参数,可以既保证亮度,又保证显示。若显示器的位数不大于8位,则显示器的公共端只需一个8位I/O口进行动态扫描(称为扫描口),控制每位显示器所显示的字形也需一个8位口(称为段码输出)。动态显示器的优点是节省硬件资源,成本较低。但在控制系统运行过程中,要保证显示器正常显示,CPU必需每隔一段时间执行一次显示子程序,占用CPU大量时间,降低了CPU的工作效率,同时显示亮度较静态显示器低。

由于PHILIPS ATC51单片机本身提供的I/O口有限,因此我们选择方案二——动态扫描方式。扫描方式中在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的约1ms,但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。节约了电能,节省 了I/O口。

2.2.2 键盘连接方式方案比较

方案一:式键盘

一个具有4个按键的式键盘,每一个按键的一端都接地,另一端接mega16的I/O口。式键盘每一按键都需要一根I/O线,占用mega16的硬件资源较多。因此式键盘只适合按键较少的场合。键盘是一组按键或开关的集合,键盘接口向计算机提供被按键的代码。特点:使用方便、结构复杂、成本高。

方案二:矩阵式键盘

我们采用4×4矩阵式键盘,键盘的行线X0~X3通过电阻接+5V,当键盘没有键闭合时,所有的行线和列线断开,行线X0~X3均呈高电平。当键盘上某一键闭合时,该键所对应的行线与列线短路,此时该行线的电平将由被短路的列线电平所决定。如果将行线接至单片机的输入端口,列线接至单片机的输出端口,则在单片机的控制下使列线Y0为低电平,其余三根列线Y1、Y2、Y3均为高电平,然后单片机读输入口状态(即键盘行线状态),若X0、X1、X2、X3均为高电平,则Y0这一列上没有键闭合,如果读出的行线状态不全为高电平,则为低电平的行线和Y0相交的键处于闭合状态。如果Y0这一列没有键闭合,紧接着使列线Y1为低电平,其余列线为高电平,用同样的方法检查Y1这一列有无键闭合,如此类推。这种逐行逐列地检查键盘状态的过程称为对键盘的扫描。CPU对键盘的扫描可以采取程序控制的随机方式,CPU空闲时才扫描键盘;也可以采取定时控制方式,每隔一段时间,CPU对键盘扫描一次;还可以采用中断方式,当键盘上有键闭合时,向CPU请求中断,CPU响应键盘发出的中断请求,对键盘进行扫描,以识别哪一个键处于闭合状态,并对键输入信息作相应处理。

因为如果采用式键盘PHILIPS ATC51的I/O口对于方案一来说将是远远不够用的,为了节省I/O口,使我们的设计能够顺利进行,我们选用方案二——矩阵连接式键盘。为了能够较为简单的编程,和节省CPU的资源,我们采用定时扫描,每隔一段时间,CPU对键盘扫描一次,并将键值读入。

2.3 硬件电路图

三、软件

3.1  软件设计基本思想:

●键盘的不间断扫描。

●4个八段数码管的动态显示。

●方波发生器方波的输出

3.2  程序框图

3.3  程序功能

初始化后单片机产生初值,将初值以动态扫描的方式显示于八段数码管 ,同时还对键盘进行实时扫描,在扫描后,单片机读取键值,并将键值通过数码管模块显示出来,方波发生器输出该频率的方波。

四、总结

4.1  已达到的成果:硬件电路图和键盘及显示的程序。

4.2  未完成的部分:软件关于实行初值计算部分以及仿真。

4.3  设计感悟:这一次课程设计遇到了很多问题。硬件基本上是没有问题的,每个人都会做;但是程序是我们的弱点,还有就是分工合作,很多时候都是有分歧,还好最后还有水兵帮忙,使得我们的程序进一步完善。做完这个程序只是我们学做程序的开始吧,今后会继续加强我们在做程序上的功力。

附录一 程序代码

DISBUF EQU  30H

SEGBUF EQU  34H

LEDSP  EQU  37H

HDHZ   BIT  20H.1

       ORG  0000H

       LJMP MAIN

       ORG  001BH

       LJMP TIMER1

       ORG  000BH

       LJMP TIMER0

       ORG  0030H

MAIN:  MOV SP,#5FH

       LCALL SCAN      ;跳转到键盘控制电路子程序

       LCALL FT0TH     ;利用频率求初值程序

       MOV   T2CON,#04H

       MOV TH2,S1

       MOV TL2,S0

       MOV  RCAP2H,S1

       MOV  RCAP2L,S0

       SETB ET2

       SETB EA

       ANL  TMOD,#0F0H

       ORL  TMOD,#10H

       MOV  TH0,#8AH

       MOV  TL0,#0D0H

       SETB ET1

       SETB TR1

       SETB EA

FT0TH: MOV R0,#DIVBUF1           ;|除数赋值   10进制转换为16进制

       MOV R1,#DIVBUF2

        MOV A,R0

        ADD A,#3    ;|53H

        MOV R0,A

        MOV @R1,#0

        INC R1

        MOV A,@R0

        MOV @R1,A

        DEC R0         ;| 52H

        MOV A,@R0

        MOV B,#10

        MUL AB

        CLR C

        ADDC A,@R1

        MOV @R1,A

        DEC R0         ;| 51H

        MOV A,@R0

        MOV B,#100

        MUL AB

        ADDC A,@R1

        MOV @R1,A

        DEC R1

        MOV A,@R1

        ADDC A,B

        MOV @R1,A

        DEC R0           ;| 50H

        INC R1

        MOV A,@R0

        MOV B,#10

        MUL AB

        MOV B,#100

        MUL AB

        ADDC A,@R1

        MOV @R1,A

        DEC R1

        MOV A,@R1

        ADDC A,B

        MOV @R1,A       ;|

CHOICE:    MOV    R0,#DIVA

        MOV @R0,#00H        ;|被除数为5*10^5 = 0007A120H

        INC R0

        MOV @R0,#07H

        INC R0

        MOV @R0, #0A1H

        INC R0

        MOV @R0, #20H

DIV3216:MOV 40H,#0                ;|除法运算

        MOV 41H,#0

        MOV R7,#32

;键盘部分

SCAN:

        JNB KEYVALED,$

    CLR KEYVALED

    LCALL KEYSCAN

    MOV A,KEYNAME

TIMER1:PUSH PSW

    PUSH AW

    SETB RS1

    CLR RS0

    MOV TH1,#8AH

    MOV TL1,#0D0H

    MOV P3,#0FH

    MOV A,P3

    ANL A,#0FH

    CJNE A,#0FH,NEXT21

    SETB C

    JMP NEXT22

NEXT21:

    CLR C

NEXT22:

    MOV A,KEYSTU

    RLC A 

    MOV KEYSTU,A

    ANL A,#07H

    CJNE A,#2,NEXT23

    ANL KEYSTU,#00H

     JMP EXIT2

NEXT23:

     CJNE A,#4,NEXT24

    SETB KEYVALED

    JMP EXIT2

NEXT24:

    CJNE A,#5,EXIT2

ORL KEYSTU,#07H

EXIT2:

    POP ACC

    POP PWE

RETI

KEYSCAN:

    MOV R7,#4

    MOV R5,#0

    MOV R6,#11110111B

OP1:

    MOV A,R6

    RL A 

    MOV R6,A

    MOV P3,A

    MOV A,P3

    ANL A,#0FH

    RL A,#0FH

    JNZ NEXT31

    INC R5

    DJNZ R7,LOOP1

    SJMP EXIT3

NEXT31:

    JNE Acc.0,NEXT32

    MOV R4,#0

    SJMP NEXT35

    NEXT32:JNB Acc.1,NEXT33

    MOV R4,#1

    SJMP NEXT35

NEXT33:JNB Acc.2,NEXT34

    MOV R4,#2

    SJMP NEXT35

NEXT 34:MOV R4,#3

NEXT35:

    MOV A,R4

    RL A 

    RL A

    ADD A,R5

    MOV DPTP,#KEYTAB

    MOVC A,@A+DPTP

    MOV KEYNAME,A

EXIT3:

    RET

DISPLAY:

    MOV LEDSP,#00H

    LCALL BIN T0BCD

    LCALL BCD T0SEG

    LJMP LOOP

TIME R0:PUSH PSW

    PUSH Acc

    SETB RS0

    CLR RS1

    MOV TH0,#0E4A

    MOV TL0,#0A8H

    MOV A.CEDSP

    ANL A,#04H

    CJNE A,#0,NEXT11

    MOV P2,#00001D00B

    ADD A#SEGBUF

    MOV R0,A

    MOV P0,A

    MOV P0,@R0

    CJMP EXIT1

NEXT11:CJNE A,#2,NEXT12

    MOV P2,#00000100B

    ADD A,#SEGBUF

    MOV R0,A

    MOV P0,@R0

    LKMP EXIT1

NEXT12:

    CJNE A,#1,NEXT13

    MOV P2,#00000010B

    ADD A,#SEGBUF

    MOV R0,A

    MOV P0,@R0

    LJMP EXIT1

NEXT13:

    MOV P2,300000001B

    AD A,#SEGBUF

    MOV R0,A

    MOV P0,@R0

EXIT1:

    INC LEDSP

    MOV A,LEDSP

    ANL A,#01A

    CJNE A,#04A,BELOW

BELOW:

    JC RETUN

    MOV LEDSP,#00H

RETURN:

    POP Acc

    POP PSW

    RETI

BIN T0BCD:

    MOV R0,3DISBUF+3

    MOV A,KEYNAME

    MOV B,#10

    DIV AB

    MOV @R0,B

    DEC R0

    MOV B,#10

    DIV AB

    MOV @R0,B

    DEC R0

    MOV B,#10

    DIV AB

    MOV @R0,B

    DEC R0

    MOV @R0,A

    RET

方波输出部分:

 TIMER1:

         MOV DPTR,#KEYNAME

         MOVC @A+DPTR,DPTR

         RETI

        END

附录二 组员工作分配

李建华:主要写程序和报告以及仿真检查结果

赖水兵:电路图的描绘,程序的撰写

梁国锋:程序的撰写

郭万劲:电路图的描绘

参考文献

1、潘永雄  高等学校信息工程类专业规划教材(新编单片机原理与应用)

文档

基于MCS-51单片机的可调频率方波发生器课程设计报告

摘要本实验是基于PHILIPSATC51单片机所设计的,可以实现键位与数字动态显示的一种频率可调方波发生器。通过键盘键入(10HZ-9999HZ)随机频率,使用七段数码管显示,每一个数码管对应一个键位。单片机对各个键位进行扫描,确定键位的输入,然后数码管显示输入的数值,方波发生器输出以数码管显示的数值为频率的方波。关键词:单片机七段数码管键盘电路频率可调方波发生器一、目的和功能1.1目的:设计一种频率范围限定且可调的方波发生器,志在产生特定频率的方波。1.2功能:假设键盘是4*4的键盘,当
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top