基于单片机报警器程序文档格式.docx

上传人:b****4 文档编号:17137465 上传时间:2022-11-28 格式:DOCX 页数:7 大小:15.72KB
下载 相关 举报
基于单片机报警器程序文档格式.docx_第1页
第1页 / 共7页
基于单片机报警器程序文档格式.docx_第2页
第2页 / 共7页
基于单片机报警器程序文档格式.docx_第3页
第3页 / 共7页
基于单片机报警器程序文档格式.docx_第4页
第4页 / 共7页
基于单片机报警器程序文档格式.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

基于单片机报警器程序文档格式.docx

《基于单片机报警器程序文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机报警器程序文档格式.docx(7页珍藏版)》请在冰豆网上搜索。

基于单片机报警器程序文档格式.docx

//转换结束

sbitCLK=P3^6;

//AD始终模拟

bitRecdat;

codeunsignedcharledcod[]={0x7e,0x12,0xbc,0xb6,0xd2,0xE6,0xee,0x32,0xfe,0xf6};

codeunsignedcharledcod1[]={0x7f,0x13,0xbd,0xb7,0xd3,0xE7,0xef,0x33,0xff,0xf7};

//带小数点的字形码

/*------------------------------------------------

定时器初始化子程序

------------------------------------------------*/

voidInit_Timer0(void)

{

TMOD|=0x02;

TH0=0xd1;

TL0=0xd1;

//定时0.05ms

EA=1;

ET0=1;

TR0=1;

}

/*------------------------------------------------

串口初始化子程序

voidInitCom(void)//初始化串口

SCON|=0x50;

//01010000B,工作方式1,8位UART,波特率可变,允许接收

TMOD|=0x20;

//T1工作于方式2自动重装

TCON|=0x40;

//定时器1开始计数TR1=1

TH1=250;

//T1计数初值波特率为4800

TL1=250;

RI=0;

TI=0;

//清发送接收标志

ES=1;

//开串口

}

/*--------------------------------------------------

显示子程序

---------------------------------------------------*/

voiddisplay(unsignedcharnum)

switch(num)

{

case0:

{

ior=foat/10000;

//3

a[0]=ior;

P1=ledcod1[ior];

P0=0x7e;

x++;

}

break;

case1:

ior=(foat-10000*a[0])/1000;

P1=ledcod[ior];

a[1]=ior;

//5

P0=0xfd;

case2:

ior=(foat-10000*a[0]-1000*a[1])/100;

a[2]=ior;

P0=0xfb;

case3:

ior=(foat-10000*a[0]-1000*a[1]-100*a[2])/10;

a[3]=ior;

//1

P0=0xf7;

case4:

ior=foat-10000*a[0]-1000*a[1]-100*a[2]-10*a[3];

//6

a[4]=ior;

P0=0xef;

case5:

P0=0xdf;

default:

}

串口发送

-------------------------------------------------*/

voidComOut(void)//向串口发送数据

{unsignedchari;

for(i=0;

i<

5;

i++)

SBUF=a[i];

//发送数据t

while(!

TI);

//等待发送完成

TI=0;

SBUF=0x0;

/*-----------------------------------------------------

延时函数

------------------------------------------------------*/

voiddelay(unsignedinti)

while(i--);

/********************主函数************************/

main()

Recdat=0;

x=0;

P2=0xff;

//P2口工作于读,所以先写1,阻断内部的cmos

EOC=1;

//

Init_Timer0();

InitCom();

while

(1)

if(i==79)//开始的时候这里没加采样时间(79*0.05=3.94ms),导致始终无法采样到信号

delay(8000);

//为了使数码管的数字让人眼能够分辨。

增加了这个延时

start=0;

start=1;

//AD在上升沿复位,在下降沿开始转换(ST端给出一个至少有100ns宽的正脉冲信号)

delay(8);

//转换时间为20us

if(EOC==1)//查询高电平的到来。

转换完毕AD0809的EOC会输出一个高电平

OE=1;

//打开--将数据发出到单片机的P2口

delay

(2);

foat=P2*196;

OE=0;

//输出数据线呈高阻状态

if(Recdat)

Recdat=0;

ComOut();

/*****************************************************/

定时器中断子程序

voidTimer0_isr(void)interrupt1using2

{

i++;

CLK=~CLK;

//为AD转换提供时钟周期0.05ms20khz

if(i==80)//每0.05ms*50=2.5ms调用一次显示

i=0;

if(x==6)

{x=0;

display(x);

/*---------------------------------------------------

串口中断接收

----------------------------------------------------*/

voidComINT()interrupt4using2//中断接收程序

if(RI)//判断是否接收完,接收完成后,由硬件置RI位

cn=SBUF;

//读入缓冲区

//清标志

Recdat=1;

//有数据,建立标志

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

当前位置:首页 > 解决方案 > 学习计划

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

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