当前位置:文档之家› 基于单片机的CAN实验系统设计

基于单片机的CAN实验系统设计

基于单片机的CAN实验系统设计
基于单片机的CAN实验系统设计

基本单片机的CAN实验系统设计(CAN教学案例设计)

邵健2014秋季学期

目录

摘要......................................................... 错误!未定义书签。前言......................................................... 错误!未定义书签。

1 总体设计方案 (3)

1.1设计任务 (3)

1.2总体CAN网络设计框图 (4)

1.3 CAN节点结构 (4)

2 系统的硬件设计 (5)

2.1 电源模块设计 (6)

2.2 单片机最小系统 (7)

2.3 MAX232组成的单片机和PC机通信电路 (8)

2.4 看门狗电路设计 (9)

2.5 键盘输入电路模块 (10)

2.6 显示电路模块 (11)

2.7 扩展ROM功能模块 (12)

2.8 CAN通信模块 (12)

3 系统的软件设计 (15)

3.1 CAN控制器初始化函数CANINI (15)

3.2 CAN接收函数CANREC (16)

3.3 CAN发送函数TDATA (16)

3.4 主程序流程图 (17)

3.5 总程序清单........................................... 错误!未定义书签。

4 总结....................................................... 错误!未定义书签。

4.1 结束语............................................... 错误!未定义书签。

基于单片机的CAN实验系统设计

CAN(Controller Area Network)总线作为现场总线的一个分支,以其独特的设计思想、优良的性能和极高的可靠性越来越受到工业界的青睐。CAN从最初的汽车行业发展为现在工业中必不可少的现场总线之一。比如发动机管理系统、变速箱控制器、仪表装备、电子主干系统中均嵌入了CAN控制装置。控制局域网CAN为串行通信协议,能有效地支持具有很高安全等级的分布实时控制。CAN的应用范围很广,从高速的网络到低价位多路配线都可使用CAN。在汽车的电子行业里,使用CAN连接发动机控制单元、传感器、防滑系统等,其传输速度可达1Mbps。同时,可以将CAN安装在卡车本体的电子控制系统里,诸如车灯组、电气窗等,用以代替接线配线装置。

单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此越来越广泛地应用各个领域。目前单片机上集成了控制及信号处理等所需要的几乎所有的模块,以其低功耗,端口可灵活配置,支持JTAG端口可在线调试等特点将广泛应用在工业控制、通信及可便携电子产品中。

本实验适合学习单片机相关知识,也适合学习CAN总线。在系统设计中综合运用了本科期所学的各类知识,如低频电子线路、模拟电字电路、数字电子电路、单片机、计算机网络、Protel、程序的编写、电路的仿真调试、原理图的绘制和布线等专业知识。

1 总体设计方案

1.1设计任务

本设计主要以STC89C52单片机为核心元件,再用SJA1000作为CAN的控制器和82C250作为CAN的收发器,从而组成CAN最小系统,完成CAN报文的发送和接收。设计中还要求输入和输出功能,在此设计中输入设备由两个开关和一个八位拨码开关组成,两个按钮开关主要是用来控制CAN报文的发送和接收,八位拨码开关主要是完成CAN节点ID的输入,输出设备由一个7段LED数码管组成其功能是显示已发送CAN报文的个数。

设计任务包括以下方面:

1、基于单片机的CAN实验系统的硬件电路设计;

2、基于单片机的CAN实验系统通信功能及部分实验项目的软件设计;

1.2总体CAN 网络设计框图

本设计中CAN 总线网络基本构成如下图 1.2所示:

图 1.2 CAN 网络基本结构

※传输线

●CAN 总线网络中的传输线可以是普通明线、双绞线、同轴电缆和光纤,本设计中为了方便简单才用普通明线。 ※终端电阻

●高频信号传输时,信号波长相对传输线较短,信号在传输线终端会形成反射波,干扰原信号,所以需要在传输线末端加终端电阻,使信号到达传输线末端后不反射。 ※各部分作用说明

●PC 机是用来与CPU 通信,可以完成对CPU 程序的烧写和数据的传输 ●CPU 是用来对CAN 控制器的初始化和CAN 通信过程的控制以及显示等功能

●CAN 控制器是整个CAN 网络的核心器件,主要用来完成CAN 协议的解析、CAN 报文的形成等一细系列复杂的工作。

●CAN 收发器是将CAN 报文转成差动电平发送到CAN 总线上和从CAN 总线上接收CAN 报文传给CAN 控制器。

1.3 CAN 节点结构

120Ω

CAN 节点1

CAN 节点2

CPU

PC

CAN 控制器

CAN 收发器

CAN 控制器

CAN 收发器

CPU

PC

120Ω

本设计中CAN系统节点的基本结构如图 1.3所示:

图 1.3 CAN节点基本结构

※总体说明

●本设计主要由以下部分机构成:微控制器89S51、CAN总线通信接口部分、CAN节点ID及按键输入部分、PC机通信部分、数码显示部分、EEPROM存储器等。

●CAN总线通信接口部分采用的CAN通信控制器为SJA1000,CAN总线驱动器为82C250。为了使电路尽量简单,电路中没有采用光耦进行电气隔离。SJA1000的AD0~AD7连接到89S51单片机的P0中,CS连接到89S51的P2.1,P2.1为0的CPU片外存储器地址可选中SJA1000,CPU通过这些地址对SJA1000执行相应的读/写操作。SJA1000的RD、WR。ALE分别与89S51的对应引脚相连,INT接89S51的INT0,89S51也可通过中断方式访问SJA1000。

●CAN节点ID输入电路部分由一片74LS244、一个8×1K的排阻我一个8位拨动开关构成。74LS244的驱动输出也与89S51的P0口相连,其2G引脚与89S51的P2.0脚相连。CPU 通过P0口可读入用户设定的CAN节点ID值,在实验系统中另设计了两个按键K1和K2,分别接在89S51的P1.6和P1.7上。K1键启动点到点通信,按设定ID向指定节点发送一帧报文,K2键发送一帧广播报文,每个接收该报文均应返还该报文。

●实验系统数码显示部分由一片74LS164和一个,数码管所构成,可用于显示通信次数(或其它内容)。24C08是容量为1KB的EEPROM芯片,可用于存储系统的初始化参数或用户自定义数据。DS1232提供系统所需的高低电平复位信号。

2 系统的硬件设计

2.1 电源模块设计

本设技中的电源由220V 交流电供给,经过降压、整流、滤波、稳压、滤波得到稳定的

+5V 电源。总电路如图 2.1所示:

图2.1 电源模块电路

※供电

●整个电路由220V 、50Hz 市电供电,方便、价廉。 ※降压

●220V 、50Hz 交流电通过10:1的变压器达到降压的效果。

●图中电压表测量的是电压的有效值,

V 1562220

2===

最大值有效值。

●通过10:1降压后理论上应得到峰值为22V 的交流电压,实际中只得到峰值为

V 1623.10=?的电压,这是由于变压器自身的阻抗所导致的。

※滤波

●C1为稳压器输入侧的滤波电容,其作用是将整流桥输出的直流脉动电压转换成纹波较小的直流电压。C1滤波电容在工作中由充电和放电两部分组成。为了取得比较好的滤波效果,要求电容的放电时间常数大于充电周期(3~5)倍。对于桥式整流电路,电容的充电周期为交流电的半周期,放电时间常数为RLC ,因此C1滤波电容值可以采用以下方法估算 C>(3~5)T/2RL 得到C1≈3300uF 。

●C2、C3作用是减少纹波、消振、抑制高频脉冲干扰,可采用0.1~0.47uF 的陶瓷电容。

