您的当前位置:首页正文

单片机实训报告

2022-08-21 来源:好走旅游网


实训报告

题目名称:系 部:专业班级:学生姓名:学 号:指导教师:完成日期:

单片机实训

电气与信息工程系 2015年6月26日

新疆工程学院

实训评定意见

设计题目 单片机实训 系 部 电气与信息工程系 专业班级 学生姓名 评定意见:

指导教师(签名):

评定成绩:

年 月 日 学生学号

新疆工程学院

电气与信息工程 系(部)实训任务书

2014/2015学年下学期 2015年6月26日

专业 设计题目 起止时间 实训目的: 1、了解单片机原理和应用。 2、学会单片机语言及运用于单片机编程。 3、运用单片机完成相应控制。 班级 单片机实训 课程名称 指导教师 周数 设计地点 实训任务或主要技术指标: 1、了解单片机的工作原理以及使用方法。 2、学会单片机语言。 3、学会将单片机应用,运用单片机语言运行程序,达到目的。 实训进度与要求: 第1-3周:单片机理论学习以及单片机语言学习应用。 要求:学会单片机的工作原理以及单片机语言,将单片机运用到实际电路。 第4周:完成报告。 要求:完成报告并答辩。 主要参考书及参考资料: [1] 杨子文.单片机原理及应用[M].西安电子科技大学出版社.2006. [2] 刘华东.单片机原理与应用(第2版)[M].电子工业出版社.2006.8. [3] 胡汉才.单片机原理及其接口技术[M].清华大学出版社,2006. [4] 范风强,兰婵丽.单片机语言C51应用实战集锦[M].电子工业出版社.,2001. [5] 顾曙敏.单片机与串行时钟DS1307的接口设计[J].现代电子技术,2003. 教研室主任(签名) 系(部)主任(签名)

摘 要

单片机因将其主要组成部分集成在一个芯片上而得名,就是把中央处理器、随机存储器、只读存储器、中断系统、定时器计数器以及I/O接口电路等部件集成在一个芯片上。基于单片机设计的数字钟精确度较高,因为在程序的执行过程中,任何指令都不影响定时器的正常计数,即便程序很长也不会影响中断的时间。单片机已成为人们日常生活中的常见东西,广泛应用于家庭、车站、码头、剧院、办公室等场所,给人们的生活、学习、工作带来极大的方便。不仅如此,在现代化的进程中,也离不开单片机相关功能和原理,比如机械手的控制、家务的自动化、定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以单片机为基础的。而且是控制的核心部分。因此,研究数字钟及扩大其应用,有着非常现实的意义。

关键字:单片机 中央处理器 定时计数器 中断系统

目 录

1.单片机理论基础··············································································1

1.1. 单片机基础·······································································1

1.1.1. 微处理器以为微机和单片机概念··································1 1.1.2. 单片机一般结构及特点··············································1 1.1.3. 单片机利用领域及发展··············································1 1.2. 单片机基本组成·································································2

1.2.1. 单片机主要特性·······················································2 1.2.2. 单片机内部结构·······················································2 1.2.3. 单片机引脚功能·······················································3 1.2.4. 单片机CPU时序·······················································3 1.2.5. 并行I/O口·····························································3 1.2.6. P0-P3口功能及注意事项············································5 1.3. 单片机储存组织与操作························································5

1.3.1. 单片机储存结构特点·················································5 1.3.2. 特殊功能寄存器·······················································6 1.4. 定时/计数器结构及工作原理·················································7

1.4.1. 定时/计数器工作原理与逻辑图···································7 1.4.2. 定时/计数器的应用··················································7 1.5. 单片机串行口····································································7

1.5.1. 串行口的基本组成和工作原理····································8 1.5.2. 串行通信的数据传送方向··········································8 1.5.3. 同步通信和异步通信················································8 1.5.4. 波特率··································································9 1.5.5. 片选信号产生方法···················································9

2.keil软件及仿真器使用···································································10

2.1仿真器介绍······································································10 2.1.1 单片机仿真器的作用···················································10 1.2.单片机仿真器的特点·························································10 2.2.keil软件········································································10 2.2.1.运行 Keil u Vision2 软件···········································10 2.2.2.使用仿真器的软件设置················································11 2.2.3.注意事项··································································12

3.实训过程·····················································································13

3.1.点亮LED灯并闪烁····························································13 3.2.流水灯···········································································14 3.3.数码管显示·····································································15

总 结························································································21 致 谢························································································22 参考文献························································································23

单片机实训

1单片机理论基础

1.1单片机基础

