单片机实验报告.docx

上传人:b****4 文档编号:12196289 上传时间:2023-04-17 格式:DOCX 页数:44 大小:113.57KB
下载 相关 举报
单片机实验报告.docx_第1页
第1页 / 共44页
单片机实验报告.docx_第2页
第2页 / 共44页
单片机实验报告.docx_第3页
第3页 / 共44页
单片机实验报告.docx_第4页
第4页 / 共44页
单片机实验报告.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

单片机实验报告.docx

《单片机实验报告.docx》由会员分享,可在线阅读,更多相关《单片机实验报告.docx(44页珍藏版)》请在冰豆网上搜索。

单片机实验报告.docx

单片机实验报告

 

单片机原理及应用系统设计

实验报告

 

专业:

电子信息工程

班级:

信息0701

学号:

09003070111

姓名:

陈杰

 

目录

 

1.设计内容2

2.设计方案2

3.总体设计4

4.功能描述5

5.功能测试9

6.系统仿真原理图9

7.试验目的9

8、参考文献10

9.附件:

10

 

1.设计内容:

本设计是在车辆通行繁忙的十字交叉路口设置的交通灯控制系统,其特点是:

在十字路口的支线、干线的车辆通行时间不等,同时设有道路应急控制。

具体的情况是:

在正常的情况下,通行道路时间设为15秒,禁行道路时间设为10秒;当通行线路绿转黄灯时设为5秒显示,并且黄灯要闪烁;并且设置中断程序,表示救护车来临时的应急状态,此时东西,南北道路都变为红灯并显示10秒计时;并用16×16点阵显示的相应字符,计时完毕后恢复之前的状态。

道路通行与禁止通行以及救护车来临时的各个状态用16×16点阵显示相应字符来显示;

设计中以MCS-51单片机为主控器,作适当的存储器,显示器,、六盏LED指示灯的扩展成一个路口交通灯控制系统。

2.设计方案:

(1)硬件设计(硬件结构图如下图所示)

 

硬件系统在该系统中的作用主要是进行数据的传送,特殊状态的控制,有关逻辑的计算,并且提供显示,此外系统运行的安全可靠性要靠硬件系统来实现。

硬件系统的设计主要包括下面的工作:

东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。

红灯亮禁止通行,绿灯亮允许通行。

黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西、南北两干道的公共停车时间。

指示灯燃亮的方案如表

2。

60S

5S

80S

5S

……

东西道

红灯亮

黄灯亮

绿灯亮

黄灯亮

……

南北道

绿灯亮

黄灯亮

红灯亮

黄灯亮

……

 

表2

表2说明:

(1)当东西方向为红灯,此道车辆禁止通行,东西道行人可通过;南北道为绿灯,此道车辆通过,行人禁止通行。

时间为15秒。

(2)黄灯闪烁5秒,警示车辆和行人红、绿灯的状态即将切换。

(3)当东西方向为绿灯,此道车辆通行;南北方向为红灯,南北道车辆禁止通过,行人通行。

时间为10秒。

(4)这样如上表的时间和红、绿、黄出现的顺序依次出现这样行人和车辆就能安全畅通的通行。

硬件说明:

a:

用8段数码管动态显示东西和南北道路的禁止与通行秒数。

对应4位8段数码管,按地址输出相应数据,就可以实现对显示器的控制。

8位段码、8位位码是由两片74LS374输出。

位码经MC1413倒相驱动后,选择相应显示位。

b:

配置6个LED显示器:

分别表示东西和南北方向道路的红、绿、黄灯。

分别循环表示4种状态.

c:

用实验箱上的16×16LED点阵显示器,编写显示符号字符程序,标志道路通行情况的显示.

d:

用实验箱上的负脉冲发生器,作为外部中断的输入信号。

控制外部中断的发生。

(2)软件设计

设计说明:

因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化规律。

假设一个十字路口为东西南北走向。

初始状态0为东西红灯,南北红灯。

然后转状态1南北绿灯通车,东西红灯。

过一段时间转状态2,南北绿灯转亮黄灯闪几次,延时5秒,东西仍然红灯。

再转状态3,东西绿灯通车,南北红灯。

过一段时间转状态4,东西绿灯转亮黄灯闪几次,延时5秒,南北仍然红灯。

最后循环至状态1。

各个状态对应显示字符。

在该系统的软件设计中用到的是模块程序设计,主要的模块程序是显示的模块程序,它包括显示红绿灯的时间倒计时和各个状态的表示字符的转换。

通过软件分块的设计使系统功能明了容易实现.

正常显示状态:

