完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
用面包版连好电路了,但是就是没有效果,不知道是给我的原理图错了,还是代码错了,各位大侠有完整的资料吗?分享我一下可以不,感激不尽啊(下面是源代码,有错吗?有没有可以用的程序借我试试)
#include #include #define RX P0_0 #define TX P0_1 #define BEEP P0_2 unsigned int time=0; unsigned int timer=0; unsigned char posit=0; unsigned int k; bit flag_beep; unsigned long S=0; bit flag =0; unsigned char const discode[] ={0x05,0xDD,0x46,0x54,0x9C,0x34,0x24,0x5D,0x04,0x14,0xfe}; unsigned char const positon[4]={ 0x04,0x10,0x40,0x80}; unsigned char di***uff[4] ={ 0,0,0,0,}; void DIDI(); void Display(void) //扫描数码管 { if(posit==0) {P2=(discode[di***uff[posit]])&0xfb;} else {P2=discode[di***uff[posit]];} P1=~positon[posit]; if(++posit>=4) posit=0; } void Conut(void) { time=TH0*256+TL0; TH0=0; TL0=0; //time=23529; S=(time*0.17); //算出来是CM if((S>=7000)||flag==1) //超出测量范围显示“-” { flag=0; flag_beep=0; di***uff[0]=10; //“-” di***uff[1]=10; //“-” di***uff[2]=10; //“-” di***uff[3]=10; //“-” BEEP=1; } else { di***uff[0]=S/1000; di***uff[1]=S/100%10; di***uff[2]=S/10%10; di***uff[3]=S%10; } } void zd0() interrupt 1 //T0中断用来计数器溢出,超过测距范围 { flag=1; //中断溢出标志 } void zd3() interrupt 3 //T1中断用来扫描数码管和计800 ms启动模块 { TH1=0xf8; TL1=0x30; Display(); DIDI(); timer++; if(timer>=400) { timer=0; TX=1; //800 ms 启动一次模块 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TX=0; } } void main( void ) { TMOD=0x11; //设T0为方式1,GATE=1; TH0=0; TL0=0; TH1=0xf8; //2 MS定时 TL1=0x30; ET0=1; //允许T0中断 ET1=1; //允许T1中断 TR1=1; //开启定时器 EA=1; //开启总中断 while(1) { while(!RX); //当RX为零时等待 TR0=1; //开启计数 while(RX); //当RX为1计数并等待 TR0=0; //关闭计数 Conut(); //计算 } } void DIDI() { if(S<1000) { BEEP=0; } else { k++; // if(k>=500) // { // k=0; // flag_beep=!flag_beep; //} if((S>=1000)&&(S<2000))//1 m~2 m { if(k>=500) { k=0; flag_beep=!flag_beep; } } if((S>=2000)&&(S<3000))//2 m~3 m { if(k>=300) { k=0; flag_beep=!flag_beep; } } if((S>=3000)&&(S<4000))//3 m~4 m { if(k>=200) { k=0; flag_beep=!flag_beep; } } if((S>=4000)&&(S<=5000))//4 m~5 m { if(k>=100) { k=0; flag_beep=!flag_beep; } } if(flag_beep) BEEP=0; else BEEP=1; } } |
|
相关推荐 |
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
690 浏览 0 评论
735 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
624 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1099 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1092 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11794 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 07:17 , Processed in 0.589787 second(s), Total 47, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号