1.1.1微处理机以及微机和单片机概念

微处理器(Microprocessor)——微型计算机的控制和运算器部分;

微型计算机(Microcomputer)——有完整运算及控制功能的计算机,包括微处理器、存储器、输入/输出(I/O)接口电路以及输入/输出设备等;

单片机(single chip microcomputer)——直译为单片微型计算机,它将CPU、RAM、ROM、定时器/计数器、输入/输出(I/O)接口电路、中断、串行通信接口等主要计算机部件集成在一块大规模集成电路芯片上,组成单片微型计算机简称单片机 。

单片机的形态只是一块芯片,如图1.1所示,但是它已具有了微型计算机的组成结构和功能。由于单片机的结构特点,在实际应用中常常将它完全融入应用系统之中,故而也有将单片机称为嵌入式微控制器(embedded microcon-troller)。

图1.1 单片机形态

1.1.2单片机一般结构及特点

单片机有两种基本结构形式

一种是在通用微型计算机中广泛采用的将程序存储器和数据存储器合用一个存储空间的结构,称为普林斯顿(Princeton)结构或称冯·诺依曼结构;

另一种是将程序存储器和数据存储器截然分开,分别寻址的结构,称为哈佛(Har-vard)结构。Intel公司的MCS-51和80C51系列单片机采用的是哈佛结构。目前的单片机以采用程序存储器和数据存储器截然分开的结构较多。

单片机的中央处理器(CPU)和通用微处理器基本相同,只是增设了“面向控制”的处理功能。例如:位处理、查表、多种跳转、乘除法运算、状态检测、中断处理功能等,增强了控制的实用性和灵活性。

5.1.3单片机利用领域及发展

单片机广泛利用于电子电器智能仪器上以及工业自动过程控制上。

智能仪器上的应用:智能化仪器内部基本上都是用单片机进行信息控制与处理。特别是近年来出现的数字信号处理器DSP是一种速度极高的单片机,它在通信和高速信息处理中起

1

单片机实训

了极大的作用,从而扩展了单片机在智能仪器中的应用

单片机在过程控制中的应用:如图1.2所示:

图1.2 单片机控制过程

1.2单片机基本组成

1.2.1 单片机主要特性

1)8位字长CPU和指令系统。 2) 1个片内时钟振荡器和时钟电路。 3) 64K外部数据存储器的地址空间。 4) 64K外部程序存储器的地址空间。 5) 32条双向且分别可位寻址的I/O口线。 6) 128字节的片内RAM(52子系列为256字节)。 7) 2个16位定时器/计数器(52子系列为3个)。 8) 具有2个优先级的5个中断源结构(52子系列有6个)。 9) 1个全双工串行口。 10) 1个布尔处理器。

1.2.2 单片机内部结构

以MCS-51单片机为例,MCS-51单片机由8位CPU、只读存储器EPROM/ROM、读写存储器RAM、并行I/O口、串行I/O口、定时器/计数器、中断系统、振荡器和时钟电路等部分组成。各部分之间通过内部总线相连。其功能模块图如图1.3所示。

图1.3 单片机内部结构

2

单片机实训

5.2.3单片机引脚功能

40脚分三类:

1、电源线和时钟信号线共4根 VCC,GND——电源和地+5V电源供电,

X1——时钟振荡器输入端,内部振荡器输入端; X2——时钟振荡器输出端,内部振荡器输出端; 2、控制线4根

RST——复位信号,晶振工作后2个机器周期的高电平复位CPU.

ALE——地址锁存信号访问外部存储器时该信号锁存低8位地址;无RAM时,ALE为晶振6分频;

PSEN——外部程序存储器读从程序存储器中取指令或读取数据时,该信号有效。 EA——程序存储器有效地址,EA=1从内部开始执行程序;EA=0从外部开始执行程序; 3、I/O口线32根---- MCS-51系列单片机

P0、P1、P2、P3共32位,对应着芯片的32根引脚。

1.2.4单片机CPU时序

1)振荡周期

—— 指为单片机提供定时信号的振荡源的周期,若为内部产生方式时,为石英晶体的振荡周期。

2)时钟周期

——也称为状态周期,用S表示。时钟周期是计算机中最基本的时间单位,在一个时钟周期内,CPU完成一个最基本的动作。MCS—51单片机中一个时钟周期为振荡周期的2倍。

3)机器周期

——完成一个基本操作(例如,取指令、存储器读、存储器写等)所需要的时间称为机器周期。MCS—51的一个机器周期含有6个时钟周期。

4)指令周期

