单片机课程设计.docx

上传人:b****4 文档编号:3508627 上传时间:2022-11-23 格式:DOCX 页数:29 大小:1.04MB
下载 相关 举报
单片机课程设计.docx_第1页
第1页 / 共29页
单片机课程设计.docx_第2页
第2页 / 共29页
单片机课程设计.docx_第3页
第3页 / 共29页
单片机课程设计.docx_第4页
第4页 / 共29页
单片机课程设计.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

单片机课程设计.docx

《单片机课程设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计.docx(29页珍藏版)》请在冰豆网上搜索。

单片机课程设计.docx

单片机课程设计

合肥学院电子信息与电气工程专业

单片机课程设计

 

课题名称:

单片机课程设计

学生班级:

08级自动化

(1)班

学生学号:

111111

学生姓名:

啊啊啊

指导教师:

成绩评定:

2011年6月20日

前言

单片机应用技术课程为一门理论与实践相结合的课程,本课程安排的实验旨在培养学生软硬件开发能力,用编程语言及硬件设备实现串、并行通讯、计数/定时、A/D、D/A等硬件接口的功能,进一步加深对常用硬件芯片的了解和应用,以及学习用单片机解决实际问题。

实验要求学生利用编程语言及硬件设备实现单片机的方案设计、程序编写、硬件连接、调试,从中体会具体硬件接口的应用技巧,进一步理解硬件接口芯片,逐步掌握单片机系统的开发和应用方法。

使用Protues能使我们在没有用实物连接的情况下允许学生在Windows操作系统下编写、编译、连接、错误定位、调试、观察、修改系统。

通过本实验的学习,学生可以熟悉各种类型的接口芯片,汇编语言程序的编写、调试,充分锻炼动手及编程能力。

 

一、构建单片机最小系统版和实验环境熟悉

第一部分:

实验要求

一、预习要求

1.构建单片机最小系统,熟悉51单片机的结构及编程方法

2.按照程序流程图编写出程序

二、实验目的

1.熟悉星单片机最小系统的组成和工作原理,熟悉KeilC51集成环境软件的使用方法。

2.熟悉MCS51汇编指令,能自己编写简单的程序,控制硬件。

三、实验内容

1、单片机最小系统实验:

(1)、熟悉单片机最小系统的组成和工作原理,熟悉KeilC51集成环境软件的安装和使用方法。

(2)、做出单片机最小系统的组成原理图,分析其各构成单元的工作原理。

2、存储单元数据传输实验

(1)、熟悉MCS51汇编指令。

(2)、进行存储单元数据传输实验,编写程序。

(3)、运行程序,验证译码的正确性。

第二部分:

实验过程

一、单片机最小系统实验

1、最小系统版的组成

时钟电路复位电路,电源电路,程序下载电路,串口通信电路,数码管显示电路。

USB下载端口模块电源模块

数码管显示模块单片机最小系统原理模块

2、使用Protues绘制单片机最小系统原理图

3、单片机实物图

4、分析单片机最小系统的工作原理

