计算机可控单片机系统的应用设计.docx

上传人:b****6 文档编号:16567530 上传时间:2023-07-14 格式:DOCX 页数:34 大小:725.41KB
下载 相关 举报
计算机可控单片机系统的应用设计.docx_第1页
第1页 / 共34页
计算机可控单片机系统的应用设计.docx_第2页
第2页 / 共34页
计算机可控单片机系统的应用设计.docx_第3页
第3页 / 共34页
计算机可控单片机系统的应用设计.docx_第4页
第4页 / 共34页
计算机可控单片机系统的应用设计.docx_第5页
第5页 / 共34页
计算机可控单片机系统的应用设计.docx_第6页
第6页 / 共34页
计算机可控单片机系统的应用设计.docx_第7页
第7页 / 共34页
计算机可控单片机系统的应用设计.docx_第8页
第8页 / 共34页
计算机可控单片机系统的应用设计.docx_第9页
第9页 / 共34页
计算机可控单片机系统的应用设计.docx_第10页
第10页 / 共34页
计算机可控单片机系统的应用设计.docx_第11页
第11页 / 共34页
计算机可控单片机系统的应用设计.docx_第12页
第12页 / 共34页
计算机可控单片机系统的应用设计.docx_第13页
第13页 / 共34页
计算机可控单片机系统的应用设计.docx_第14页
第14页 / 共34页
计算机可控单片机系统的应用设计.docx_第15页
第15页 / 共34页
计算机可控单片机系统的应用设计.docx_第16页
第16页 / 共34页
计算机可控单片机系统的应用设计.docx_第17页
第17页 / 共34页
计算机可控单片机系统的应用设计.docx_第18页
第18页 / 共34页
计算机可控单片机系统的应用设计.docx_第19页
第19页 / 共34页
计算机可控单片机系统的应用设计.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

计算机可控单片机系统的应用设计.docx

《计算机可控单片机系统的应用设计.docx》由会员分享,可在线阅读,更多相关《计算机可控单片机系统的应用设计.docx(34页珍藏版)》请在冰点文库上搜索。

计算机可控单片机系统的应用设计.docx

计算机可控单片机系统的应用设计

计算机可控单片机系统的应用设计

摘要:

本设计通过对AT89S52单片机所组的系统进行编程,可以由串行线在上位机(微机)中进行操作。

本设计选择了单片机的8个端口作为模拟设备操纵对象,可以在微机用DOS命令进行8个端口小灯的亮灭控制。

关键词:

计算机、单片机、汇编语言、

 

Thecomputercontrollablemonolithicintegratedcircuitsystemapplicationdesigns

Abstract:

Thisdesignthroughcarriesontheprogrammingtoat89S52monolithicintegratedcircuitgroup'ssystem,may(microcomputer)carryontheoperationbytheseriallineinonpositionmachine.Thisdesignhaschosenthemonolithicintegratedcircuit.Aporttookthesimulationequipmentoperationobject,mayorderinthemicrocomputerwithDOStocarryon8portsmalllampstoextinguishthecontrolbrightly.

Keyword:

Computation,monolithicintegratedcircuit,assemblylanguage

 

1系统设计

微机与单片机系统的通信控制是单片机系统应用发展的最前端技术,也是单片机得以生存的主要原因,就此,我们提出两种方案:

方案一:

我们可以选用比较先进的控制编程用高级语言,比如:

C语言、VB语言等进行控制界面的设计,用图示按键进行控制对象的操作。

方案二:

我们可以采用微机通信工具中的超级终端进行单片机通信,无需进行上位机的编程,用DOS命令即可实现实时控制单片机系统。

从一上两种方案中可以看出:

第一种岁比较简单,但要求设计者需要有较强的高级语言编程能力,对一般的单片机学习者而言,一下子难以达到这个要求,决定采用具有在线编程功能的单片机AT89S52,使得本系统具有在线维护功能。

图一:

为计算机可控单片机系统电路的结构框图

 

2单元电路设计

2.1AT89S52单片机介绍

2.1.1AT89S52

AT89S52是一个低功耗,40个脚,高性能CMOS8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。