——完成一条指令所需要的时间称为指令周期。MCS—5l的指令周期含1~4个机器周期不等,其中多数为单周期指令,还有2周期和4周期指令。4周期指令只有乘、除两条指令。

1.2.5并行I/O口

MCS-5l单片机内有四个8位并行I/O端口,为P0、P1、P2和P3。每个端口都是8位准双向I/O口,共占32根引脚。每个端口都包含一个锁存器、一个输出驱动器和一个输入缓冲器。

I/O口的每位锁存器均由D触发器组成,用来锁存输出的信息。在CPU的“写锁存器”信号驱动下,将内部总线上的数据写入锁存器中。其结构示意图如图1.5所示。当由P0口输入数据时,由于外部输入信号既加在缓冲输入端上,又加在驱动电路的漏极上。如果这时T2是导通的,则引脚上的电位始终被钳位在0电平上,输人数据不可能正确地读人。因此,

3

单片机实训

在输入数据时,应先把P0口置1,使两个输出FET均关断,使引脚“浮置”,成为高阻状态,这样才能正确地插人数据。这就是所谓的准双向口。

P1口也是—个准双向I/O口,与P0口不同的是,没有多路开关MUX和控制电路部分。输出驱动电路只有一个FET场效应管,同时内部带上拉电阻,此电阻与电源相连。P1口可作通用双向I/O口用,而不必再外接上拉电阻。

P2口在结构上比P0口少了一个输出转换控制部分,多路开关MUX的倒向由CPU命令控制,且P2口内部接有固定的上拉电阻。

P3口与Pl口的输出驱动部分及内部上拉电阻相同,但比P1口多了一个第二功能控制部分的逻辑电路〔由一个与非门和一个输入缓冲器组成〕

图1.5 并行I/O接口

同时,P3口具有第二功能 P3.0(RXD):串行输入端。 P3.1(TXD):串行输出端。

P3.2(INTO):外部中断0输入端,低电平有效。 P3.3(INT1):外部中断1输入端,低电平有效。 P3.4(T0):定时/计数器0外部事件计数输入端。 P3.5(T1):定时/计数器1外部事件计数输入端。 P3.6(WR):外部数据存储器写选通信号,低电平有效。 P3.7(RD ):外部数据存储器读选通信号,低电平有效。

4

单片机实训

1.2.6P0-P3口功能及注意事项

1. 在无片外扩展存储器的系统中,这四个端口的每一位都可以作为准双向通用I/O端口使用。在具有片外扩展存储器的系统中,P2口作为高8位地址线,P0口作为双向总线,分时作为低8位地址和数据的输入/输出线。

2. P0口作为通用双向I/O口用时,必须外接上拉电阻。

3. P3口除了作通用I/O使用外,它的各位还具有第二功能。当P3口某一位用于第二功能作输出时,则不能再作通用I/O使用。

4. 当P0~P4端口用作输入时,为了避免误读,都必须先向对应的输出锁存器写入“l” ,使FET截止。然后再读端口引脚。

1.3 单片机储存组织与操作

1.3.1单片机储存结构特点

以MCS-51系列为例,它的组要特点是将程序存储器和数据存储器分开,并有各自的寻址机构和寻址方式,这种结构的单片微机称为哈佛型结构单片微机。

在物理上 :有4个相互独立的存储空间;片内和片外程序存储器;片内和片外数据存储器

在逻辑上有三个彼此独立的地址空间:片内外统一编地址的64KB程序存储器地址间;256字节的片内数据存储器地址空间;3、64KB片外数据存储器地址空间。

在储存空间上,分为程序储存空间和数据储存空间。

程序存储器用于存放调试好的应用程序和表格常数。MCS—5l采用16位的程序计数器PC和l6位的地址总线,64KB片内、外的程序存储器空间连续、统一 。

它具有7个特殊单元:

0000H 复位后,PC=0000H. 开始执行程序 0003H 外部中断0 (INT0)入口 000BH 定时器0中断( TF0)入口 0013H 外部中断1(INT1) 入口 001BH 定时器1中断( TF1)入口 0023H 串行口中断TI/RI入口

002BH 定时计数器2溢出或T2EX输入负跳变(52系列)

数据存储器地址空间由内部和外部数据存储器空间组成。内部和外部数据存储器空间存在重叠。通过外部数据传送指令MOVX和内部传送指令MOV来区别。

内部数据存储器在物理上又可分成三部分:低128字节RAM、高128字节RAM(仅8032/0852才有)和专用寄存器(SFR)。低128字节RAM由工作寄存器区、位寻址区和通用RAM区组成。

