单片机课程设计.docx
- 文档编号:23113171
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:21
- 大小:317.76KB
单片机课程设计.docx
《单片机课程设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计.docx(21页珍藏版)》请在冰豆网上搜索。
单片机课程设计
单片微机课程设计报告
学生姓名:
学 号:
系 别:
专 业:
指导教师:
起止日期:
目录
摘要…………………………………………………………………………………3
关键词………………………………………………………………………………3
Abstract……………………………………………………………………………3
Keywords…………………………………………………………………………4
一、引言…………………………………………………………………………5
二、基本设计内容…………………………………………………………………7
1、AT89S51单片机管脚资料………………………………………………………7
2、单片机最小系统…………………………………………………………………9
3、5V稳压电源………………………………………………………………………………12
4、3*3矩阵键盘……………………………………………………………………………13
5、四位共阳数码管…………………………………………………………………………13
6、一位随机存储器………………………………………………………………14
7、一位全加器………………………………………………………………………………15
三、设计心得………………………………………………………………………16
四、附录…………………………………………………………………………17
1、参考文献…………………………………………………………………17
2、硬件(实物)电路………………………………………………………17
3、相关程序…………………………………………………………………19
3、1键盘扫描程序………………………………………………………20
3、2数码管动态显示程序………………………………………………23
摘要
单片机在一块半导体材料上集成了CPU、存储器、I/O借口等各种功能部件,具有体积小、功耗低、价格便宜、功能强、可靠性好和使用方便灵活的特点。
单片机在工业控制、数据采集、智能化仪表、办公自动化以及家用电器等各个领域得到了广泛的应用。
本次课程设计我们采用的是AT89S51单片机,它是一种带4K自字节可编程可擦除只读存储器。
AT89S51是一个低电压、高性能的8位CMOS单片机,片内有4Kbytes的课反复擦写的只读存储器和128bytes的随机存取数据存储器。
器件采用ATMEL公司的高密度、非易失性存储技术生产。
AT89S51是一个低功耗高性能的单片机,40个引脚,32个外部双向输入输出端口,同时内含有2个外中断口,2个16为可编程逻辑计数器,2个全双工串行通信口,AT89S51可以按照常规方法进行编程,也可以在线编程,编程的语言可以是汇编也可以是C语言。
本次课程设计我们主要是利用AT89S51,实现晶体振荡、复位、3*3矩阵键盘以及数码管动/静态显示,并且自己制作一个可提供5V电压的直流电源、一个一位随机存储器和一位全加器(要求能做:
加、减、补;与、异或、非、或运算),这些功能既需要使用软件也需要使用硬件才能实现。
关键词
AT89S51;矩阵键盘;全加器;晶体振荡;复位;电源
Abstract
SemiconductormaterialsonasinglechipwithintegratedCPU,memory,I/Oexcuseforotherfeatures,smallsize,lowpowerconsumption,cheap,strongfunction,reliabilityandeaseofuseandflexiblefeatures.SCMintheindustrialcontrol,dataacquisition,intelligentinstrumentation,officeautomationandotherareas,hasbeenwidelyapplied。
ThecurriculumweuseistheAT89S51microcontroller,whichisakindofself-4K-byteerasableprogrammableread-onlymemory.AT89S51isalowvoltage,high-performanceCMOS8-bitmicrocontrollerwith4Kbytesofon-chipflashofrepeatedcoursesand128bytesoftread-onlymemory,randomaccessdatamemory.ATMELdevice'shigh-densitynonvolatilememorytechnologyproduction.AT89S51isalow-powerhigh-performancesinglechip,40pins,32externalbi-directionalinputandoutputports,andcontainstwoexternalinterruptports,216fortheprogrammablelogiccounters,twofull-duplexserialcommunicationMouth,AT89S51canbeprogrammedecordingtoconventionalmethodscanalsoprogramming,programminglanguagecanbealsobeaccomplicationofClanguage.
ThecoursedesignistheuseofmainAT89S51,toachievethecrystaloscillaor,reset,3*3matrixkeyboard,anddigitaldynamic/Staticisplays,andproducetheirowntoprovidea5VvoltageDCpowersupply,arandomaccessmemoryandafulloneAdder(requireddo:
addition,subtraction,complement;AND,XOR,non-,oroperation),thesefunctionsneedtousethesoftwareonlyneedtousethehardwaretoachieve.
Keywords
AT89S51;matrixkeyboard;fulladder;crystaloscillator;reset;power
引言
本次课程设计所涉及到的单片机最小系统、5V稳压电源、数码管的显示、一位随机存储器、全加器几个单元,其相关的理论我们要不在以前的专业课中学习过要不就在本期的单片机课堂上学习和了解过。
所以本次课程设计也就主要是引导我们应用这些理论知识做成一些实际的东西,达到将理论应用于实际的目的。
同时,这一次课程设计也重在培养我们的对电路的布局,元件的焊接,其实也就是要培养我们的动手能力,提升对理论知识的理解。
本次课程设计用到的是AT89S51单片机,配以晶振,复位电路来驱动数码管和LED,这部分是硬件电路,然后通过软件编程,在单片机中下载相应的程序,便能实现对硬件电路的驱动。
基本设计内容
1、AT89S51单片机管脚资料
AT89S51单片机的硬件电路如图:
各个管脚的功能如下所述:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8个TTL门电流。
当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口除了作为普通I/O口,还有第二功能:
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口同时为闪烁编程和编程校验接收一些控制信号。
I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。
读端口时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器。
只有读端口时才真正地把外部的数据读入到内部总线。
89S51的P0、P1、P2、P3口作为输入时都是准双向口。
除了P1口外P0、P2、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)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
2、单片机最小系统
单片机最小系统电路图如下:
①电源
单片机的电源必须是干净稳定的直流5V电源。
单片机的40管脚电源紧靠引脚,引线要尽量短的接一个电容,大小为105~106pF。
②接地
接地的方式有很多。
如:
信号回路地、安全接地、屏蔽接地。
单片机20脚接地,芯片内部所有电路信号地与片外元件和电源共地。
③晶体振荡
系统时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。
AT89S51单片机内部有一个用于构成振荡器的高增益反相放大器。
引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。
这个放大器与作为反馈元件的片外晶振谐振器一起构成一个自激振荡器。
外接晶振谐振器以及两个电容构成并联谐振电路,接在放大电路的反馈回路中。
对外接的电容虽然没有明确的要求,但电容的大小会影响振荡器频率的高低、振荡器的稳定性、起振的快速性和温度的稳定性。
在焊接电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,并且晶振的管脚应该尽量短,以减少寄生电容,更好地保证振荡器稳定和可靠的工作。
(2)复位电路
在9脚加上2个机械周期(2us)的高电平,通过片内复位电路上电时,PC中是随机数,所以必须有硬件电路强行给PC置成00。
也就是复位。
复位的方式可分为:
手动复位、系统复位、自动复位。
此设计的复位是由外部的复位电路来实现的。
片内复位是复位引脚RST通过一个施密特触发器与复位电路相连,施密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。
复位电路的基本功能是:
系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。
为可靠起见,电源稳定后还要经过一定的延时才撤销复位信号,以防电源开关或电源插头分—合过程中引来的抖动而影响复位。
单片机复位电路参数的选定须在振荡稳定后保证复位高电平持续时间大于2个机械周期。
AT89S51单片机是整个开发板的控制中心,我们在选用电路时应该保证它的可靠性和抗干扰性,在选用具体电子器件的时候,应该确定它的各项参数,尽量使用参数相当的器件。
要想单片机能长时间正常工作我们必须保证以下几点:
干净稳定的电流输入。
良好正确的接地。
精确稳定的时钟。
绝对可靠的自动复位。
3、5V稳压电源的设计
电源的原理图如下:
这个电路主要通过12V变压器、整流电桥、稳压管及滤波电容组成。
首先变压器将220V的交流市电转换成12V的交流电,然后将这个电压加入全波整流电桥,经整流后,经过1000uF滤波电容,对其进行滤波,虑除纹波杂质,再通过一个7805的稳压管后经10uF和0.1uF的小电容重新滤波,使输出的直流电压的纹波降到最低。
另外我在这个电路的设计中,加入了一个上电的开关和指示灯,加入上电开关使得使用时更加的方便,加入电源指示灯我们便能很容易的判别电路是否确实输出了一个5V的电压。
4、3*3矩阵键盘
其硬件电路图如下:
我们知道,一个I/O口有两种输入输出状态,即高电平和低电平。
所以,我们可以通过6个I/O口的状态控制9个键盘的情况。
本设计使用的是最常见的3*3矩阵键盘,编程的时候可以通过先扫描行(列)再扫描列(行)的方式扫描整个键盘。
键盘扫描的方法是:
行线P1.0~P1.2为输入线,列线P1.3~P1.5为输出线。
一开始单片机将行线全部输出低电平,此时读入列线数据,若列线全为高电平则没有键按下,当列线有出现低电平时调用延时程序来去除按键抖动。
延时完成后再判断是否有低电平,如果此时读入列线数据还是低电平,则说明确实有键按下。
最后确定键值。
5、四位共阳数码管
本次课程设计我们所用到的数码管是共阳的数码管。
数码管的显示方式按驱动方式可分成静态显示方式和动态显示方式两种。
对于多位数码管,通常都是采用动态扫描的方法进行显示。
在动态方式中,逐个循环地点亮各位数码管。
这样虽然在任意时刻只有一位数码管被点亮,但是由于人眼具有视觉残留效应和眼睛的余辉,看起来便是全部数码管持续点亮的效果。
单片机通过一分8位的二进制电平信号显示出想要显示的数字或者字母。
例如,点亮二极管b,c,数码管就会显示1,点亮a,b,c,d,e,f,g数码管就会显示数字0.所以,数码管的显示需要有8根连线。
同理,要使用四位八段数码管,只要控制相应的位选和段选就可以自由的显示相应的数字。
6、一位随机存储器
其原理图如下:
这次设计中的一位随机存储器由NPN三极管9013,电阻和LED搭建而成,LED的亮灭用以显示出数据的存入是1还是0。
理论上,由于电路的对称性,使得LED的亮灭具有随机性,左边的LED亮还是右边的LED亮事先无法预知,但是实际中由于不能做到元件的绝对对称,并且导线的长度也不能绝对相等,所以随机性并不是很好。
存入数据的时候可以用一个按键开关控制,也可以直接用一根连接到了地端或者是正5V电源的导线用接触的方式进行控制。
7、全加器
本次设计的一位全加器能实现加、减、补;与、异或、非、或等七个功能,其结果用LED的亮灭体现出来。
电路是由具有4与非门的74LS00集成芯片搭建而成,74LS00的内部逻辑如下图所示:
我们可以按照以下的与非逻辑电路结合74LS00的内部逻辑搭建我们所需要的全加器
由于是采用万用板搭建的,而这个电路所涉及到的与非门又比较多,所以在焊接之前,应该先布好局,防止在焊接的过程中将线焊错。
另外要注意将每个芯片的电源端和地端都连接好,以保证芯片正常工作。
三、设计心得
本次课程设计持续了一个半月的时间,它主要是培养我们通过把所学的理论知识应用于实践,并且这一次课程设计采用的万用板搭建电路,想要焊接出来的电路板看起来整洁美观,我们便需要从全局入手,要有全局统筹局部的思维,这样才能更快捷设计出整齐美观的电路板。
同时我的焊接的技术也有了很大的提高,我觉得老师要求我们用万用板采用分立元件搭建这些电路能够让我们很好的了解到所搭建电路的相关原理,同时我们对所用集成芯片的内部结构也能很好了解,这是硬件方面;在软件方面,我学会了如何运用KEIL软件编写出流水灯、数码管显示、键盘扫描的程序。
最后,在老师的悉心指导和严格要求下,我获得了丰富的理论知识,极大地提高了实践能力,使我认识到了课程的重要性,同时感受到了理论与实践的差距,使得我对单片机系统的应用有了更加深刻的认识,得到了一次专业知识,专业技能分析和解决问题很好锻炼。
四、附录
1、参考文献
【1】、余锡存曹国华。
单片机原理及接口技术,西安电子科技大学出版社,2007.12
【2】、Intel,EmbeddedControllerHandbook.1987
【3】、接口电路编写组.最新接口电路实用速查手册.北京:
电子工业出版社,1990
【4】孙涵芳等.单片机原理及应用.北京:
北京航空航天大学出版社,1990
【5】周航慈.单片机应用程序设计技术.北京:
北京航空航天大学出版社,1991
【6】李华等.MCS-51系列单片机使用接口技术.北京:
北京航空航天大学出版社,1993
【7】蔡美琴等.MCS-51系列单片机系统及应用.北京:
高等教育出版社,1993
【8】魏立峰等.单片机原理与应用技术.北京:
北京大学出版社,2006
2、硬件(实物)电路
晶振及其波形
3、相关程序
3、1键盘扫描程序
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitwela1=P2^1;
sbitwela2=P2^2;
sbitwela3=P2^3;
sbitwela4=P2^4;
sbitled=P2^0;
ucharnum=0;
ucharcodetable[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e,
0xbf,0xff
};
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voiddisplay(ucharnum)
{
/*wela1=1;
wela2=1;
wela3=1;
wela4=1;*/
P2=0x1e;
P0=table[num];
}
voidkeyscan()
{
uchartemp;
P1=0xfe;
temp=P1;
temp=temp&0xf8;
if(temp!
=0xf8)
{
delay(10);
temp=P1;
temp=temp&0xf8;
if(temp!
=0xf8)
{
temp=P1;
switch(temp)
{
case0xde:
num=1;
break;
case0xee:
num=2;
break;
case0xf6:
num=3;
break;
}
while(temp!
=0xf8)
{
temp=P1;
temp=temp&0xf8;
}
display(num);
}
}
P1=0xfd;
temp=P1;
temp=temp&0xf8;
if(temp!
=0xf8)
{
delay(10);
temp=P1;
temp=temp&0xf8;
if(temp!
=0xf8)
{
temp=P1;
switch(temp)
{
case0xdd:
num=4;
break;
case0xed:
num=5;
break;
case0xf5:
num=6;
break;
}
while(temp!
=0xf8)
{
temp=P1;
temp=temp&0xf8;
}
display(num);
}
}
P1=0xfb;
temp=P1;
temp=temp&0xf8;
if(temp!
=0xf8)
{
delay(10);
temp=P1;
temp=temp&0xf8;
if(temp!
=0xf8)
{
temp=P1;
switch(temp)
{
case0xdb:
num=7;
break;
case0xeb:
num=8;
break;
case0xf3:
num=9;
break;
}
while(temp!
=0xf8)
{
temp=P1;
temp=temp&0xf8;
}
display(num);
}
}
}
/*voiddisplay1()
{
led=1;
delay(500);
led=0;
}*/
voidmain()
{
P1=0xff;
while
(1)
{
keyscan();
//display1();
//display(num);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计