●C4为稳压器输出侧滤波电容,起到减少纹波的作用,根据经验,一般电容值选取47~470uF 。 ※稳压

●7805为三端固定式稳压器,输出电压为+5V

●稳压器的输入电压V 有一定的范围,V 可由下式确定:Vmin ≤V ≤Vmax

Vmin为稳压器的最小输入电压,Vmax为稳压器最大输入电压。7805和Vmax分别为7.2V和35V。

※过流保护和电源指示

●FU1为熔断器,防止系统电流过大烧坏电路

●D1为发光二极管,起指示电源作用

●R1为限流电阻,保护LED不被烧坏

2.2 单片机最小系统

整个系统的控制核心部分由一片AT89S51单片机组成,其最小系统如图 2.2所示:

图 2.2 单片机最小系统

※单片机的选择

●AT89S51为 ATMEL所生产的可电气烧录清洗的8051相容单芯片,其内部程序代码容量为4KBD的FLASH,市场上容易买到。

●AT89S51主要功能列举如下:

■为一般控制应用的 8 位单芯片

■晶片内部具时钟振荡器(传统最高工作频率可至 12MHz)

■内部程式存储器(ROM)为 4KB

■内部数据存储器(RAM)为 128B

■外部程序存储器可扩充至 64KB

■外部数据存储器可扩充至 64KB

■32 条双向输入输出线,且每条均可以单独做 I/O 的控制

■5 个中断向量源

■2 组独立的 16 位定时器

■1 个全多工串行通信端口

■8751 及 8752 单芯片具有数据保密的功能

■单芯片提供位逻辑运算指令

※复位电路

●单片机最小系统中采用上电自动复位和手动复位相接合。上电后由于电容的充电作用使单片机RSET引脚不会立即变成高电平,刚开始处于低电平状态完成复位工作,电容充电完成后RSET回到高电平,单片机正常工段。或者人工手动按下复位开关也可完成复位工作。※时钟电路

●单片机的时钟由外部晶振提供,晶振可提供非常稳定的保证单片机的正常工段。

●晶振周期之所以选用11.0592Hz是因为最小晶振频率=波特率×384×2SMOD这就是我们所需波特率的最小晶振频率,此频率能成倍增加达到我们需求的时钟频率。

※电源电路

●单片机的电源由前面的稳压电路提供,电压为+5V。

※二极管作用

●在单片机短暂下电又上电时,可以让复位电容迅速放电,然后让单片机复位。如果没有这个二极管,电容不能迅速放电,再上电时不能保证单片机正确复位。

2.3 MAX232组成的单片机和PC机通信电路

MAX232组成的单片机和PC机串口通信电路如图2.3 所示

图2.3 PC通信接口

●如图2.3所示的串口通信电路,其中D3、D4两个二极管可以用来简单的指示此时是

否有通信正在进行。串口通信的数据传输过程如下:MAX232的11脚T1IN接单片机TXD端P3.1,TTL电平从单片机的TXD端发出,经过MAX232转换为RS-232电平后从MAX232的14脚T1OUT发出,再连接到系统板上的串口座的第2脚RXD,至此计算机端接收到数据。PC机发送数据时从PC机串口座上的第3脚TXD端发出数据,再逆向流向单片机的RXD端P3.0接收数据。

2.4 看门狗电路设计

看门狗电路如图2.4所示

图2.4 看门狗电路

※DS1232引脚功能

●DS1232是由美国DALLAS公司生产的微处理器监控电路,采用8脚DIP封装,如图所示。各引脚功能如下:

■PBRST:按钮复位输入端

■TD:看门狗定时器延时设置端

■TOL:5%或10%电压监测选择端

■GND:电源地

■RST:高电平有效复位输出端

■RST:低电平有效复位输出端

■ST:周期输入端

■Vcc:电源

※工作原理

●DS1232能够实时监测向微处理器供电的电源电压,当电源电压VCC低于预置值时,DS1232的第5脚和第6脚输出互补复位信号RST和RST,其中5脚接单片机RESET,6脚接SJA1000的RESET。预置值通过第3脚(TOL)来设定;当TOL接地时,RST 和RST信号在电源

电压跌落至4.75V以下时产生;当TOL与VCC相连时,只有当VCC跌落至4.5V以下时才产生 RST和RST信号。当电源恢复正常后, RST和RST信号至少保持250ms,以保证微处理器的正常复位。

●在DS1232内部集成有看门狗定时器,当DS1232的ST端在设置的周期时间内没有有效信号到来时,DS1232的RST和RST端将产生复位信号以强迫微处理器复位。这一功能对于防止由于干扰等原因造成的微处理器死机是非常有效的。看门狗定时器的定时时间由

DS1232的TD引脚确定。

●看门狗定时器的周期输入信号ST可以从微处理器的地址信号、数据信号或控制信号中获得,不论哪种信号都必须能够周期性的访问DS1232,本设计中使用ALE信号。

2.5 键盘输入电路模块

系统键输入电路如图2.5所示:

图2.5 键盘输入电路

※键盘输入组成

●键盘输入由一片74LS244、一个8×10K的排电阻、一个或门和一个8位拨动开关构成,74LS244的驱动输出端也与AT89S51的P0口相连,其2G引脚与AT89S51的P2.0脚相连。CPU通过P0中可读入用户设定的CAN节点ID值。读入8位值,低四位为节点自身ID,

高四位为点到点通信接收节点的ID,ID为0000H时表示广播,所以只能设定15个ID。

※上拉电阻的作用

●8×10K的上拉电阻保证了开关的电平的正确输入,当拨码开关打到左边时单片机可从74LS244端中读入1,当拨码开关打到右边时单片机可从74LS244端中读入0。若不加上拉电阻拨码开关打到右边时读入电平将不能确定。

※74LS244作用

●74LS244为8位缓冲器,1G和2G为使能端,当两引脚都为低电平时允许单片机读取数据。

※或门作用

●4071或门接P20和单片机RD引脚,当这两个引脚都为0时单片机才能将拨码开关数值读入。

2.6 显示电路模块

系统显示电路如图2.6所示:

图2.6 显示电路

※7段数码管

●系统显示部分由一片74LS164和一片7段LED数码管组成,此部分用于显示系统发送报文的个数,当数字超过9时回到0。

※74LS164移位寄存器

●74LS164为移位过寄存器,主要作用是通过单片机串行输入来驱动数码管从而节省单片机的引脚个数。

2.7 扩展ROM功能模块

EEPROM功能模块电路如图2.7所示:

图2.7 EEPROM扩展ROM模块电路

※24C08引脚说明

●A0~A2:地址输入;

●SDA:串行地址/数据的I/O;

●SCL:串行时钟输入;

●WP:写保护输入;

※24C08简介

●24C08是电可擦除PROM,采用1024×8bit的组织结构及两线串行接口,遵循IIC总线协议。电压可允许低至1.8V,待机电流和工作电流分别为1uA和1mA.24C08具有页写能力,每页为16字节。

※24C08作用

●扩展EEPROM主要是为了储存单片机常用的一些参数,如初始化SJA1000的参数等常数。

2.8 CAN通信模块

CAN通信模块如图2.8.1所示:

图2.8.1 CAN通信模块

※SJA1000简介

●SJA1000独立CAN控制器是PHILIPS公司PCA82C200CAN控制器(BasicCAN)的替代产品,它在完全兼容PCA82C200的基础上,增加了一种新的工作模式PeliCAN,SJA1000完全支持具有很多新特性的CAN2.0B协议。SJA1000的工作模式通过其内部的时钟分频寄存器(CDR)中的CAN模式位来选择,硬件复位时默认模式是BasicCAN工作模式。

