汇编.docx

上传人:b****1 文档编号:84400 上传时间:2023-04-28 格式:DOCX 页数:11 大小:187.40KB
下载 相关 举报
汇编.docx_第1页
第1页 / 共11页
汇编.docx_第2页
第2页 / 共11页
汇编.docx_第3页
第3页 / 共11页
汇编.docx_第4页
第4页 / 共11页
汇编.docx_第5页
第5页 / 共11页
汇编.docx_第6页
第6页 / 共11页
汇编.docx_第7页
第7页 / 共11页
汇编.docx_第8页
第8页 / 共11页
汇编.docx_第9页
第9页 / 共11页
汇编.docx_第10页
第10页 / 共11页
汇编.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

汇编.docx

《汇编.docx》由会员分享,可在线阅读,更多相关《汇编.docx(11页珍藏版)》请在冰点文库上搜索。

汇编.docx

汇编

课程设计报告书

学院:

土木工程 班级:

交通C021设计人:

李晓健(026878)

一、设计题目:

电压报警器的单片机模拟

二、总体设计

1)所实现的功能描述

电压波动会导致电器工作异常并烧毁,因而时刻检测电压并发出警告非常必要,本课题用ADC模拟电压波动的过程,程序检测到电压过低或者过高以后使用闪动的灯光报警。

2)设计方案的描述

鉴于实际条件的限制,本试验采用实验板自带的ADC转换来模拟电压检测,电压在1-4V范围内属于正常,否则报警,报警灯光可以使用闪动的LED发光二极管来模拟,用户通过操作电压旋转按钮来改变电压模拟波动的过程。

三、件系统设计,包括所需设备,接线方式,以及资源分配。

应用PC机、DICE-598H实验仪及8155+芯片,用实验板自带的ADC转换来模拟电压检测 

四、软件系统的设计,包括划分功能模块,写出各个功能模块实现的功能。

画出程序流程图

1)ADC0809的内部逻辑结构

 

2)程序设计流程图

四、列出程序清单,并加以必要的注释

ORG0000H

MOVp1,#0ffh

SE11:

MOVSP,#70h

MOV7EH,#00H

MOV7DH,#08H

MOV7CH,#00H

MOV7BH,#09H

MOV7AH,#10H

MOV79H,#10H

MOVDPTR,#0FF20H

MOVA,#03h

MOVX@DPTR,A

L991:

LCALLse

MOVA,#00H

MOVDPTR,#8000H

MOVX@DPTR,A;启动A\D转换

MOVR7,#0FFH

L017:

DJNZR7,L017

MOVXA,@DPTR;读取转换结果

MOVR0,#79H

lcallcom

lo:

LCALLPTDS

SJMPL991

PTDS:

MOVR1,A

ACALLPTDS1

MOVA,R1

SWAPA

PTDS1:

ANLA,#0FH

MOV@R0,A

INCR0

RET

se:

SETBRS1

MOVR5,#05H

SsE2:

MOV30H,#20H

MOV31H,#7EH

MOVR7,#06H

SSHH:

MOVR1,#21H

MOVA,30H

MOVX@R1,A

MOVR0,31H

MOVA,@R0

MOVDPTR,#DDFF

MOVCA,@A+DPTR

MOVR1,#22H

MOVX@R1,A

LCALLDLY

MOVA,30H

RRA

MOV30H,A

DEC31H

MOVA,#0FFH

MOVX@R1,A

DJNZR7,SSHH

DJNZR5,SSE2

CLRRS1

RET

com:

pushaCC

cjnea,#50d,ne1

ret

ne1:

jcdan1

cjnea,#200d,ne2

ret

ne2:

jclo

dan1:

movp1,#11101111b

popaCC

ret

DDFF:

DB0C0H,0F9H,0A4H,0B0H

DB99H,92H,82H,0F8H,80H,90H

DB88H,83H,0C6H,0A1H

DB86H,8EH,0FFH,0CH,89H,0DEH

DLY:

MOV40H,#02H

D1:

MOV3FH,#0FAH

DJNZ3FH,$

DJNZ40H,D1

RET

END

六、写出调试程序的方法

首先连接硬件设备,旋动电压旋扭模拟电压波动,当电压超出允许范围是红灯亮,并且切断电压输出,当旋动电压旋扭到允许范围内时,电压中断停止,红灯灭。

七、指出所设计问题的不足和改进方案

由于条件限制实验模拟并不能解决实际中遇到的情况。

八、自评分和收获体会

