单片机原理与应用课程设计.docx

上传人:b****3 文档编号:5210561 上传时间:2022-12-14 格式:DOCX 页数:18 大小:390.32KB
下载 相关 举报
单片机原理与应用课程设计.docx_第1页
第1页 / 共18页
单片机原理与应用课程设计.docx_第2页
第2页 / 共18页
单片机原理与应用课程设计.docx_第3页
第3页 / 共18页
单片机原理与应用课程设计.docx_第4页
第4页 / 共18页
单片机原理与应用课程设计.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

单片机原理与应用课程设计.docx

《单片机原理与应用课程设计.docx》由会员分享,可在线阅读,更多相关《单片机原理与应用课程设计.docx(18页珍藏版)》请在冰豆网上搜索。

单片机原理与应用课程设计.docx

单片机原理与应用课程设计

苏州市职业大学

课程设计任务书

课程名称:

单片机原理与应用课程设计

起讫时间:

2011年6月27日----7月3日

院系:

电子信息工程系

班  级:

指导教师:

系主任:

 

苏州市职业大学

课程设计说明书

名称  单片机原理与应用课程设计

2011年6月27日至2011年7月3日共1周

院 系电子信息工程系

班级

姓名

学号

系 主 任张红兵

教研室主任陆春妹

指导教师刘淑芬

目录

第一章绪论2

1.1WAVE的简单介绍4

1.2Protues简介4

1.3单片机的特点5

1.4电脑时钟简介5

1.4.1电脑时钟的基本特点5

1.4.2电脑时钟的原理5

第二章系统设计方案7

2.1工作原理图7

2.2元器件清单7

2.3系统工作原理7

第三章主要元器件介绍9

3.1AT89C519

3.1.1AT89C51封装图9

3.1.2AT89C51主要引脚及功能介绍9

3.2数码管11

3.3键盘电路设计12

第四章控制系统的设计13

4.1程序介绍13

4.1.1主程序13

4.1.2数码管显示模块13

4.1.3定时器/计数器T0中断服务程序13

4.1.4按键处理模块13

4.2程序代码14

4.3程序仿真20

4.3.1伟福软件仿真20

4.3.2Proteus7仿真20

第五章实验心得22

参考文献23

第一章绪论

单片机是指一个集成在一块芯片上的完整计算机系统。

尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:

CPU、内存、内部和外部总线系统,目前大部分还会具有外存。

同时集成诸如通讯接口、定时器,实时时钟等外围设备。

而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。

单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。

起初模型