●SJA100可以支持多种微处理器的时序特性,如Intel模式或Motorola模式。SJA1000与微处理器的接口于非常简单,微处理器以访问外部存储器的方式来访问SJA1000。在设计接口电路时,SJA1000的片选地址应与其它外部存储器的片选地址在逻辑上无冲突。

●SJA1000有2种模式可以供微处理器访问其内部寄存器,2种模式下的访问是有区别的。这2种模式分别是复位模式和工作模式。当硬件复位、或控制器掉线、或置位复位请求时,SJA1000进入复位模式。当清除其内部控制寄存器(CR)中的复位请求位时,SJA1000进入工作模式。有些内部的寄存器只能在复位模式下访问,有些寄存器只能在工作模式下访问,而有些寄存器在这2种模式下都可以访问。

●SJA1000内部寄存器分布于0~31连续的地址空间中,包括控制段和信息缓冲区。控制段在初始化载入时可被编程来配置通讯参数(例如,波特率、位定时序等)。微控制器也是通过这个段来控制CAN总线上的通讯状态。信息缓冲区分为发送缓冲区和接收缓冲区。微处理器将要发送的信息写入发送缓冲区,然后启动发送命令后,可进行报文的发送。符合接收条件的接收到的信息放入接收缓冲区,微处理器可以读出这些信息并处理。

※SJA1000内部结构框图

●SJA1000内部结构框图如图2.8.2所示:

图2.8.1 SJA1000内部结构框图

※SJA1000引脚说明

●SJA1000引脚功能如表2.8.3所示:

符号引脚说明

AD7-AD02,1,28-23多路复用的地址/数据总线

ALE/AS3ALE输入信号(Intel模式),AS输入信号(Motorola模式) CS 4 片选输入,低电平允许访问SJA1000

RD(E) 5 RD信号(Intel模式)或E使能信号(Motorola模式)

WR 6 WR信号(Intel模式)或RD/(WR)信号(Motorola模式)

CLKOUT 7 SJA1000产生的提供给控制器的时钟输出信号

V ss18 接地

XTAL1 9 输入到振荡器放大电路,外部震荡信号由此输入

XTAL2 10 振荡放大电路输出,时外部震荡信号时必须开路

MODE 11 模式选择输入:1=Intel模式 0=Motorola模式

V DD312 输出驱动的+5V电压源

TX0 13 从CAN输出驱动器0输出到物理线路上

TX1 14 从CAN输出驱动器1输出到物理线路上

V ss315 输出驱动器接地

INT 16 中断输出,用于向微控器发出中断信号

RST 17 复位输入,低电平有效,用于复位CAN接口

V DD218 输入+5V的比较电源

RX0,RX1 19,20 从物理的CAN总线输入到SJA1000输入比较器

V SS221 输入比较器接地端

V DD122 逻辑电路的+5V电压源

表2.8.3 SJA1000引脚功能

※82C250简介

●82C250是CAN控制器与物理总线之间的接口,它最初是为汽车中的高速应用(达1Mbps)而设计的。器件可以提供对总线的差动发送和接收功能。82C250的主要特性如下:■完全和 ISO11898 标准兼容

■高速(高达1Mbaud)

■在自动化环境中总线保护瞬变

■斜率控制降低射频干扰(RFI)

■不同的接收器都具有宽共模范围有很强的抗电磁干扰EMI 的能力

■热保护

■对电池和地的短路保护

■低电流备用模式

■一个没有上电的节点不干扰总线

■至少可挂110个节点

※82C250功能框图

●82C250功能框图如图2.8.4所示:

图2.8.4 82C250功能框图

※82C250引脚说明

82C250引脚功能如表2.8.5所示:

标记管脚功能描述

TXD 1 发送数据输入

GND 2 接地

V CC 3 提供电压

RXD 4 接收数据输入

V ref 5 参考电压输出

CANL 6 低电平CAN电压输入/输出

CANH 7 高电平CAN电压输入/输出

R S8 Slope电阻输入

表 2.8.5 82C250引脚说明

3 系统的软件设计

3.1 CAN控制器初始化函数CANINI

该函数主要对SJA1000进行初始化,设置SJA1000的工作模式、通信波特率、验收滤波器、输出方式等。初始化完成后,命令SJA1000转入工作状态,并检测其是否真正进入工

作状态,如果有误则报警。函数流程图如图 3.1所示:

CAN初始化程序

读写测试寄存器进行接口检测

进入复位模式设置时钟分频寄存器设置验收代码寄存器设置验收屏蔽寄存器设置总线定时寄存器0、1

进入工作状态

返回

置错误字

错误失败

错误失败错误错误错误

图 3.1 CAN 控制器初始化流程图

3.2 CAN 接收函数CANREC

该函数读取SJA1000接收缓冲区中的有效数据,并将接收到的数据存入相应的数据区。接收报文完毕后释放接收缓冲区,函数流程图如图 3.2所示:

接收程序读状态寄存器

报文有效?

从接收缓冲区读取报文

释放接收缓冲器

置错误字

返回否

图 3.2 CAN 接收函数流程图

3.3 CAN 发送函数TDATA

该函数首先检查控制器是否还在处理上一帧报文,如果已完成上一帧报文的发送,则向SJA1000发送缓冲区写入待发送的报文,并向SJA1000发启动发送命令,将报文发送出去。

函数流程图如图 3.3 所示:

发送程序

读状态寄存器

报文有效?

发送缓冲区锁定

待发送报文写入发送缓冲区

写入正确

启动发送

返回

图 3.3 CAN发送函数流程图

3.4 主程序流程图

该函数主要用来调用其它函数完成相应工作,其中包括初始化变量标志位、初始化SJA1000、监控按键、显示等工作。具体流程图如图 3.4所示:

开始初始化变量标志K1按下 是否

初始化SJA1000

关中断

K2按下

发送一帧报文

发送一帧广播报文

是否

接收报文

显示发送报文数

图 3.4 总程序流程图

单片机花样流水灯设计实验报告

**大学 物理学院 单片机花样流水灯设计实验 课题:花样流水灯设计 班级: 物理 *** 姓名: *** 学号: ……………

当今时代的智能控制电子技术,给人们的生活带来了方便和舒适,而每到晚上五颜六色的霓虹灯则把我们的城市点缀得格外迷人,为人们生活增添了不少色彩。 制作流水灯的方法有很多种,有传统的分立元件,由数字逻辑电路构成的控制系统和单片机智能控制系统等。本设计介绍一种简单实用的单片机花样流水灯设计与制作,采用基于MS-51的单片机AT89C51和发光二极管、晶振、复位、电源等电路以及必要的软件组成的以AT89C51为核心,辅以简单的数码管等设备和必要的电路,设计了一款简易的流水灯电路板,并编写简单的程序,使其能够自动工作。 本设计用AT89C51单片机为核心自制一款简易的花样流水灯,并介绍了其软件编程仿真及电路焊接实现,在实践中体验单片机的自动控制功能。该设计具有实际意义,可以在广告业、媒体宣传、装饰业等领域得到广泛应用。 关键字:AT89C51 单片机流水灯数码管

1. 单片机及其发展概况 单片机又称为单片微计算机,其特点是将微型计算机的基本功能部件(如中央处理器(CPU)、存储器、输入接口、输出接口、定时/计数器及终端系统等)全部集成在一个半导体芯片上。单片机作为一种高集成度微型计算机,已经广泛应用于工业自动化控制、智能仪器仪表、通信设备、汽车电子与航空航天电子系统、智能家居电器等各个领域。 2. Protues仿真软件简介 Protues以其数量众多的元件数据库、标准化的仿真仪器、直观的捕获界面、简洁明了的操作、强大的分析测试、可信的测试结果, 为电子工程设计节约研发时间,节省了工程设计费用。利用Protues软件设计一款通过数码管显示计数时间的流水灯电路及Keil C软件编程后,再将两者关联则可以简单快速的进行仿真。 【实验设计目标】 设计要求以发光二极管作为发光器件,用单片机自动控制,对8个LED 灯设计至少3种流水灯显示方式,每隔20秒变换一次显示花样,计时通过一个二位七段数码管显示。