通过学习单片机的原理和一周的程序设计实习,使我们充分了解了的它的实用性和在工业中的优势地位。

所以我们一定要认真学好单片机课程,以便在今后的工作中可以充分的利用它优势。

此次程序设计我们的题目是电压报警的模拟,虽然题目并不是很难,但其非常具有代表性,是一个典型的上下限报警模型。

可以让我们充分了解实验版ADC转换。

总的来说,这次电压报警器的单片机模拟设计使我们收获颇大!

计算机在启动运行时都需要复位,使中央处理器CPU和系统中的其它部件都处于一个确定的初始状态,并从这个状态开始工作。

AT89S52单片机有一个复位引脚RST,它是史密特触发输入(对于CHMOS单片机,RST引脚的内部有一个拉低电阻),当振荡器起振后该引脚上出现2个机器周期(即24个时钟周期)以上的高电平,使器件复位,只要RST保持高电平,MCS-51保持复位状态。

此时ALE、PSEN、P0、P1、P2、P3口都输出高电平。

RST变为低电平后,退出复位,单片机从初始状态开始工作。

单片机采用的复位方式是按键复位方式。

当复位信号输入段RSSET出现一定时间的高电平时,只要高电平时间足够长,就可以使AT89S52有效的复位。

RST端在加电时应保持的高电平时间包括VCC的上升时间和振荡器起振的时间,Vss上升时间若为10ms,振荡器起振的时间和频率有关。

10MHZ时约为1ms,1MHZ时约为10ms,所以一般为了可靠的复位,RST在上电应保持20ms以上的高电平。

RC时间常数越大,上电RST端保持高电平的时间越长。

若复位电路失效,加电后CPU从一个随机的状态开始工作,系统就不能正常运转。

因此对于中央处理器CPU,在启动状态时复位电路必要。

时钟电路用于产生单片机工作所需的时钟信号。

一般时钟信号有两种方式,内部时钟信号和外部时钟信号。

内部时钟方式为片内震荡器,通过单片机的引脚XTAL1和XTAL2为片内震荡器的输入端和输出端,在XTAL1和XTAL2两端跨接晶体或陶瓷谐振器,这样就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟发生器。

在连接外部时钟方式时,一般采用采用外部震荡器,外部震荡脉冲信号通过XTAL1端接入后直接送至内部时钟发生器,因此输出端XTAL2应悬浮。

不过因为XTAL1的逻辑电平不是TTL的,因此需外接一个上拉电阻。

对于本设计的电压越限报警器,由于电路只需一块单片机芯片进行工作,并且由于在AT89S52单片机芯片的内部有一个高增益反向放大器,因此进行内部时钟方式因此本设计采用内部时钟方式。

#defineucharunsignedchar

#defineuintunsignedint

sbitGATE=P2^0;

sbitBP=P2^1;

uintt_count,int0_count;

/+定时器0中断服务子程序*/

voidtimer0()interrupt1USing1

  TR0=0;                  //停止计数

TH0=一5000/256;             //重设5ms计数

TL0=一5000%256:

t_count++;

if(it_count>600)        //第一次外部中断0产生后3S

(if(int0_count==1)//还没有出现第二次外部中断0,则认为充电完毕

 GATE=0;             //关闭充电电源

BP=0;               //打开蜂鸣器报警

 )

e1se                //否则即是充电出错

(GATE=1;

 BP=1;)

ET0  =0;          //关闭TO中断

EX0  =0;          //关闭外部中断0

int0_count  =0;

t_count  =0;          )

else

TR0=1;  //TO开始计数

)/*外部中断0服务子程序+/

voidint0()interrupt0USing1

(if(int0_count==0)

   (   TH0=一5000f256;    //5ms定时

TL0=一5000%256;

TRO=1:

        //启动定时/计数器O计数

t_count=0;     //产生定时器0中断的计数器清零

intO—count++;)

/*初始化*/

voidinit()

(     EA  =1;    //打开cpu中断

PTO=1    //T0中断设为高优先级

TMOD=0X01;      //模式1,TO为16位定时/计数器

ETO   =1;           //打开TO中断

ITO   =1;       //外部中断O设为边沿触发

EXO   =l;           //打开外部中断O

GATE  =1;           //光耦正常输出电压

Bp  =1;             //关闭蜂鸣器

Int0_count  =O   //产生外部中断O的计数器清零

voidmain()

/*调用初始化函数*/

init();/*无限循环*/ while

(1);)

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

当前位置:首页 > 自然科学 > 物理

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

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