1.SCM即单片微型计算机(SingleChipMicrocomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。

“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路。

在开创嵌入式系统独立发展道路上,Intel公司功不可没。

MicroControllerUnit

2.MCU即微控制器(MicroControllerUnit)阶段,主要的技术发展方向是:

不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。

它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家。

从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。

在发展MCU方面,最著名的厂家当数Philips公司。

Philips公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到微控制器。

因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel和Philips的历史功绩。

嵌入式系统

单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC化趋势。

随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。

因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。

1.1WAVE的简单介绍

编辑、编译、下载、调试全部集中在一个环境下。

多种仿真器,多类CPU仿真全部集成在一个环境下。

可仿真51系列,196系列,PIC

系列,飞利蒲公司的552、LPC764、DALLAS320,华邦438等51增强型CPU。

为了跟上形势,现在很多工程师需要面对和掌握不同和项目管理器、编辑器、编译器。

他们由不同的厂家开发,相互不兼容,使用不同的界面。

学习使用都很吃力。

伟福WINDOWS调试软件为您提供了一个全集成环境,统一的界面,包含一个项目管理器,一个功能强大的编辑器,汇编Make、Build和调试工具并提供一个与第三方编译器的接口。

1.2Protues简介

ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件。

它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:

①实现了单片机仿真和SPICE电路仿真相结合。

具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

②支持主流单片机系统的仿真。

目前支持的单片机类型有:

68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。

③提供软件调试功能。

在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KeilC51uVision2等软件。

④具有强大的原理图绘制功能。

总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。

本章介绍ProteusISIS软件的工作环境和一些基本操作。

1.3单片机的特点

1.单片机的存储器ROM和RAM时严格区分的。

ROM称为程序存储器,只存放程序,固定常数,及数据表格。

RAM则为数据存储器,用作工作区及存放用户数据。

2.采用面向控制的指令系统。

为满足控制需要,单片机有更强的逻辑控制能力,特别是单片机具有很强的位处理能力。

3.单片机的I/O口通常时多功能的。

由于单片机芯片上引脚数目有限,为了解决实际引脚数和需要的信号线的矛盾,采用了引脚功能复用的方法,引脚处于何种功能,可由指令来设置或由机器状态来区分。

4.单片机的外部扩展能力很强。

在内部的各种功能部件不能满足应用的需求时,均可在外部进行扩展,与许多通用的微机接口芯片兼容,给应用系统设计带来了很大的方便。

1.4电脑时钟简介

本作品采用Atmel公司的AT89C51单片机,以汇编语言为程序设计的基础,设计一个用八位数码管显示时、分、秒的时钟。

现代的电脑时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时清零。

从而达到计时的功能。

1.4.1电脑时钟的基本特点

现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。

1.4.2电脑时钟的原理

该电脑时钟由89C51,BUTTON,八位七段数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。

而电路中共设计了四个控制键,拥有多种不同的功能,按钮1为复位键,可以实现整个系统的复位,按钮2为时间调节选择按钮,可以选择调节时或分,按钮3、4完成的则是对时间的调节。

第二章系统设计方案

2.1工作原理图

2.2元器件清单

元件名称

元件个数

功能

注释

AT89C51

1

单片机芯片

89C51或82C51都能完成任务

八位七段数码管

1

时间显示

7SEG-MPX8-CA-BLUE

电阻330Ω

8

保护电路

MINRES330R

电阻10K

4

保护电路

MINRES10K

电容33uF

2

振荡电路

振荡器

1

振荡电路

石英晶体振荡器

按钮

4

控制

复位1个,调节时间3个

2.3系统工作原理

通过对多种单片机性能的分析,最终认为89C51是最理想的电脑时钟开发芯片。

89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,而且它与MCS-51兼容,且具有4K字节可编程闪烁存储器和1000写/擦循环,数据保留时间为10年等特点,是最好的选择。

1.单片机发送的信号通过程序控制最终在数码管上显示出来。

2.单片机通过输出各种电脉冲信号来驱动控制各部分正常工作。

3.为使时钟走时与标准时间一致,校时电路是必不可少的,键盘用来校正数码管上显示的时间。

4.设计的电路主要由三模块构成:

单片机控制电路,显示电路、及校正电路。

5.本设计采用汇编语言程序设计,使单片机控制数码管显示时、分、秒,当秒计数计满60时就向分进位,分计数器计满60后向时计数器进位,小时计数器按“23翻0”规律计数。

时、分、秒的计数结果经过数据处理可直接送显示器显示。

当计时发生误差的时候可以用校时电路进行校正。

设计采用的是时、分、秒显示,单片机对数据进行处理同时在数码管上显示

第三章主要元器件介绍

3.1AT89C51

3.1.1AT89C51封装图

图3.1AT89C51单片机

3.1.2AT89C51主要引脚及功能介绍

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)。

3.2数码管

数码管是一种把多个LED显示段集成在一起的显示设备。

有两种类型,一种是共阳型,一种是共阴型。

共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。

共阴型就是把多个LED显示段的阴极接在一起,即为公共商。

阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。

通常的数码管又分为7段,即7个LED显示段,这是为工程应用方便如设计的,分别为A、B、C、D、E、F、G。

而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。

即,所有的A段都会连在一起,其它的段也是如此,这是实际最常用的用法。

数码管显示方法可分为静态显示和动态显示两种。

静态显示就是数码管的7段输入及其公共端电平一直有效。

动态显示的原理是,各个数码管的相同段连接在一起,共同占用7位段引管线;每位数码管的阳极连在一起组成公共端。

利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。

