当前位置:首页 > 超声波测距1602显示 - 图文
河南工程学院毕业设计
void display_m(uchar m)//////显示储存单元的序号 {
write(0x80+0x40+14,0); write(0x4d,1); write(0x30+m,1); }
///////////////////////////////////////////////////////////////////////////
四、数据存储电路及程序
系统提供M1-M9总共9个数据保存,key2键是上翻M1-M9,key3键是下翻M1-M9,key1键是测距键,每当按下key1键,系统测距一次,测距后的数据保存在当前液晶显示的M单元(上下键选择)中,系统可以显示用户开机后总共的测距次数,本系统还提供了开机或复位后,系统自动的跳转到关机前状态。提供数据存储的就是AT24C02,该芯片内部有256*8的E2prom且芯片的数据传输采用了II2C总线。
I2C总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。 I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。每个接到I2C总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。由总线上接收数据的器件则为接收器。 在多主机系统中,可能同时有几个主机企图启动总线传送数据。为了避免混乱, I2C总线要通过总线仲裁,以决定由哪一台主机控制总线。
AT24c02与单片机的借口电路如图3-9所示。
图3-9 AT24c02与单片机的接口电路
17
河南工程学院毕业设计
数据存储程序如下。
///////////////////////////////////24c02程序/////////////////////////////// void init24c02()////初始化 {
WP=1; SCL=1; delay(5); SDA=1; delay(5); }
void start()///////启动信号 { SDA=1; delay(5); SCL=1; delay(5); SDA=0; delay(5); }
void stop()//////////停止信号 { SDA=0; delay(5); SCL=1; delay(5); SDA=1; delay(5); }
void respons()////////回应信号
18
河南工程学院毕业设计
{
uchar i=0; SCL=1; delay(5);
while((SDA==1)&&(i<255))i++; SCL=0; delay(5); }
void writebyte(uchar date)/////写一个字节 {
uchar i,temp; temp=date; WP=1; for(i=0;i<8;i++) {
temp=temp<<1; SCL=0; delay(5); SDA=CY; delay(5); SCL=1; delay(5); } SCL=0; delay(5); SDA=1; delay(5); WP=0; }
19
河南工程学院毕业设计
uchar readbyte() ///////读一个字节 {
uchar i,j,k; SCL=0; delay(5); SDA=1; for(i=0;i<8;i++) { SCL=1; delay(5); if(SDA==1)j=1; else j=0; k=(k<<1)|j; SCL=0; delay(5); } delay(5); return k; }
void write_add(uchar address,uchar date)//指定地址写一个字节数据 { start(); writebyte(0xae); respons(); writebyte(address); respons(); writebyte(date); respons(); stop(); }
20
共分享92篇相关文档