单片机原理及系统课程设计
明 德 学 院
单片机原理及系统课程设计
院 系: 明德学院机电系 年 级: 2013级
专 业:机械设计制造及自动化 班 级: 机电13
学 号: 姓 名: 指导教师:
目 录
一、设计题目和要求: ........................................................................................... 2 二、设计目的: ...................................................................................................... 2 三、设计内容: ....................................................................................................... 2
1. 单片机的中央处理器的功能 ................................................................... 4 1.1处理器 .................................................................................................... 4 1.2运算器 .................................................................................................... 4 1.3控制器 .................................................................................................... 5 1.4存储器 .................................................................................................... 5 1.5外围接口电路 ........................................................................................ 5 2. 引脚排列及功能 ............................................................................................. 5 2.1I/O口线 .................................................................................................. 5 2.2控制信号线 ............................................................................................ 6 2.3外部晶振引线 ........................................................................................ 6 3. 存储器组织和特殊功能寄存器 ..................................................................... 6 3.1 时钟电路和工作时序 ........................................................................... 6 3.2 LED数码管的结构和工作原理 ............................................................ 7 3.3设计思路(方案) ................................................................................ 9 3.4系统总体方案及硬件设计 .................................................................. 10 3.5 软件设计 ............................................................................................. 13 3.6秒表汇编程序 ...................................................................................... 14 3.7 Protues软件仿真 .............................................................................. 17 四、课程设计心得体会 ......................................................................................... 18 五、参考文献 ......................................................................................................... 19 附件1:秒表原理图(实际接线图) ............................................................ 20 附件2:仿真图1 ..................................................................................................... 21 附件3:仿真图2 ................................................................................................... 22
一、设计题目和要求: 1. 题目三:秒表
应用AT89C51的定时器设计一个2位的LED 数码显示作为“秒表”:显示时间为00~99s ,每秒自动加1,设计一个“开始”键,按下“开始”键秒表开始计时。设计一个“复位”键,按下“复位” 键后,秒表从0开始计时。
二、设计目的:
1. 进一步掌握AT89C51单片机的结构和工作原理;
2. 掌握单片机的接口技术及外围芯片的工作原理及控制方法;
3. 进一步掌握单片机程序编写及程序调试过程,掌握模块化程序设计方法; 4. 掌握PROTEUS 仿真软件的使用方法; 5. 掌握LED 数码管原理及使用方法。
6. 掌握定时器、外部中断的设置和编程原理。
7. 通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。
8. 该课程设计通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、清零、复位功能,并同时可以用数码管显示。
三、设计内容:
了解8051芯片的的工作原理和工作方式 ,使用该芯片对LED 数码管进行显示控制,实现用单片机的端口控制数码管,显示分、秒,并能用按钮实现秒表起动、停止、清零功能,精确到1秒。
AT89C51单片机的主要工作特性:
·内含4KB 的FLASH 存储器,擦写次数1000次; ·内含28字节的RAM ; ·具有32根可编程I/O线; ·具有2个16位可编程定时器;
·具有6个中断源、5个中断矢量、2级优先权的中断结构; ·具有1个全双工的可编程串行通信接口;
·具有一个数据指针DPTR;
·两种低功耗工作模式,即空闲模式和掉电模式; ·具有可编程的3级程序锁定定位;
AT89C51的工作电源电压为5(1±0.2)V 且典型值为5V, 最高工作频率为24MHz. AT89C51各部分的组成及功能:
1. 单片机的中央处理器的功能 1.1处理器
单片机的中央处理器(CPU )是单片机的核心,完成运算和操作控制,主要包括运算器和控制器两部分。
1.2运算器
运算器主要用来实现算术、逻辑运算和位操作。其中包括算术和逻
辑运算单元ALU 、
单片机的中央处理器(CPU )(1) ALU 是运算电路的核心,实质上是一个全加器,完成基本的算术和逻辑运算。算术运算包括加、减、乘、除、增量、减量、BCD 码运算;逻辑运算包括“与”、“或”、“异或”、左移位、右移位和半字节交换,以及位操作中的位置位、位复位等。
暂存器1和暂存器2是ALU 的两个输入,用于暂存参与运算的数据。ALU 的输出也是两个:一个是累加器,数据经运算后,其结果又通过内部总线返回到累加器;另一个是程序状态字PSW ,用于存储运算和操作结果的状态。
1.3控制器
控制器是识别指令并根据指令性质协调计算机内各组成单元进行工作的部件,主要包括程序计数器PC 、PC 增量器、指令寄存器、指令译码器、定时及控制逻辑电路等,其功能是控制指令的读入、译码和执行,并对指令执行过程进行定时和逻辑控制。AT89C51单片机中,PC 是一个16位的计数器,可对64KB 程序存储器进行寻址。复位时PC 的内容是0000H.
1.4存储器
单片机内部的存储器分为程序存储器和数据存储器。AT89C51单片机的程序存储器采用4KB 的快速擦写存储器Flash Memory,编程和擦除完全是电器实现。
1.5外围接口电路
AT89C51单片机的外围接口电路主要包括:4个可编程并行I/O口,1个可编程串行口,2个16位的可编程定时器以及中断系统等。 AT89C51的工作原理:
2. 引脚排列及功能
AT89C51的封装形式有PDIP,TQFP,PLCC 等,现以PDIP 为例。
2.1I/O口线 ·P0位、漏极开路的双向I/O口。
当使用片外存储器及外扩I/O口时,P0口作为低字节地址/数据复用线。在编程时,P0口可用于接收指令代码字节;程序校验时,可输出指令字节。 ·P1位、准双向I/O口,具有内部上拉电阻。
P1口是为用户准备的I/O双向口。在编程和校验时,可用作输入低8位地址。用作输入时,应先将输出锁存器置1。P1口可驱动4个TTL 负载。 ·位、准双向I/O口,具有内部上拉电阻。
当使用外存储器或外扩I/O口时,P2口输出高8位地址。在编程和校验时,P2口接收高字节地址和某些控制信号。
·位、准双向I/O口,具有内部上拉电阻。
P3口可作为普通I/O口。用作输入时,应先将输出锁存器置1。在编程/校验时,P3口接收某些控制信号。它可驱动4个TTL 负载。 2.2控制信号线
·复位输入信号,高电平有效。在振荡器稳定工作时,在RST 脚施加两个机器周期以上的高电平,将器件复位。
·EA/VPP 外部程序存储器访问允许信号EA.
当EA 信号接地时,对ROM 的读操作限定在外部程序存储器,地址为0000H-FFFFH; 当EA 接VCC 时。
·片外程序存储器读选通信号PSEN ,低电平有效。在片外程序存储器取指期间,当PSEN 有效时,程序存储器的内容被送至P0口;在访问外部RAM 时,PSEN 无效。 ·低字节锁存信号ALE. 在系统扩展时,ALE 的下降沿将P0口输出的低8位地址锁存在外接的地址锁存器中,以实现低字节地址和数据的分时传送。 2.3外部晶振引线
·片内振荡器反向放大器和时钟发生线路的输入端。使用片内振荡器时,连接外部石英晶体和微调电容。
·片内振荡器反相放大器的输出端。当使用片内振荡器时,外接石英晶体和微调电容。
3. 存储器组织和特殊功能寄存器
AT89C51的存储器将程序存储器和数据存储器分开,并有各自的存储空间和访问指令。它有4个存储空间:片内存储器、片外存储器、片内数据存储器及片外存储器。
3.1 时钟电路和工作时序 (
(2)振荡电路的接法
3.2 LED数码管的结构和工作原理
LED数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。LED 数码管常用段数一般为
7段有的另加一个小数点,还有一种是类似于3位“+1”型。位数有半位,1,2,3,4,5,6,8,10位等等.... ,LED 数码管根据LED 的接法不同分为共阴和共阳两类,了解LED 的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。长等。下面将介绍常用LED 数码管内部引脚图。
图1 这是一个7段两位带小数点 10引脚的LED 数码管
图2 引脚定义
每一笔划都是对应一个字母表示 DP是小数点.
数码管分为共阳极的LED 数码管、共阴极的LED 数码管两种。下图例举的是共阳极的LED 数码管,共阳就是7段的显示字码共用一个电源的正。led 数码管原理图示意:
图3 引脚示意图
从上图可以看出,要是数码管显示数字,有两个条件:1、是要在VT 端(3/8脚)加正电源;2、要使(a,b,c,d,e,f,g,dp) 端接低电平或“0”电平。这样才能显示的。
共阳极LED 数码管的内部结构原理图图4:
图4 共阳极LED 数码管的内部结构原理图
共阴极LED 数码管的内部结构原理图:
图5 共阴极LED 数码管的内部结构原理图
表1.1 显示数字对应的二进制电平信号
LED 数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位,因此根据LED 数码管的驱动方式的不同,可以分为静态式和动态式两类。 A 、静态显示驱动:
静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O口进行驱动,或者使用如BCD 码二-十进位转换器进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O口多,如驱动5个数码管静态显示则需要5×8=40根I/O口来驱动,要知道一个89S51单片机可用的I/O口才32个呢。
B 、动态显示驱动:
数码管动态显示介面是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp "的同名端连在一起,另外为每个数码管的公共极COM 增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形。
3.3设计思路(方案)
该实验要求进行计时并在数码管上显示时间,则可利用DVCC 系列单片机微机仿真实验系统中的芯片8032(芯片的功能类似于芯片AT89C51,其管脚功能也和AT89C51的管脚功能类似)中的P3.2管脚做为外部中断0的入口地址,并实现“开始”按键的功能;将
P3.3做为外部中断1的入口地址,并实现“清零”按键的功能;将P3.0做为数据信号DATA 输入的入口地址;将P3.1做为时钟信号CLK 输入的入口地址。定时器T0作为每秒加一的定时器。
3.4系统总体方案及硬件设计 3.4.1系统总体方案
本系统采用AT89C51单片机为中心器件,利用其定时器/计数器定时计数的原理,结合硬件电路如电源电路,晶振电路,复位电路和显示电路,以及一些按键电路等来设计计数器,硬件系统利用Protues 强大的功能来实现,简单易于观察,在仿真中就可以观察到实际的工作状态。
3.4.2硬件电路设计 1)晶振电路
MCS-51单片机内部的晶振电路是一个高增益反相放大器,引用XTAL1和XTAL2分别为反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器。
这里,我们选用51单片机12MHZ 的内部振荡方式,电路如下:电容器C1、C2起稳定振荡频率,快速起振的作用,C1和C2可以在20-100PF 之间取值,这里取20PF ,接线时要使晶体振荡器X1尽可能接近单片机。
2)按键部分电路接线
在按键电路中,我们可以在I/O口上直接按键,或者通过I/O口设计一个键盘,然后通过键盘扫描程序判断是否有按键按下等。此系统是一个小系统,有足够的I/O口可以使用,为了使程序简化,我们采用按键电路,用部分P1口做开关,P1.0开始,P1.1暂停,P1.2清零,P1.3复位。
3)显示电路电路
显示电路我们采用的是数码管显示电路。用2个共阴极LED 显示,LED 是七段式显示器,内部有7个条形发光二极管和1个小圆点发光二极管组成,根据各二极管的亮灭组合成字符。
在用数码管显示时,我们有静态和动态两种选择,静态显示程序简单,显示温度,但是占用端口比较多;动态显示所使用的端口比较少,可以节省单片机的I/O口。
在设计中,我们采用LED 动态显示,用P0口驱动显示。由于P0口的输出极是开漏电路,用它驱动时需要外接上拉电阻才能输出高电平。
3.5 软件设计 3.5.1软件设计概述
在软件设计中,一般采用模块化的程序设计方法,它具有明显的优点,把一个多功能的复杂的程序划分成多个简单的、单一的程序模块,有利于程序的测试和调试,有利于程序的优化和分工,提高了程序的阅读性和可靠性,使程序的结构一目了然。
3.5.2程序流程图
1)系统主程序流程图 23.5.3子程序模块设计 1)显示精度为1秒程序
MAIN: MOV R0,#20
MOV TMOD,#01H MOV TH0,#3CH
MOV TL0,#0B0H MOV DPTR,#TABLE SETB EA SETB ET0 2)延时程序 DELAY: ;误差 0us MOV R6,#01H DL0:
MOV R5,#61H
3.6秒表汇编程序
)定时器中断T0流程图
;*********************************************** ; 本程序实现秒表从0s 计到99s K_S BIT P1.0
; 秒表开始控制位
Z_T BIT P1.1 ;秒表暂停控制位 Q_L BIT P1.2 ;秒表清零控制位 F_W BIT P1.3 ;秒表复位控制位 SECOND EQU
TCNT EQU
ORG
34H 00H START 0BH INT_T0 DPTR,#TABLE 30H
SJMP
ORG LJMP
START: MOV
MOV MOV MOV
SECOND,#0 TCNT,#0 TMOD,#01H
SETB P1.0 SETB P1.1 SETB P1.2 SETB P1.3 JB K_S,$
;秒表开始控制位
;fosc=12MHz,定时50毫秒
MOV
MOV MOV SETB
TH0,#3CH TL0,#0B0H IE,#82H TR0
;**************************************************** ; 对秒表的两位显示进行控制
A1: LCALL DISPLAY
MOV
A,SECOND
CJNE A,#99,A1 ;判断是否加到99秒
SECOND,#0
CLEAR:
MOV
;*********************************************** ; 定时器中断服务程序, 对 秒 计数 INT_T0: NEXT:
JNB Z_T,ZT ;秒表暂停控制位 MOV
TH0,#3CH
MOV INC MOV CJNE INC
TL0,#0B0H TCNT A,TCNT
A,#20,RETUNE ;计时1秒 用#20 SECOND TCNT,#0 A,SECOND A,#99,RETUNE SECOND,#0
MOV MOV
CJNE MOV
RETUNE: RETI
;****************************************** ; 显示控制子程序 DISPLAY:
JNB Q_L,CLEAR ;秒表清零控制位
JNB F_W,START ;秒表复位控制位
A,SECOND ; 显示秒表的两位
MOV
MOV DIV CLR MOVC MOV
B,#10 AB P3.6 A,@A+DPTR P0,A
LCALL DELAY SETB MOV CLR MOVC MOV
P3.6 A,B P3.7
A,@A+DPTR P2,A
;片选信号
LCALL DELAY SETB
P3.7
ZT: JNB K_S,NEXT ; 秒表暂停控制位
RET
TABLE:
DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH R6,#10 R7,#250 R7,$ R6,D1
DELAY: MOV D1:
MOV DJNZ DJNZ RET END
3.7 Protues软件仿真
Protus仿真软件可以看做是构建了一个特殊的单片机系统,只要将所写程序的HEX 文件导入该单片机系统,就可以它他一句句的执行所写的指令,也可以让它与Keil 实现联调,程序有问题可以随时改,帮助快速调试程序。
四、课程设计心得体会
本文主要从软硬件两方面说明设计的总体思路和设计的实现过程,预期的设计目的是:能够实现时钟的基本功能,正常显示分秒. 在设计过程中,曾经遇到很多的障碍,设计图经过许多次的修改最后才定下来,但在调试的过程中又出现了问题,需要修改原理图;比如硬件的布局,要作到使连接的线路最短,并不没有想象中的那么容易;并且对汇编语言有了更深刻的了解。设计过程中遇到程序设计问题,网上找到视频教程学习中断程序的编写,以及查阅C 语言课本得以解决。通过网上视频学习了Proteus ,对Proteus 的运用有了一定的了解,通过编程对C 语言也学到了不少,更重要的是,更进一步理解了单片机的功能与用法。
五、参考文献
● 《单片机原理及接口技术》,高等教育出版社出版,李全钊、迟荣强 等 编著。 ● 《Proteus 教程——电子线路设计、制板与仿真》,清华大学出版社出版,朱清慧、
张凤蕊、翟天嵩、王志奎 编著。
● 《基于Proteus 的80C51单片机实例教程》,电子工业出版社出版,李学礼 主编。 ● 《51系列单片机应用与实践教程》,北京航空航天大学出版社出版,周向红 主编。 ● 《单片机应用及技术》,电子工业出版社
● 《单片机原理及应用》,基于Proteus 单片机系统设计及应用,何宏、王红君、刘
瑞安、张志宏 编著。
附件1:秒表原理图(实际接线图)