动态显示车辆通行时间,其格式大致为(包括应急状态时的显示);以及显示响应字符:

 

南北通行时间显示位

3.总体设计:

A:

首先根据该设计的特点,把出现的情况进行分析整理,得到以下几种情况:

(1)通行道:

占时15秒,显示如上图所示的位码;

(2)禁行道:

占时10秒,显示如上图所示的位码;

(3)同时通行道倒计时至5秒时,禁行道跳转5秒倒计时;

(4)在黄灯转红灯时,黄灯闪烁,变黄灯延时五秒变红灯;

(5)救护车来临时,都变为红灯占时10秒,能恢复之前状态。

B:

根据以上的情况分析,经过思路的整理得到了整体的设计框架图,及程序流程图

C:

我们的系统设计过程中,实验系统主要采用的是模块化设计。

这次系统设计中用到的模块是:

1红绿灯显示倒计时模块,

2黄灯闪烁显示模块,

316×16点阵显示字符显示模块,

4中断急救车到来中断及显示模块,

5延时模块。

这次系统设计过程中要将这几个模块按照逻辑与设计要求把它们与8031做连接,实现以上特点。

D:

这次设计当中初步决定所需要实验箱接口:

16×16LED点阵,16×16_CS接CS3;外部中断INT0

负脉冲接P3.2;LED灯显示,P0-P5接L0-L5;倒计时显示8255_CS接CSO.

E:

硬件设计:

电路图为附件。

F:

软件设计:

显示程序,显示程序为主程序,子程序有延时程序。

4.功能描述:

本系统由单片机系统、发光二极管、交通灯演示系统、中断系统、倒计时显示系统、点阵显示系统组成。

1.系统硬件电路的设计

整套电路系统由控制系统模块、通行灯输出控制显示模块、时间显示模块、点阵显示模块和急救特种车辆控制模块等组成。

1、主控制系统

由主程序的四个状态循环显示程序控制。

并设置一个外部中断,P3.2口接受一个负脉冲的控制,救护车通过时使用外中断INT0口(P3.2)。

Start:

movSP,#70

movTCON,#01h;downedgeIT0

movIE,#81h;enableEA,EX0

movaa,#0

movbb,#0

movcc,#0

movdd,#0

movee,#0

movff,#0

setbSR;南北,东西均红灯

clrSY

clrSG

setbER

clrEY

clrEG

clrSTOP

jnbSTOP,wrld

callAllRed

2、通行灯输出控制

道口交通灯指示采用红黄绿色发光二极管。

单片机的P1.0-P1.5口用于控制发光二级管L0-L5,用于控制东西南北方向的红绿灯状态转换。

分别由各个状态下的程序控制。

3、时间显示模块

道口通行剩余时间采用红色8段LED发光数码管显示,采用共阳数码管。

由倒计时显示8255_CS接CSO来扩展。

分别由程序中的位显示控制和段显示控制程序来设定计时功能。

同时调用延时程序控制响应显示时间。

4、救护车到来自动控制模块

在救护车到来时能自动关闭所有灯,让救护车通过。

设计中采用外部中断作为救护车到来的发生器,使用实时中断来影响救护车的通行要求。

由外部中断INT0负脉冲接P3.2来接受外部中断信号。

AllRed:

pusha

mova,r0

pusha

mova,r1

pusha

mova,r2

pusha

mova,r4

pusha

mova,r5

pusha

pushSR

pushSY

pushSG

pushER

pushEY

pushEG

pushRowLow

pushRowHigh

pushColLow

pushColHigh

pushOUTBIT

pushOUTSEG

pushLEDBuf

pushLEDBuf+1

pushLEDBuf+2

pushLEDBuf+3

pushLEDBuf+4

pushLEDBuf+5

pushLEDBuf+6

pushLEDBuf+7

pushLEDBuf+8

pushLEDBuf+9

pushLEDBuf+10

pushLEDBuf+11

pushLEDBuf+12

pushLEDBuf+13

pushLEDBuf+14

pushLEDBuf+15

pushbitmask

pushbitmask+1

pushbase

pushbase+1

pushPSW

setbSR

clrSY

clrSG

setbER

clrEY

clrEG

clrSTOP

movr2,#10

callmainc

popPSW

popbase+1

popbase

popbitmask+1

popbitmask

popLEDBuf+15

popLEDBuf+14

popLEDBuf+13

popLEDBuf+12

popLEDBuf+11

popLEDBuf+10

popLEDBuf+9

popLEDBuf+8

popLEDBuf+7

popLEDBuf+6

popLEDBuf+5

popLEDBuf+4

