历史上的今天
返回首页

历史上的今天

今天是:2025年01月21日(星期二)

正在发生

2020年01月21日 | 基于AVR单片机实现超声波测距的程序编写

2020-01-21 来源:elecfans

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharint_flag;

uintqian,bai,shi,ge;

uinti;

floatdistance;

//AlphanumericLCDModulefuncTIons

#asm

基于AVR单片机实现超声波测距的程序编写

.equ__lcd_port=0x18;PORTB

#endasm

#include

//ExternalInterrupt0servicerouTIne

interrupt[EXT_INT0]voidext_int0_isr(void)

{#asm("sei")

if(int_flag)

{

distance=i*17.3;

}

elseif(int_flag==0)

{

i=0;

int_flag=1;

TCCR0=0x0A;

}

}

//TImer0outputcompareinterruptservicerouTIne

interrupt[TIM0_COMP]voidtimer0_comp_isr(void)

{

i++;

}

//Declareyourglobalvariableshere

voidmain(void)

{

//Declareyourlocalvariableshere

//Input/OutputPortsinitialization

//PortAinitialization

//Func7=InFunc6=InFunc5=InFunc4=InFunc3=InFunc2=InFunc1=InFunc0=In

//State7=TState6=TState5=TState4=TState3=TState2=TState1=TState0=T

PORTA=0x00;

DDRA=0x01;

//PortBinitialization

//Func7=InFunc6=InFunc5=InFunc4=InFunc3=InFunc2=InFunc1=InFunc0=In

//State7=TState6=TState5=TState4=TState3=TState2=TState1=TState0=T

PORTB=0x00;

DDRB=0x00;

//PortCinitialization

//Func7=InFunc6=InFunc5=InFunc4=InFunc3=InFunc2=InFunc1=InFunc0=In

//State7=TState6=TState5=TState4=TState3=TState2=TState1=TState0=T

PORTC=0x00;

DDRC=0x00;

//PortDinitialization

//Func7=InFunc6=InFunc5=InFunc4=InFunc3=InFunc2=InFunc1=InFunc0=In

//State7=TState6=TState5=TState4=TState3=TState2=TState1=TState0=T

PORTD=0x04;

DDRD=0x00;

//Timer/Counter0initialization

//Clocksource:SystemClock

//Clockvalue:2000.000kHz

//Mode:CTCtop=OCR0

//OC0output:Disconnected

TCCR0=0x00;

TCNT0=0x00;

OCR0=0xc8;

//Timer/Counter1initialization

//Clocksource:SystemClock

//Clockvalue:Timer1Stopped

//Mode:Normaltop=FFFFh

//OC1Aoutput:Discon.

//OC1Boutput:Discon.

//NoiseCanceler:Off

//InputCaptureonFallingEdge

//Timer1OverflowInterrupt:Off

//InputCaptureInterrupt:Off

//CompareAMatchInterrupt:Off

//CompareBMatchInterrupt:Off

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

//Timer/Counter2initialization

//Clocksource:SystemClock

//Clockvalue:Timer2Stopped

//Mode:Normaltop=FFh

//OC2output:Disconnected

ASSR=0x00;

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;

//ExternalInterrupt(s)initialization

//INT0:On

//INT0Mode:Anychange

//INT1:Off

//INT2:Off

GICR|=0x40;

MCUCR=0x01;

MCUCSR=0x00;

GIFR=0x40;

//Timer(s)/Counter(s)Interrupt(s)initialization

TIMSK=0x02;

//AnalogComparatorinitialization

//AnalogComparator:Off

//AnalogComparatorInputCapturebyTimer/Counter1:Off

ACSR=0x80;

SFIOR=0x00;

//LCDmoduleinitialization

lcd_init(16);

//Globalenableinterrupts

#asm("sei")

PORTA.0=1;

delay_us(15);

PORTA.0=0;

while(1)

{

qian=(int)distance/1000;

bai=(int)distance00/100;

shi=(int)distance0/10;

ge=(int)distance;

lcd_gotoxy(0,0);

lcd_putchar(qian+48);

lcd_putchar(bai+48);

lcd_putchar(shi+48);

lcd_putchar(ge+48);

delay_ms(200);

PORTA.0=1;

delay_us(15);

PORTA.0=0;

int_flag=0;

};

}

推荐阅读

史海拾趣

Crowd Supply公司的发展小趣事

Crowd Supply的创立源于几位麻省理工大学的毕业生对于硬件创新的热情与追求。他们意识到,许多优秀的硬件项目因缺乏资金和市场渠道而无法实现商业化。于是,他们决定创建一个平台,专门服务于这些创新项目,帮助它们从原型设计走向市场。这就是Crowd Supply的初心,也是其使命所在——将原创、有用、受人尊敬的硬件带入生活。

AF International公司的发展小趣事

AF International的创立可以追溯到上世纪末,当时创始人张先生凭借对电子行业的敏锐洞察和深厚技术背景,决定创办一家专注于电子元器件研发与生产的公司。张先生深知技术创新是行业发展的关键,因此在公司创立之初就投入大量资源用于研发,逐步开发出了一系列具有竞争力的产品。凭借这些产品,AF International在电子行业中逐渐崭露头角,赢得了客户的信赖和市场的认可。

Chemi-Con公司的发展小趣事