1、工作寄存器区(00H~1FH )分成4组,每组8个寄存器R0-R7 。 2、位寻址区(20H ~ 2FH )既可进行字节寻址,又可进行位寻址。这16个单元共有16×8=128位,对应位地址00H-7FH。

5

单片机实训

3、通用存储区(30H ~ 7FH)

4、外部数据存储器0000H-FFFFH 范围为64K字节,采用R0、R1或DPTR寄存器间址方式访问。 关于数据存储器,具有以下特点:

1)根据地址总线宽度,在片外可扩展的存储器最大容量为64KB,地址范围为0000H~FFFFH。

2)片外数据存储器与程序存储器的操作使用不同的指令和控制信号,允许两者的地址重复。因此,片外要扩展的数据存储器与程序存储器各为64KB。

3)片外数据存储器与片内数据存储器的操作指令亦不同(对片外RAM用MOVX指令),所以也允许两者的地址重复,内部数据存储器的地址00 ~ FFH,外部扩展数据存储器的地址可以从0000H ~ FFFFH。

1.3.2特殊功能寄存器

1.累加器ACC —累加器A在大部分的算术运算中存放某个操作数和运算结果。 2.寄存器B—寄存器B主要用于与累加器A配合执行乘法和除法指令的操作。 3.程序状态字PSW——8位寄存器,用来存放程序状态信息。某些指令的执行结果会自动影响PSW的有关状态标志位如下图1.6,有些状态位可用指令来设置。

图1.6 特殊功能寄存器状态标志位

CY:进位标志位 AC:半进位标 FO:用户标志位

RS1.RS0:工作寄存器组选择 OV:溢出标志 P :奇偶标志 4.堆栈指针SP

栈指针SP为一个8位专用寄存器,每存入(或取出)一个字节数据,SP就自动加1(或减1),SP始终指向新的栈顶。系统复位后钱指针初始化为07H。

5.数据指针DPTR

16位的专用寄存器,由高位字节DPH和低位字节DPL组成。可作为一个16位寄存器使用,也可以作为2个独立的8位寄存器DPH和DPL使用。

6.I/O端口P0~P3

专用寄存器P0~P3分别是I/O端口P0~P3的锁存器。可以把I/O口当作—般的专用寄存器来使用,没有专门设置的口操作指令,全部采用统一的MOV指令。

6

单片机实训

1.4定时/计数器工作原理与逻辑结构

1.4.1定时/计数器工作原理

定时/计数器的核心部件是加1计数器,其输入的计数脉冲有两个来源。当加到计数器为全“1”时,再输入一个脉冲,就使计数器回零,同时产生溢出脉冲使TCON中溢出中断标志TF0或TF1置1,并可向CPU申请中断。

1. 定时器工作方式时,对机器周期TM计数。这时计数器的计数脉冲由振荡器的12分频信号产生,即每经过一个机器周期,计数值加1,直至计满溢出。在机器周期固定的情况下,定时时间的长短与计数器事先装入的初值有关,装入的初值越大,定时越短。

2. 计数器工作方式时,通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数。当T0或T1脚上输入的脉冲信号出现由1到0的负跳变时,计数器值加1。

定时计数器逻辑结构如图1.7所示。

图1.7 定时/计数器逻辑结构

1.4.2定时/计数器的应用

在应用定时/计数器时,溢出标志TFx置位后既可由硬件向CPU申请中断,也可通过用户程序查询TFx的状态,因此对计数溢出信息的处理有以下两种方法。

中断法——在定时器初始化时要开放对应的源允许(ET0或ET1)和总允许,在启动后等待中断。当计数器溢出中断,CPU将程序转到中断服务程序入口,因此应在中断服务程序中安排相应的处理程序。

查询法——既在定时器初始化并启动后,在程序中安排指令查询TFx的状态。

1.5 单片机串行口

1.5.1串行口的基本组成和工作原理

基本组成: 两个独立的数据缓冲器SBUF(一个用作接收,一个用作发送)以及发送控制器、接收控制器、输入移位寄存器和输出控制门等组成。

7

单片机实训

其工作原理如图1.8所示:

图1.8 串行口工作原理

单片机的串行通信接口可以方便地实现与其他单片机之间、与PC机之间的串行通信,也可用通信接口实现键盘输入、LED显示及其他的控制。串行通信时,传送数据的各位按分时顺序一位一位地传送(例如先低位、后高位)。其优点是传输线少,传送通道费用低,故适合长距离数据传送。缺点是传送速度较低。

1.5.2 串行通信的数据传送方向