(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。

一、编译环境的熟悉

实验中我们使用keil4环境编译程序。

其窗口界面如下:

三、程序的串烧

1、STC单片机的程序烧写与运行

1.1打开STC-ISPV483软件的exe文件,如下图所示:

步骤1:

选择要下载的单片机型号,如下图所示:

步骤2:

打开要下载的程序文件,注意这里下载的需要是扩展名为.hex或.bin的文件,这里的图片是默认的测试文件

再双击test-hex文件夹得到以下图片:

选择twoball-2k.bin,点击打开。

步骤3:

选择端口

首先把实验板通过USB延长线连接到电脑上,然后右击“我的电脑”,选择“管理”,单击设备管理器,点击端口前的加号将其展开,当发现这个时,说明驱动的安装和实验板的下载电路应该是没什么问题的,这里的可以看出端口是COM4。

其次是选择好端口,如下图所示:

步骤4:

下载程序到单片机(注意的是STC的单片机需要重新给系统上电才能下载到单片机)

点击下图所示的Download/下载按钮

当出现下图所示的提示时,如果实验板是在通电的情况下,则按一下实验板的开关稍等两秒左右,再按一下开关重新给实验板上电,稍等片刻就下载成功。

如果实验板是在不通电的情况下,则按一下实验板的开关重新给实验板上电,稍等片刻就下载成功

下载成功的提示如下图:

2、系统供电

2.1、系统供电可以采用USB供电方式,USB输出电流最大在500MA左右,能满足一般系统的要求,如果要接大的直流电机或步进电机之类的,需要根据实际情况选择外部电源供电。

2.2、系统供电也可采用外部电源输入6.5V-15V的直流电压,板子上自带LM7805稳压器,适合多种供电场合。

3、各个实验需要注意的事项:

流水灯实验:

在学习板上已经集成8个LED灯,用于做流水灯实验;由原理图可以看出:

P1口由于加了流水灯,所以P1口相当于加了上拉电阻,驱动能力更强。

同时调试程序时,也可把8个LED当做指示灯用。

四、思考题

1、在单片机最小系统的构建中,应注意哪些因素。

答:

(1)51单片机现在多用AT89S51,不用晶振,晶体加两个电容就可以了。

(2)复位电路中的电容是虑波稳定作用,并联在一个电阻上,一端接地,一端通过开关接高电位就可以了。

(3)晶振:

一般选用11.0592M,因为可以准确地得到9600波特率和19200波特率。

二、跑马灯实验及74LS138译码

第一部分:

实验要求

一、预习要求

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、运行程序,验证译码的正确性。

第二部分:

实验过程

一、单片机直接实现跑马

1、跑马灯仿真图

2、跑马灯对应程序的流程图

N

Y

 

3、程序代码

ORG0000H

LJMPSTART

ORG0100H

START:

MOVSP,#60H

MOVA,#0FFH;给A赋值

CLRC;C清零

START1:

RLCA;A循环左移一位

MOVP1,A;初始化PA口

ACALLDelay;调用延时

SJMPSTART1;循环执行START1

Delay:

MOVR5,#2;延时

Delay1:

MOVR6,#0

Delay2:

MOVR7,#0

DJNZR7,$

DJNZR6,Delay2

DJNZR5,Delay1

RET

END

二、通过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、对应程序流程图

 

 

N

 

Y

 

4、程序代码

ORG0000H

AJMPmain

ORG0080H

AAEQUP1.0

BBEQUP1.1

CCEQUP1.2;定义P1.0,P1.1,P1.2分别为AA,BB,CC以便在程序中描述

MAIN:

CLRCC;CC清零状态1A,B,C为000

CLRBB;BB清零

CLRAA;AA清零

CALLDELAY;调用延时

CLRCC;CC清零状态2A,B,C为001

CLRBB;BB清零

SETBAA;AA赋值1

CALLDELAY;调用延时

CLRCC;CC清零状态3A,B,C为010

SETBBB;BB赋值1

CLRAA;AA清零

CALLDELAY;调用延时

CLRCC;CC清零状态4A,B,C为011

SETBBB;BB赋值1

SETBAA;AA赋值1

CALLDELAY;调用延时

SETBCC;CC赋值1状态5A,B,C为100

CLRBB;BB清零

CLRAA;AA清零

CALLDELAY;调用延时

SETBCC;CC赋值1状态6A,B,C为101

CLRBB;BB清零

SETBAA;AA赋值1

CALLDELAY;调用延时

SETBCC;CC赋值1状态7A,B,C为110

SETBBB;BB赋值1

CLRAA;AA清零

CALLDELAY;调用延时

SETBCC;CC赋值1状态8A,B,C为111

SETBBB;BB赋值1

SETBAA;BB赋值1

CALLDELAY

JMPMAIN;

DELAY:

MOVR5,#2

Delay1:

MOVR6,#0

Delay2:

MOVR7,#0

DJNZR7,$

DJNZR6,Delay2

DJNZR5,Delay1

RET

END

三、思考题

1、在单片机系统中,74LS138通常用来产生片选信号,应如何处理?

答:

取三根底地址线,接到74LS138译码器的输入端,译码产生,8个使能控制信号。

四、实验问题及总结

没有74LS138的跑马灯实验是直接在系统板上实现的所以只有烧录程序就行了,有74LS138的跑马灯实验要注意LED灯的接法,LED灯有共阴和共阳两种接法,在这个实验中,我采用了共阳接法,并接电源供电。

对于利用74LS138来控制LED灯的实验,同时要注意一下74LS138的引脚。

 

三、8255A控制交通灯实验

第一部分:

实验要求

一、预习要求

1.熟悉51单片机的结构及编程方法

2.按照要求画出流程图及程序

二、实验目的

1、了解8255芯片的工作原理,熟悉其初始化编程方法以及输入、输出程序设计技巧。

学会使用8255并行接口芯片实现各种控制功能,如本实验(控制交通灯)等。

2、熟悉8255内部结构和与单片机的接口逻辑,熟悉8255芯片的3种工作方式以及控制字格式。

3、尝试自行编写程序,填写实验报告。

三、实验内容

1、设计8255接口电路,编写程序:

使用8255的PA0..2、PA5..7控制LED指示灯,实现交通灯功能。

2、连接线路验证8255的功能,熟悉它的使用方法。

第二部分:

实验过程

1、8255引脚图

2、8255工作原理

8255共有三种工作方式:

(1)工作方式0:

这是8255A中各端口的基本输入/输出方式。

它只完成简单的并行输入/输出操作,CPU可从指定端口输入信息,也可向指定端口输出信息,如果三个端口均处于工作方式0,则可由工作方式控制字定义16种工作方式的组合

(2)工作方式1:

被称作选通输入/输出方式。

在这种工作方式下,数据输入/输出操作要在选通信号控制下完成。

(3)工作方式2:

被称作带选通的双向传送方式。

8255A中只允许端口A处于工作方式2,可用来在两台处理机之间实现双向并行通信。

其有关的控制信号由端口C提供,并可向CPU发出中断请求信号。

 

3、主程序流程图

 

4、8255A交通灯仿真图

5、8255A交通灯实物图

6、8255A交通灯程序代码

ORG0000H

LJMPSTART

ORG0003H;外部中断0的中断程序入口地址

LJMPKEY1;转外部中断0中断服务程序

ORG0013H;外部中断1的中断程序入口地址

LJMPKEY2;转外部中断1中断服务程序

START:

SETBIT0;INTO为边沿触发

SETBIT1

SETBEX0;启动T0

SETBEX1

SETBEA;开总中断

MOVDPTR,#03FFH

MOVA,#80H

MOVX@DPTR,A

S1:

MOVA,#10111101B

MOVDPTR,#00FFH

MOVX@DPTR,A;东西红灯亮,南北绿灯亮

CALLDELAY5S;5秒延时

S2:

MOVA,#10111011B;东西红灯亮,南北黄灯亮

MOVDPTR,#00FFH

MOVX@DPTR,A

CALLDELAY1S;延时0.5秒

MOVA,#10111111B;东西红灯亮,南北黄灯灭,黄灯第一次闪烁

MOVDPTR,#00FFH

MOVX@DPTR,A

CALLDELAY1S

MOVA,#10111011B;东西红灯亮,南北黄灯亮

MOVDPTR,#00FFH

MOVX@DPTR,A

CALLDELAY1S

MOVA,#10111111B;东西红灯亮,南北黄灯灭,黄灯第二次闪烁

MOVDPTR,#00FFH

MOVX@DPTR,A

CALLDELAY1S

MOVA,#10111011B;东西红灯亮,南北黄灯亮

MOVDPTR,#00FFH

MOVX@DPTR,A

CALLDELAY1S

MOVA,#10111111B;东西红灯亮,南北黄灯灭,黄灯第次闪烁

MOVDPTR,#00FFH

MOVX@DPTR,A

CALLDELAY1S

S3:

MOVA,#11100111B;东西绿灯亮,南北红灯亮

MOVDPTR,#00FFH

MOVX@DPTR,A

CALLDELAY5S

S4:

MOVA,#11010111B;东西黄灯亮,南北红灯亮

MOVDPTR,#00FFH

MOVX@DPTR,A

CALLDELAY1S

MOVA,#11110111B;东西黄灯灭,南北红灯亮,第一次闪烁

MOVDPTR,#00FFH

MOVX@DPTR,A

CALLDELAY1S

MOVA,#11010111B;东西黄灯亮,南北红灯亮

MOVDPTR,#00FFH

MOVX@DPTR,A

CALLDELAY1S

MOVA,#11110111B;东西黄灯灭,南北红灯亮,第二次闪烁

MOVDPTR,#00FFH

MOVX@DPTR,A

CALLDELAY1S

MOVA,#11010111B;东西黄灯亮,南北红灯亮

MOVDPTR,#00FFH

MOVX@DPTR,A

CALLDELAY1S

MOVA,#11110111B;东西黄灯灭,南北红灯亮,第三次闪烁

MOVDPTR,#00FFH

MOVX@DPTR,A

CALLDELAY1S

AJMPS1;跳转到状态S1状态,循环

DELAY5S:

MOVR7,#100;延时5秒

L0:

MOVR6,#100

L1:

MOVR5,#248

L2:

DJNZR5,L2

DJNZR6,L1

DJNZR7,L0

RET

DELAY1S:

MOVR4,#200;延时0.5秒

L3:

MOVR3,#248

L4:

DJNZR3,L4

DJNZR4,L3

RET

实验问题及总结

在做交通灯的实验时我们遇到了很大的问题,不管我们怎么连线就是不能点亮灯或者点亮了等也不能实现要求,就是灯一直亮而不闪。

于是我们很困惑,不明白问题出在何处,后来我们用万用表测量了各引脚的通断,发现有2个引脚换连在了一起,虽然连点很小,不注意看几乎不能亮但是最终还是通过万用表发现了问题并解决了。

四、8253方波实验

第一部分:

实验要求

一、预习要求

1.熟悉51单片机的结构及编程方法

2.按照要求画出流程图及程序

二、实验目的

了解8253的内部结构、工作原理;了解8253与单片机的接口逻辑;熟悉8253的控制寄存器和初始化编程方法,熟悉8253的6种工作模式。

三、实验内容

1、设计接口电路,编写程序:

使用8253的计数器0和计数器1实现对输入时钟频率的两级分频,得到一个周期为1秒的方波,用此方波控制蜂鸣器,发出报警信号,也可以将输入脚接到逻辑笔上来检验程序是否正确。

2、连接线路,验证8253的功能,熟悉它的使用方法。

第二部分:

实验过程

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方波仿真图

6、8253方波实物图

7、8253方波程序代码

ORG0000H

AJMPSTART

ORG000BH;T1中断服务程序入口地址

AJMPT0INT

START:

MOVDPTR,#0FFFFH

MOVA,#00100101B;计数器0,只读写计数器高字节,方式2,BCD码计数

MOVX@DPTR,A

;***********计数器0对P1.0口送来的脉冲进行100次分频*********

MOVA,#01H;写计数器0的高字节

MOVDPTR,#3FFFH

MOVX@DPTR,A

MOVA,#01010111B;计数器1,只读写计数器低字节,方式3,BCD码计数

MOVDPTR,#0FFFFH

MOVX@DPTR,A

;***********计数器1对计数器0送来的脉冲进行10次分频*********

MOVA,#10H

MOVDPTR,#7FFFH

MOVX@DPTR,A

MOVSP,#60H;初始化程序,把堆栈的栈顶部上调,以避开工作寄存器区

MOVTMOD,#00H;设置T0工作于定时方式1

MOVTH0,#0F0H;设置加1计数器的计数初值高字节

MOVTL0,#0CH;设置加1计数器的计数初值低字节

SETBTR0

SETBET0

SETBEA

MAIN:

AJMPMAIN

T0INT:

CPLP1.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1