图二:

AT89S52单片机

2.1.2AT89S52引脚功能介绍:

(1)P0口:

P0口是一个8位漏极开路的双向I/O口。

作为输出口,每位能驱动8个TTL逻辑电平。

对P0端口写“1”时,引脚用作高阻抗输入。

P0具有内部上拉电阻。

(2)P1口:

P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL电平。

此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。

引脚号第二功能:

P1.0T2(定时器/计数器T2的外部计数输入),时钟输出

P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)

P1.5MOSI(在系统编程用)

P1.6MISO(在系统编程用)

P1.7SCK(在系统编程用)

(3)P2口:

P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。

对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。

(4)P3口:

P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。

对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。

P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。

在flash编程和校验时,P3口也接收一些控制信号。

AT89S52

(5)引脚号第二功能

P3.0RXD(串行输入)

P3.1TXD(串行输出)

P3.2INT0(外部中断0)

P3.3INT0(外部中断0)

P3.4T0(定时器0外部输入)

P3.5T1(定时器1外部输入)

P3.6WR(外部数据存储器写选通)

P3.7RD(外部数据存储器写选通)

RST:

复位输入

2.1.3AT89S52具有如下特点:

40个引脚,8kBytesFlash片内程序存储器,256bytes的随机存取数据存储(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

此外,AT89S52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。

空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。

同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

2.2外围电路设计

2.2.1电源电路设计

这当然是必不可少的了。

单片机使用的是5V电源,其中正极接40引脚,负极(地)接20引脚。

2.2.2负位电路设计

上电复位采用电平方式开关复位。

如图三所示。

上电复位用RC电路,电容用20

F,电阻用10K

图三

2.2.3晶振电路设计

单片机是一种时序电路,必须提供脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19、20脚。

只要买来晶振,电容,单片机的晶振频率应低于40MHZ,所以我们采用12MHZ,加两个104

F电容连上就可以了,图四所示。

图四

2.2.4P1口发光管电路

P1.0-P1.7(第1-8引脚)连接到8个470欧电阻驱动8个发光管。

如图五

图五

2.2.5、单片机外围电路系统图:

3、系统软件设计

在AT89S52单片机应用系统中,应用程序装入0000h-ffffh地址处,在应用程序开发时,先在软件中编好所需要的程序,在利用RS-232总线下载程序,然后可以利用计算机的超级终端对应用系统应用程序的写入及修改。

本设计利用9个命令实现对单片机系统的实时控制。

下面介绍应用程序中的主要控制程序。

3.1.主程序

主程序主要是检查是否有上位机的命令,在主程序中可以加入单片机系统自身的控制程序,主程序流程图:

图六

3.2初始化程序

初始化程序主要负责程序上电后的设置工作,主要功能是设置堆栈地址;串口通信为方式;开启2作波特率发生器;开串口中断;向上位机发版本信息及提示符等,其流程图如下:

3.3串口接收发送处理程序流程图:

串口中断服务趁许负责接收和发送字符,在单片机接收上位机的命令时,需对退格键、回车键进行判断,进行响应的处理,当接收完毕后置接收成功的标志。

串口中断接收程序流程图如下:

3.4、命令获取子程序

命令获取子程序对接收到的字符进行比较、出错处理,并转入响应的命令功能执行程序,其流程图如下:

3.5、命令功能执行程序

软件设计中设置了9个命令功能,在实际应用中可根据需要设立。

9个命令功能是显示帮助信息功能、设置波特率功能、进入在线编程控制功能、对设备0开关功能、对设备1开关功能、对设备2开关功能、对设备3开关功能、对设备4开关功能及对设备5开关功能、

3.6、进入在线编程控制程序

为了在应用系统工作时,能进入在线编程模式,以便对应用系统进行在线程序的修改或升级。

其流程图如下:

 

4、系统的访真、调试

 

5、致谢

感谢我的指导老师凌泽明老师,他严谨细致、一丝不苟的作风一直是我学习中的榜样;除此之外还要感谢我们以前的单片机任课老师罗德雄老师。

是他们循循善诱的教导和不拘一格的思路各于我无尽的启迪。

这篇设计报告中每次实验、每个细节、每个数据,都离不开他们细心的指导,而他们开朗的个性和宽容的态度,帮助我能够很快的融入我的毕业设计中去。

感谢在我身边的其他老师和同学们,在我不懂时,只要他们知道,一定是不厌其烦地指导。

感谢我的爸爸妈妈,焉得谖草,言树之背,养育之恩,无以回报,你们永远健康快乐是我最大的心愿。

在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我最诚挚的谢意!

 

参考文献

[1]武庆生.仇梅.单片机原理与应用.电子科技大学出版,1998,12

[2]李朝青.单片机学习指导.北京航空航天工业出版社,2005,75~95

[3]朱定华.单片机原理与接口技术.电子工业出版社,2001,4

[4]刘瑞新.单片机原理及应用教程.机械工业出版社,2003,7

[5]刘华东.单片机原理与应用(第二版)[M].电子工业出版社,2006,

[6]李光飞.单片机课程设计实例指导.北京航空航天工业出版社,2004,155~179

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

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

[8]阎石.数字电子技术基础(第四版)[M].高等教育出版社,2000年5月第一版.

[9]胡汉才.单片机原理及其接口技术[M].清华大学出版社,2000年5月第一版.

[10]何立民.单片机高级教程[M].北京航空航天大学出版社,2000年5月第一版.

[11]陈汝全.电子技术常用器件应用手册[M].第二版,机械工业出版社,2002年5月第一版.

[12]李广弟.单片机基础[M].北京:

北京航空航天大学出版社,1992.

[13]罗亚非.凌阳16位单片机应用基础[M].北京:

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

 

附录

附录一:

微机可控单片机系统制作的成品示意图:

 

附录二:

单片机控制系统源程序清单

;变量定义

;常数定义

RXBUFFSTARTEQU040H;接收缓冲区队列首地址(170字节)

XBUFFSTARTEQU050H;发送缓冲区队列首地址(170字节)

RXBUFFNDEQU0F0H;接收缓冲区队列末址

COMMANDLENEQU008H;命令字符最大长度

;编程延时

P15MSEQU0C9H;11.0592MHz12.000MHz14.318MHz

P1USEQU0FEH

P50USEQU0D1H

;控制键

BACKSPACEEQU008H;退后删除键

;内部寄存器定义

T2CONEQU0C8H;T2控制寄存器

T2MODEQU0C9H

TL2EQU0CCH;T2计数积存器低字节

TH2EQU0CDH;T2计数积存器高字节

TR2EQU0CAH;T2启动位

RCAP2LEQU0CAH;T2计数重载寄存器底字节

RCAP2HEQU0CBH;T2计数重载寄存器高字节

CHPCONEQU0BFH;在系统变成控制寄存器

CHPENREQU0F6H;编程状态下MTPROM的控制字节寄存器

;控制标志位定义

KEYFUNFLAGEQU03H

TXOKFLAGEQU04H;发送OK标记

RXCOMMFLAGEQU05H

COMMSPACEFLAGEQU06H;命令删除OK标记

RXCOMMOKFLAGEQU07H

;全局变量定义

;串口

RXBUFFTAILEQU3BH;接收缓冲区尾指针

RXBUFFHEADEQU3AH;接收缓冲区头指针

RXBUFFLENEQU39H;命令长度计数

BLKCHKEQU35H

;

ORG0000H

LJMPSTART

;

;中断向量入口

ORG0003H;中断入口表

RETI

ORG000BH

RETI

ORG0013H

RETI

ORG001BH

RETI

ORG0023H

LJMPINT_SIO

ORG002BH

RETI

ORG0080H

;

;初始化程序

;

START:

MOVR0,#0F0H;清

CLRA;01到

CLRAM:

MOV@R0,A;F0

DJNZR0,CLRAM;RAM

MOVP0,#0FFH;置P0

MOVP1,#0FFH;置P1

MOVP2,#0FFH;置P2

MOVP3,#0FFH;置P3

MOVDPL,#00H;清DPTR

MOVDPH,#00H

MOVPSW,#00H;设第一组寄存器

MOVSP,#0F1H;设置堆栈指针

MOVSCON,#01010000B;串口工作方式1(8位UART)允许接收

MOVT2CON,#00110000B;T2CON

MOVA,#01H;设置波特率0:

384001:

19200

LCALLINITBAUD;2:

96003:

4800

SETBES;允许串口中断

MOVIP,#00H;低优先级

SETBTR2;启动定时计数器2

SETBREN;启动串口接收中断

CLRTI;清串口发送中断标志位

CLRRI;清串口接收中断标志位

SETBEA;开放所有中断

MOVRXBUFFHEAD,#RXBUFFSTART

MOVRXBUFFTAIL,#RXBUFFSTART

CLRRXCOMMFLAG

MOVDPTR,#LOGOTBL;在终端上显示LOGO字符

LCALLDISPINFO

MOVDPTR,#ROMMARKTBL;在终端上显示LRM>字符

LCALLDISPINFO

;

;主程序

;

MAIN:

LCALLGETCOMMAND

NOP;可加入其他操作程序

CPLP2.0

MAINOUT:

LJMPMAIN

NOP

NOP

NOP

LJMPSTART

;

;主要处理程序

;

;获取命令

;

GETCOMMAND:

LCALLPUTCOMMSPACE;刷新命令符

MOVA,RXBUFFTAIL

XRLA,#RXBUFFSTART;

JZGETCOMMOUT;接收缓冲区空不处理

JNBRXCOMMOKFLAG,GETCOMMOUT;命令接收不成功不处理

MOVA,RXBUFFLEN

CLRC

SUBBA,#COMMANDLEN

JNCGETCOMMERROR;命令字符超长出错

CLRA

MOVR4,A;清查表计数器

MOVR5,#RXBUFFSTART;置接收缓冲区首地址

MOVDPTR,#COMMANDTBL;置命令表首地址

GETCOMMCOMP:

MOVA,R4

MOVCA,@A+DPTR;查表

INCR4

MOVR6,A;暂存到R6

MOVA,R4

JNZGETCOMMOVER

INCDPH

GETCOMMOVER:

MOVA,R5

INCR5

MOVR0,A

MOVA,@R0;读接收缓冲区

MOVR7,A;暂存到R7

MOVA,R6

XRLA,#0FFH

JZGETCOMMERROR;是否出错

MOVA,R6

XRLA,#0AH

JZGETCOMMCOMP;比较成功

MOVA,R7

XRLA,R6

JZGETCOMMCOMP;去下一个比较

MOVA,R6

ADDA,#20H;小写处理

XRLA,R7

JZGETCOMMCOMP;去下一个比较

MOVR5,#RXBUFFSTART

MOVA,R4

MOVB,#COMMANDLEN

DIVAB

MOVB,#COMMANDLEN

INCA

MULAB

MOVR4,A

LJMPGETCOMMCOMP

;

GETCOMMCOMPEND:

CLRA;初始化

MOVRXBUFFLEN,A

MOVRXBUFFTAIL,#RXBUFFSTART

CLRRXCOMMOKFLAG

MOVA,R4

MOVB,#COMMANDLEN

DIVAB;调整地址

MOVB,A

RLA

ADDA,B

MOVDPTR,#COMMFUNTBL

JMP@A+DPTR

GETCOMMOUT:

RET

;

GETCOMMERROR:

MOVDPTR,#COMMERRORTBL;显示Badcommand

LCALLDISPINFO

CLRA;初始化

MOVRXBUFFLEN,A

MOVRXBUFFTAIL,#RXBUFFSTART

CLRRXCOMMOKFLAG

LJMPDISPROM

RET

;

COMMFUNTBL:

LJMPHELPFUN

LJMPDISPROM

LJMPOP5FUN

LJMPOP0FUN

LJMPOP1FUN

LJMPOP2FUN

LJMPOP3FUN

LJMPOP4FUN

LJMPSETBFUN

LJMPAPROMFUN

RET

;

;命令解释器功能处理子程序

;

;?

HELP显示帮助信息

;

HELPFUN:

MOVDPTR,#HELPTBL;显示帮助信息

LCALLDISPINFO

LCALLINITCOMMAND

LJMPDISPROM

;

;OP5功能处理

OP5FUN:

CPLP2.6

LCALLINITCOMMAND

LJMPDISPROM

;

;OP0功能处理

OP0FUN:

CPLP2.1

LCALLINITCOMMAND

LJMPDISPROM

;

;SETB功能处理

SETBFUN:

MOVDPTR,#SETBFUNTBL

LCALLDISPINFO

MOVDPTR,#INPUTTBL

LCALLDISPINFO

SETBLOOP:

LCALLREADWAIT

MOVR0,#RXBUFFSTART

MOVA,@R0

MOVR7,A

DECR7

SETBLOOP1:

INCR7

MOVRXBUFFTAIL,#RXBUFFSTART

XRLA,R7

JNZSETBLOOP1;是否有输入

MOVA,@R0

SUBBA,#30H

MOVB,A

MOVA,B

XRLA,#04H;是否Exit

JZSETBERROR

MOVA,B

CLRC

SUBBA,#05H;大于5重输

JNCSETBRELOAD

MOVA,B

LCALLINITBAUD;设置波特率

SETBERROR:

LCALLINITCOMMAND

LJMPDISPROM

;

SETBRELOAD:

MOVRXBUFFTAIL,#RXBUFFSTART

MOVDPTR,#SETERRORTBL

LCALLDISPINFO

LJMPSETBLOOP

;

;APROM功能处理

;

APROMFUN:

MOVDPTR,#WARNINGTBL

LCALLDISPINFO

MOVDPTR,#INPUTTBL

LCALLDISPINFO

RESETLOOP:

MOVRXBUFFTAIL,#RXBUFFSTART

LCALLREADWAIT

MOVR0,#RXBUFFSTART

MOVR4,#59H;是否Y

LCALLCOMPASC

JZRESETCAPS

MOVR4,#4EH;是否N

LCALLCOMPASC

JNZRESETERROR

LCALLINITCOMMAND

LJMPDISPROM

RESETCAPS:

LCALLPUTENTER;显示回车

LCALLPUTENTER

MOVCHPENR,#87H;进入APROM修改程序状态

MOVCHPENR,#59H

MOVCHPCON,#03H

MOVTCON,#00H;关T0,T1

MOVT2CON,#00H;关T2

MOVIP,#00H;同优先级

MOVIE,#82H;允许T0中断,总中断开放

MOVTL0,#0FBH;装初值,定时为5UF

MOVTH0,#0FFH

MOVTMOD,#01H;T0为16位定时器

MOVTCON,#10H;开启T0

MOVPCON,#01H;进入在线编程模式,等待唤醒后进入4K-LDROM程序

RET

RESETERROR:

MOVDPTR,#SETERRORTBL

LCALLDISPINFO

LJMPRESETLOOP

;

;OP1功能处理

;

OP1FUN:

CPLP2.2

LCALLINITCOMMAND

LJMPDISPROM

;OP2功能处理

OP2FUN:

CPLP2.3

LCALLINITCOMMAND

LJMPDISPROM

;OP3功能处理

OP3FUN:

CPLP2.4

LCALLINITCOMMAND

LJMPDISPROM

;OP4功能处理

OP4FUN:

CPLP2.5

LCALLINITCOMMAND

LJMPDISPROM

;串口操作子程序

;

;计算公式:

(RCAP2H,RCAP2L)=65536-OscFreq/32*Baud

;DEMO:

;FREQUENCY:

12MHz

;BAUDRATE:

9600Baud

;

;(RCAP2H,RCAP2L)=65536-12*1000000/3209600

;=65479=FFD9H

;

;DB0F7H,0EFH,0DCH,0B8H,0FFH;11.0592MHz

BAUDTBL:

DB0F6H,0ECH,0D9H,0B2H,0FFH;12.0000MHz

;DB0F4H,0E8H,0D1H,0A3H,0FFH;14.3180MHz

;

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

当前位置:首页 > 初中教育 > 科学

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

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