1.单工方式——通信双方只有一条单向传输线,只允许数据由一方发送,另一方接收。 2.半双工方式——通信双方只有一条双向传输线,允许数据双向传送,但每时刻上只能有一方发送,另一方接收,这是一种能够切换传送方向的单工方式,

3.全双工方式——通信双方只有两条传输线,允许数据同时双向传送,其通信设备应具有完全独立的收发功能。

1.5.3同步通信和异步通信

为了准确地发送、接收信息,发送者和接受者双方必须协调工作。这种协调方法,从原理上可分成两种:同步串行I/O和异步串行I/O。

异步通信方式:

异步通信方式时,数据一帧一帧地传送,部需要同步时钟,实现简单。

在异步方式中,为了避免连续传送过程中的误差积累,每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间。

在同步通信中,在数据或字符开始传送前用同步字符(SYNC)来指示(常约定l一2个),由时钟来实现发送端和接收端同步,当检测到规定的同步字符后,接下来就连续按顺序传送数据。同步字符是一特定的二进制序列,在传送的数据中不会出现.

同步通信方式由于不采用起始和停止位,是在同步字符后可以接较大的数据区,同步字符所占部分很小,因此有较高的传送效率。

8

单片机实训

1.5.4波特率

在通信中发、接双方有两次约定 1.字符格式————帧格式 2.传送速率————波特率

波特率是通信双方对数据传送速率的约定,表示每秒钟传送二进制数码的位数,单位是bit/s。

假如数据传送的速率是120个字符/秒,每一个字符规定包含10个位(一个起始位、8个数据位和1个停止位),则传送的波特率为:

10×120=1200位/秒=1200波特(bps)

每一位的传送时间即为波特率的倒数 ,计算公式为:

1.5.5片选信号产生方法

片选信号产生有三种方法但通常用先选法和译码法。

1.线选法:直接利用地址总线的高位地址线作为存储器芯片的片选信号。 优点:电路简单,不需要地址译码器硬件,体积小,成本低 缺点:可寻址的器件数目受限制,地址空间不连续

2.译码法:使用译码器对高位地址进行译码,译码器的输出作为存储器芯片的的片选信号 ,有全译码和部分译码。它能有效的利用存储空间,适用于大容量多芯片的存储器扩展。

9

单片机实训

2 Keil软件及仿真器使用

2.1仿真器介绍

2.1.11.1 单片机仿真器的作用

单片机仿真器是在产品开发阶段用来替代单片机进行软硬件调试的非常有用的开发工 具。使用单片机仿真器可以对单片机程序进行单步、断点等手段的调试,检查程序运行中单 片机 RAM、寄存器内容的变化,观察程序的运行情况,与此同时可以对硬件电路进行实时 的调试。使用单片机仿真器可以迅速发现、纠正程序中的错误,从而大大缩短单片机开发的 周期。

如果不使用单片机仿真器,而是利用单片机编程器(烧片器)反复烧写单片机进行开发, 对于程序设计中的错误只能通过分析、猜测然后修改程序、重新烧写、重新试验来完成,这 样就大大增加了调试的难度,延长了开发时间,特别对于单片机开发经验并不丰富的开发者 来产尤为困难。

1.2 单片机仿真器的特点

仿真器利用了单片机的 IAP 功能。所谓 IAP 就是”在线应用可编程”(In Application Programmable)的缩写。具有 IAP 功能的单片机一般具有两块独立闪存(FLASH)程序, 当程序在其中一块程序存储区中运行时可以改写另外一块程序存储区中的程序,这一功能实 际上也是仿真器的基本特性。仿真器仿真的原理就是在调试过程中随时对程序进行修改,来 达到单步运行、断点运行的目的。

因此,具有 IAP 功能的单片机非常适合作为单片机仿真器的监控芯片。单片机仿真器 的监控芯片中预先烧入了监控程序。监控程序通过单片机的串口和计算机通讯。当调试者通 过单片机集成开发环境(Keil C51)开始进行仿真时,需要调试的单片机机程序目标代码通 过串口被传送给监控芯片,并被监控程序烧写到监控芯片的程序存储器。在调试单片机程序 的过程中,监控程序通过随时改写被调试的程序来达到设置断点、单步运行的目的。程序在 遇到断点暂停执行后,监控程序接过 CPU 的控制权,此时通过串行口通讯,在集成开发环 境中可以观察单片机 RAM、寄存器内容和单片机内部的各种状态。

2.2 keil软件

2.2.1运行 Keil u Vision2 软件

