全部评论(1条)
-
- Liuwei20080866 2011-04-04 00:00:00
- 我有。用外部中断0做输入。
#include <mega16.h>
#include <delay.h>
#define uchar unsigned char
unsigned char ge,shi,bai,qian,flag,x,cont;
unsigned int temp,temp_1,temp_2,y;
flash unsigned char duan[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71}; void dis() { DDRA=0X0F; DDRB=0XFF; PORTA=0XFF; PORTB=duan[qian]; PORTA.0=0; delay_ms(1); PORTA.0=1; PORTB=duan[bai]; PORTA.1=0; delay_ms(1); PORTA.1=1; PORTB=duan[shi]; PORTA.2=0; delay_ms(1); PORTA.2=1; PORTB=duan[ge]; PORTA.3=0; delay_ms(1); PORTA.3=1; } void jisuan() { temp_1=temp; temp_1=temp_1*17; temp_1=temp_1/100; ge=temp_1 % 10; temp_1=temp_1 / 10; shi=temp_1 % 10; temp_1=temp_1 / 10; bai=temp_1 % 10; qian=temp_1 / 10; flag=0; temp=0; } void init() { temp=0; DDRD.2=0; DDRD.5=1; PORTD.2=1; GICR=0X00; //,先不允许中断 GICR=0X40; //INT0中断允许 MCUCR=0X0A; //下降沿触发 GIFR=0XC0; //清中断INT0中断标志位 DDRC=0XFF; TCCR2=0X09; //不分频 TCNT2=0; OCR2=119; //10US; TIMSK=0X80; SREG|=0X80; } interrupt [2] one_INT0() { x++; if(x>=2) { TCCR2=0; //收到回波,停止计时。 GICR=0; //关INT0中断。 x=0; PORTC=temp; jisuan(); flag=0; } delay_us(20); } interrupt [4] two_T2() //T2定时器溢出中断,计时。 { temp++; } void send40k() { DDRD.5=1; //CTC模式 TCCR1A=0X40; TCCR1B=0X09; OCR1A=149; } void close40k() { TCCR1B=0; } void main(void) { init(); flag=1; DDRC=0XFF; PORTC=0XFF; DDRD.2=0; PORTD.2=1; while(flag) { GICR=0X00; TCNT2=0; temp=0; send40k(); while(1); TCCR2=0X09; //开始计时 delay_us(125); close40k(); // PORTD.5=1; delay_us(1500); GICR=0X40; //开INT0中断。 while(!(temp>=6000)&&flag) //等待外部中断 防止卡死。 temp=5000,50ms,17米 { } if(temp>=6000) { GICR=0X00; TCCR2=0X00; ge=shi=bai=qian=0; delay_ms(500); } y=700; while(y--)dis(); flag=1; } } -
赞(16)
回复(0)
热门问答
- 谁有基于AVR atmega16超声波测距程序 发给我
2011-04-03 04:30:42
283
1
- 基于89C52单片机的HC-SR04超声波测距系统程序
2018-12-09 01:37:42
286
0
- 超声波测距程序问题
- #include
#define uchar unsigned char #define uint unsigned int #define ulong unsigned long sbit Tx = P3^3; //产生脉冲引脚 sbit Rx = P3^2; //回波引脚 uchar code SEG7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0...
2012-07-17 06:51:21
502
2
- 求一份如图 基于单片机超声波倒车测距的程序
2016-08-01 00:14:58
559
1
- 谁有三菱PLC仿真软件。发给我
2018-06-28 05:17:16
399
2
- 请问基于atmega16 ,利用霍尔传感器设计一个测速仪,求原理图跟设计程序
2011-10-22 21:40:33
209
2
- 求一份verilog的超声波测距程序
- 基本要求: 1) 测量距离不低于0.5m,测量精度优于0.1m。 2) 数字显示测量结果,并能动态更新,更新周期约为0.5s。 拓展要求: 1) 测量距离大于1m,测量精度优于0.05m,显示精度为0.01m,显示要求同上。 2) 数字显示测量结果的更新周期可调,显示... 基本要求: 1) 测量距离不低于0.5m,测量精度优于0.1m。 2) 数字显示测量结果,并能动态更新,更新周期约为0.5s。 拓展要求: 1) 测量距离大于1m,测量精度优于0.05m,显示精度为0.01m,显示要求同上。 2) 数字显示测量结果的更新周期可调,显示稳定。当距离小于0.5m时,通过蜂鸣器给出间歇式的“滴-滴”声响告警;当距离小于0.3m时,告警声响变得更加急促。 3) 其它功能(如使用多个超声波传感器实现汽车倒车雷达的功能)。 拓展要求可要可不要,求做过的大佬给份程序谢谢。 展开
2018-07-02 06:15:24
225
1
- 谁有1000L的发酵罐剖面图,发给我吧,谢谢。。。
2018-11-17 19:08:09
240
0
- 求US-100(模块)超声波测距的C语言程序,基于51单片机的,3Q哦~
- 求基于51单片机的US-100超声波测距C语言程序。需要详细点的具体设计程序,O(∩_∩)O~ US-100模块参考资料:http://wenku.baidu.com/view/65e63e35a32d7375a41780ce.html 性能要求:实现2--150cm的测距,测得结果保留4位有效数字(取整数),单位:mm。 哪... 求基于51单片机的US-100超声波测距C语言程序。需要详细点的具体设计程序,O(∩_∩)O~ US-100模块参考资料:http://wenku.baidu.com/view/65e63e35a32d7375a41780ce.html 性能要求:实现2--150cm的测距,测得结果保留4位有效数字(取整数),单位:mm。 哪位大神帮帮忙喽,急啊!!!真心谢谢大神了~ 展开
2017-05-17 15:16:00
512
1
- 求一个cc2530 超声波模块测距的程序
2013-08-02 21:14:16
321
2
- 求基于STC89c52单片机做超声波测距仪程序
2015-04-11 11:12:58
359
1
- 谁有PLC运动控制控制实例的 发份给我 谢谢 525259034@qq.com
- 要求精度的大功率的伺服... 要求精度的 大功率的伺服 展开
2011-08-31 02:09:42
393
2
- 谁有机器视觉图像处理软件,发一份给我。谢谢啊 QQ:349284951
2011-07-25 10:42:17
305
2
- 这个51单片机HC-SR04超声波测距程序哪里错了
- //晶振11.0592MHz #include
#define uchar unsigned char #define uint unsigned int sbit trig=P0^2; sbit echo=P3^3; float dis=0; uint irtime=0; void delay_20us() { uchar bt ; for(bt=0;bt<100;bt++); } void TI... //晶振11.0592MHz #include #define uchar unsigned char #define uint unsigned int sbit trig=P0^2; sbit echo=P3^3; float dis=0; uint irtime=0; void delay_20us() { uchar bt ; for(bt=0;bt<100;bt++); } void TIM1init(void)//定时器1初始化 { TMOD=0x22;//定时器1工作方式2,TH1是重装值,TL1是初值 TH1=0xd2; //重载值 溢出一次约50us TL1=0xd2; //初始化值 ET1=1; //开中断 } void EX1init(void) //外部中断1初始化 { IT1 = 1; //指定外部中断0下降沿触发,INT1 (P3.3) EA = 1; //开总中断 } /*------------------------------------------------ 定时器1中断处理 ------------------------------------------------*/ void tim1_isr (void) interrupt 3 { irtime++; //用于计数2个下降沿之间的时间 } /*------------------------------------------------ 外部中断1中断处理 ------------------------------------------------*/ void EX1_ISR (void) interrupt 2 //外部中断1服务函数 { dis=340*(irtime/2.0)*50/10000; irtime=0; TR1=0; EX1=0; } void test(void) { trig=1; delay_20us(); trig=0; EX1=1; while(!echo); TR1=1; } void main(void) { TIM1init(); EX1init(); while(1) { test(); display(dis); } } 主函数调用test,然后在数码管上显示(显示函数略过),测试的时候,在数码管上显示的距离明显不对,还各种不稳定,有时就个位数上显示一个1或2,不知道怎么回事 展开
2016-01-25 09:17:10
334
2
- 基于单片机的超声波测距系统的答辩有什么问题
2017-06-07 04:45:19
555
1
- 求一个基于stm32和us-100的超声波测距原理图
2018-06-17 12:43:03
624
1
- 超声波测距
- time=timeH*256+timeL; distance=time*0.0172; //厘米 0.0172怎么来的 , distance怎么来的 求具体转换过程,只要真心,一定采纳
2013-11-23 11:03:17
359
1
- DHT11 温湿度传感器 avr nega 16 c程序
- 用4个共阳的数码管显示的mega16avr单片机的c程序... 用4个共阳的数码管显示的 mega 16 avr单片机的 c程序 展开
2018-11-28 15:47:44
302
0
- 谁有真空镀膜机操作规程和维修保养计划表?有的发一份给我,谢谢!
2018-12-02 00:08:44
307
0
- 帮帮忙 帮我解释详细下 这个程序 超声波测距的
- void Conut(void) { time=TH0*256+TL0; TH0=0; TL0=0; S=(time*1.72)/100; //算出来是CM
2013-06-17 03:22:24
401
1
9月突出贡献榜
- 单位预算忏悔
- 饿啊地方
- 空中有牛
- 依然相信你会
- 本生(天津)健康科技有限公司
- 猫合宝
- 武汉安德信检测设备有限公司
- 上海一科仪器有限公司
- 广东皓天检测仪器有限公司
- 东莞市皓天试验设备有限公司
- futu888
- 牛牛麻麻2
推荐主页
最新话题
参与评论
登录后参与评论