课程设计.docx
《课程设计.docx》由会员分享,可在线阅读,更多相关《课程设计.docx(18页珍藏版)》请在冰点文库上搜索。
![课程设计.docx](https://file1.bingdoc.com/fileroot1/2023-6/29/0549252f-b6d0-4930-b108-df6388c191cb/0549252f-b6d0-4930-b108-df6388c191cb1.gif)
课程设计
广东工业大学华立学院
课程设计(论文)
课程名称______________________
题目名称______________________
学生学部(系)_________________
专业班级______________________
学 号______________________
学生姓名______________________
指导教师______________________
年月日
摘要:
用AT89C51设计一个3位LED数码显示“秒表”,显示时间为0.0~59.9秒,每秒自动加一。
另设计一个“开始”按键和一个“复位”按键,再增加一个“暂停”按键。
按键说明:
按“开始”按键,开始计数,数码管显示从0.0开始每秒自动加一;按“复位”按键,系统清零,数码管显示0.0;按“暂停”按键,系统暂停计数,数码管显示当时的计数。
关键词:
单片机、秒表、单片机设计、LED
1.实验内容及要求4
1.1.实验内容4
1.2.实验要求4
2.实验目的4
3.设计方案5
4.设计所需硬件(模拟硬件)5
5.硬件介绍5
5.1.LED数码显示管5
5.1.1.数码管结构5
5.1.2.数码管使用条件:
6
5.2.AT89C51芯片7
5.2.1.AT89C51简介7
5.2.2.AT89C51管脚说明7
6.设计电路原理图10
7.控制程序框图11
7.1.主程序框图11
7.2.100ms定时中断程序框图:
12
8.软件设计13
8.1.系统初始化程序13
8.2.定时/计数器0中断程序14
8.3.加1子程序15
8.4.LED显示子程序16
9.参考文献17
1.实验内容及要求
1.1.实验内容
设计一个单片机秒表,该秒表可显示0.0~59.9秒的时间。
进行相应的单片机硬件电路的设计并进行软件编程。
用AT89C51设计一个3位LED数码显示“秒表”,显示时间为0.0~59.9秒,每秒自动加一。
另设计一个“开始”按键和一个“复位”按键,再增加一个“暂停”按键。
按键说明:
按“开始”按键,开始计数,数码管显示从0.0开始每秒自动加一;按“复位”按键,系统清零,数码管显示0.0;按“暂停”按键,系统暂停计数,数码管显示当时的计数。
1.2.实验要求
了解8051芯片的的工作原理和工作方式,使用该芯片对LED数码管进行显示控制,实现用单片机的端口控制数码管,显示分、秒,并能用按钮实现秒表起动、停止、清零功能,精确到0.1秒。
要求选用定时器的工作方式,画出使用单片机控制LED数码管显示的电路图,并在实验箱实现其硬件电路,并编程完成软件部分,最后调试秒表起动、停止、清零功能。
2.实验目的
1、利用单片机定时器/计数器中断设计秒表,从而实现秒、十分之一秒的计时。
2、综合运用所学的《单片机原理与应用》理论知识,通过实践加强对所学知识的理解,具备设计单片机应用系统的能力。
3、通过本次课程设计加深对单片机掌握定时器、外部中断的设置和编程原理的全面认识复习和掌握,对单片机实际的应用作进一步的了解。
4、通过本次试验,增强自己的动手能力。
认识单片机在日常生活中的应用的广泛性,实用性。
3.设计方案
本实验利用单片机的定时器/计数器定时和记数的原理,通过采用proteus仿真软件来模拟实现。
模拟利用AT89C51单片机、LED数码管以及控件来控制秒表的计数以及计数的开启/暂停/继续与复位!
其中有两个数码管用来显示数据,一个数码管显示秒(两位),另一个数码管显示十分之一秒,十分之一秒的数码管计数从0~9,满十进一后显示秒的数码管的数字加一,并且十分之一秒显示清零重新从零计数。
计秒数码管采用两位的数码管,当计数超过范围是所有数码管全部清零重新计数。
4.设计所需硬件(模拟硬件)
AT89C51单片机芯片一个、LED数码显示管三个,低压电源、开关(按钮)两个、电阻、电容及导线若干。
采用proteus软件进行模拟设计及调试工作。
5.硬件介绍
5.1.LED数码显示管
5.1.1.数码管结构
数码管由8个发光二极管构成,通过不同的组合可用来显示数字09、字符AF、H、L、P、R、U、Y、符号“”及小数点,如图4.1(a)所示。
数码管七段管引脚图,如图4.1(b)所示。
图4.1(a)
5.2.1数码管工作原理
共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起,通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。
当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。
此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。
共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起,通常,公共阴极接低电平(一般接地),其它管脚接段驱动电路输出端,当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。
此时,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。
5.1.2.数码管使用条件:
a、段及小数点上加限流电阻
b、使用电压:
段:
根据发光颜色决定; 小数点:
根据发光颜色决定
c、使用电流:
静态:
总电流80mA(每段10mA);动态:
平均电流4-5mA峰值电流100mA
5.2.AT89C51芯片
5.2.1.AT89C51简介
基于单片机控制的秒表仿真电路图AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
5.2.2.AT89C51管脚说明
AT89C51单片机外部引脚图
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时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编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器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)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
6.设计电路原理图
7.控制程序框图
7.1.主程序框图
7.2.100ms定时中断程序框图:
8.软件设计
8.1.系统初始化程序
ORG0000H
START:
AJMPMAIN
ORG000BH
AJMPCTC0
ORG0100H
MAIN:
MOVSP,#60H
MOVDPTR,#0FF23H
MOVA,#88H
MOVX@DPTR,AMAIN1:
MOVR0,#79H
MOVR7,#06H
ML1:
MOV@R0,#00H
INCR0
DJNZR7,ML1
MOVTMOD,#01H
MOVTL0,#0B0H
MOVTH0,#3CH
SETBEA
CLRET0
CLRTR0
ML0:
LCALLDISP
MOVP0,#0FFH
JNBP1.0,KEY0
JNBP1.1,KEY1
JNBP1.2,KEY2
SJMPML0
KEY0:
SETBET0
SETBTR0
SJMPML0
KEY1:
CLRET0
CLRTR0
SJMPML0
KEY2:
CLREA
SJMPMAIN1
8.2.定时/计数器0中断程序
ORG0200H
CTC0:
PUSHPSW
PUSHACC
SETBPSW.3
MOVTL0,#0B0H
MOVTH0,#3CH
MOVR0,#79H
MOVA,@R0
INCA
MOV@R0,A
XRLA,#20
JNZRETO
CLRA
MOV@R0,A
MOVR0,#7BH
ACALLDAAD1
MOVA,R2
XRLA,#60H
JNZRETO
ACALLCLR0
MOVR0,#7DH
ACALLDAAD1
MOVA,R2
XRLA,#60H
JNZRETO
ACALLCLR0
MOVR0,#7EH
MOVA,@R
INCA
MOV@R0,A
XRLA,#0AH
JNZRETO
ACALLCLR0
RETO:
POPACC
POPPSW
RETI
8.3.加1子程序
DAAD1:
MOVA,@R0
DECR0
SWAPA
ORLA,@R0
ADDA,#01H
DAA
MOVR2,A
ANLA,#0FH
MOV@R0,A
MOVA,R2
INCR0
ANLA,#0F0H
SWAPA
MOV@R0,A
RET
CLR0:
CLRA
MOV@R0,A
DECR0
MOV@R0,A
RET
8.4.LED显示子程序
ORG0300H
DISP:
MOVR0,#79H
MOVR3,#0FEH
LD0:
MOVA,R3
MOVDPTR,#0FF20H
MOVX@DPTR,A
MOVDPTR,#SEG
MOVA,@R0
DIR0:
MOVCA,@A+DPTR
MOVDPTR,#0FF21H
DIR1:
MOVX@DPTR,A
ACALLDL
INCR0
MOVA,R3
JNBACC.5,LD1
RLA
MOVR3,A
LJMPLD0
LD1:
RET
9.参考文献
1、胡汉才编著的《单片机原理及其接口技术》清华大学出版社
2、苏家健等编的《单片机原理及应用技术》高等教育出版社
3、DVCC系列单片机微机仿真实验系统实验指导书
4、万光毅严义编著《单片机实验与实践教程》
心
得
体
会
通过本次课程设计,我对单片机的基本知识和基本编写程序有了更深的了解,同时也尝试着用自己所学的知识应用到实践中。
在这次课程设计中,我感受最深刻得就是对已学习的模拟电子技术、数字电子技术和单片机的综合应用。
必须要把这几门课学好,否则就无从下手。
这次课程设计不仅给我们提供了一个很好的展现应用自己所掌握的知识的平台,又是检验自己所学知识的一次考核。
当然,在设计的过程中也不可避免的遇到了很多的问题。
比如说在程序设计过程中,不善于利用或参考已有程序并加以修改,得到自己想要的能够实现硬件系统功能程序。
这样浪费很多精力和时间在上面。
尽管遇到困难,但是通过网络、书籍等资源,这些困难都可以解决。
同时,通过这次设计,提高了自己的动手能力,让自己在单片机应用这方面也有了些许经验。
下面就谈谈我个人的经验。
在单片机系统设计时,必须先确定系统的技术要求,这是系统设计的依据和出发点。
在设计时遵循从整体到局部的原则,把复杂的问题分解成若干个比较简单,容易解决的问题,然后各个击破。
设计开始之后要根据设计要求提出设计方案,绘制硬件和软件的总框图,将总任务分解成若干个子任务,使得子任务足够简单,能够直接或者容易实现为止。
最后在调试程序时按各个功能模块进行调试。
总之,在这次课程设计中让我学到了很多,知道如何运用所学的知识应用到实践中,提高自己的动手能力和查找资料的能力。
2010年12月12日
教
师
评
语
年月日
成
绩
及
签
名
年月日