资源简介
超声波的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
相关资源
- E4A无障碍跨程序操作类库(带源码、
- 设备管理系统源码
- 安卓wifi直连app源码
- 我的世界源码(易语言版)
- labview编程软件滤波器以及编写程序设
- 我的界面(visual foxpro)源码
- 易语言:一键cf基址源码
- The Secret Path 3D 3D魔方迷宫[源码][scra
- scratch垃圾分类源码(最终版本).sb
- STM32f103超声波模块例程
- 安卓QQ6.71协议源码易语言,qq协议源码
- 编译原理实验工具及参考源码(lex&
- E盾偷后台工具源码
- UNIX/LINUX编程实践教程的源码
- 十以内加减法练习 powerbuilder源码
- 农场开发项目
- OCR源码
- PLC上位机编程软件
- 用foobar2000听google音乐[更新一下]
- 学生信息管理系统源码
- 用VC 编写的仿QQ聊天室程序源代码
- 毕业论文之温度传感器DS18B20(源码
- 可自定义导航网站源码
- 栅栏填充算法源码(VC)
- msp430F149操作红外接收模块源码
- [免费]图像识别c 源码
- 周易排盘源码
- RSA算法源码
- 一个人脸识别程序源码
- 编译原理课程设计:词法语法编译器
评论
共有 条评论