单片机课程设计Word文件下载.docx
- 文档编号:3105333
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:36
- 大小:676.58KB
单片机课程设计Word文件下载.docx
《单片机课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机课程设计Word文件下载.docx(36页珍藏版)》请在冰点文库上搜索。
2.1AT89C52简介
2.1.1AT89C52引脚介绍
图1AT89C52引脚图
MCS-51单片机是标准的40引脚双列直插式集成电路芯片,其各引脚功能如下:
VCC:
+5V电源。
VSS:
接地。
RST:
复位信号。
当输入的复位信号延续两个机器周期以上的高电平时即为有效,用完成单片机的复位初始化操作。
XTAL1和XTAL2:
外接晶体引线端。
当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;
当使用外部时钟时,用于接外部时钟脉冲信号。
P0口:
P0口为一个8位漏极开路双向I/O口,当作输出口使用时,必须接上拉
电阻才能有高电平输出;
当作输入口使用时,必须先向电路中的锁存器写入“1”,使FET截止,以避免锁存器为“0”状态时对引脚读入的干扰。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,它不再需要多路转接电路MUX;
因此它作为输出口使用时,无需再外接上拉电阻,当作为输入口使用时,同样也需先向其锁存器写“1”,使输出驱动电路的FET截止。
P2口:
P2口电路比P1口电路多了一个多路转接电路MUX,这又正好与P0口一样。
P2口可以作为通用的I/O口使用,这时多路转接电路开关倒向锁丰存器Q端。
P3口:
P3口特点在于,为适应引脚信号第二功能的需要,增加了第二功能控制逻辑。
当作为I/O口使用时,第二功能信号引线应保持高电平,与非门开通,以维持从锁存器到输出端数据输出通路的畅通。
当输出第二功能信号时,该位应应置“1”,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出.
2.1.251子系列的主要特点为:
◆8位CPU。
◆片内带振荡器,频率范围1.2~12MHZ。
◆片内带256k字节的数据存储器。
◆片内带8K的程序存储器。
◆程序存储器的寻址空间为64K字节。
◆片外数据存储器的寻址空间为64K字节。
◆128个用户位寻址空间。
◆21个字节特殊功能寄存器。
◆4个8位的并行I/O接口:
P0、P1、P2、P3。
◆2个16位定时器/计数器
◆2个优先级别的5个中断源。
◆1个全双工的串行I/O接口,可多机通信。
◆111条指令,含乘法指令和除法指令。
◆片内采用单总线结构。
◆有较强的位处理能力。
◆采用单一+5V电源。
图2
MCS-52的基本结构
2.2数码管简介
2.2.1数码管的原理
我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。
所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。
数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。
而共阳极就是将八个LED的阳极连在一起。
其原理图如下
图3数码管的结构
其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。
一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。
显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。
数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。
所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;
共阳数码管的字符编码为11000000,即0xc0。
可以看出两个编码的各位正好相反。
如下图
图4共阴极和共阳极
2.2.2数码管的应用
①静态显示驱动:
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×
8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:
),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
②动态显示驱动:
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"
a,b,c,d,e,f,g,dp"
的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
图5动态显示
2.374LS373中文资料
2.3.1
简要说明
373为三态输出的八D透明锁存器,共有54/74S373和54/74LS373两种线路结构型式。
373为三态输出的8
D透明锁存器,
373的输出端O0-O7可直接与总线相连。
当三态允许控制端OE为低电平时,O0-O7为正常逻辑状态,可用来驱动负载或总线。
当OE为高电平时,O0-O7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。
当锁存允许端LE为高电平时,O随数据D而变。
当LE为低电平时,O被锁存在已建立的数据电平。
当LE端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善400mV。
373引出端符号:
D0~D7-----数据输入端
OE-----三态允许控制端(低电平有效)
LE-----锁存允许端
O0-O7-----输出端
图6373外部管腿图、真值表
(1).1脚是输出使能(OE),是低电平有效,当1脚是高电平时,不管输入3、4、7、8、13、14、17、18如何,也不管11脚(锁存控制端,G)如何,输出2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)全部呈现高阻状态(或者叫浮空状态);
(2).当1脚是低电平时,只要11脚(锁存控制端,G)上出现一个下降沿,输出2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)立即呈现输入脚3、4、7、8、13、14、17、18的状态.
锁存端LE
由高变低时,输出端8
位信息被锁存,直到LE
端再次有效。
当三态门使能信号OE为低电平时,三态门导通,允许Q0~Q7输出,OE为高电平时,
输出悬空。
当74LS373用作地址锁存器时,应使OE为低电平,此时锁存使能端C为高电平时,输出Q0~Q7
状态与输入端D1~D7状态相同;
当C发生负的跳变时,输入端D0~D7
数据锁入Q0~Q7。
51单片机的ALE信号可以直接与74LS373的C连接。
2.3.274LS373与单片机接口
1D~8D为8个输入端。
1Q~8Q为8个输出端。
G是数据锁存控制端;
当G=1时,锁存器输出端同输入端;
当G由“1”变为“0”时,数据输入锁存器中。
OE为输出允许端;
当OE=“0”时,三态门打开;
当OE=“1”时,三态门关闭,输出呈高阻状态。
在MCS-51单片机系统中,常采用74LS373作为地址锁存器使用,其连接方法如上图所示。
其中输入端1D~8D接至单片机的P0口,输出端提供的是低8位地址,G端接至单片机的地址锁存允许信号ALE。
输出允许端OE接地,表示输出三态门一直打开。
课程设计说明书NO.3
图7引脚图功能表
2.48253的简介
intel8253是NMOS工艺制成的可编程计数器/定时器,有几种芯片型号,外形引脚及功能都是兼容的,只是工作的最高计数速率有所差异,例如8253(2.6MHz),8253-5(5MHz)
8253内部有三个计数器,分别称为计数器0、计数器1和计数器2,他们的机构完全相同。
每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。
每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。
每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。
执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。
输出锁存器的值是通过程序设置的。
输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操作。
顺便提一下,CR、CE和OL都是16位寄存器,但是也可以作8位寄存器来用
图8CLKGATEOUT信号与计数器的逻辑关系
图98253内部内部结构框图
3设计原理
3.1设计环境及设备
PC机一台、windows7系统、实验箱,导线若干。
8255并口:
用做接口芯片,与数码管相连。
数码管:
4个LED用于分别显示百十个位。
蜂鸣器:
播放音乐。
3.2功能原理图
首先在单片机的控制下,数码管从零先计数,同时8个led灯循环闪烁,数到十,蜂鸣器开始播放“生快快乐”。
图10结构图
3.3系统软件设计
软件的编程设计是单片机系统设计的核心部分,也是能否实现预定功能的关键。
单片机编程常用的语言是C语言和汇编语言,最终都要转为IntelHEX格式或二进制格式(Binary)文件写入单片机芯片内。
此次我组使用的是汇编语言进行编程设计[5]。
3.3.1软件设计环境介绍
keil是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能、结构、可读性、可维护性上有明显的优势,因而易学易用。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具,也是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台。
Proteus软件拥有丰富的资源,支持智能原理图设计,具有完善的电路仿真和独特的单片机协同仿真功能,一键便可进入ARES的PCB设计环境,实现从概念到产品的完整设计[6]。
3.3.2源程序代码
#include<
reg52.h>
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
unsignedcharled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
ucharcodeSONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159,
212,212,106,126,159,169,190,119,119,126,159,142,159,0};
ucharcodeSONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24,
9,3,12,12,12,12,12,9,3,12,12,12,24,0};
ucharaa,a,bai,shi,ge,temp;
sbitd=P3^3;
sbitA0=P3^0;
sbity=P3^4;
sbitr=P3^0;
sbitO=P3^7;
voiddelay(uintz);
voidPlayMusic();
voidinit()
{aa=0;
temp=0;
P1=0XFE;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
voidmain()
{init();
while
(1)
{
if(aa==20)
{
temp++;
aa=0;
}
bai=temp/100;
shi=temp%100/10;
ge=temp%10;
delay
(1);
d=1;
P0=led[bai];
d=0;
P0=0XFF;
P2=0X02;
delay(10);
P0=led[shi];
P2=0X04;
P0=led[ge];
P2=0X08;
if(temp==10)
{
TR0=0;
O=0;
PlayMusic();
TR0=1;
temp=0;
}
if(r==0)
{
TR0=0;
if(y==0)
TR0=1;
}
voidtimer0()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
P1=_cror_(P1,1);
voiddelay(uintz)
uintx,y;
for(x=z;
x>
0;
x--)
for(y=110;
y>
y--);
voidPlayMusic()
{uinti=0,j,k;
while(SONG_LONG[i]!
=0||SONG_TONE[i]!
=0)
for(j=0;
j<
SONG_LONG[i]*20;
j++)
O=~O;
for(k=0;
k<
SONG_TONE[i]/3;
k++);
delay(10);
i++;
3.3.3系统调试
系统调试分为软件调试和硬件调试,硬件调试和软件调试是分不开的,许多硬件错误是在软件调试中被发现和纠正的,通常是先排除明显的硬件故障以后,再和软件结合起来调试以进一步排除故障[7]。
3.3.4软件调试及仿真
软件调试主要是运用Keil和Proteus完成。
在写好源程序,画出原理图之后,在电脑上进行软件仿真。
建新工程,选择AT89S52处理器;
接着新建文档编辑程序,编辑完存为.asm,把保存的.asm文件加入到工程里。
点击Project下的OptionsforTarget‘Target1’。
在弹出对话框的Target项里输入晶振为12M,然后勾上UseOn-chipROM。
在Output项里勾上CreateHEXFile。
最后编译程序,keil会自动生成.hex文件。
接着将系统原理图在Proteus环境下画好,然后运用Proteus进行仿真[8],仿真电路图如下。
图11硬件连接图
4.测试结果
图12仿真图
5.结果分析
仿真开始,数码管开始计时,同时8个led灯开始闪烁。
当按下键盘STOP,计时暂定,按下START,开始计时。
数到十时,蜂鸣器开始播放生日快乐;
唱完重新开始计时,
就这样与循环。
在编写程序时,由于自己学的不好,水平有限,很多程序也都是参考网上别人做过的成功的程序,也正是这方面的不足才造定时设置方面的功能没有能很好实现,除此之外,软件达到了设计的要求。
总的来说,本次课程设计还是比较成功的,但是由于时间和能力的限制,设计中也难免存在不足之处,很多软件和程序方面的设计有待进一步改善。
6.心得体会
在本次课程设计中,我通过基于典型单片机AT89S52的设计和应用,对单片机的工作原理及功能有了更加深刻的了解,并对单片机程序语言设计有了新的、进一步的认识,对一些指令的使用也更加熟悉了。
在本次设计的过程中,我也发现很多的问题,给我的感觉就是下手很难,很不顺手,看似很简单的电路,要动手把它给设计出来,却不是一件容易的事,主要原因是我们没有经常去动手设计电路,对画图的一些技巧不够熟悉。
另外由于是本学期才学的单片机课程,对单片机系统的知识似懂非懂,虽然课堂上很多知识当时弄明白了,现在要用的时候又想不起来,以致我又不得不用大量的时间去图书馆查阅各种资料和程序命令,在这个模块用去了不少时间,也正是这个原因才使整个过程的时间安排变得不合理。
通过此次课程设计,我发现了自己的不足之处,充分意识到了“应该把功夫放在平时”这句话的真谛,我意识到只有跟同伴一起商量、合作,才能提高效率,或许还会收到事半功倍的效果。
在以后不论学什么,我都会做到打好基础,并通过不断地练习将其学好、学精,多动手操作,使我终身受益,相信它不论对我以后的就业还是学习,都会起到很大的促进和帮助作用。
多亏了我的一帮热心助人的同学和我谆谆善诱的指导老师,正是在他们的支持和鼓励下,我才完成了这次课程设计任务。
感谢刁芬老师的耐心指导以及她在整个设计过程中针对我组的问题提出的宝贵建议,在此我表示深深的感谢!
7,参考文献
[1]余新平.数字电路仿真·
设计·
测试[M].武汉:
华中科技大学出版社,2010.1:
32-36.
[2]杜树春.单片机C语言和汇编语言混合编程实例详解[M].北京:
北京航空航天大学出版社,2006.1:
45-51.
[3]尹仕.电工电子制作基础[M].武汉:
华中科技大学出版社,2008.1:
52-62.
[4]王建校,杨建国等.51系列单片机及C51程序设计[M].北京:
科学出版社,2002.1:
36-41.
[5]徐煜明,韩艳.单片机原理及接口技术[M].北京:
电子工业出版社,2005.1:
67-73.
[6]谷树忠,刘文洲等.AltiumDesigner教程[M].北京:
电子工业出版社,2009.2:
62-71.
[7]龚沛曾,杨志强等.大学计算机基础[M].北京:
高等教育出版社,2008.1:
76-82.
[8]王力,张伟.电路设计与制板PROTELDXP库元器件手册[M].上海:
人民邮电出版社,2008.1:
46-52.
[9]王惠忠,王强等.微机原理及应用[M].武汉:
武汉大学出版社,2011.1:
79-82.
[10]郑阿奇.Protel使用教程[M].北京:
电子工业出版社,2010.1:
92-99.
课程设计说明书NO.4
图1设计系统框图(图注为黑体5号,所有的图的图号按图1,
图2,图3…统一排号)
课程设计说明书NO.5
(d)有99条基本指令,指令功能强大。
(e)有9种基本寻址方式。
(f)可以处理内部和外部中断,外部中断源多达256个。
(g)兼容性好,8086、8085在源程序一级兼容。
(h)8086/8088标准主频为5MHz,8086/8088-2主频为8MH【3】。
(i)支持单处理器或多处理器系统工作。
(2)8086CPU寄存器结构
8086CPU中有14个16位的寄存器,其中有4个16位的通用寄存器,2个16位指针寄存器,2个16位变址寄存器,1个16位指令指针及1个16位标志寄存器【8】。
通用寄存器包括累加器AX,基址寄存器BX,计数寄存器CX,数据寄存器DX四个寄存器,位于CPU的EU中,每个数据寄存器可存放16位操作数,也可拆成两个8位寄存器,用来存放8位操作数。
指针和变址寄存器包括:
堆栈指针SP、基址指针BP、源变址寄存器SI、和目的变址寄存器DI四个16位寄存器,可以来存放数据和地址。
段寄存器包括:
代码段寄存器CS,数据段寄存器DS,附加段寄存器ES,堆栈段寄存器SS【4】。
3.28255简介
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。
用+5V单电源供电,能在以下三种方式下工作:
方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式【3】。
8255的内部结构及引脚图如图2所示。
课程设计说明书NO.6
图48255内部结构及引脚
图28255内部结构及引脚图
具体的各引脚功能如下【3】:
D0~D7为双向数据信号线
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计