单片机水位控制及矩阵键盘Word文档格式.docx

上传人:b****6 文档编号:8659506 上传时间:2023-05-12 格式:DOCX 页数:12 大小:21.47KB
下载 相关 举报
单片机水位控制及矩阵键盘Word文档格式.docx_第1页
第1页 / 共12页
单片机水位控制及矩阵键盘Word文档格式.docx_第2页
第2页 / 共12页
单片机水位控制及矩阵键盘Word文档格式.docx_第3页
第3页 / 共12页
单片机水位控制及矩阵键盘Word文档格式.docx_第4页
第4页 / 共12页
单片机水位控制及矩阵键盘Word文档格式.docx_第5页
第5页 / 共12页
单片机水位控制及矩阵键盘Word文档格式.docx_第6页
第6页 / 共12页
单片机水位控制及矩阵键盘Word文档格式.docx_第7页
第7页 / 共12页
单片机水位控制及矩阵键盘Word文档格式.docx_第8页
第8页 / 共12页
单片机水位控制及矩阵键盘Word文档格式.docx_第9页
第9页 / 共12页
单片机水位控制及矩阵键盘Word文档格式.docx_第10页
第10页 / 共12页
单片机水位控制及矩阵键盘Word文档格式.docx_第11页
第11页 / 共12页
单片机水位控制及矩阵键盘Word文档格式.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机水位控制及矩阵键盘Word文档格式.docx

《单片机水位控制及矩阵键盘Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机水位控制及矩阵键盘Word文档格式.docx(12页珍藏版)》请在冰点文库上搜索。

单片机水位控制及矩阵键盘Word文档格式.docx

单片机的概念:

单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。

基本特点如下:

芯片虽小,五脏俱全,是单片机主要特点之一。

其内部设有程序存储器、数据存储器、各种接口电路。

而大型的处理器运算速度较高,运算器位数较多,处理能力较强,但需要在外部配置接口电路;

单片机主频一般在100MHZ以下,适合用于独立工作的小型产品之中,引脚数量从几个到百余个。

;

应用简单、灵活,可用汇编语言及C语言开发单片机产品。

单片机的工作过程:

单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程,所谓指令就是把要求单片机执行的各种操作用的命令的形式写下来,这是在设计人员赋予它的指令系统所决定的,一条指令对应着一种基本操作;

单片机所能执行的全部指令,就是该单片机的指令系统,不同种类的单片机,其指令系统亦不同。

为使单片机能自动完成某一特定任务,必须把要解决的问题编成一系列指令(这些指令必须是选定单片机能识别和执行的指令),这一系列指令的集合就成为程序,程序需要预先存放在具有存储功能的部件——存储器中。

存储器由许多存储单元(最小的存储单位)组成,就像大楼房有许多房间组成一样,指令就存放在这些单元里,单元里的指令取出并执行就像大楼房的每个房间的被分配到了唯一一个房间号一样,每一个存储单元也必须被分配到唯一的地址号,该地址号称为存储单元的地址,这样只要知道了存储单元的地址,就可以找到这个存储单元,其中存储的指令就可以被取出,然后再被执行。

程序通常是顺序执行的,所以程序中的指令也是一条条顺序存放的,单片机在执行程序时要能把这些指令一条条取出并加以执行,必须有一个部件能追踪指令所在的地址,这一部件就是程序计数器PC(包含在CPU中),在开始执行程序时,给PC赋以程序中第一条指令所在的地址,然后取得每一条要执行的命令,PC在中的内容就会自动增加,增加量由本条指令长度决定,可能是1、2或3,以指向下一条指令的起始地址,保证指令顺序执行。

(2)三极管

在电路中的主要作用是开关作用,因为单片的电流不可以直接驱动电机转动,所以需要一个开关。

(3)继电器

把电机的工作电源和单片机的工作电源分开,这样在电机的启动和停止时,就不会对单片的程序执行有太大影响。

(4)数码管

显示部分就需要数码管来实现,要注意这是一个共阳的数码管。

(5)电容和电阻

和数码管相接的上拉电阻,因为p0口本身没有上拉电阻,所以电压小需要接上拉电阻。

左边的电阻和电容相连是对单片机进行上电复位用的

(6)按钮开关

代替水位上升和下降,另外的一个功能是设置最低水位和最高水位。

3、原件清单

Design:

单片机水位检测

Created:

05/07/07

Modified:

11/07/13

Resistors

8R1,R3-R8,R10100RM100R

1R21kM100R

Capacitors

1C222ufMaplinRG49D

IntegratedCircuits

1U1AT89C51

Transistors

1Q1NPN

Diodes

1D1DIODE

Miscellaneous

1RL1G2R-14-DC5

三、软件设计

1、设置最高水位

ORG0000H

AJMPMAIN

ORG0013H

AJMPINT

MAIN:

MOVP1,#0FFH

SETBIT1

SETBEA

SETBEX1

CLRP1.7

L1:

JBP1.0,L2

ACALLF

JBP1.0,L1

K1:

JNBP1.0,$

JNBP1.0,K1

MOVP0,#0F8H

LCALLDELAY

MOVR0,#0F8H

L2:

JBP1.1,L3

JBP1.1,L2

K2:

JNBP1.1,$

JNBP1.1,K2

MOVP0,#82H

MOVR0,#82H

L3:

JBP1.2,L4

JBP1.2,L3

K3:

JNBP1.2,$

JNBP1.2,K3

MOVP0,#92H

