2989|2

198

帖子

3

TA的资源

一粒金砂(中级)

楼主
 

富士通FRAM心得提交_停车场开关道闸记录器 [复制链接]

本帖最后由 reayfei 于 2014-1-13 13:26 编辑

主要功能:记录道闸开关的时间,方便记录必要的信息。如果进行升级还将实现记录车辆的号码、颜色、驾驶员信息等大量数据。
       应用场合:停车场当然是这个项目的主要场合,其实这个记录器的应用十分广泛,可以用于各种门禁、电梯、行车记录仪等。

本应用中MB85RC256起到数据保存记录的作用,由于其接近无限次擦写的特性,对于这种高安全性要求来说,选择它在合适不过。32K字节的容量,可以存储0x8000/6=0x1555个信息,按照每天100辆汽车平均每辆通行2次,每片芯片可以记录0x1555/200=27天,也就是说,对于一个普通的停车场完全能够满足。如果加上无线通讯设备,还可以定期发送数据包给PC,记录器仅保留最近27天的数据,精细数据可以在PC中查到。

先上个全图



液晶屏幕显示当前时间,当按下开道闸按键同时会记录时间,屏幕下方显示的就是指定次数的开道闸时间。



Fujitsu芯片的处理,所有的信息就是存在这个芯片里。本项目里主要存储了年月日时分秒。




执行机构,当按下开道闸按键后,电机转动道闸打开,停顿5秒待车辆通过后,道闸自动落下。



首先介绍一下我申请的型号为MB85RC256VE  为256Kb的大小,能存储32K字节数据。
       接口为:SCL,SDA
       供电电压:2.7V~5.5V


我把A0、A1、A2与Vss连在了一起,所以写从机地址为0xA0,读为0xA1。
        具体的读写如下图所示:

写一个字节数据,


写一页数据,


读当前地址的数据,

读任意地址的数据(一个字节),