启动 Keil uVision2后,随后进入软件工作界面其工作界面如图2.1所示。

10

单片机实训

图2.1 工作界面

2.2.2使用仿真器的软件设置

单片机仿真器采用 Monitor-51 协议,在使用前需要对 Keil uVision2 软件进行如下设置:

(1)单击”Project”菜单,再在下拉菜单中单击 “New Object”。新建工程如图2.2所示

图2.2 新建工程

(2) 单片机选型。双击 “Atmel”前面的加号,展开后选中“AT89S51”。单片机选型如图2.3所示。之后将会提示 “Copy Standard 8051 Code to Project Folder and Add File to Project”,选则 “NO”。

(3) 单击“Project”菜单,再在下拉菜单中单击“Options for Target

11

单片机实训

‘Target 1’ ”。 根据随机晶振填入相应的频率,这里采用仿真器板上默认的 11.0592M。 (4)在“Debug”配置页面中单击“Use:Keil Monitor-51 Driver”,即选择了单片机仿真器进行硬件仿真,如图2.4所示。

图2.3 单片机选型

图2.4 仿真器仿真选项

(5)单击“Settings”选择您要使用的串口,波特率 4.8Kbps-57.6Kbps 可调,Keil nVision2 软件默认设置为 COM1/9600。 2.2.3注意事项

1、 在每一个新的工程中您都需要进行上述设置,否则 Keil nVision2 软件将使用默 认的软件方式,造成目标代码无法下载至仿真器。

2、 波特率的选择不要超出范围(4.8Kbps-57.6Kbps),否则将出现无法与仿真器通 讯的错误。

12

单片机实训

3实训过程

3.1点亮LED灯并闪烁

1.任务说明:

灯光闪烁实训是通过单片机的一位I/O口控制一个LED发光二极管的亮灭,由最小单片机系统加一个输出电路组成。是单片机实训中最基础最基本的一个入门实训。通过这个实训,使读者了解单片机的开发流程,能熟练运用Kei1 C51开发软件,会设计单片机的I/O口输出电路,了解单片机程宁的基本思路及程序方框。其电路图如图3.1所示。

图3.1 LED灯电路图

2.主要元件:

在点亮LED试验中,主要元件有作为CPU的单片机,用于限流的电阻以及作为显示模块的LED灯构成。外加电源为+5V。

3.源程序:

#include \"REG52.h\" sbit LED=P0^0; void main(void)

{

unsigned int i=0;

while(1)

{

LED=0;

for(i=0;i<30000;i++); LED=1;

for(i=0;i<30000;i++); }

}

13

//定义P0.O输出

//灯亮延时 //灯灭延时

单片机实训

4.程序说明:

在本试验中,定义单片机P0.0口为输出口。进入主程序后,LED=0点亮LED灯,for(i0,i<30000;i++),时间大概为30ms。LED=1,P0.0输出高电平,LED灯熄灭。程序循环。

3.2流水灯

1.任务说明:

流水灯是通过单片机的一个I/O口去控制八个LED发光二极管的亮灭,是灯光闪烁实训的扩展。其中的一位LED从左往右或从右往左移动。通过这个实训了解到左右移动指令的用法。其电路图如图3.2所示。

图3.2 流水灯电路图

2.主要元件:

在此试验中,所用到的电气元件与LED灯闪烁试验一样,只是在数量上,由8个LED灯组成。核心CPU依然是单片机。

3.源程序:

#include \"REG52.h\" void main()

{

unsigned char cnt=0; unsigned int i=0;

while(1)

{

P0=~(0x01<=8)

{

cnt=0;

14

//移位指令 //点亮间隔

for(i=0;i<20000;i++);

//复位,点亮1

单片机实训

}

}

}

4.程序说明:

单片机输出口为P0.0-P0.7八个I/O口。输出以P0.0为初始,逐次移动直到P0.7口输出完成后,再次由P0.0输出。每个冷亮灭时间间隔为20ms。其时序图如图3.3所示。

图3.3 流水灯时序图

3.3数码管显示

1.任务说明:

通过此实训了解动态数码管的显示原理,掌握编码方法。共阴极和共阳极数码管的不同之处及常用设计方法。通过单片机程序,控制数码管显示数字或字母。再进一步通过数码管计时。数码管连接电路图如图3.4所示。

15

单片机实训

图3.4 数码管连接电路图

2.主要元件

在本次实验中,主要运用八个共阴数码管作为显示模块,另外,八个三极管为数码管提供充足电压,保证数码管的正常工作。同时,用锁存器将数码管与单片机相连接,在中间,主要起着“减压”作用,防止电流过高,损害单片机。