本次实验应用的是八位七段数码管。

图3.2八位七段数码管

3.3键盘电路设计

本系统设置了4个按钮,其功能如下:

如果没有按键按下,则时钟正常走时。

当按下按钮1时,系统会进入复位状态;当按下按钮2时,进入调时/调分选择状态,时钟停止走动;此时按下按钮3和按钮4可以进行加一和减一操作;继续按下按钮2键可以分别进行分和小时的调整;最后按下按钮2键启动计时。

图3.3控制键

第四章控制系统的设计

4.1程序介绍

4.1.1主程序

先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有按键按下时,则转入相应的功能程序。

4.1.2数码管显示模块

本实验有8个数码管,从右到左为秒、横线、分、横线、时。

在本系统中数码管显示采用软件译码动态显示。

在存储器中首先建立一张显示信息的字段码表,显示时,先从显示缓冲区中取出显示的信息,然后通过查表程序在字段表中查出所显示的信息的段码,从P0端口输出,同时在P2端口进行数码管显示。

4.1.3定时器/计数器T0中断服务程序

T0用于计时,选中方式一,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加一。

秒单元加到60则对分单元加一,同时秒单元清0;分单元加到60则对时单元加一,同时分单元清0;时单元加到24则对时单元清0。

4.1.4按键处理模块

按键设置为:

如果没有按键按下,则时钟正常走时。

当按下按钮1时,系统会进入复位状态;当按下按钮2时,进入调时/调分选择状态,时钟停止走动;此时按下按钮3和按钮4可以进行加一和减一操作;继续按按钮2键可以分别进行分和小时的调整;最后按按钮2键启动计时。

4.2程序代码

具体程序清单如下:

ORG0000H

LJMPSTART

ORG000BH

LJMPINIT0

START:

MOVR0,#70H;主程序开始

MOVR7,#0CH

INIT:

MOV@R0,#00H

INCR0

DJNZR7,INIT

MOV72H,#10;对连字符进行装值

MOV75H,#10

MOVTMOD,#01H;选择定时器/计数器T0的方式1

MOVTL0,#0B0H;对低位赋初值

MOVTH0,#03CH;高位赋初值

SETBEA

SETBET0

SETBTR0

START1:

LCALLSCAN

LCALLKEYSCAN

SJMPSTART1

DL1MS:

MOVR6,#14H;延时1子程序

DL1:

MOVR7,#19H

DL2:

DJNZR7,DL2

DJNZR6,DL1

RET

DL20MS:

ACALLSCAN;延时20ms子程序

ACALLSCAN

ACALLSCAN

RET;数码管显示程序开始

SCAN:

MOVA,78H

MOVB,#0AH

DIVAB;时间秒的十位送给A,时间秒的个位送B

MOV71H,A;时间秒要显示的十位

MOV70H,B;时间秒要显示的个位

MOVA,79H

MOVB,#0AH

DIVAB;时间分的十位送给A,时间分的个位送B

MOV74H,A;时间分要显示的十位送地址

MOV73H,B;时间分要显示的个位送地址

MOVA,7AH

MOVB,#0AH

DIVAB;时间时的十位送给A,时间时的个位送B

MOV77H,A;时间时显示的十位送地址

MOV76H,B;时间时要显示的个位送地址

MOVR1,#70H

MOVR5,#0FEH

MOVR3,#09H

SCAN1:

MOVA,R5;数码管的显示程序

MOVP1,A

MOVA,@R1

MOVDPTR,#TAB

MOVCA,@A+DPTR;对字段表取值显示

MOVP0,A

MOVA,R5

LCALLDL1MS

INCR1

MOVA,R5

RLA

MOVR5,A

DJNZR3,SCAN1

MOVP1,#0FFH

MOVP0,#0FFH

RET;"0~9"和"-"的字段表

TAB:

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH

;定时/计数器T0中断程序

INIT0:

PUSHACC

PUSHPSW

CLRET0

CLRTR0

MOVTL0,#0B0H

MOVTH0,#03CH

SETBTR0

INC7BH