连续读取数据,




  1. void  MB85RC_W(void)
  2. {
  3.                 LED1=0;          //杆抬起  
  4.                 LED2=1;
  5.                 delay_ms(120);
  6.                 LED1=0;          //杆不动
  7.                 LED2=0;
  8.                 delay_ms(1000);
  9.                 delay_ms(1000);
  10.                 delay_ms(1000);
  11.                 delay_ms(1000);
  12.                 delay_ms(1000);
  13.                 LED1=1;          //杆放下
  14.                 LED2=0;
  15.                 delay_ms(120);
  16.                 LED1=0;          //杆不动
  17.                 LED2=0;
  18.         
  19.                 IIC_Start();
  20.                 IIC_Send_Byte(0XA0);                                         //salve 地址
  21.                 while(IIC_Wait_Ack()==1);
  22.                 IIC_Send_Byte(0x00);
  23.                 IIC_Wait_Ack();
  24.                 IIC_Send_Byte(0x00);
  25.                 IIC_Wait_Ack();
  26.                                                                      IIC_Send_Byte(timer.w_year);  //年
  27.                 IIC_Wait_Ack();
  28.                 IIC_Send_Byte(timer.w_month); //月
  29.                 IIC_Wait_Ack();
  30.                 IIC_Send_Byte(timer.w_date);  //日
  31.                 IIC_Wait_Ack();
  32.                 IIC_Send_Byte(timer.hour);    //时
  33.                 IIC_Wait_Ack();
  34.                 IIC_Send_Byte(timer.min);     //分
  35.                 IIC_Wait_Ack();
  36.                 IIC_Send_Byte(timer.sec);     //秒
  37.                 IIC_Wait_Ack();
  38.                 IIC_Stop();
  39.                
  40.                 Preservation_ADDR_2 = Preservation_ADDR_2+6;
  41.                 if(Preservation_ADDR_2 == 0xFF)
  42.                 {
  43.                         Preservation_ADDR_1++;
  44.                         Preservation_ADDR_2 = 0x00;
  45.                 }
  46.                 if(Preservation_ADDR_1 == 0x80)
  47.                 {
  48.                         Preservation_ADDR_1 = 0x00;
  49.                         Preservation_ADDR_2 = 0x00;
  50.                 }
  51. }

  52. void  MB85RC_R(void)
  53. {
  54.           u8 a,b,c,d,e,f;
  55.         
  56.                 IIC_Start();
  57.                 IIC_Send_Byte(0xA0);  //salve 地址
  58.                 while(IIC_Wait_Ack()==1);
  59.                 IIC_Send_Byte(0x00);
  60.                 IIC_Wait_Ack();
  61.                 IIC_Send_Byte(0x00);
  62.                 IIC_Wait_Ack();
  63.                 IIC_Send_Byte(0xA1);  //读取时间记录
  64.                 IIC_Wait_Ack();
  65.                 a=IIC_Read_Byte(1);
  66.                 b=IIC_Read_Byte(1);
  67.                 c=IIC_Read_Byte(1);
  68.                 d=IIC_Read_Byte(1);
  69.                 e=IIC_Read_Byte(1);
  70.                 f=IIC_Read_Byte(1);
  71.                 IIC_Stop();        

  72.                 POINT_COLOR=RED;        
  73.                 LCD_ShowString(60,200,"Query time");        
  74.                 POINT_COLOR=BLUE;
  75.                 LCD_ShowString(60,235,"    -  -  ");           
  76.                 LCD_ShowString(60,270,"  :  :  ");                        
  77.         
  78.                 LCD_ShowNum(60,235,a,4,16);                                                                          
  79.                 LCD_ShowNum(100,235,b,2,16);                                                                          
  80.                 LCD_ShowNum(124,235,c,2,16);         
  81.                 LCD_ShowNum(60,270,d,2,16);                                                                          
  82.                 LCD_ShowNum(84,270,e,2,16);                                                                          
  83.                 LCD_ShowNum(108,270,f,2,16);
  84. }


  85. int main(void)
  86. {
  87.         u8 t=0;        
  88.         SystemInit();
  89.         delay_init(72);             //延时初始化
  90.         NVIC_Configuration();
  91.         uart_init(9600);
  92.         LED_Init();
  93.         KEY_Init();
  94.         LCD_Init();
  95.         RTC_Init();
  96.         IIC_Init();                                         //IIC初始化
  97.         EXTIX_Init();
  98.          
  99.         POINT_COLOR=RED;                 //设置字体为红色         
  100.         LCD_ShowString(60,98,"Intelligent parking");        
  101.         //显示时间
  102.         POINT_COLOR=BLUE;//设置字体为蓝色
  103.         LCD_ShowString(60,130,"    -  -  ");           
  104.         LCD_ShowString(60,162,"  :  :  ");               
  105.          
  106.         while(1)
  107.         {                                                                    
  108.                 if(t!=timer.sec)
  109.                 {
  110.                         t=timer.sec;
  111.                         LCD_ShowNum(60,130,timer.w_year,4,16);                                                                          
  112.                         LCD_ShowNum(100,130,timer.w_month,2,16);                                                                          
  113.                         LCD_ShowNum(124,130,timer.w_date,2,16);         
  114.                         LCD_ShowNum(60,162,timer.hour,2,16);                                                                          
  115.                         LCD_ShowNum(84,162,timer.min,2,16);                                                                          
  116.                         LCD_ShowNum(108,162,timer.sec,2,16);
  117.                         LED0=!LED0;
  118.                 }        
  119.                 delay_ms(10);               
  120.         };  

  121. }
复制代码




停车场开关道闸时间记录器.rar

3.11 MB, 下载次数: 3

源程序请大家参考

最新回复

我也申请了一直没有消息估计被拒了 我也申请了一直没有消息估计被拒了 我也申请了一直没有消息估计被拒了 我也申请了一直没有消息估计被拒了 我也申请了一直没有消息估计被拒了 我也申请了一直没有消息估计被拒了 我也申请了一直没有消息估计被拒了 我也申请了一直没有消息估计被拒了  详情 回复 发表于 2014-1-17 07:05

赞赏

1

查看全部赞赏

点赞 关注
 
 

回复
举报

35

帖子

7

TA的资源

一粒金砂(中级)

沙发
 

我也申请了一直没有消息估计被拒了
我也申请了一直没有消息估计被拒了
我也申请了一直没有消息估计被拒了
我也申请了一直没有消息估计被拒了
我也申请了一直没有消息估计被拒了
我也申请了一直没有消息估计被拒了
我也申请了一直没有消息估计被拒了
我也申请了一直没有消息估计被拒了

点评

你可以跟武汉力源联系一下,说明一下情况啊。  详情 回复 发表于 2014-1-17 10:31
个人签名
 
 
 

回复

198

帖子

3

TA的资源

一粒金砂(中级)

板凳
 
nealfox 发表于 2014-1-17 07:05
我也申请了一直没有消息估计被拒了
我也申请了一直没有消息估计被拒了
我也申请了一直没有消息估计被拒 ...

你可以跟武汉力源联系一下,说明一下情况啊。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表