MOVR0,#92H

L4:

JBP1.3,L5

JBP1.3,L4

K4:

JNBP1.3,$

JNBP1.3,K4

MOVP0,#99H

MOVR0,#99H

L5:

JBP1.4,L6

JBP1.4,L5

K5:

JNBP1.4,$

JNBP1.4,K5

MOVP0,#0B0H

MOVR0,#0B0H

L6:

JBP1.5,L7

JBP1.5,L6

K6:

JNBP1.5,$

JNBP1.5,K6

MOVP0,#0A4H

MOVR0,#0A4H

L7:

JBP1.6,L8

JBP1.6,L7

K7:

JNBP1.6,$

JNBP1.6,K7

MOVP0,#0F9H

MOVR0,#0F9H

L8:

LJMPL1

2、水位检测部分

INT:

JBP1.6,$;

水位上升

SETBP1.7

MOVP0,#0F9H

JBP1.5,$;

2

CJNER0,#0A4H,REL1

AJMPRE1

REL1:

JBP1.4,$;

3

CJNER0,#0B0H,REL2

AJMPRE2

REL2:

JBP1.3,$;

4

CJNER0,#99H,REL3

AJMPRE3

REL3:

JBP1.2,$;

5

CJNER0,#92H,REL4

AJMPRE4

REL4:

JBP1.1,$;

6

CJNER0,#82H,REL5

AJMPRE5

REL5:

JBP1.0,$;

7

MOVP3,#0FFH

JBP1.0,$;

水位下降

JNBP1.0,$

CLRP1.7

MOVP0,#0F8H

RE5:

JBP1.1,$;

RE4:

RE3:

RE2:

RE1:

JBP1.5,$;

1

LJMPINT

RETI

F:

MOVTMOD,#10H;

延时125MS

MOVTL1,#0DCH

MOVTH1,#0BH

SETBTR1

JNBTF1,$

CLRTF1

CLRTR1

RET

DELAY:

MOVR3,#10;

延时1秒

D1:

MOVR4,#200

D2:

MOVR5,#248

D3:

DJNZR5,D3

NOP

DJNZR4,D2

DJNZR3,D1

END

四、调试及运行

程序基本上没有什么问题(最多就是有的语句没有注意打错了),按照分析中所设想的编完之后就完成了仿真,仿真过程也没有问题,由于仿真软件没有考虑到电源在实际中会相互影响,同时电机的启动和停止会对单片机的工作有影响。

开始我在仿真中直接用三极管做开关驱动电机转动,后来在焊接好实物之后,对水位的检测和显示没有问题了,问题最多的就是出在控制这方面,p1.7口输出的驱动电压和电流不能使三极管工作,更不能使继电器工作带动电动机,总的来说就是三极管的开关功能没有实现。

在老师的指导下,我使用光电耦合器,没有出现所预期的结果。

最后我在三极管的基极加了一个上拉电阻,问题顺利解决了。

我明白了,用光电耦合器是可以实现的,而且更加的稳定安全,我当时没有注意到,p1.7口接光电耦合器的时候也应该接一个上拉电阻,这样就达到了老师要求的效果,更贴近实际。

虽然我的成功了,但是不完善。

五、矩阵键盘

1、仿真图

2、程序

START:

ACALLM

AJMPSTART

M:

MOVR3,#0EFH

MOVR4,0

K:

MOVP0,R3

MOVA,P0

ANLA,#0FH;

屏蔽高四位

XRLA,#0FH;

异或判断是否有键按下

JZS2;

消抖

S1:

ACALLDEL

JZS2

JNBACC.3,L1;

判断寄存器A中的第4位是否为1,不为1则调到L1

MOVA,#00H

ACALLDIS

AJMPM

JNBACC.2,L2

MOVA,#1

JNBACC.1,L3

MOVA,#2

JNBACC.0,M

MOVA,#3

S2:

MOVA,R3

JNBACC.7,M

RLA

MOVR3,A

MOVA,R4

ADDA,#4

MOVR4,A

AJMPK

DIS:

ADDA,R4;

键值显示子程序

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVP2,A

DEL:

MOVTMOD,#10H;

延时2ms

MOVTL1,#30H

MOVTH1,#0F8H

SETBTR1

JNBTF1,$

CLRTF1

TAB:

DB0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H,088H,083H,0C6H,0A1H,086H,08EH

END

3、实验结果

6、心得体会

基于密码锁的设计基础,我对按键的运用可以说是很熟练了,所以按键这部分就不多说了。

主要说说我对单片机外围电路的感想:

在进行这个课程设计之前,我们已经进行了两个星期的基础电路学习,要注意的是,仿真可以的电路在做成实物时候不一定就可以用。

举个例子,在仿真电路中,单片机可以驱动三极管工作,使其能扮演开关的角色,但是在实物中是不能的,因为从单片机的一个口出来的电压不够。

同时,仿真软件不会注重各个元件的功率问题,所以,在设计电路的时候应当更加注重功率和脉冲电流对相互的影响,比如说电机启动和停止时会对单片机的工作产生影响,使程序执行是产生混乱,没有按要求执行。

在我的设计中,我在三极管的基极连接一个上拉电阻,可以很好的完成三极管的开关作用,同时接入一个继电器,把电动机的电源和单片机的电源分开,这样就有效的把互相的影响进一步的降低。

按键在编程的过程中,要注意消抖,同时焊接的时候要注意别焊接坏了,以避免不必要的麻烦。

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2