3.工作原理:

数码管动态显示程序包含显示数字、部分字母符号、小数点、数码管闪烁、数码管消隐等。其它程序输出到显示程序数码管动态显示程序包含显示数字、部分字母符号、小数点、数码管闪烁、数码管消隐等。其它程序输出到显示程序的数据既可以是BCD码、二进制码、ASCII码、自定义显示码等。

由硬件电路工作原理可知,为了显示稳定的数据,每秒必须显示数据50次以上,才能达到预期目的。的数据既可以是BCD码、二进制码、ASCII码、自定义显示码等。

由硬件电路工作原理可知,为了显示稳定的数据,每秒必须显示数据50次以上,才能达到预期目的。

首先设计一个能显示一位数的程序,然后重复执行这段程序,并改变所显示的内容。由上一实验内容可知,可把位选数据的输出用两种方法实现:位选数据每显示一位送一字节;位选数据每显示一位送一位二进制数。程序流程图如3.5

16

单片机实训

所示。

MCS-51 单片机内部有两个16 位可编程的定时器/计数器T0 和T1。它们即可用作定时器方式,又可用作计数器方式。其中T0 由TH0 和TL0 计数器构成;T1 由TH1 和TL1 计数器构成。

工作于定时器方式时,通过对机器周期(新型51单片机可以对振荡周期计数)的计数,即每一个机器周期定时器加1,来实现定时。故系统晶振频率直接影响定时时间。如果晶振频率为12MHZ,则定时器每隔(1/12MHZ)×12=1us 加1。

它在每个机器周期的S5P2 时采样外部输入,当采样值在这个机器周期为高,在下一个机器周期为低时,计数器加1。因此需要两个机器周期来识别一个有效跳变,故最高计数频率为晶振频率的1/24。

特殊功能寄存器TMOD 用于定时器/计数器的方式控制。高4 位用于设置T1,低4 位用于设置T0。

输出位选数据-1 第一位显示数据? 数码管动态显示 初始化显示缓冲区首地址,显示计数器 Y 0写入74LS164 N 1写入74LS164 返回 取缓冲区一字节数,并转换成显示码 输出位选数据-2 DIN=0,CLK=0,位选数据设定为左边第1位显示 位选数据左移一位,移出的位】 送到DIN,CLK产生正脉冲 输出完成? 输出位选数据,并延时1ms 显示指针指向下一字节,计数器减1 N 显示计数为0 Y 17 输出数据位数加1 返回 返回 单片机实训

图3.5 数码管动态显示程序流程图

3.源程序: #include\"REG52.h\"

code unsigned char stop[3] _at_ 0x3b; #define uint unsigned int #define uchar unsigned char uchar temp,aa,bai,shi,ge; sbit dula=P1^5; sbit wela=P1^6; sbit E=P1^7;

//定义变量显示个是百 //段选 //位选 //使能端定义

uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; void display(uchar bai,uchar shi,uchar ge); void delay(uint z); void init(); void main()

{

init(); while(1)

{

if(aa==20)

{

aa=0;

//赋值 //累加

temp ++; if(temp==100)

{

temp=0; bai=temp/100; ge=temp%10;

18

//显示个是百

//延时 //定义初始化

//调用初始化 //中断开始 //循环20次

}

//取百位 //取十位 //取各位

shi=temp%100/10;

单片机实训

}

}

display(bai,shi,ge);//显示位数

}

//定义延时函数

void delay(uint z) {

uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }

void display(uchar bai,uchar shi,uchar ge) //定义显示函数

{

P3=table[bai]; //p3口显示百位 E = 0; //使能端置 0 dula=0; //段选关闭 E = 1; //使能端开始 dula=1; //段选开启 P3=0xfb; //赋值

E = 0; //使能端置0 wela=0; //位选关闭 E = 1; // 使能端开启 wela=1; //位选开启 delay(5); //延时

P3=table[shi]; //p3口显示十位 E=0; //使能端关闭 dula=0; //段选为0 E=1; // 使能端开启 dula=1; //段选开始 P3=0xfd; //给P3赋值 E = 0; //使能端关闭 wela=0; //位选置0 E=1; //使能端置1 wela=1; //位选置1

delay(5); //延迟为5毫秒 P3=table[ge] ; //p3口显示个 E=0; dula=0; E=1; dula=1; P3=0xfe; E = 0;

19

单片机实训

wela=0; E=1; wela=1;

delay(5); //延时 }

void init() //初始化 {

wela=0; //位选置0 dula=0; //段选置0 temp=0;

TMOD=0x01; //标志溢出位赋值为0x01 TH0=(65536-50000)/256; //取高8位,50ms 求除 TL0=(65536-50000)%256; //去底八位 取余 EA=1; //总开关打开

ET0=1; //定时器0,开启中断使能 TR0=1; //启动定时器 } void timer() interrupt 1 //中断函数,执行一次需要50ms {

TH0=(65536-50000)/256; TL0=(65536-50000)%256;

aa++;} //自加1