MOVA,7BH

CJNEA,#14H,OUTT0;50ms是否到20次,没有到就继续执行50ms的延时

MOV7BH,#00

INC78H

MOVA,78H

CJNEA,#3CH,OUTT0;一秒的延时是否计到60次,没有就继续执行

MOV78H,#00

INC79H

MOVA,79H

CJNEA,#3CH,OUTT0

MOV79H,#00

INC7AH

MOVA,7AH

CJNEA,#18H,OUTT0;60分钟的延时是否计到24次,没有就继续执行程序

MOV7AH,#00

OUTT0:

SETBET0;启动定时器T0

POPPSW

POPACC

RETI

;按键处理程序

KEYSCAN:

CLREA

JNBP2.0,KEYSCAN0;P2.0有按键按下则跳转到子程序

JNBP2.1,KEYSCAN1;P2.1有按键按下则跳转到子程序

JNBP2.2,KEYSCAN2;P2.2有按键按下则跳转到子程序

KEYOUT:

SETBEA

RET

KEYSCAN0:

LCALLDL20MS;20ms的延时消抖

JBP2.0,KEYOUT

WAIT0:

JNBP2.0,WAIT0;判断按键是否松手,松手就往下执行程序

INC7CH

MOVA,7CH

CLRET0

CLRTR0

CJNEA,#03H,KEYOUT;按下第一次和第二次对时、分选定

MOV7CH,#00;按下第三次时就启动计时

SETBET0

SETBTR0

SJMPKEYOUT

KEYSCAN1:

LCALLDL20MS;按键加一的程序

JBP2.1,KEYOUT

WAIT1:

JNBP2.1,WAIT1

MOVA,7CH

CJNEA,#02H,KSCAN11;如果功能键按下则对时加一调整

INC79H

CJNEA,#3CH,KEYOUT;如果加到60则清零

MOV79H,#00

SJMPKEYOUT

KSCAN11:

INC7AH;如果功能键是按下第二次则对分进行加一调整

MOVA,7AH

CJNEA,#18H,KEYOUT

MOV7AH,#00

SJMPKEYOUT

KEYSCAN2:

LCALLDL20MS;延时消抖程序

JBP2.2,KEYOUT

WAIT2:

JNBP2.2,WAIT2;判断是否放开按键

MOVA,7CH

CJNEA,#02H,KSCAN21;如果功能键是按下第一次对时进行减一

DEC79H

MOVA,79H

CJNEA,#0FFH,KEYOUT

MOV79H,#3BH

SJMPKEYOUT

KSCAN21:

DEC7AH;如果功能键是按下第二次则对分进行减一

CJNEA,#0FFH,KEYOUT

MOV7AH,#17H

SJMPKEYOUT

END

4.3程序仿真

4.3.1伟福软件仿真

图4.1伟福软件仿真图

4.3.2Proteus7仿真

将各个系统按照原理图进行连线,并将程序配置到单片机中,在Proteus7Professional中仿真运行,经过时间校准,得如下结果:

图4.2Proteus7电脑时钟仿真

第五章实验心得

开始的时候由于没有经验,不知如何下手,所以就去图书馆找了一些书看,尽管有许多设计方案,可是总觉得自己还有许多的东西弄不太清楚,于是就请教同学。

他尝做一些设计,有了一些经验。

经过他的努解释分析之后决定用查表,中断的方法来做这样可以降低一些硬件的难度,初次设计应切合自己的水平。

我以为这些做好了,构思也有了写程序应该是相对容易的。

谁知道,写起程序来才想到中断程序不会写,我真的感到很难,那是真的有点想放弃,于是就去请教了老师,老师帮忙分析了一下。

自己有查阅了一些资料。

终于明白了中断程序是怎么写的。

于是在自己的努力下,程序很快就写好了,功能上基本达标:

时钟的显示,秒表显示,定时功能,调时功能。

时钟显示功能,精确度完全可以满足日常生活显示时间的需要;调时功能,方便快捷;硬件设施合乎要求,软件设计可以配合硬件实现要求功能。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1