单片机课程设计.docx
- 文档编号:30382774
- 上传时间:2023-08-14
- 格式:DOCX
- 页数:30
- 大小:537.67KB
单片机课程设计.docx
《单片机课程设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计.docx(30页珍藏版)》请在冰豆网上搜索。
单片机课程设计
题目:
单片机课程设计
系别:
电子信息与电气工程系
专业:
目录
一、构建单片机最小系统版和实验环境熟悉-1-
1.1实验要求-1-
1.2实验过程-1-
1,21.单片机最小系统实验-1-
1.22编译环境的熟悉-2-
二、跑马灯实验及74LS138译码-4-
2.1.实验要求-4-
2.2.实验过程-5-
2.21单片机直接实现跑马灯-5-
2.22通过74LS138译码器实现跑马灯-6-
三、8255A控制交通灯实验-8-
3.1实验要求-8-
3.2实验过程-9-
四、8253方波实验-12-
4.1实验要求-12-
4.2实验过程-12-
五、继电器控制实验-16-
5.1实验要求-16-
单片机课程设计总结:
-19-
附录-20-
摘要:
单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛应用。
从上世纪80年代,由当时的4位、8位单片机,发展到现在的32位300M的高速单片机。
单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:
关键字:
单片机处理器运用
一、构建单片机最小系统版和实验环境熟悉
1.1实验要求
一、预习要求
1.构建单片机最小系统,熟悉51单片机的结构及编程方法
2.按照程序流程图编写出程序
二、实验目的
1.熟悉星单片机最小系统的组成和工作原理,熟悉KeilC51集成环境软件的使用方法。
2.熟悉MCS51汇编指令,能自己编写简单的程序,控制硬件。
三、实验内容
单片机最小系统实验:
1、熟悉单片机最小系统的组成和工作原理,熟悉KeilC51集成环境软件的安装和使用方法。
2、作出单片机最小系统的组成原理图,分析其各构成单元的工作原理。
存储单元数据传输实验:
1、熟悉MCS51汇编指令。
2、进行存储单元数据传输实验,编写程序。
3、运行程序,验证译码的正确性。
1.2实验过程
1,21.单片机最小系统实验
1.单片机最小系统板的组成
时钟电路复位电路,电源电路,这几个部分构成,复位电路是用来使电路的运行状态归零,电源电路是用来提供+5v的电源电压,对单片机进行供电(由于器材等原因本次课程设计我们用的是开发板供电)。
下面的单片机最小系统板,我们晶振选择的是12MHz的,其他的各种元器件来构成单片机的最小系统板。
2、单片机最小系统的工作原理
(1)51单片机最小系统复位电路的极性电容C3的大小直接影响单片机的复位时间,一般采用10-30uF,51单片机最小系统容值越大需要的复位时间越短。
(2)51单片机最小系统晶振Y1也可以采用6MHz或者11.0592MHz,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。
(3)51单片机最小系统起振电容C2、C3一般采用15-33pF,并且电容离晶振越近越好,晶振离单片机越近越好。
(4)P0口为开漏输出,作为输出口时需加上拉电阻,阻值一般为10k。
A、设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。
计数值N乘以机器周期Tcy就是定时时间t。
B、设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。
在每个机器周期的S5P2期间采样T0、T1引脚电平。
当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。
由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。
当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2ms。
1.22编译环境的熟悉
实验中我们使用keil4环境编译程序。
其窗口界面如下:
思考题
1、在单片机最小系统的构建中,应注意哪些因素。
答:
(1)51单片机现在多用AT89S51,不用晶振,晶体加两个电容就可以了。
(2)复位电路中的电容是虑波稳定作用,并联在一个电阻上,一端接地,一端通过开关接高电位就可以了。
(3)晶振:
一般选用12MHz,因为可以准确地得到9600波特率和19200波特率。
实验总结
单片机最小系统的构建,让我对单片机的知识有了更深的了解。
单片机最小系统的焊接,也锻炼了我的自己动手的能力。
在焊接的过程中由于粗心,出了不少的错误,最后还是在同学的帮助下顺利完成了。
二、跑马灯实验及74LS138译码
2.1.实验要求
一、预习要求
1.熟悉51单片机的结构及编程方法
2.按照程序流程图编写出程序
二、实验目的
1.熟悉集成环境软件或熟悉KeilC51集成环境软件的使用方法。
2.熟悉MCS51汇编指令,能自己编写简单的程序,控制硬件。
三、实验内容
(一)跑马灯实验:
1、熟悉集成环境软件或熟悉KeilC51集成环境软件的安装和使用方法。
2、照接线图编写程序:
使用P1口控制G6区的8个指示灯,循环点亮,瞬间只有一个灯亮。
3、观察实验结果,验证程序是否正确。
(二)74LS138译码器实验:
1、设计74LS138接口电路,编写程序:
使用单片机的P1.0、P1.1、P1.2控制74HC138的数据输入端,通过译码产生8选1个选通信号,轮流点亮8个LED指示灯。
2、运行程序,验证译码的正确性。
2.2.实验过程
2.21单片机直接实现跑马灯
跑马灯原理图
仿真图
1、跑马灯对应程序的流程图
N
Y
2.22通过74LS138译码器实现跑马灯
1、74LS138译码器工作原理
(1)、74LS138译码器工作原理
74LS138原理图
从原理图可看出,74138有三个输入端:
A0、A1、A2和八个输出端Q0~Q7。
当输入端A0、A1、A2的编码为000时,译码器输出为Q0=0,而Q1~Q7=1。
即Q0对应于A0、A1、A2为000状态,低电平有效。
A0、A1、A2的另外7种组合见后面的真值表。
图中S1、S2、S3为使能控制端,起到控制译码器是否能进行译码的作用。
只有S1为高电平,S2、S3均为低电平时,才能进行译码,否则不论输入输入为何值,每个输出端均为1。
(2)、74LS138译码器真值表
2、通过74LS138跑马灯仿真图
3.对应程序流程图
思考题
1、在单片机系统中,74LS138通常用来产生片选信号,应如何处理?
答:
取三根底地址线,接到74LS138译码器的输入端,译码产生,8个使能控制信号。
实验心得
第一个实验单片机直接控制跑马灯,比较容易实现,只需要从单片机的p1.0到p1.7接到跑马灯上,利用这些接口控制。
138控制流水灯的实验有些麻烦,实验过程中也出现了不少的问题,但到最后都解决了。
这次的实验让我对138的功能有了更深的了解与熟悉。
三、8255A控制交通灯实验
3.1实验要求
一、预习要求
1.熟悉51单片机的结构及编程方法
2.按照要求画出流程图及程序
二、实验目的
1、了解8255芯片的工作原理,熟悉其初始化编程方法以及输入、输出程序设计技巧。
学会使用8255并行接口芯片实现各种控制功能,如本实验(控制交通灯)等。
2、熟悉8255内部结构和与单片机的接口逻辑,熟悉8255芯片的3种工作方式以及控制字格式。
3、尝试自行编写程序,填写实验报告。
三、实验内容
1、设计8255接口电路,编写程序:
使用8255的PA0..2、PA5..7控制LED指示灯,实现交通灯功能。
2、连接线路验证8255的功能,熟悉它的使用方法。
3.2实验过程
1、8255引脚图
2、8255工作原理
8255共有三种工作方式:
(1)工作方式0:
这是8255A中各端口的基本输入/输出方式。
它只完成简单的并行输入/输出操作,CPU可从指定端口输入信息,也可向指定端口输出信息,如果三个端口均处于工作方式0,则可由工作方式控制字定义16种工作方式的组合。
(2)工作方式1:
被称作选通输入/输出方式。
在这种工作方式下,数据输入/输出操作要在选通信号控制下完成。
(3)工作方式2:
被称作带选通的双向传送方式。
8255A中只允许端口A处于工作方式2,可用来在两台处理机之间实现双向并行通信。
其有关的控制信号由端口C提供,并可向CPU发出中断请求信号。
3、主程序流程图
4、8255A交通灯仿真图
思考题
1.如何对8255的PC口进行位操作?
8255控制字D7=1时,D6~D0为口模式控制,D7=0时控制字为PC口的位操作模式,如控制字=00H,PC0复位;控制字=01H,PC0置位;控制字=0EH,PC7复位;控制字=0FH,PC7置位;其中D6~D4没定义,D3~D1从000B~111B分别指定PC0~PC7脚,D0位为相应的电平高低,0为低电平,1为高电平。
实验总结
所有的实验中最难得还是这个家同等的实验。
在做交通灯的实验时我们遇到了很大的问题,不管我们怎么连线就是不能点亮灯或者点亮了等也不能实现要求,就是灯一直亮而不闪。
即使使用万用表也很难找到问题的所在,最后还是通过退队之间的讨论以及在别的同学的帮助下。
四、8253方波实验
4.1实验要求
一、预习要求
1.熟悉51单片机的结构及编程方法
2.按照要求画出流程图及程序
二、实验目的
了解8253的内部结构、工作原理;了解8253与单片机的接口逻辑;熟悉8253的控制寄存器和初始化编程方法,熟悉8253的6种工作模式。
三、实验内容
1、设计接口电路,编写程序:
使用8253的计数器0和计数器1实现对输入时钟频率的两级分频,得到一个周期为1秒的方波,用此方波控制蜂鸣器,发出报警信号,也可以将输入脚接到逻辑笔上来检验程序是否正确。
2、连接线路,验证8253的功能,熟悉它的使用方法。
4.2实验过程
1、8253引脚图
2、8253工作原理
8253中各通道可有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能。
8253工作方式如下:
(1)工作方式0:
称为计数结束中断方式,当任一通道被定义为工作方式0时,OUTi输出为低电平;若门控信号GATE为高电平,当CPU利用输出指令向该通道写入计数值WR#有效时,OUTi仍保持低电平,然后计数器开始减“1”计数,直到计数值为“0”,此刻OUTi将输出由低电平向高电平跳变,可用它向CPU发出中断请求,OUTi端输出的高电平一直维持到下次再写入计数值为止。
(2)工作方式1:
称作可编程单脉冲发生器,进入这种工作方式,CPU装入计数值n后OUTi输出高电平,不管此时的GATE输入是高电平还是低电平,都不开始减“1”计数,必须等到GATE由低电平向高电平跳变形成一个上升沿后,计数过程才会开始。
(3)工作方式2:
称作速率波发生器,进入这种工作方式,OUTi输出高电平,装入计数值n后如果GATE为高电平,则立即开始计数,OUTi保持为高电平不变;待计数值减到“1”和“0”之间,OUTi将输出宽度为一个CLKi周期的负脉冲,计数值为“0”时,自动重新装入计数初值n,实现循环计数。
(4)工作方式3:
称作方波发生器,任一通道工作在方式3,只在计数值n为偶数,则可输出重复周期为n、占空比为1:
1的方波。
进入工作方式3,OUTi输出低电平,装入计数值后,OUTi立即跳变为高电平。
(5)工作方式4:
称作软件触发方式,进入工作方式4,OUTi输出高电平。
装入计数值n后,如果GATE为高电平,则立即开始减“1”计数,直到计数值减到“0”为止,OUTi输出宽度为一个CLKi周期的负脉冲。
(6)工作方式5:
称为硬件触发方式,进入工作方式5,OUTi输出高电平,硬件触发信号由GATE端引入。
开始时GATE应输入为0,装入计数初值n后,减“1”计数并不工作,一定要等到硬件触发信号由GATE端引入一个正阶跃信号,减“1”计数才会开始,待计数值计到“0”,OUTi将输出负脉冲,其宽度固定为一个CLKi周期,表示定时时间到或计数次数到。
(7)工作方式6:
⑴直接读计数器:
输出锁存器在非锁存状态会跟随计数器计数的变化而变化,直接读计数器是从锁存器得到计数器的当前值。
⑵先锁存再读取:
①通过方式选择控制字对指定通道(SC1、SC0)的计数值锁入锁存器(RL1RL0=00),锁存器一旦锁存了当前计数值,就不再随计数器变化直到被读取。
②读计数器通道(有锁存器)。
3、主程序流程图
4、中断程序流程图
5、8253方波仿真图
思考题
1、8253还有其它五种工作方式,其它工作模式下,硬件如何设计?
程序如何编写?
答:
(1)计数初值何时起作用:
计数初值写入计数初值寄存器(CR)后,要经过一个CLK输入后,计数执行部件(CE)才开始计数。
(2)门控信号的影响:
门控信号是计数允许信号。
高电平允许,即GATE=1,允许对CLK计数。
上升沿允许这种情况需使用计数器内部的一个边沿触发器。
只要当初边沿触发器置1后,计数器才对CLK计数。
GATE上升沿使边沿触发器置1,GATE下降沿使边沿触发器自动清0.模式0,2,3,4,高电平允许,模式1、5,上升沿允许。
(3)OUT信号的状态:
写入控制字后,OUT的状态。
计数过程中,OUT的状态。
计数终了,OUT的状态。
(4)技术操作是否可以重复,或称计数初值是否可以自动装入:
a.不可重复b自动重复c条件重复。
(5)计数器的工作模式:
计数器在CLK的下降沿使计数值减1,计数值减至0时,“计数到”。
写入初值0时,代表最大初值65536。
模式0:
计数结束产生中断。
模式1:
可重复触发的单稳态触发器。
模式2:
分频器模式。
3:
方波发生器模式4:
软件触发的选通信号发生器。
模式5:
硬件触发的选通信号发生器。
实验总结
在该实验中我们要注意对8253的使用,掌握8253的使用方法,明白其工作原理,了解8253芯片的各个引脚。
在编写程序时,要注意8253的初始化,注意不要把初始化部分写到循环程序中去了,否则就会在上电后一直对8253进行初始化操作,不能实现功能。
还有在编写延迟程序时要留够延迟时间,否则也会不能正确实现功能。
五、继电器控制实验
5.1实验要求
一、预习要求
1.了解继电器/光偶器件的原理及应用
2.认真预习本节实验内容,尝试自行编写程序。
二、实验目的
1、掌握使用继电器控制外设的基本方法和编程。
2、掌握光耦的工作原理,熟悉它的使用方法。
三、实验内容
1、预备知识
自动化控制设备中,存在一个电子与电气电路的互连问题,一方面,电子电路要控制电气电路的执行元件,如:
电动机、电磁铁、电灯等;一方面又要为电子电路提供良好的电隔离,以保护电子电路和人身安全,减少干扰源。
继电器就起这个桥梁作用。
2、实验过程:
设计接口电路,通过继电器控制直流电机转动、停止。
四、实验原理
参考电路原理图如下:
(继电器控制原理图)
五、实验设备
实验室电脑,集成软件及STARES598实验仪
六、实验注意事项
1.注意在集成环境下程序调试的方法
2.注意保护实验箱
七、实验步骤
继电器控制
1、设计接口电路,分析工作原理。
2、编写并运行程序,利用拨动开关控制直流电机转动、停止。
思考题
1.列写出所编程序及流程图并做出注释
CLRP2.7;使译码器无效
JIDIAN_1:
SETBP2.6
CJNER4,#05H,JIDIAN_2;按键按下后立即跳出
JBP3.1,JIDIAN_1;JB位条件转移
MM:
CLRP2.6
JNBP3.1,MM
JBP3.1,JIDIAN_1
JIDIAN_2:
RET
END
实验总结
第五次试验我只做了继电器的实验,主要通过继电器来控制电机。
由于器材的限制没有电机,我用一个发光二极管来代替。
当开关合上导通时,二极管发光,开关断开时二极管熄灭,这样能模拟电动机的工作状态。
实验焊接时需要非常小心,因为继电器的引脚有6个,不是都需要焊接,有几个引脚的功能是一样的,刚还是由于没有注意到这点,实验做不出来,后来在别人的指导下,找出错误,完成本次试验。
单片机课程设计总结:
本次单片的几个实验是我们受益良多,大大加深了我们对专业知识的认识和了解,为了本次的实验我们小组投入了大量的精力和时间,为此我们查找了很多的资料,硬件软件都是我们时刻解决的难题,通过一系列的学习是我们的实验有了很大的进展,虽然我们对其中有的环节不太了解和熟悉,但是我们已在原有的基础上有了进一步的提高,首先感谢储老师对我们悉心的引导,我们才能懂得把所学的知识与实验相结合,这给了我们很大的启示。
经过单片机的五次实验让我们受益匪浅.此次实验是通过团队合作进行软件与硬件的设计相结合。
这次试验即考察了我们的焊接水平与编程能力,又考察了我们的团队合作,对于我们电子自动化的学生而言焊接是不成问题,也很顺利;可到了编程就出现了很大的问题。
本来还以为实验会很简单,但等到实际操作起来才知道它的复杂性,首先我们不知道怎么去理解实验题目,怎样更好的设计程序而达到实验的要求。
其次,队员的每个人的想法都不同,导致实验并没有想象中的那么顺利。
最终我们通过讨论明确了分工以及向别的小组同学咨询,解决了这些问题。
单片机技术课程已经很早结束了,所以后期很多专业知识已经不是很记得.不过经过我们一步步的努力,最终花费的时间与精力终于没有白费,效果渐渐地出现了,终于一步步地完成了本次课程设计实验。
总而言之,片机课程设计对于我们有很大的帮助,我们从中受益匪浅。
最后我们要感谢储忠老师的辛勤教导,还有老师对我们的试验安排,让我们有足够的时间可以做好实验。
附录
/**********************************************************************************
*文件名:
keyscan.c
**********************************************************************************/
#include
#include"keyscan.h"
#include"hc138.h"
#include"X8253.h"
#include"X8255.h"
#include"delay.h"
#defineucharunsignedchar
uchari=0;
/*
*函数名:
exti0_init
*描述:
外部中断0初始化边沿触发方式用于按键
*采用查询方式会造成按键响应不及时!
!
*输入:
无
*输出:
无
*/
voidinit_exti0(void)
{
EA=1;
EX0=1;
IT0=1;
}
/*
*函数名:
mode_select
*描述:
74HC138、8255和8253各模块程序的切换
*输入:
无
*输出:
无
*/
voidmode_select(void)
{
/*if(i==0)
{
HC_E=0;
CS_8253=0;
CS_8255=0;
}*/
/*if(i==1)
{
HC_E=1;
HC_water_lights();
}*/
if(i==0)
{
//HC_E=0;
//Traffic_lights();
PA=0x00;
}
/*if(i==3)
{
HC_E=0;
X8253_action();
}*/
}
/*
*函数名:
exti_0
*描述:
按键中断函数用于对标志位i加1操作
*输入:
无
*输出:
无
*/
voidexti_0(void)interrupt0
{
i=i+1;
if(i==4)i=1;
}
#include"delay.h"
#include"hc138.h"
/*
*函数名:
HC_water_lights
*描述:
使用74HC138控制流水灯
*输入:
uintz
*输出:
无
*/
voidHC_water_lights()
{
HC_C=0;
HC_B=0;
HC_A=0;
delay_ms(250);
HC_C=0;
HC_B=0;
HC_A=1;
delay_ms(250);
HC_C=0;
HC_B=1;
HC_A=0;
delay_ms(250);
HC_C=0;
HC_B=1;
HC_A=1;
delay_ms(250);
HC_C=1;
HC_B=0;
HC_A=0;
delay_ms(250);
HC_C=1;
HC_B=0;
HC_A=1;
delay_ms(250);
HC_C=1;
HC_B=1;
HC_A=0;
delay_ms(250);
HC_C=1;
HC_B=1;
HC_A=1;
delay_ms(250);
HC_C=1;
HC_B=1;
HC_A=1;
delay_ms(250);
HC_C=1;
HC_B=1;
HC_A=0;
delay_ms(250);
HC_C=1;
HC_B=0;
HC_A=1;
delay_ms(250);
HC_C=1;
HC_B=0;
HC_A=0;
delay_ms(250);
HC_C=0;
HC_B=1;
HC_A=1;
delay_ms(250);
HC_C=0;
HC_B=1;
HC_A=0;
delay_ms(250);
HC_C=0;
HC_B=0;
HC_A=1;
delay_ms(250);
HC_C=0;
HC_B=0;
HC_A=0;
delay_ms(250);
voidTraffic_lights
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计