资源简介
超声波的AVR源码,附带有超声波的详细使用资料
代码片段和文件信息
/************************************************************************************************************************************
超声波测距(12864串行,以5位毫米值显示)
本程序不带温度补偿,取声速为340m/s给发射角一个10--25us的高电平,模块会自动发射8个40KHZ的脉冲,接收端高电平的持续时间就是超声波在空气中的传播时间,根据
公式:length= [time(us) * 340(m/s) / 2 ](mm),能测量30mm--2500mm15°夹角
发射脚(trig):PB1
接收脚(echo):PB2
***********************************************************************************************************************************/
#include
#include
#define F_CPU 8000000UL
#include
#define uchar unsigned char
#define uint unsigned int
uchar table[]={}; //存放以毫米显示的5位长度值
/******************12864液晶引脚定义********************/
#define LCD_CS_H PORTD|=(1<<4)
#define LCD_CS_L PORTD&=~(1<<4)
#define LCD_SID_H PORTD|=(1<<5)
#define LCD_SID_L PORTD&=~(1<<5)
#define LCD_SCLK_H PORTD|=(1<<6) 5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
#define LCD_SCLK_L PORTD&=~(1<<6)
/***************MCU向液晶模块发送1一个字节的数据*********
参 数:type--数据类型,0--控制命令,1--显示数据
transdata--发送的数据
*********************************************************/
void LCD_SEND(unsigned char typeunsigned char transdata)
{
unsigned char firstbyte=0xf8; //如果type为0 则STD的第一个字节直接赋为1111 1000因为只写,所以RW一直为0,发送命令,所以RS也为0
unsigned char tempij=3;
if(type) firstbyte |= 0x02; //因为串行STD的第1个字节为1111 1(RW)(RS)0 若RS为1,说明为发送数据
LCD_CS_H; //将CS置高
LCD_SCLK_L; //将时钟先置低
while(j>0)
{
if(j==3) temp = firstbyte;
else if(j==2) temp = transdata&0xf0; //因为串行STD的第2个字节为1111 0000只保留高4位
else temp = (transdata<<4)&0xf0; //因为串行STD的第3个字节为0000 1111,但是他把低四位整个的移到了前边
for(i = 8;i > 0;i--) //通过循环移位发送第一个字节,每次发送一位,首先发送最高位
{
if(temp&0x80) {LCD_SID_H;} //如果最高位为1,则SID置1
else {LCD_SID_L;} //如果最高位为0,则SID置0即先将数据放在SID端口上
LCD_SCLK_H; //然后将时钟拉高
temp <<= 1; //将要传送的数据移一下位
LCD_SCLK_L;
}
if(j==3) _delay_us(600);
else _delay_us(200);
j--;
}
LCD_SID_L;
LCD_CS_L; //每发送完一个字节CS都要置低
}
/*******************液晶初始化函数***************************/
void LCD_init(void)
{
DDRD |= 0XF0;
PORTD |= 0XF0;
_delay_ms(10); //延时等待液晶完成复位
LCD_SEND(00x30); /*功能设置:一次送8位数据基本指令集*/
_delay_ms(1);
LCD_SEND(00x02); /*DDRAM地址归位*/
_delay_ms(1);
LCD_SEND(00x0c); /*显示设定:开显示不显示光标不做当前显示位反白闪动*/
_delay_ms(1);
LCD_SEND(00x01); /*清屏,将DDRAM的位址计数器调整为“00H”*/
_delay_ms(1);
LCD_SEND(00x06); /*功能设置,点设定:显示字符/光标从左到右移位DDRAM地址加1*/
_delay_ms(1);
LCD_SEND(00x80); //设定显示的起始地址
_delay_ms(100); //必须延时,否则第一行显示错误并且延时过短第一行也会出现错误
}
/***********************精确延时24.
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-03-10 08:37 超声波的AVR程序\
文件 3126 2011-03-14 17:39 超声波的AVR程序\2011-01-10-chaoshengbo-1.aps
文件 300 2011-05-08 17:17 超声波的AVR程序\2011-01-10-chaoshengbo-1.aws
文件 4882 2011-03-14 17:39 超声波的AVR程序\2011-01-10-chaoshengbo-1.c
目录 0 2012-03-10 08:37 超声波的AVR程序\default\
文件 4882 2011-03-14 17:39 超声波的AVR程序\复件 2011-01-10-chaoshengbo-1.c
相关资源
- 操作系统设计与实现第三版英文版+全
- 学分管理系统数据库课设及源码
- 磁盘调度算法课设及源码
- 基于 CLR Windows Forms 的标准型计算器源
- linux下的实时语音聊天程序源码adpcm编
- avrdude-GUI 1.0.5
- erlang聊天室源码
- dropload多个+js+css源码,可直接套用
- Unity类似CS射击游戏源码可实现多人联
- 单片机光敏电阻源码
- WinRing0及其源码
- servlet-api 源码
- linux PL2303 usb转串口驱动源码
- TDS-100超声波流量计上位机软件
- 使用LabVIEW实现网页数据提取与交互
- 视频点播源码
- 普通最小二乘法回归_源码数据
- 四川房卡麻将源码 +安装教程 仅供学
- 汇编的小游戏star terk
- flash、SRAM、EEPROM在AVR中的应用
- 尚硅谷 4月份MyBatis视频教程国内首套
- PageRank算法 北邮计算机应用编程实验
- 永磁电机滑膜观测文档及算法源码
- 百变小米每日签到 高级版4.3.3
- 二次解析源码带后台广告位.zip
- 超声波检测国家标准超声波检测国家
- 易语言注入dll调用call源码
- PB9使用api实现ftp查看与的源码
- 冒险岛GM工具的源码 GM工具
- stm32 IAP源码
评论
共有 条评论