电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

基于单片机报警器程序VIP免费

基于单片机报警器程序_第1页
1/5
基于单片机报警器程序_第2页
2/5
基于单片机报警器程序_第3页
3/5
#includeunsignedchart,m,s,x,ior,cn;//电子表的各个位信号x显示字位置控制unsignedintfoat,i;//6位有效数字eg:4.56845unsignedcharior;unsignedchara[5]={0,0,0,0,0};//注意5个数数组内是5而不是4sbitstart=P3^4;//启动ADsbitOE=P3^7;//启动输出数据sbitEOC=P3^3;//转换结束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.05msEA=1;ET0=1;TR0=1;}/*------------------------------------------------串口初始化子程序------------------------------------------------*/voidInitCom(void)//初始化串口{SCON|=0x50;//01010000B,工作方式1,8位UART,波特率可变,允许接收TMOD|=0x20;//T1工作于方式2自动重装TCON|=0x40;//定时器1开始计数TR1=1TH1=250;//T1计数初值波特率为4800TL1=250;RI=0;TI=0;//清发送接收标志ES=1;//开串口}/*--------------------------------------------------显示子程序---------------------------------------------------*/voiddisplay(unsignedcharnum)1{switch(num){case0:{ior=foat/10000;//3a[0]=ior;P1=ledcod1[ior];P0=0x7e;x++;}break;case1:{ior=(foat-10000*a[0])/1000;P1=ledcod[ior];a[1]=ior;//5P0=0xfd;x++;}break;case2:{ior=(foat-10000*a[0]-1000*a[1])/100;P1=ledcod[ior];a[2]=ior;//3P0=0xfb;x++;}break;case3:{ior=(foat-10000*a[0]-1000*a[1]-100*a[2])/10;P1=ledcod[ior];a[3]=ior;//1P0=0xf7;x++;}break;case4:{ior=foat-10000*a[0]-1000*a[1]-100*a[2]-10*a[3];//6P1=ledcod[ior];2a[4]=ior;P0=0xef;x++;}break;case5:{ior=foat-10000*a[0]-1000*a[1]-100*a[2]-10*a[3];//6P1=ledcod[ior];P0=0xdf;x++;}break;default:break;}}/*------------------------------------------------串口发送-------------------------------------------------*/voidComOut(void)//向串口发送数据{unsignedchari;for(i=0;i<5;i++){SBUF=a[i];//发送数据twhile(!TI);//等待发送完成TI=0;}SBUF=0x0;while(!TI);//等待发送完成TI=0;SBUF=0x0;while(!TI);//等待发送完成TI=0;SBUF=0x0;while(!TI);//等待发送完成TI=0;}/*-----------------------------------------------------延时函数------------------------------------------------------*/voiddelay(unsignedinti){while(i--);3}/********************主函数************************/main(){Recdat=0;x=0;P2=0xff;//P2口工作于读,所以先写1,阻断内部的cmosEOC=1;//Init_Timer0();InitCom();while(1){if(i==79)//开始的时候这里没加采样时间(79*0.05=3.94ms),导致始终无法采样到信号{delay(8000);//为了使数码管的数字让人眼能够分辨。增加了这个延时start=0;start=1;//AD在上升沿复位,在下降沿开始转换(ST端给出一个至少有100ns宽的正脉冲信号)start=0;}delay(8);//转换时间为20usif(EOC==1)//查询高电平的到来。转换完毕AD0809的EOC会输出一个高电平{OE=1;//打开--将数据发出到单片机的P2口delay(2);foat=P2*196;OE=0;//输出数据线呈高阻状态}if(Recdat){Recdat=0;ComOut();}}}/*****************************************************//*------------------------------------------------定时器中断子程序------------------------------------------------*/voidTimer0_isr(void)interrupt1using2{4i++;CLK=~CLK;//为AD转换提供时钟周期0.05ms20khzif(i==80)//每0.05ms*50=2.5ms调用一次显示{i=0;if(x==6){x=0;}display(x);}}/*---------------------------------------------------串口中断接收----------------------------------------------------*/voidComINT()interrupt4using2//中断接收程序{if(RI)//判断是否接收完,接收完成后,由硬件置RI位{cn=SBUF;//读入缓冲区RI=0;//清标志Recdat=1;//有数据,建立标志}}5

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

基于单片机报警器程序

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部