单片机课程设计报告实验报告

课程设计报告 学号: 1328403028 姓名:张帅华 班级: 13电子信息工程指导老师:邓晶 苏州大学电子信息学院 2016年4月

摘要 随着时代的进步和发展,单片机技术已经成为一种比较成熟的技术,普及到我们生活、工作、科研等各个领域。本次课程设计包含四个基于STC89C52单片机的设计,分别是:基于单总线数字式温度传感器DS18b20的数字温度计的设计;基于2K位串行CMOS 的EEPROM AT24C02的数字密码锁的设计;基于SPI接口实时时钟芯片DS1302的电子日历的设计以及基于无线收发芯片nrf24L01的简单无线通讯系统的设计。 关键词:单片机 DS18B20 AT24C02 DS1302 NRF24L01

目录 摘要 (1) 目录 (2) 第1章基于DS18B20的数字温度计设计 (3) 1.1 设计要求 (3) 1.2 系统组成 (3) 1.3 系统设计 (3) 1.3.1 硬件设计 (3) 1.3.2软件设计 (4) 1.4 设计结果 (6) 第2章基于AT24C02的电子密码锁设计 (7) 2.1 设计要求 (7) 2.2 系统组成 (7) 2.3 系统设计 (8) 2.3.1 硬件设计 (8) 2.3.2 软件设计 (9) 2.4 设计结果 (9) 第3章基于DS1302的电子日历的设计 (11) 3.1 系统功能 (11) 3.2 系统组成 (11) 3.3 系统设计 (11) 3.3.1 硬件设计 (11) 3.3.2 软件设计 (13) 3.4 设计结果 (14) 第4章基于NRF24L01的无线通信系统的设计 (15) 4.1 系统功能 (15) 4.2 系统组成 (15) 4.3 系统设计 (15) 4.3.1 硬件设计 (15) 4.3.2 软件设计 (16) 4.4 设计结果 (16) 总结 (17)

西南科技大学单片机原理实实验四及代码

2.1 实验四中断实验 一、实验目的 加深对MCS-51单片机中断系统基础知识的理解。 二、实验设备 Keil C单片机程序开发软件。 Proteus仿真软件 DP51-PROC单片机综合实验仪。 三、实验内容和步骤 内容: 利用外部中断输入引脚(以中断方式)控制步进电机的转动。要求:每产生1次中断,步进电机只能步进1步。 实验程序: 使用INT0的中断服务程序控制步进电机正向步进;使用INT1中断服务程序控制步进电机反向步进。 设计思路: ①主程序在完成对INT0和INT1的设置后,可进入死循环(等待中断请求)。 ②为便于实验观察和操作,设INT0和INT1中断触发方式为边沿。 ③步进电机的转动控制由外部中断的服务程序来实现。 ④当前步进电机的相位通电状态信息可以使用片内RAM中的一个字节单元来存储。 设计参考: ①主程序需要设置的中断控制位如下: IT0和IT1 外部中断触发方式控制 0=电平 1=边沿(下降沿) EX0和EX1 外部中断允许控制0=屏蔽 1=允许 PX0和PX1 中断优先级级别控制0=低级 1=高级 在同级别(PX0=PX1)时INT0的优先级高于INT1 EA 中断允许总控制0=屏蔽 1=允 许 ②外部中断服务程序的入口地址: 0003H 外部中断0 0013H 外部中断1 预习: 1)编写好实验程序。 2)根据编写的程序和实验步骤的要求制定调试仿真的操作方案。

实验单元电路: 1) 步进电机驱动电路。 步进电机共有4相,当以A →B →C →D →A →B …的顺序依次通电时,电机就会正转,若按相反的顺序依次通电,电机就会反转。每顺序切换一相(1步),电机旋转18°,切换的频率决定电机的转速(切换的频率不能超过电机的最大响应频率)。根据图 2.4中的电路,当BA (插孔)输入为高时,对应的A 相通电。 2) SW 电路 开关SW X 拨在下方时,输出端SWX 输出低电平,开关SW X 拨在上方时,输出端SWX 输出高电平。其中SW1和SW3具备消除抖动电路,这样,SW1或SW3每上下拨动一次,输出端产生单一的正脉冲(上升沿在前,下降沿在后)。 3) LED 和KEY 电路 步骤: 1) 在S : \ STUDY \ Keil 文件夹中新建Ex04文件夹(该文件夹用于保存本次实验的所 有内容),通过网上邻居将服务器上本次实验共享文件夹下的所有文件拷贝到S : \ STUDY \ Keil \ Ex04文件夹中。 2) 在Keil C 中创建一个新工程,新工程保存为S : \ STUDY \ Keil \ Ex04\Ex04.uv2,然 后选择单片机型号为Generic 中的8051。 图2.5 单脉冲电路原理图 +5V +5V 图2.4 步进电机驱动电路原理图 LED1 LED8 +5V 8 图2.6 LED 和KEY 电路 +5V 8

单片机流水灯实验报告

流水灯实习报告 一、实验原理 单片机通过P0口连接锁存器74ls273,P0同时作为低八位地址,实验板内P2口连接74ls138,任意一个输出连接74ls273片选,再将74ls273接八个LED灯,通过软件控制对74ls273送入显示数据就可以按要求显示了。 二、硬件原理图 三、实验程序 ORG 0000H AJMP START ORG 001BH AJMP INT

ORG 0100H START:MOV SP,#60H MOV TMOD,#10H MOV TL1,#00H MOV TH1,#4CH MOV R0,#00H MOV R1,#20 SETB TR1 SETB ET1 SETB EA SJMP $ INT:PUSH ACC PUSH PSW PUSH DPL PUSH DPH CLR TR1 MOV TL1,#B0H MOV TH1,#3CH SETB TR1 DJNZ R1,EXIT MOV R1,#20 MOV DPTR,#DATA

MOV A,R0 MOVC A,@A+DPTR MOV DPTR,#8000H Movx @DPTR,A INC R0 ANL 00,#07H EXIT:POP DPH POP DPL POP PSW POP ACC RETI DATA:DB 05H,0AH,50H,0A0H,55H,0AAH,0FFH,0H END 四、实验功能 以实验机上74LS273做输出口,接八只发光二极管,编写程序,使开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮……一直循环下去. 五、实验总结 通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。而安排课程设计的基本目的,是在于通过理论

单片机课程设计51实验报告DOC

福建工程学院软件学院 题目:51开发洗衣机 班级:物联网工程1202 成员: 座号:04 28 指导老师: 日期:年月日课设报告

目录 1摘要 (1) 2.设计需求 (1) 2.1功能需求 (1) 2.1.1 基本功能 (1) 2.1.2扩展功能 (1) 2.2 设计要求 (2) 2.2.1 单片机芯片部件功能 (2) 2.2.2 LCD数码显示管部件功能 (2) 2.2.3 按键部件功能 (2) 2.2.4 蜂鸣器部件功能 (2) 3硬件设计及描述 (2) 3.1总体描述 (2) 3.2系统总体框图 (3) 3.3Proteus电路图 (3) 3.4各部分硬件介绍 (4) 3.4.1晶振Protues仿真 (4) 3.4.2LCDProtues仿真 (5) 3.4.3 按键Protues仿真 (5) 3.4.4上拉电阻Protues仿真 (6) 3.4.5C51芯片Protues仿真 (6) 3.4.6上电复位电路Protues仿真 (8) 3.4.7蜂鸣器Protues仿真 (9) 4 软件设计流程及描述 (10) 4.1程序流程图 (10) 4.2函数模块及功能 (10) 5功能实现 (11) 5.1程序烧入上电调试 (11) 5.2时间递增跳变 (12) 5.3比分更变 (13) 5.4比赛得分复位 (14) 5.5比赛时间复位 (14) 6 心得体会 (15) 7源程序代码: (16)