popLEDBuf+3

popLEDBuf+2

popLEDBuf+1

popLEDBuf

popOUTSEG

popOUTBIT

popColHigh

popColLow

popRowHigh

popRowLow

popEG

popEY

popER

popSG

popSY

popSR

popa

movr5,a

popa

movr4,a

popa

movr2,a

popa

movr1,a

popa

movr0,a

popa

ret

5.功能测试:

1.状态灯显示测试

当电路连接完毕后,将写好的测试程序刷写到芯片内,通电即可检测。

2.数码管的测试

将串口的和电路板上的接口连接,将写好的测试程序刷写到芯片内,开电源即可测试。

3.整体电路测试

系统上电,刷写好程序即可开始测试,观测一个周期(共计S1~S4四个状态,默认一个

周期)灯的显示状态是否正常,同时观察倒计的计数是否正常。

6.系统仿真原理图:

7.试验目的:

本次试验是《单片机原理与应用系统设计》课程的综合训练,我们通过理论学习,课题选择,资料查阅,软、硬件设计,系统调试等环节,巩固和提高所学的知识及应用水平.学会从提出问题,观察与分析问题,到最终解决问题科学方法.培养我们严谨的工作作风,务实的工作态度。

为今后的毕业设计、及从事微机控制系统的设计与维护奠定坚实的基础。

本设计的意义在于通过具体的控制系统的设计,掌握微机控制系统设计的一般方法和处理问题的思路,特别是一些常用的技术手段。

使我们能在实践教学环境中累积设计经验,开拓思维空间,全面提高个人的综合能力。

通过这次试验,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。

使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。

8.参考文献:

[1]凌玉华单片机原理及应用系统设计长沙:

中南大学出版社,2006

[2]李朝青.单片机原理及接口技术(修订版).北京:

北京航空航天大学出版社,1998

9.附件:

程序源代码:

RowLowequ0B002h;行低八位地址

RowHighequ0B003h;行高八位地址

ColLowequ0B000h;列低八位地址

ColHighequ0B001h;列高八位地址

bitmaskequ40h

baseequ42h

Flashequ0;LED状态

STOPequ1

SRequp1.0;南北红灯

SYequp1.1;南北黄灯

SGequP1.2;南北绿灯

ERequP1.3;东西红灯

EYequP1.4;东西黄灯

EGequp1.5;东西绿灯

OUTBITequ08002h;位控制口

OUTSEGequ08004h;段控制口

LEDBufequ60h;显示缓冲

aaequ30h

bbequ31h

ccequ32h

ddequ33h

eeequ34h

ffequ35h

ggequ36h

ljmpStart

org3

setbSTOP;南北,东西均红灯

reti

maina:

movbitmask,#0

movbitmask+1,#0

;清屏

mova,#00h;列驱动低有效

movdptr,#RowLow

movx@dptr,a

movdptr,#RowHigh

movx@dptr,a

mova,#0ffh;行驱动高有效

movdptr,#ColLow

movx@dptr,a

movdptr,#ColHigh

movx@dptr,a

loop0a:

movr4,#200;每个字显示的时间

loopa:

movbitmask,#01;选择显示行

movr5,#16;每行16列

mova,aa;字模的起始地址

movb,#32

mulab

movdptr,#Fonta

adda,dpl

movbase,a

mova,b

addca,dph

movbase+1,a

movr0,#LEDBuf

mova,bb

movb,#16

mulab

movb,a

fillbufa:

mova,b

movdptr,#Tablea

movca,@a+dptr

mov@r0,a

incr0

incb

cjner0,#LEDBuf+16,fillbufa

movr0,#LEDBuf

movr1,#00001000b

nextrowa:

movdptr,#OUTBIT

mova,#0

movx@dptr,a

mova,@r0

movdptr,#OUTSEG

movx@dptr,a

movdptr,#OUTBIT

mova,r1

movx@dptr,a

mova,r1

rra

movr1,a

incr0

cjner1,#80h,nexta

movr1,#00001000b

nexta:

mova,#00h;先关闭显示

movdptr,#RowLow

movx@dptr,a

movdptr,#RowHigh

movx@dptr,a

movdpl,base;取出该行字模

movdph,base+1

clra

movca,@a+dptr

movr6,a

incdptr

clra

movca,@a+dptr

movr7,a

incdptr

movbase,dpl;指向下行字模

movbase+1,dph

movdptr,#ColLow;输出字模数据

mova,r6

cpla

movx@dptr,a

movdptr,#ColHigh

mova,r7

cpla

movx@dptr,a

mova,bitmask;点亮该行

movdptr,#RowLow