在追求经济效益的同时,Chemi-Con公司也积极履行社会责任。公司注重环保和可持续发展,采用环保材料和生产工艺,减少对环境的影响。此外,Chemi-Con还积极参与社会公益事业,为社会的和谐发展做出贡献。这种负责任的态度不仅赢得了社会各界的认可,也为公司的长远发展注入了正能量。

这五个故事展示了Chemi-Con公司在电子行业中的发展历程和取得的成就。通过技术创新、品质管理、市场拓展、多元化发展和社会责任等方面的努力,Chemi-Con逐渐在电子行业中崭露头角,成为了铝电解电容器领域的佼佼者。

思博科技(Cybermax)公司的发展小趣事

为了确保产品质量和客户满意度,思博科技高度重视质量管理体系建设。公司引进了先进的质量管理理念和工具,建立了完善的质量管理体系。同时,公司还通过了ISO9001质量管理体系认证和多项行业认证。这些认证不仅证明了公司在质量管理方面的实力,还为客户提供了可靠的质量保证。

City_Technology公司的发展小趣事

1977年,伦敦大学内,四个富有远见的科学家怀揣着梦想,创立了City Technology公司。他们利用Wolfson研究所开发的电化学技术,着手研发新型氧气感应技术。这一创新技术的诞生,标志着City Technology在气体传感领域的初步尝试,并为其日后的腾飞奠定了坚实的基础。在接下来的几年里,公司不断突破技术瓶颈,其铁罐氧气传感器技术于1982年获得了英国皇后奖技术成就奖,这一荣誉不仅肯定了公司的技术实力,也为其在市场上赢得了良好的声誉。

C.K Magma公司的发展小趣事

C.K Magma公司始终坚持以创新为核心竞争力。他们不断推出具有创新性的电子产品,如高性能的集成电路、智能传感器等。这些产品凭借其卓越的性能和独特的功能,在市场上获得了广泛的认可。同时,公司还注重产品的用户体验和售后服务,赢得了客户的信赖和支持。

问答坊 | AI 解惑

模拟厂商如何应对手机产品提出的挑战?

整个手机产业目前的状况似乎已经陷入一种以价格竞争的阶段,有点像电视机市场。手机好像已经不属于我们印象中的高科技产品,几百块钱的手机就已经具备很丰富的功能,如音乐、拍照、摄像、手写输入、超大的触摸屏,真令人不可思议。用Intersil公司中 ...…

查看全部问答>

汇编的基础问题

在51单片机中,汇编程序出现如下: Org 0000h; Ljmp main; Org 0100h; Main:------- 然而:有人写成这样: Org 0100h; Ljmp main; Main:------ 两者相同吗? 为什么? 为什么要从100h开始? 老师讲过最少从30h开始,原 ...…

查看全部问答>

??怎样屏蔽外部中断??

我用的是2450,要在某些时刻屏蔽外部中断0,5~13一共10个外部中断中的部分中断。 我想可能有两种方法吧(不知道是不是): 1.对中断寄存器操作;  2.调用API 对于第一种方法,我参考了一下三星的使用手册,知道关键是操作INTMASK寄存 ...…

查看全部问答>

在Linux中安装turbo c

我现在刚开始学嵌入式开发,要用到c语言开发,我想请问一下怎么样在Linux虚拟机中安装turbo c,我用的Linux是 RedHat 9.0版本…

查看全部问答>

LM3开发笔记_5.ADC采集

       由于项目需要监测一些模拟量所以要用到ADC,这两天试了试LM3S8962的ADC功能,有一些收获,不敢独享和拿出来和大家分享。          ADC用于将连续变化的模拟电压转换成 ...…

查看全部问答>

自己做的LM3S9B96的板子,HJTAG无法识别

有没有兄弟遇到过相同的问题啊,jtag电路是和开发板上的一样,加了27欧电阻,TMS加了上拉电阻,其他信号线没上拉,h-jtag可以识别开发板的内核ID,但是无法识别自己做的板子的。后来在其他信号线上也加了上拉,还是无法识别。外部16M晶振起振,引脚 ...…

查看全部问答>

德州仪器 (TI) 和美国国家半导体 联手

今天看到TI官网里有个德州仪器 (TI) 和美国国家半导体   联手 方案大家可以参考参考!…

查看全部问答>

能不能以CCSV4为例介绍一下如何计算代码执行时间?

能不能以CCSV4为例介绍一下如何计算一段代码的执行时间?CCSV4应该有自动计算某段代码执行时间的功能吧,但不知道怎么用,希望高手指点一下,最好给出截图,呵呵。…

查看全部问答>

反激拓扑的这个反馈是如何实现的,找了很多资料都没有啊……

首先说这个电路是正常运行的,UC2844内部的误差放大器反相端直接接地,反馈直接接到了误差放大器的输出,常规的这种用法都是在COMP端加一个类似上拉电阻的形式,然后与光耦的副边串联,通过控制分压的值来反馈到COMP端,而这里是直接连到光耦的副边 ...…

查看全部问答>

出正点原子stm32战舰开发板

正点原子STM32战舰开发板(99新) 就上了几次电,我本人后面转fpga,dsp方向,就放置了,一直没有时间学习,最近看板子一直在吃灰,就拿来出了。 开发板*1,3.5寸液晶*1,JLINKV8*1,ENC28J60以太网络模块*1, 2.4G无线模块NRF24L01*2=========== ...…

查看全部问答>