1摘要 是为了方便足球比赛时计时与计分及时与准确公开而引申出的实用产品。在此设计中接入了一个1602液晶显示屏,第一行用来记录赛程的时间,第二行用于显示比赛的得分情况。赛程计时用倒计时来计时。在比赛结束时按下相应按键蜂鸣器会响起,提醒比赛时间结束。 这次试验运用C语言进行编程,编程后利用Keil uVision来进行编译,再生成.hex文件装入芯片中,采用Proteus软件来仿真,检验功能是否能够正常实现,最后利用单片机MCS-51实机来实现功能。 本设计以AT89S51单片机作为核心,综合应用单片机定时器、中断、LCD1602 液晶显示等知识,设计一款单片机和简单外设控制的足球计分器应用,同时显示当前的比赛进行时间,比赛队伍,比分状况。 2.设计需求 2.1功能需求 2.1.1 基本功能 (1)屏上显示比赛已运行时间 (2)屏上显示A队和B队的得分 (3)屏上显示上下半场(H-L) (4)通过按键控制比分的增减 2.1.2扩展功能 (1)按键实现比赛场次的更换 (2)按键实现比赛计时的复位 (3)按键实现比赛比分的复位 (4)在比赛结束时,蜂鸣器在主裁判的控制下响起

实验三 单片机外部中断实验

实验三单片机外部中断实验 一、实验目的 1.理解单片机AT89C51的中断原理及其中断过程。 2.用proteus设计、仿真AT89C51单片机的外部中断。 外部中断是单片机AT89C51的重要功能,本实验用AT89C51单片机外部中断功能改变数码管的显示状态。当无外部中断0时,主程序运行状态为七段数码管的a~g段依次点亮,不断循环;当有外部中断0(单片机P3.2脚上有下降沿电压)输入时,立即产生中断,转而执行中断服务程序,数码管显示状态为“8”亮灭闪烁显示,亮灭闪烁显示8次以后,返回主程序原断点处继续执行,数码管继续段点亮的循环显示。 ③7SEG-COM-AN-GRN:绿色发光二极管; ④CAP、CAP-ELEC:电容、电解电容; ⑤CRYSTAL:晶振; ⑥BUTTON:按钮。 2.放置元器件

3.放置电源和地 4.连线 5.元器件属性设置 6.电气检测 四、源程序设计、生成目标代码文件 1.流程图 2.源程序设计 通过菜单“sourc e→Add/Remove Source Files…”新建源程序文件:DZC33.ASM。 通过菜单“sourc e→DZC34.ASM”,打开PROTEUS提供的文本编辑器SRCEDIT,在其中编辑源程序。 程序编辑好后,单击按钮存入文件DZC34.ASM。 3.源程序编译汇编、生成目标代码文件 通过菜单“sourc e→Build All”编译汇编源程序,生成目标代码文件。若编译失败,可对程序进行修改调试直至汇编成功。 五、PROTEUS仿真 1.加载目标代码文件 2.全速仿真 单击按钮,启动仿真。 3.仿真调试 (1)带断电仿真 五、思考题: 1、MCS-51单片机响应某一个中断请求的条件是什么? 2、8051单片机提供几个中断源?有几级中断优先级别?各中断标志是如何产生的又如何清除这些中断标志?各中断源所对应的中断入口地址是多少?

单片机实验四报告材料_外中断实验

大学实验报告 学生:学号:专业班级: 实验类型:?验证?综合■设计?创新实验日期:2018.05.29 实验成绩: 实验四外中断实验 (一)实验目的 1.掌握单片机外部中断原理; 2.掌握数码管动态显示原理。 (二)设计要求 1.使用外部中断0和外部中断1; 2.在动态数码管上显示中断0次数,中断1用作次数清0,数码管采用74HC595驱动。 (三)实验原理 1.中断 所谓中断是指程序执行过程中,允许外部或部时间通过硬件打断程序的执行,使其转向为处理外部或部事件的中断服务程序中去,完成中断服务程序后,CPU返回继续执行被打断的程序。如下图所示,一个完整的中断过程包括四个步骤:中断请求、中断响应、中断服务与中断返回。 当中断请求源发出中断请求时,如果中断请求被允许的话,单片机暂时中止当前正在执行的主程序,转到中断处理程序处理中断服务请求。中断服务请求处理完后,再回到原来被中止的程序之处(断电),继续执行被中断的主程序。 如果单片机没有终端系统,单片机的大量时间可能会浪费在是否有服务请求发生的查询操作上,即不论是否有服务请求发生,都必须去查询。因此,采用中断技术大大地提高了单片机的工作效率和实时性。

2.IAP15W4K58S4单片机的中断请求 IAP15W4K58S4单片机的中断系统有21个中断请求源,2个优先级,可实现二级中断服务嵌套。由IE、IE2、INT_CLKO等特殊功能寄存器控制CPU是否相应中断请求;由中断优先级高存器IP、IP2安排各中断源的优先级;同优先级2个以中断同时提出中断请求时,由部的查询逻辑确定其响应次序。 中断请求源中的外部中断0(INT0)和外部中断1(INT1)详述如下: (1)外部中断0(INT0):中断请求信号由P3.2引脚输入。通过IT0来设置中断请求的触发方式。当IT0为“1”时,外部中断0为下降沿触发;当IT0为“0”时,无论是上升沿还是下降沿,都会引发外部中断0。一旦输入信号有效,则置位IE0标志,向CPU申请中断。 (2)外部中断1(INT1):中断请求信号由P3.3引脚输入。通过IT1来设置中断请求的触发方式。当IT1为“1”时,外部中断1为下降沿触发;当IT1为“0”时,无论是上升沿还是下降沿,都会引发外部中断1。一旦输入信号有效,则置位E1标志,向CPU申请中断。 中断源是否有中断请求,是由中断请求标志来表示的。在IAP15W4K58S4单片机中,外部中断 0、外部中断1等请求源的中断请求标志分别由特殊功能寄存器TCON和SCON控制,格式如下: (1)TCON寄存器中的中断请求标志。TCON为定时器T0与T1的控制寄存器,同时也锁存T0和T1的溢出中断请求标志及外部中断0和外部中断1的中断请求标志等。格式如下图所示: D7 D6 D5 D4 D3 D2 D1 D0 88H 与中断有关的各标志位功能如下: ①TF1:T1的溢出中断请求标志。T1被启动计数后,从初值做加1计数,计满溢出后由硬件 置位TFI,同时向CPU发出中断请求,此标志一直保持到CPU 响应中断后才由硬件自动清0。 也可由软件查询该标志,并由软件清0。 ②TF0:T0的溢出中断请求标志。T0被启动计数后,从初值做加1计数,计满溢出后由硬件 置位TF0,同时向CPU发出中断请求,此标志一直保持到CPU响应中断后才由硬件自动清 0。也可由软件查询该标志,并由软件清0。 ③IE1:外部中断1的中断请求标志。当INT1(P3.3)引脚的输入信号满足中断触发要求时,置 位IE1,外部中断1向CPU申请中断。中断响应后中断请求标志自动清0。 ④IT1:外部中断1(INT1)中断触发方式控制位。当(IT1)=1时,外部中断1为下降沿触发方式。 在这种方式下,若CPU检测到INT1出现下降沿信号,则认为有中断申请,随即使IE1标志 置位。中断响应后中断请求标志会自动清0,无须做其他处理。当(T1)=0时,外部中断1为