4.程序说明:

系统使用的晶振频率为12MHZ,即每个机器周期为1us。如使用方式1,则定时时间最长是216×1us=65536us=65.536ms,小于1s。故必须设置一个软件计数单元,即假设定时器定时中断时间为50ms,则必须定时中断20次才达到1s并对秒计时单元加1,20即为软件计数次数。最后再把秒计时单元的值转成显示数码送显示缓冲区。

单片机内部定时器/计数器的使用,简而概之:(1)如需用中断,则将EA和相关中断控制位置1;(2)根据需要设置工作方式,即对TMOD设置;(3)然后启动计数,即对TR0或TR1置1。(4)如使用中断,则计数溢出后硬件会自动转入中断入口地址;如使用查询,则必须对溢出中断标志位TF0或TF1进行判断。中断流程图如图3.6所示。

定时器中断服务程序

保护现场 N 软件计数-1=0? Y 秒计时器加1,转成显 20 示数据并送显示 恢复现场 单片机实训

图3.6 定时中断工作流程

当主程序工作时候,进行段扫描,dula=0语句打开端输出,之后dula=1关闭段扫描。其次进行位扫描,wela=0位输出。P3=table[bai],输出百位。P3=0xfb初始化P3输出,同理进行十位和个位输出。void delay(unsignde int z)作为延时函数。

总 结

通过本次单片机实训,让我们对单片机的应用有了更进一步的理解,陡然间发觉单片机与我们的生活是密切相关的。这一周的课程对我们的学习还是有一定作用的,下面是我对着一周课程设计的收获与不足。取之长,补之短,在今后的学习和工作中所受用。设计主要是以实验为主,实验是为了让你动手做,去探索一些你未知的或是你尚不是深刻理解的东西。以前都是老师叫怎么做就怎么做,跟着老师走,这次给了我们很大的发挥空间,提高了我们的自学能力。同时也发现了自己的不足,之前总以为学这个没用,学那个也没用,现在发现单片机用处多多。做实验还是需要建立在理论知识的基础之上,这样才不会脱离实际,也更加有目的,以后上课要认真听。通过这次对数字电子时钟的设计,让我受益匪浅,首先深入的理解了单片机程序。同时,这次单片机实训让我感触颇多:1.让我理解了“三个臭皮匠顶一个诸葛亮”和“团结就是力量”等名言名句的真正含义,使我明白只要我们团结协作没有什么困难是战胜不了的,团结让我们成功,团结让我们胜利,团结让我们的力量更强大;2.增进我和同学之间的友谊,在与同学互相学习的过程中使我体会了他们解决问题的方法与思路,让我领会了解决问题的精髓,使我们学习更有活力更有信心,更有自信,培养了我们的协助合作能力;3.培养了我的动手能力和独立解决问题的能力;4.巩固加强了我们自主学习和利用网络资源能力。

21

单片机实训

致 谢

首先在这里我感谢XX老师对我们的精心指导,感谢他对我们的无私奉献。从开始的单片机以及单片机语言的讲解到试验再到我们设计报告的完成,他都给了我们充分的指导和良好的建议。

其次感谢我们小组所有的成员,正是有你们我才知道了团队的力量,你们总是给予我莫大的支持和帮助,使我明白了团队的力量可以战胜一切困难,这也使我们的友谊更加牢固。

同时也感谢那些给予我们帮助的许多同学感谢你们的帮助是我们能更快更好的完成我们我们的作品,在这里对你们说一声谢谢。

22

单片机实训

参考文献

1、杨子文.单片机原理及应用[M].西安电子科技大学出版社.2006. 2、刘华东.单片机原理与应用(第2版)[M].电子工业出版社.2006.8. 3、胡汉才.单片机原理及其接口技术[M].清华大学出版社,2006.

4、范风强,兰婵丽.单片机语言C51应用实战集锦[M].电子工业出版社.,2001. 5、顾曙敏.单片机与串行时钟DS1307的接口设计[J].现代电子技术,2003.

23

因篇幅问题不能全部显示,请点此查看更多更全内容