基于89c51单片机的超声波测距内容摘要:
宁科技大学本科生毕业设计 第 14 页 第四章 系统软件设计 软件分 为两部分,主程序和中断服务程序,如图 41 所示。 主程序完成初始化工作、超声波发射和接收, 距离计算、结果的输出。 外部中断服务子程序主要完成时间值的读取。 NO YES 图 41 主程序流 程图 外部中断子程序 计算距离 结果输出 定时器及中断初始化 发射超声波 开外部中断 指示灯闪烁 单片机初始化 DS18B20 初始化 开 始 收到回波。 辽宁科技大学本科生毕业设计 第 15 页 主程序首先是对系统环境初始化,设置定时器 T0 工作模式为 16 位定时计数器模式。 置位总中断允许位 EA。 然后给 Trig 一个 20us 的高电平,然后在 Echo 引脚等待其变为高电平,一旦输出了高电平,表明超声波已开始发射,此刻即计时,等待 Echo变为低电平,即触发外部中断 0 的跳变沿方式中断。 读取当前定时器的值,换算成时间,乘以温度补偿后的波速,即得到测距距离。 由于采用的是 的晶 振,计数器每计一个数大概就是 1μ s,当主程序检测到接收成功的标志位后,将计数器T1 中的数(即超声波来回所用的时间)按式 计算,即可得被测物体与测距仪之间的距离。 测出距离后结果将以十进制 BCD 码方式送往 LED 显示约 ,然后再发超声波脉冲重复测量过程。 为了有利于程序结构化和容易计算出距离,主程序采用 C 语言编写。 显示子程序 本系统的 LED 显示采用了动态显示方式,用两块 74HC573 分别选通段码和位码,没显示一根管延时 2ms,利用人眼的视觉暂留效应,达到静态显示的效果, C 程序如下。 void display(uint distance_date) { uchar dm, cm, mm。 dm=distance_date/100。 cm=distance_date%100/10。 mm=distance_date%10。 dula=0。 P0=table[dm]。 dula=1。 dula=0。 wela=0。 P0=0x7f。 辽宁科技大学本科生毕业设计 第 16 页 wela=1。 wela=0。 delay(2)。 dula=0。 P0=table1[cm]。 dula=1。 dula=0。 wela=0。 P0=0xbf。 wela=1。 wela=0。 delay(2)。 P0=table[mm]。 dula=1。 dula=0。 P0=0xdf。 wela=1。 wela=0。 delay(2)。 } 外部中断子程序 因本设计把数据换算,计算距离以及显示子程序都放在了主程序中,所以外部中断子程序比较简单,它实现了对 T1数值读取,以及关闭外部中断的功能。 流程图如图 42所示。 辽宁科技大学本科生毕业设计 第 17 页 图 42 外部中断程序流程图 c程序如下: INTO_() interrupt 0 { outeH =TH1。 outeL =TL1。 succeed_flag=1。 EX0=0。 } 测量温度子程序 测温电路由美国 DALLAS 公司的 DS18B20芯片完成,其初始化过程如下: DS18B20的初始化 ( 1) 先将数据线置高电平 “1”。 ( 2) 延时(该时间要求的不是很严格,但是尽可能的短一点) ( 3) 数据线拉到低电平 “0”。 外部中断入口 关外部中断 读取时 间值 返回 辽宁科技大学本科生毕业设计 第 18 页 ( 4) 延时 750微秒(该时间的时间范围可以从 480到 960微秒)。 ( 5) 数据线拉到高电平 “1”。 ( 6) 延时等待 (如果初始化成功则在 15到 60毫秒时间之内产生一个由 DS18B20所返回的低电平 “0”。 据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。 ( 7) 若 CPU 读到了数据线上的低电平 “0” 后,还要做延时,其延时的时间从发出的高电平算起(第( 5)步的时间算起)最少要 480微秒。 ( 8) 将数据线再次拉高到高电平 “1” 后结束。 DS18B20的写操作 ( 1) 数据线先置低电平 “0”。 ( 2) 延时确定的时间为 15微秒。 ( 3) 按从低位到高位的顺序发送字节(一次只发送一位)。 ( 4) 延时时间为 45微秒。 ( 5) 将数据线拉到高电平。 ( 6) 重复上( 1)到( 6)的操作直到所有的字节全部发送完为止。 ( 7) 最后将数据线拉高。 DS18B20的读操作 ( 1)将数据线拉高 “1”。 ( 2)延时 2微秒。 辽宁科技大学本科生毕业设计 第 19 页 ( 3)将数据线拉低 “0”。 ( 4)延时 15微秒。 ( 5)将数据线拉高 “1”。 ( 6)延时 15微秒。 ( 7)读数据线的状态得到 1个状态位,并进行数据处理。 ( 8)延时 30微秒。 根据读写操作,其流程图如 43 转换完毕 开始 初始化 初始化 写命令:跳过读序列号操作( 0XCC) 写命令:启动温度转换( 0X44) 温度转换结束。 写命令:读温度寄存器( 0XBE) 写命令:跳过读序列号操作( 0XCC) 写 EEPROM,存储结果 辽宁科技大学本科生毕业设计 第 20 页 图 43 DS18B20初始化流程图 具体的各部分 C程序如下: void dsreset(void) //send reset and initialization mand { uint i。 DS=0。 i=103。 while(i0)i。 DS=1。 i=4。 while(i0)i。 } bit tmpreadbit(void) //read a bit { uint i。 bit dat。 DS=0。 i++。 //i++ for delay DS=1。 i++。 i++。 dat=DS。 i=8。 while(i0)i。 return (dat)。 } uchar tmpread(void) //read a byte date { uchar i, j, dat。 dat=0。 for(i=1。 i=8。 i++) 辽宁科技大学本科生毕业设计 第 21 页 { j=tmpreadbit()。 dat=(j7)|(dat1)。 //读出的数据最低位在最前面,这样刚好一个字节在 DAT 里 } return(dat)。 } void tmpwritebyte(uchar dat) //write a byte to ds18b20 { uint i。 uchar j。 bit testb。 for(j=1。 j=8。 j++) { testb=datamp。 0x01。 dat=dat1。 if(testb) //write 1 { DS=0。 i++。 i++。 DS=1。 i=8。 while(i0)i。 } else { DS=0。 //write 0 i=8。 while(i0)i。基于89c51单片机的超声波测距
相关推荐
表 单片机 管脚含义 ALE/PROG 地址锁存控制信号: 在访问片外程序存储器的时候,每机器周期这个信号出现两次,它的下降沿用来控制锁存 P0口输出的低 8位地址。 就算不在访问片外程序存储器的时候,这个信号也以振荡频率的 1/6 出现,因此可以用来作为对外输出的时钟脉冲。 但是在访问片外数据存储器的时候, ALE 脉冲会跳空一个,那此时作为时钟输出就不合适了。 /PSEN
如果有外设产生一个中断请求信号, IRQ 中断相应的位会被置位,否则会被清 0。 IRQEN 中断使能寄存器 当某一位置 1 时,相应的中断源可以请求中断,相反,相应的中断源没有被使能。 IRQCLR 中断屏蔽寄存器 可以用来清空在 IRQEN 寄存器中相应的位,当某一位置 1 有效。 要想取消一个已经使能的中断源,用户必须通过 IRQCLR 对应的位置 1 来实现。 单独清空 IRQEN
功能 闹铃文件 维护闹铃 闹铃接收 闹铃 基本日历 基本日历界面 日历界面适配器 桌面闹钟主要界面 维护数字时钟 布局按钮 HandleSetAlarm,java 设置 alarm 到 activity 数字帮组 重复 设置闹铃 设置闹铃页面 功能设置 Android的资源文件保存在 /res的子目录中。 其中 /res/drawable目录中保存的事图像文件,/res/layout
dd=num/100%10。 ee=num/10%10。 ff=num%10。 display(aa,bb,cc,dd,ee,ff)。 } if(mode==3) { num=500000/num1。 aa=num/100000。 bb=num/10000%10。 cc=num/1000%10。 dd=num/100%10。 ee=num/10%10。 ff=num%10。 display(aa
降沿时,寄存器的值加 1,在这种工作方式下,每个 机器周期的 5SP2 期间,对外部输入进行采样。 若在第一个机器周期中采到的值为 1,而在下一个机器周期中采到的值为 0, 则在紧跟着的下一个周期的 S3P1 期间寄存器加 1。 由于识别 1 至 0 的跳变需要 2 个机器周期( 24 个振荡周期),因此,最 高计数速率为振荡频率的 1/24。 为确保采样的正确性
图 ISD1760外形 贵州大学科技学院本科毕业论文(设计) 第 6 页 显示模块的选型 方案一: 采用 LED 数码管,如图 所示,它是设备常用简易显示电子元器件之一。 LED 数码管的主要优点如下: (1)能在低电压、小电流条件下驱动发光,能与 CMOS、 ITL电路兼容。 (2)发光响应时间极短,高频特性好,单色性好,亮度高。 (3)体 积小,重量轻,抗冲击性能好。 (4)寿命长