51单片机流水灯实验报告单片机实验报告流水灯

51单片机流水灯试验 一、实验目的 1.了解51单片机的引脚结构。 2.根据所学汇编语言编写代码实现LED灯的流水功能。 3.利用开发板下载hex文件后验证功能。 二、实验器材 个人电脑,80c51单片机,开发板 三、实验原理 单片机流水的实质是单片机各引脚在规定的时间逐个上电,使LED灯能逐个亮起来但过了该引脚通电的时间后便灭灯的过程,实验中使用了单片机的P2端口,对8个LED灯进行控制,要实现逐个亮灯即将P2的各端口逐一置零,中间使用时间间隔隔开各灯的亮灭。使用rl或rr a实现位的转换。 A寄存器的位经过rr a之后转换如下所示: 然后将A寄存器转换一次便送给P2即MOV P2,A便将转换后的数送到了P2口,不断循环下去,便实现了逐位置一操作。

四、实验电路图 五、通过仿真实验正确性

代码如下:ORG 0 MOV A,#00000001B LOOP:MOV P2,A RL A ACALL DELAY SJMP LOOP DELAY:MOV R1,#255 DEL2:MOV R2,#250 DEL1:DJNZ R2,DEL1

DJNZ R1,DEL2 RET End 实验结果: 六、实验参考程序 #include #define uchar unsigned char #define uint unsigned int uchar table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

sbit P00=P0^0; sbit P01=P0^1; void delay(uchar t) { uchar i,j; for(i=0;i

单片机电子时钟课程设计实验报告

单片机电子时钟课程设 计实验报告 Pleasure Group Office【T985AB-B866SYT-B182C-BS682T-STT18】

《单片机原理与应用》课程设计 总结报告 题目:单片机电子时钟(带秒表)的设计 设计人员:张保江江润洲 学号: 班级:自动化1211 指导老师:阮海容 目录 1.题目与主要功能要求 (2) 2.整体设计框图及整机概述 (3) 3.各硬件单元电路的设计、参数分析及原理说明 (3) 4.软件流程图和流程说明 (4) 5.总结设计及调试的体会 (10) 附录 1.图一:系统电路原理图 (11) 2.图二:系统电路 PCB (12) 3.表一:元器件清单 (13) 4.时钟程序源码 (14)

题目:单片机电子时钟的设计与实现 课程设计的目的和意义 课程设计的目的与意义在于让我们将理论与实践相结合。培养我们综合运用电子课程中的理论知识解决实际性问题的能力。让我们对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。 课程设计的基本任务 利用89C51单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。 主要功能要求 最基本要求 1)使用MCS-51单片机设计一个时钟。要求具有6位LED显示、3个按键输入。 2)完成硬件实物制作或使用Pruteus仿真(注意位驱动应能提供足够的电流)。 3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。开始计时时为000000,到235959后又变成000000。 4)使用3个键分别作为小时、分、秒的调校键。每按一次键,对应的显示值便加1。分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。在调校时均不向上一单位进位 (例如分加到59后变为00,但小时不发生改变)。 5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法,也不得使用其他时钟芯片。 6)设计八段数码管显示电路并编写驱动程序,输入并调试拆字程序和数码显示程序。7)掌握硬件和软件联合调试的方法。 8)完成系统硬件电路的设计和制作。 9)完成系统程序的设计。 10)完成整个系统的设计、调试和制作。

单片机中断实验报告

人的一生要疯狂一次,无论是为一个人,一段情,一段旅途,或一个梦想 ------- 屠呦呦 实验三定时器中断实验 一、实验目的 1、掌握51单片机定时器基本知识; 2、掌握定时器的基本编程方法; 3、学会使用定时器中断。 二、实验内容 1、利用定时器设计一个秒表,计数范围为0—59,并在数码管实时显示。 三、实验设备 PC 机一台、单片机实验箱 主要器件:AT89C52、7SEG-BCD、 四、实验步骤 1、使用Proteus设计仿真原理图; 2、使用Keil设计程序; 3、联合调试仿真。 五、实验流程图 六、实验程序与结果 #include #define uint unsigned int #define uchar unsigned char sbit F=P2^1;

void timer1_init() { TMOD=0x10;//将定时器1设置为工作方式1 TH1=(65536-6000)/256;//定时器每加一时间为1/fsoc,定时时间为1/500 //(1/500)s/(1/3000000)s=6000 TL1=(65536-6000)%256;//fsoc=3000000,所以装入16位定时器中值为65536-6000 EA=1; ET1=1; TR1=1; } void main() { timer1_init(); while(1); } void timer1() interrupt 3 { TH1=(65536-6000)/256;//每次进入中断,重装初值TL1=(65536-6000)%256; F=~F;//每次进入中断P1.1口取反 } #include #define uint unsigned int #define uchar unsigned char sbit F=P2^1; void timer0_init() {TMOD=0x01;//将定时器0设置为工作方式1 TH0=(65536-83)/256;//定时器每加一时间为1/fsoc,定时时间为2Khz,既500us //500us/6us=83.3333 TL0=(65536-83)%256;//fsoc=6000000,所以装入16位定时器中值为65536-83 EA=1; ET0=1; TR0=1; }void main() { timer0_init(); while(1); } void timer0() interrupt 1 { TH0=(65536-83)/256;//每次进入中断,重装初值 TL0=(65536-83)%256; F=~F;//每次进入中断P1.1口取反,表示定时时间到 } #include // 包含51单片机寄存器定义的头文件 #define seg_data P1 #define seg_data2 P3 #define uint unsigned int sbit D1=P2^0; //将D1位定义为P2.0引脚 uint counter=0; unsigned int unit=0,decade=0,avs=0;//time=0;

单片机外部中断实验(附C语言程序)

单片机外部中断实验(附c程序) 一、实验目的 掌握外部中断的C语言和汇编语言编程方法,会用外部中断解决实际应用问题。 。 二、实验内容 8051C51单片机P2.0接一个发光二极管LED1、P2.1接一个发光二极管LED2,P3.2接一个开关、P3.3接一个开关要求实现以下功能: (1)合上、P3.3断开时LED1闪烁 (2)P3.2断开、P3.3合上时LED2闪烁 (3)P3.2合上后(不断开)再合上P3.3,LED1闪烁LED2不闪烁 (4)P3.3合上后(不断开)再合上P3.2,LED2不闪烁LED1闪烁 试编写C语言和汇编语言程序 使用自然优先级就可以 也可 XO 高级X1低级PX0=1 PX1=0 四、实验电路 五、参考程序(自己完成) C程序: Include Sbit P2_0=P2^0; Sbit P2_1=P2^1; Sbit P3_2=P3^2; Sbit P3_3=P3^3; void delay02s(void) //延时0.2秒子程序 { unsigned char i,j,k; for(i=20;i>0;i--) for(j=20;j>0;j--) for(k=248;k>0;k--); }

Void main { EA=1; EX0=1; EX1=1; ITO=1; IT1=1; PX0=1; PX1=0; While(1); } Void int0(void) interrupt 0 { if(!P3_2) { While(1) { P2_0=1; delay02s(); P2_0=0; delay02s(); } } } Void int1(void) interrupt 2 { if(!P3_3) { While(1) { P2_1=1; delay02s(); P2_1=0; delay02s(); } } }

51单片机实验报告

51单片机实验报告

实验一 点亮流水灯 实验现象 Led灯交替亮,间隔大约10ms。实验代码 #include void Delay10ms(unsigned int c); void main() { while(1) { P0 = 0x00; Delay10ms(50); P0 = 0xff; Delay10ms(50); } }

void Delay10ms(unsigned int c) { unsigned char a, b; for (;c>0;c--) { for (b=38;b>0;b--) { for (a=130;a>0;a--); } } } 实验原理 While(1)表示一直循环。 循环体首先将P0的所有位都置于零,然后延时约50*10=500ms,接着P0位全置于1,于是LED全亮了。接着循环,直至关掉电源。延迟函数是通过多个for循环实现的。 实验2 流水灯(不运用库函数) 实验现象 起初led只有最右面的那一个不亮,半秒之后从右数第二个led

也不亮了,直到最后一个也熄灭,然后led除最后一个都亮,接着上述过程 #include #include void Delay10ms(unsigned int c); main() { unsigned char LED; LED = 0xfe; while (1) { P0 = LED; Delay10ms(50); LED = LED << 1; if (P0 == 0x00) { LED = 0xfe; } } } void Delay10ms(unsigned int c)

51单片机课程设计

课程设计说明书
课程设计名称






学生姓名
指导教师
单片机原理及应用课程设计 电子信息工程 140405 20141329 李延琦 胡黄水
2016 年 12 月 26 日

课程设计任务书
课程设计 题目
酒精测试仪
起止日期
2016 年 12 月 26 日— 2017 年 1 月 6 日
设计地点
计算机科学与工程学 院单片机实验室 3409
设计任务及日程安排: 设计任务:分两部分: (一)、设计实现类:进行软、硬件设计,并上机编程、联线、调试、 实现; 1.电子钟的设计 2.交通灯的设计 3.温度计的设计 4.点阵显示 5.电机调速 6.电子音乐发声(自己选曲) 7.键盘液晶显示系统 (二)、应用系统设计类:不须上机,查资料完成软、硬件设计画图。 查资料选定题目。 说明:第 1--7 题任选其二即可。(二)里题目自拟。 日程安排: 本次设计共二周时间,日程安排如下: 第 1 天:查阅资料,确定题目。 第 2--4 天:进实验室做实验,连接硬件并编写程序作相关的模块实验。 第 5--7 天:编写程序,并调试通过。观察及总结硬件实验现象和结果。 第 8--9 天:整理资料,撰写课程设计报告,准备答辩。 第 10 天:上交课程设计报告,答辩。 设计报告要求:
1. 设计报告里有两个内容,自选题目内容+附录(实验内容),每 位同学独立完成。 2. 自选题目不须上机实现,要求能正确完成硬件电路和软件程序 设计。内容包括: 1) 设计题目、任务与要求 2)硬件框图与电路图 3) 软件及流程图 (a)主要模块流程图 (b)源程序清单与注释 4) 总结 5) 参考资料 6)附录 实验上机调试内容
注:此任务书由指导教师在课程设计前填写,发给学生做为本门课程设计 的依据。