movx@dptr,a

mova,bitmask+1

movdptr,#RowHigh

movx@dptr,a

clrc

mova,bitmask

rlca

movbitmask,a

mova,bitmask+1

rlca

movbitmask+1,a;指向下一行

jnbSTOP,one

callAllRed

cji:

djnzr5,nextrowa

djnzr4,cji;每个字要重复显示

incaa

incbb;指向下个汉字

mova,r2

cjnea,aa,nextchara

ret;

nextchara:

jmploop0a

two:

ljmploopa

mainb:

movbitmask,#0

movbitmask+1,#0

;清屏

mova,#00h;列驱动低有效

movdptr,#RowLow

movx@dptr,a

movdptr,#RowHigh

movx@dptr,a

mova,#0ffh;行驱动高有效

movdptr,#ColLow

movx@dptr,a

movdptr,#ColHigh

movx@dptr,a

loop0b:

movr4,#200;每个字显示的时间

loopb:

movbitmask,#01;选择显示行

movr5,#16;每行16列

mova,cc;字模的起始地址

movb,#32

mulab

movdptr,#Fontb

adda,dpl

movbase,a

mova,b

addca,dph

movbase+1,a

movr0,#LEDBuf

mova,dd

movb,#16

mulab

movb,a

fillbufb:

mova,b

movdptr,#Tableb

movca,@a+dptr

mov@r0,a

incr0

incb

cjner0,#LEDBuf+16,fillbufb

movr0,#LEDBuf

movr1,#00001000b

nextrowb:

movdptr,#OUTBIT

mova,#0

movx@dptr,a

mova,@r0

movdptr,#OUTSEG

movx@dptr,a

movdptr,#OUTBIT

mova,r1

movx@dptr,a

mova,r1

rra

movr1,a

incr0

cjner1,#80h,nextb

movr1,#00001000b

nextb:

mova,#00h;先关闭显示

movdptr,#RowLow

movx@dptr,a

movdptr,#RowHigh

movx@dptr,a

movdpl,base;取出该行字模

movdph,base+1

clra

movca,@a+dptr

movr6,a

incdptr

clra

movca,@a+dptr

movr7,a

incdptr

movbase,dpl;指向下行字模

movbase+1,dph

movdptr,#ColLow;输出字模数据

mova,r6

cpla

movx@dptr,a

movdptr,#ColHigh

mova,r7

cpla

movx@dptr,a

mova,bitmask;点亮该行

movdptr,#RowLow

movx@dptr,a

mova,bitmask+1

movdptr,#RowHigh

movx@dptr,a

clrc

mova,bitmask

rlca

movbitmask,a

mova,bitmask+1

rlca

movbitmask+1,a;指向下一行

jnbSTOP,two

callAllRed

two:

djnzr5,nextrowb

djnzr4,cjj;每个字要重复显示

inccc

incdd;指向下个汉字

mova,r2

cjnea,cc,nextcharb

ret;

nextcharb:

jmploop0b

cjj:

ljmploopb

mainc:

movbitmask,#0

movbitmask+1,#0

;清屏

mova,#00h;列驱动低有效

movdptr,#RowLow

movx@dptr,a

movdptr,#RowHigh

movx@dptr,a

mova,#0ffh;行驱动高有效

movdptr,#ColLow

movx@dptr,a

movdptr,#ColHigh

movx@dptr,a

movee,#0

movff,#0

loop0c:

movr4,#200;每个字显示的时间

loopc:

movbitmask,#01;选择显示行

movr5,#16;每行16列

mova,ee;字模的起始地址

movb,#32

mulab

movdptr,#Fontc

adda,dpl

movbase,a

mova,b

addca,dph

movbase+1,a

movr0,#LEDBuf

mova,ff

movb,#16

mulab

movb,a

fillbufc:

mova,b

movdptr,#Tablec

movca,@a+dptr

mov@r0,a

incr0

incb

cjner0,#LEDBuf+16,fillbufc

movr0,#LEDBuf

movr1,#00001000b

nextrowc:

movdptr,#OUTBIT

mova,#0

movx@dptr,a

mova,@r0

movdptr,#OUTSEG

movx@dptr,a

movdptr,#OUTBIT

mova,r1

movx@dptr,a

mova,r1

rra

movr1,a

incr0

cjner1,#80h,nextc

movr1,#00001000b

nextc:

mova,#00h;先关闭显示

movdptr,#RowLow

movx@dptr,a

movdptr,#RowHigh

movx@dptr,a

movdpl,bas

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

当前位置:首页 > PPT模板 > 其它模板

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

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