单片机课程设计 报告.docx
- 文档编号:14903179
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:35
- 大小:498.64KB
单片机课程设计 报告.docx
《单片机课程设计 报告.docx》由会员分享,可在线阅读,更多相关《单片机课程设计 报告.docx(35页珍藏版)》请在冰点文库上搜索。
单片机课程设计报告
《单片机应用设计报告》
系 别电子信息与电气工程系
专业自动化
班级09级
(1)班
姓 名王杰王典
老师储忠
完成时间2012年5月18日
单片机原理及接口技术课程设计报告
摘要:
单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
MCS-51单片机是使用极为广泛的一款8位单片机,在此次实训中所用的单片机是美国Atmel公司生产的以8031为内核的AT89S52单片机。
实训分别以构建单片机最小系统版、74HC138流水灯、8255交通灯、8253方波、6N137光耦控制继电器等几个实验
关键词:
AT89S5274HC1388255A82536N137交通灯
目录
单片机原理及接口技术课程设计报告1
实验一构建单片机最小系统和实验环境熟悉3
1.1单片机的工作原理3
1.1.1单片机最小系统图3
1.1.2运算器简介4
1.1.3控制器简介5
1.1.4实验解析与总结7
实验二跑马灯实验及74HC138译码器7
2.1实验内容7
2.1.1实验原理8
2.1.2实验原理图8
2.1.3实验程序流程图9
2.1.4实验程序代码9
2.1.5完成后的效果图10
2.2实验总结10
实验三8255控制交通灯实验11
3.1实验内容11
3.1.3实验原理11
3.1.2实验原理电路图12
3.1.3程序流程图13
3.1.4实验程序代码13
3.1.5系统实现图15
3.28255A寻址原理15
3.3实验总结16
实验四8253方波实验17
4.1实验内容17
4.1.1实验原理图17
4.1.2实验原理电路图17
4.1.3程序流程图18
4.1.4程序流程代码19
4.1.4系统仿真20
4.2实验总结21
实训总结21
附录22
1实验源程序22
2仿真系统电路原理图27
3硬件实物照片27
实验一构建单片机最小系统和实验环境熟悉
1.1单片机的工作原理
1.1.1单片机最小系统图
单片机最小系统主要有外部晶振电路,系统复位电路以及供电电源组成。
在构建单片机最小系统板是在VCC引脚出加上10uF和0.1uF的滤波电容,可以有效的提高系统工作的稳定性。
单片机最小系统图
1.1.2运算器简介
运算器包括算术逻辑运算、累加器ACC、单元ALU、寄存器B、暂存器TMP、程序状态字寄存器PSW、十进制调整电路等。
它能实现数据的算术逻辑运算、位变量处理和数据传送操作。
1.算术逻辑单元ALU
ALU在控制器根据指令发出的内部信号控制下,对8位二进制数据进行加、减、乘、除运算和逻辑与、或、非、异或、清零等运算。
它具有很强的判跳、转移、丰富的数据传送、提供存放中间结果以及常用数据寄存器的功能。
MCS-51中位处理具有位处理功能,特别适用于实时逻辑控制。
2.累加器ACC
累加器ACC是8位寄存器,是最常用的专用寄存器,它既可存放操作数,又可存放运算的中间结果。
MCS—51系列单片机中许多指令的操作数来自累加器ACC。
累加器非常繁忙,在与外部存储器或I/O接口进行数据传送时,都要经过A来完成。
4.程序状态字PSW
程序状态字是8位寄存器,用于指示程序运行状态信息。
其中有些位是根据程序执行结果由硬件自动设置的,而有些位可由用户通过指令方法设定。
PSW中各标志位名称及定义如下:
位序
D7
D6
D5
D4
D3
D2
D1
D0
位标志
CY
AC
F0
RS1
RS0
OV
—
P
CY(PSW.7):
进(借)位标志位,也是位处理器的位累加器C。
在加减运算中,若操作结果的最高位有进位或有借位时,CY由硬件自动置1,否则清“0”。
在位操作中,CY作为位累加器C使用,参于进行位传送、位与、位或等位操作。
另外某些控制转移类指令也会影响CY位状态。
AC(PSW.6):
辅助进(借)位标志位。
在加减运算中,当操作结果的低四位向高四位进位或借位时此标志位由硬件自动置1,否则清“0”。
F0(PSW.5):
用户标志位,由用户通过软件设定,决定程序的执行方式。
RS1(PSW.4),RS0(PSW.3):
寄存器组选择位。
用于设定当前通用寄存器组的组,其对应关系如下:
RS1
RS0
寄存器组
R0~R7地址
0
0
组0
00~07H
0
1
组1
08~0FH
1
0
组2
10~17H
1
1
组3
18~1FH
OV(PSW.2):
溢出标志位。
它反映运算结果是否溢出,溢出时OV=1;否则OV=0。
OV可作为条件转移指令中的条件。
PSW.1:
未定义位。
P(PSW.1):
奇偶标志位。
P=1,表示ACC中1的个数为奇数;否则P=0。
P也可以作为条件转移指令中的条件。
1.1.3控制器简介
控制器包括时钟电路、复位电路、指令寄存器、指令译码器程序计数器PC、堆栈指针SP、数据指针寄存器DPTR以及信息传送控制部件等。
时钟电路是计算机的心脏,他控制着计算机的工作节奏,CPU就是通过复杂的时序电路完成不同的指令功能,MCS-51的时钟信号可以有两种方式产生,一种是内部方式,利用芯片内部的振荡电路,产生时钟信号;另一种是外部方式,时钟信号由外部引入,MCS-51单片机有HMOS和CHMOS型,他们的时钟电路有一定区别,在实际使用时应该注意,下面是这两种时钟电路的电路图。
(A)内部时钟电路(B)外部振荡源
2.复位电路
对于使用12MHZ的晶振的单片机,复位信号持续时间应超过4μs才能完成复位操作。
产生复位信号的电路有上电自动复位电路和按键手动复位电路两种方式。
上电自动复位是通过外部复位电路的电容充电来实现的,该电路通过电容充电在RST引脚上加了一个高电平完成复位操作。
上电自动复位电路如图(a)所示。
按键手动复位电路。
按键手动复位是通过按键实现人为的复位操作,按键手动复位电路如图(b)所示。
复位后内部暂存器的状态如下:
PC
0000H
TCON
00H
ACC
00H
TL0
00H
PSW
00H
TH0
00H
SP
07H
TL1
00H
DPTR
0000H
TH1
00H
P0~P3
FFH
SCON
00H
IP
××000000B
SBUF
不定
IE
0×000000B
PCON
0×××0000B
TMOD
00H
1.1.4实验解析与总结
本次实验的内容是熟悉单片机最小系统的组成和工作原理,熟悉KeilC51集成环境软件的安装和使用方法。
同时也是为接下来的几个实验打下基础,所以很好地完成第一个实验,有助于下面的几个实验顺利展开。
该实验中,单片机系统电路的基本模块有:
复位电路,晶振电路,JTAG下载口等主要模块。
其中P0口作为输出使用必须对单片机的I/O口,因为P0为集电极开路,可以提高其功率和电平转换。
在单片机最小系统的构建中,EA脚拉高是非常必要的,它可以影响单片机的正常工作。
在检测单片机是否正常工作,可以通过检测晶振两端的信号的波形形状。
在单片机正常工作条件下,其信号为正弦波。
通过本次试验我了解了单片机的工作原理,知道了硬件部分的重要性,单片机最小系统板的焊接最主要是晶振部分的焊接,它为单片机提供了做工作的频率,是单片机的心脏。
实验二跑马灯实验及74HC138译码器
2.1实验内容
跑马灯实验:
1、熟悉集成环境软件或熟悉KeilC51集成环境软件的安装和使用方法。
2、照接线图编写程序:
使用P1口控制G6区的8个指示灯,循环点亮,瞬间只有一个灯亮。
3、观察实验结果,验证程序是否正确。
74HC138译码器实验:
1、设计74HC138接口电路,编写程序:
使用单片机的P1.0、P1.1、P1.2控制74HC138的数据输入端,通过译码产生8选1个选通信号,轮流点亮8个LED指示灯。
2、运行程序,验证译码的正确性。
2.1.1实验原理
根据74S138译码器的工作原理,当G1G2AG2B口分别致高电平时,译码器工作,根据74LS138的3个译码信号A、B、C来选择Y0、Y1、Y2、Y3、Y4、Y5、Y6作为输出,例如,ABC为001时选择Y0口,以此类推,实现译码。
各输出为低电平时,当共阳极的LED灯节高电平时,就会使相应的灯亮。
A、B、C三个信号由单片机的P1.0、P1.1和P1.2来提供,而P1.0、P1.1和P1.2口的值是通过程序设置初始值后,然后根据P1.0、P1.1和P1.2的值加1和循环就可以实现LED灯的循环点亮。
2.1.2实验原理图
74HC138跑马灯电路原理图
2.1.3实验程序流程图
74HC138跑马灯实验程序流程图
2.1.4实验程序代码
voidyimaqi()//译码器
{
ucharbb;
uintm;
cs2=0;
bb=0x00;
delayms(600);
for(m=0;m<8;m++)
{
P1=bb;
delayms(600);
bb++;
}
2.1.5完成后的效果图
实验通过仿真后顺利通过,我们在电路板上成功完成了实验,下面是效果图。
74HC138跑马灯系统效果图
2.2实验总结
通过本次试验使我们对跑马的电路有了清晰的认识,从概念上理解了如何用程序来控制跑马灯。
程序仿真的正确只是第一步,要想真正的完成实验目的,还需要硬件电路成功实现功能才可以说明本次实验是成功的。
通过下载器把程序烧到单片机里,进行硬件调试,在实际硬件电路中可以实现了。
这使我认识到计算机仿真和实际硬件电路还是有差别。
在仿真中只能调试程序,并不能达到实际效果。
进过一次一次的修改,调试程序。
最后成功的达到预期的效果。
我对单片机的程序和控制有更深的认识和理解。
这次实验最大的收获,我熟悉了KEIL和protues软件的联合使用。
学会单片机程序编写和调试。
我理解了软件与硬件的关系,单片机可以通过软件作用到硬件把我们的思想表达出来。
实验三8255控制交通灯实验
3.1实验内容
1、设计8255接口电路,编写程序:
使用8255的PA0..2、PA5..7控制LED指示灯,实现交通灯功能。
2、连接线路验证8255的功能,熟悉它的使用方法。
3.1.3实验原理
参考电路原理图:
交通灯实验电路原理图
特别指出的是本次实验中我们进行了拓展,在实验电路中加入了数码管模拟交通灯的倒计时,可以更好对实验内容进行诠释。
根据指导书要求交通灯的变化规律是:
先假定一个十字路口为东南西北走向交通灯的初始状态为状态1,东西方向绿灯通车,南北方向红灯。
经过一段时间转换状态2,东西方向黄灯闪烁一段时间,延时2S,南北方向仍然红灯。
再转换到状态3,东西方向红灯通车,南北方向绿灯。
过一段时间转换到状态4,南北方向黄灯闪烁一段时间,东西方向仍然红灯。
最后循环至南北红灯,东西绿灯。
3.1.2实验原理电路图
8255控制交通灯实验原理图
3.1.3程序流程图
8255交通灯实验程序流程图
3.1.4实验程序代码
voidjiaotongdeng()//交通灯
{
cs1=0;
CONTROL1=0x80;
PORTA=0XFF;
PORTA=0X00;//所有灯全亮
delayms(2000);
Init_time2();//数码管显示定时初始化
delayms(1400);
while
(1)
{
PORTA=0XDE;//主干道红灯支干道绿灯
delayms(6000);
PORTA=0XEE;//支干道黄灯闪
delayms(500);
PORTA=0XFE;
delayms(500);
PORTA=0XEE;//支干道黄灯闪
delayms(500);
PORTA=0XFE;
delayms(500);
PORTA=0XEE;//支干道黄灯闪
delayms(500);
PORTA=0XFE;
delayms(500);
PORTA=0XEE;//支干道黄灯闪
delayms(500);
PORTA=0XFE;
delayms(500);
PORTA=0XF3;//主干道绿灯支干道红灯
delayms(6000);
PORTA=0XF5;//主干道黄灯闪
delayms(500);
PORTA=0XF7;
delayms(500);
PORTA=0XF5;//主干道黄灯闪
delayms(500);
PORTA=0XF7;
delayms(500);
PORTA=0XF5;//主干道黄灯闪
delayms(500);
PORTA=0XF7;
delayms(500);
PORTA=0XF5;//主干道黄灯闪
delayms(500);
PORTA=0XF7;
delayms(500);
}
}
3.1.5系统实现图
8255交通灯系统硬件图
3.28255A寻址原理
在本次试验中程序是用C语言写的8253驱动函数。
使用C语言会给8255的寻址带来了一个难题,在这里是借助KEIL软件里的库函数ABSACC.H来进行寻址的。
例如:
#defineCOM8255XBYTE[0X060FF]后面若出现COM8255,则单片机端口P0和P2联合输出0X060FF绝对物理地址(地址指向82C55指令寄存器)。
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
A15
A14
A13
A12
A11
A10
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
A0
A1
0
0
X
X
X
X
X
X
X
X
X
X
X
X
X
X
1
1
X
X
X
X
X
X
X
X
X
X
X
X
X
X
表格的第四行表示8255的A1,A0口分别于单片机的P2.7,P2.6相连接,表格是五行是表示8255PA口的实际物理地址,即0x3fff,表格的第六行表示8255控制字寄存地的实际物理地址。
3.3实验总结
本次实验的内容是利用8255芯片口控制LED灯的变化,模拟交通灯。
要学会使用8255芯片的初始化和编程方法。
本实验使用的是8255的方式0。
利用8255完成交通灯的四中状态切换。
第一种状态是东西方向是绿灯,南北方向是红灯。
第二种状态是东西方向是黄灯并且闪烁,南北方向是红灯。
第三种状态是东西方向是红灯,南北方向是绿灯。
第四种状态是东西方向是红灯,南北方向是黄灯,最后变到第一种状态。
在实现具体的硬件时,采用8255控制十二个LED,三个一组,分成两组来模拟实际交通灯,其中的对面两组状态变化是相同一致的,所以将对面的对应相同颜色的灯用8255的一个口来控制。
最后我们还加入了数码管,使得整个电路更加的完善,基本完成了实验规定的内容学到了很多的东西。
实验四8253方波实验
4.1实验内容
1、设计接口电路,编写程序:
使用8253的计数器0和计数器1实现对输入时钟频率的两级分频,得到一个周期为1秒的方波,用此方波控制蜂鸣器,发出报警信号,也可以将输入脚接到逻辑笔上来检验程序是否正确。
2、连接线路,验证8253的功能,熟悉它的使用方法。
4.1.1实验原理图
方波实验原理图
利用8253的通道0工作于方式3,方波发生器模式。
利用单片机定时器延时1ms,是单片机P3.0口产生250Hz的方波,作为8253的时钟。
然后给8253装机数初值,所装初值为250,8253产生的频率为
方波频率=时钟频率/计数初值
然后利用8253产生的方波驱动NPN三极管的通断,使得蜂鸣器以1Hz的频率鸣叫,发光二极管以1Hz的频率闪烁。
对8253的寻址原理也是利用KIEL软件中的
4.1.2实验原理电路图
8253方波实验原理电路图
4.1.3程序流程图
8253方波实验程序流程图
4.1.4程序流程代码
voidfangbo()
{
cs3=0;
Init_time1();
CONTROL2=0X16;//写通道0控制字,只读低字节,方式3,BCD计数//写入控制字00110111B通道0只读写低字节,方式3,BCD计数
PORT0=0x64;//写计数初值,CH0=20000/100;//2分频
CONTROL2=0x56;//写通道1控制字,只读低字节,方式3,BCD计数0x77;//写入控制字01110111B通道1先读写低字节后读写高字节,方式3,BCD计数
PORT1=0xc8;//写计数初值,CH1=200/1;
while
(1);
}
voiddisplay(uchartemp)
{
dis=0;
P1=temp;
}
voidInit_time1(void)//定时器初始化
{
TMOD=0x02;//选择通道0,方式2
TH0=231;//设置计数初始值,TH0=256-25
TL0=231;//TH0=TL0
ET0=1;//通道0中断使能
TR0=1;//启动定时器0
EA=1;//开总中断
}
voidInit_time2(void)//定时器初始化
{
TMOD=0X10;//定时器1,方式2
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
EA=1;
ET1=1;
TR1=1;
}
voidT0_time(void)interrupt1
{
TH0=231;//183重装初值
TL0=231;
OUT=~OUT;
}
voidT1_time(void)interrupt3
{
TH1=(65536-45872)/256;//183重装初值
TL1=(65536-45872)%256;
num2++;
if(num2==20)
{
d--;
if(d==-1)d=9;
}
}
voiddelayms(uintxms)//延时子程序
{
uinti,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
4.1.4系统仿真
8253方波实验系统仿真图
4.2实验总结
本实验是方波实验,使用8253的计数器0得到一个周期为1秒的方波。
然后用此方波控制LED的闪亮和蜂鸣器的发声。
是验证单片机定时器产生一个250Hz的方波,作为8253的时钟信号。
将此方波作为时钟信号送给8253的通道0,通过分频产生需要的方波的频率。
在实际电路中单片机产生的时钟频率为244Hz,所以8253预装的初值是244。
通过本次试验,我熟悉了8253的连线和程序的编写,熟悉了8253芯片的使用方法。
本次试验对于我们两个组的成员来说都是一种锻炼和提高,最终我们完成了实验,是我们受益匪浅。
实训总结
本次的单片机实训历时八周,老师给了我们充分的时间去完善和学习。
这也是我们觉得很好的一个方面。
避免了考试单一的书面答题。
从实训开始,单片机最小系统板的设计和焊接到实验电路的焊接和程序编写,调试,我得到系统的锻炼。
在动手能力方面有了很大的提高。
在设计程序之前,务必要对所用单片机的内部结构有一个系统的了解,知道该单片机片内有哪些资源。
设计程序采用什么编程语言并不是非常重要,关键要有一个清晰的思路和一个完整的软件流程图。
在设计程序时,不能妄想一次就将整个程序设计好,设计的程序要经过反复修改,结合硬件不断的调试。
这样才能让设计出一个合格的程序。
在写程序的时候,要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思想,这样也为程序的移植,资料的保存和交流提供了方便。
在设计程序过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题.。
通过这次实践我知道了理论和时间之间还是有差距的,必须在不断的印证和摸索下才可以完善好实验。
最终我们虽然只完成了四个实验,但是每一个实验都保质保量的完成,效果很好,也学到了很多的知识。
在这里我要感谢老师的悉心指导,也感谢组员之间的相互配合。
正是这些,才让我们的实验最终顺利完成!
附录
1实验源程序
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
#include
#definePORTAXBYTE[0XFCFF]//8255a口地址
#defineCONTROL1XBYTE[0XFFFF]//8255控制口地址
#definePORT0XBYTE[0X9FFF]//8253通道0地址
#definePORT1XBYTE[0XBFFF]//8253通道1地址
#defineCONTROL2XBYTE[0XF0FF]//8253控制口地址
voidliushuideng();
voiddelayms(uint);
voidyimaqi();
voidjiaotongdeng();
voidfangbo();
voiddisplay(uchartemp);
voidInit_time1();//fangbo
voidInit_time2();//dispaly
ucharnum1,num2;
intd=9;
sbita0=P3^2;
sbita1=P3^3;
sbitb0=P2^0;//8255A0
sbitb1=P2^1;//8255A1
sbitdis=P3^0;
sbitcs1=P3^1;//8255使能信号
sbitcs2=P2^7;//译码器使能
sbitcs3=P3^5;//8253使能信号
sbitOUT=P3^4;//产生20Khz方波给clk0
ucharcodetable[]={
0x77,0x44,0x3e,0x
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机课程设计 报告 单片机 课程设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)