89C51单片机课程设计之秒表设计实验报告

单片机课程设计报告 单 片 机 秒 表 系 统 课 程 设 计 班级: 课程名称:秒表设计 成员: 实训地点:北校机房 实训时间:6月4日至6月15日

目录 1课程设计的目的和任务 1.1 单片机秒表课程设计的概述 1.2课程设计思路及描述 1.3 课程设计任务和要求 2硬件与软件的设计流程 2.1系统硬件方案设计 2.2所需元器件 3 程序编写流程及课程设计效果 3.1源程序及注释 3.2原理图分析 3.3课程设计效果 4 心得体会

1. 课程设计的目的和任务 1.1单片机秒表课程设计的概述 一、课程设计题目 秒表系统设计——用STC89C51设计一个4位LED数码显示“秒表”,显示时间为000.0~9分59.9秒,每10毫秒自动加一,每1000毫秒自动加一秒。 二、增加功能 增加一个“复位”按键(即清零),一个“暂停”和“开始”按键。 三、课程设计的难点 单片机电子秒表需要解决几个主要问题,一是有关单片机定时器的使用;二是如何实现LED的动态扫描显示;三是如何对键盘输入进行编程;四是如何进行安装调试。 四、课程设计内容提要 本课程利用单片机的定时器/计数器定时和记数的原理,结合集成电路芯片8051、LED数码管以及课程箱上的按键来设计计时器。将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。其中本课程设计有三个开关按键:其中key1按键按下去时开始计时,即秒表开始键,key2按键按下去时数码管清零,复位为“00.00”. key3按键按下去时数码管暂停。 五、课程设计的意义 1)通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的 应用进一步的了解。 2)掌握定时器、外部中断的设置和编程原理。 3)通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。 4)该课程通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统, 拥有正确的计时、暂停、清零,并同时可以用数码管显示,在现实生活中应用广泛,具有现实意义 1.2课程设计思路及描述

单片机中断实验报告

实验三定时器中断实验 一、实验目的 1、掌握51单片机定时器基本知识; 2、掌握定时器的基本编程方法; 3、学会使用定时器中断。 二、实验内容 1、利用定时器设计一个秒表,计数范围为0—59,并在数码管实时显示。 三、实验设备 PC 机一台、单片机实验箱 主要器件:AT89C52、7SEG-BCD、 四、实验步骤 1、使用Proteus设计仿真原理图; 2、使用Keil设计程序; 3、联合调试仿真。 五、实验流程图 六、实验程序与结果 #include #define uint unsigned int #define uchar unsigned char sbit F=P2^1; void timer1_init() 开始 设置显示初值启动定时器 判断是否到59 继续 是 否

{ TMOD=0x10;//将定时器1设置为工作方式1 TH1=(65536-6000)/256;//定时器每加一时间为1/fsoc,定时时间为1/500 //(1/500)s/(1/3000000)s=6000 TL1=(65536-6000)%256;//fsoc=3000000,所以装入16位定时器中值为65536-6000 EA=1; ET1=1; TR1=1; } void main() { timer1_init(); while(1); } void timer1() interrupt 3 { TH1=(65536-6000)/256;//每次进入中断,重装初值TL1=(65536-6000)%256; F=~F;//每次进入中断P1.1口取反 } #include #define uint unsigned int #define uchar unsigned char sbit F=P2^1; void timer0_init() {TMOD=0x01;//将定时器0设置为工作方式1 TH0=(65536-83)/256;//定时器每加一时间为1/fsoc,定时时间为2Khz,既500us //500us/6us=83.3333 TL0=(65536-83)%256;//fsoc=6000000,所以装入16位定时器中值为65536-83 EA=1; ET0=1; TR0=1; }void main() { timer0_init(); while(1); } void timer0() interrupt 1 { TH0=(65536-83)/256;//每次进入中断,重装初值 TL0=(65536-83)%256; F=~F;//每次进入中断P1.1口取反,表示定时时间到 } #include // 包含51单片机寄存器定义的头文件 #define seg_data P1 #define seg_data2 P3 #define uint unsigned int

单片机外部中断实验

(仿真部分) 一、实验目的 1. 学习外部中断技术的基本使用方法。 2. 学习中断处理程序的编程方法。 二、实验内容 在INT0和INT1上分别接了两个可回复式按钮,其中INT0上的按钮每按下一次则计数加一,其中INT1上的按钮每按下一次则计数减一。P1.0~ P1.3接LED灯,以显示计数信号。 三、实验说明 编写中断处理程序需要注意的问题是: 1.保护进入中断时的状态,并在退出中断之前恢复进入时的状态。 2.必须在中断处理程序中设定是否允许中断重入,即设置EX0位。 3.INT0和INT1分别接单次脉冲发生器。P1.0~ P1.3接LED灯,以查看计数信号. 四、硬件设计 利用以下元件:AT89C51、BOTTON、CAP、CAP-POL、CRYSTAL、RES、NOT、LED-Yellow。设计出如下的硬件电路。晶振频率为12MHz。 五、参考程序框图 中断处理程序框图

(实验箱部分) 1.实验目的 认识中断的基本概念 学会外部中断的基本用法 学会asm和C51的中断编程方法 2.实验原理 图按键中断 【硬件接法】 P1.1控制LED,低电平点亮 P3.3/INT1接按键,按下时产生低电平 【运行效果】 程序工作于中断方式,按下按键K2后,LED点亮,1.5秒后自动熄灭。 8051单片机有/INT0和/INT1两条外部中断请求输入线,用于输入两个外部中断源的中断请求信号,并允许外部中断源以低电平或下降沿触发方式来输入中断请求信号。/INT0和/INT1中断的入口地址分别是0003H和0013H。 TCON寄存器(SFR地址:88H)中的IT0和IT1位分别决定/INT0和/INT1的触发方式,置位时为下降沿触发,清零时为低电平触发。实际应用时,如果外部的中断请求信号在产生后能够在较短时间内自动撤销,则可以选择低电平触发。在中断服务程序里要等待其变高后才能返回主程序,否则会再次触发中断,产生不必要的麻烦。 如果外部的中断请求信号产生后可能长时间后才能撤销,则为了避免在中断服务程序里长时间无谓等待,可以选择下降沿触发。下降沿触发是“一次性”的,每次中断只会有1个下降沿,因此中断处理程序执行完后可以立即返回主程序,而不必等待中断请求信号恢复为高电平,这是一个重要的技巧。 3. 实验步骤 ●参考实验例程,自己动手建立Keil C51工程。注意选择CPU类型。Philips半导体的P89V51RB2。 ●编辑源程序,编译生成HEX文件。 ●ISP下载开关扳到“00”,用Flash Magic软件下载程序HEX文件到MCU BANK1,运行。 运行Flash Magic软件。各步骤操作如下: Step 1: COM Port:选择实际使用的串行口,通常为COM1; Baud Rate:波特率不可设置得过高,推荐用9600; Device:请选择正确的型号89V51RB2; Interface:选择None(ISP)。 Step 2:请勾中“Erase blocks used by Hex File”。

嵌入式系统流水灯,按键,定时器实验报告

嵌入式系统应用 实验报告 姓名: 学号: 学院: 专业: 班级: 指导教师:

实验1、流水灯实验 1.1实验要求 编程控制实验板上LED灯轮流点亮、熄灭,中间间隔一定时间。 1.2原理分析 实验主要考察对STM32F10X系列单片机GPIO的输出操作。 参阅数据手册可知,通过软件编程,GPIO可以配置成以下几种模式: ◇输入浮空 ◇输入上拉 ◇输入下拉 ◇模拟输入 ◇开漏输出 ◇推挽式输出 ◇推挽式复用功能 ◇开漏式复用功能 根据实验要求,应该首先将GPIO配置为推挽输出模式。 由原理图可知,单片机GPIO输出信号经过74HC244缓冲器,连接LED灯。由于74HC244的OE1和OE2都接地,为相同电平,故A端电平与Y端电平相同且LED灯共阳,所以,如果要点亮LED,GPIO应输出低电平。反之,LED灯熄灭。 1.3程序分析 软件方面,在程序启动时,调用SystemInit()函数(见附录1),对系统时钟等关键部分进行初始化,然后再对GPIO进行配置。 GPIO配置函数为SZ_STM32_LEDInit()(见附录2),函数中首先使能GPIO 时钟: RCC_APB2PeriphClockCmd(GPIO_CLK[Led], ENABLE); 然后配置GPIO输入输出模式: GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 再配置GPIO端口翻转速度:

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 最后将配置好的参数写入寄存器,初始化完成: GPIO_Init(GPIO_PORT[Led], &GPIO_InitStructure)。 初始化完成后,程序循环点亮一个LED并熄灭其他LED,中间通过Delay()函数进行延时,达到流水灯的效果(程序完整代码见附录3)。 实验程序流程图如下: 硬件方面,根据实验指南,将实验板做如下连接: 1.3实验结果

单片机课设实验报告

电气工程学院 单片机课程设计 实验报告 班级:电142 姓名: 学号:1412021061 设计题目:实时时钟系统设计 设计时间:2017.01.09~01.13 评定成绩: 评定教师:

摘要 人类为了观测时间,从远古的观太阳、革命时期的摆钟到现在电子钟,不断的在研究、创新纪录;随着科技、社会的快速发展,时间的流逝。美国DALLA S公司推出的具有涓细电流充电能的低功耗实时时钟芯片DS1302。电子万年历诞生了,它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用AT89C51单片机作为核心,功耗小,能在3V 的电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。低压工作,电压可选用3~5V电压供电。 电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行;万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。 关键词:时钟芯片DS1302,LCD液晶显示,单片机T89C52

目录 摘要 (2) 一、调试过程 (4) 二、运行效果 (6) 三、系统优化 (10) 四、设计总结 (11) 附录 (12)

一、调试过程 1、DS1302实时时钟部分进行调试,程序编完之后,点击编译,对程序进行编译,编译后,发现程序中出现了错误,无法编译通过,查看错误步骤,进行调试,发现是程序的格式错误,调节代码的格式通过编译,编译通过之后,进行软件的仿真实验,看看DS1302是否会生成实时时钟,将编译生成的hex文件导入AT89C51芯片中,之后进行运行,发现DS1302生成了实时时钟,证明这一部分编译成功。 2、LCD的显示部分进行调试,先对产生年月日时分秒之间的连接符进行显示,编译之前先选择自动生成hex文件,让后进行编译,编译完成后调节格式上的错误,直到编译通过后,进行软件上的仿真,仿真时发现,LCD显示上出现了错位现象,让后调节源程序,调节LCD的显示行列位置之后在进行重新编译,在软件上进行仿真,出现了想要的结果;连接符编译成功后,将时钟时间显示在LCD相应的位置上,时钟显示程序,在连接符显示程序基础上进行编译,不停地循环检测60H-66H单元的内容,将这些单元的内容送入到LCD上显示,编译通过之后,发现LCD的时钟显示不正确,通过连调,发现检测60-66单元内容时出错了,重新调节程序,进行编译,成功的出现了时钟的显示。 3、添加开关程序,开关程序添加完成后,编译成功,在软件上进行仿真时发现开关不起作用,按下开关DS1302的时钟继续运行,调节时钟数据,不起作用,通过连调发现,没有对60-66单元的收据进行保护,因此,将开关拨到设置模式时,DS1302时钟并未停止,继续进行计数,所以,将60-66单元送入20-26单元进行保护,当进入设置模式时,将数据进行保护,最后如果没有确认,则将20-26数据送出,如果改变了,则将60-66直接输出,将程序更改完成后,再次仿真达到了预期的效果,可以对时钟进行调节,可以暂停,重新调节时间。 仿真和实际硬件的实验还是有着不小的区别,在软件上进行仿真,所有的端口是自己连接的,因此可以选择不同的端口使用,而在硬件实验中,硬件实验上的一些连线已经自己确定了,必须采用该端口,因此在硬件调试时,需要改变端口的地址以用来符合硬件实验的标准,其次在软件仿真上没有出现问题,在硬件实验时可能有问题,在利用软件仿真时,LCD清屏不清屏,对于实验显示来说没有产生什么影响,然而转入硬件实验室,如果不进行LCD的清屏程序,那么由于

相关主题
文本预览
相关文档 最新文档