找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2832|回复: 0
收起左侧

单片机设置产品的使用次数的方法 带源程序

[复制链接]
ID:137190 发表于 2016-10-10 13:05 | 显示全部楼层 |阅读模式
用单片机编程来实现设置产品的使用次数:
0.png

仿真工程文件及所有完整程序等资料下载地址:
http://www.51hei.com/bbs/dpj-56298-1.html


源程序:
  1. /********************************************************************
  2.                             天马电子
  3. *********************************************************************/
  4. #include <reg52.H>

  5. /****************************************************************************
  6.                                         24C08 读写驱动程序        开始
  7. *****************************************************************************/
  8. #include <reg52.H>
  9. #include <stdio.h>
  10. #include <absacc.h>
  11. #define uchar unsigned char
  12. #define uint unsigned int

  13. sbit scl=P3^3;  //24c02 SCL
  14. sbit sda=P3^4;  //24c02 SDA

  15. uchar x24c02_read(uchar address); //从24c02的地址address中读取一个字节数据
  16. void x24c02_write(uchar address,uchar info);
  17.   //向24c02的address地址中写入一字节数据info
  18. void x24c02_init();   //24c02初始化子程序
  19. void delay1(uchar x);
  20. void flash();
  21. void x24c01_init();
  22. void start();
  23. void stop();
  24. void writex(uchar j);
  25. uchar readx();
  26. void clock();
  27. void delay1(uchar x)
  28. {
  29.    uint i;
  30.    for(i=0;i<x;i++);
  31. }
  32. void flash()
  33. {}
  34. void x24c02_init()
  35. {
  36.    scl=1; flash(); sda=1; flash();
  37. }
  38. void start()
  39. {
  40.    sda=1; flash(); scl=1; flash(); sda=0; flash(); scl=0; flash();
  41. }
  42. void stop()
  43. {
  44.    sda=0; flash(); scl=1; flash(); sda=1; flash();
  45. }
  46. void writex(uchar j)
  47. {
  48.    uchar i,temp;
  49.    temp=j;
  50.    for (i=0;i<8;i++){
  51.       temp=temp<<1; scl=0; flash(); sda=CY; flash(); scl=1; flash();
  52.    }
  53.    scl=0; flash(); sda=1; flash();
  54. }
  55. uchar readx()
  56. {
  57.    uchar i,j,k=0;
  58.    scl=0; flash(); sda=1;
  59.    for (i=0;i<8;i++){
  60.       flash(); scl=1; flash();
  61.       if (sda==1) j=1;
  62.       else j=0;
  63.       k=(k<<1)|j; scl=0;
  64.    }
  65.    flash(); return(k);
  66. }
  67. void clock()
  68. {
  69.    uchar i=0;
  70.    scl=1; flash();
  71.    while ((sda==1)&&(i<255))i++;
  72.    scl=0; flash();
  73. }
  74. uchar x24c02_read(uchar address)
  75. {
  76.    uchar i;
  77.    start(); writex(0xa0);
  78.    clock(); writex(address);
  79.    clock(); start();
  80.    writex(0xa1); clock();
  81.    i=readx(); stop();
  82.    delay1(10);
  83.    return(i);
  84. }
  85. void x24c02_write(uchar address,uchar info)
  86. {
  87.    EA=0;
  88.    start(); writex(0xa0);
  89.    clock(); writex(address);
  90.    clock(); writex(info);
  91.    clock(); stop();
  92.    EA=1;
  93.    delay1(50);
  94. }


  95. //====================================================================//
  96. main()
  97. {
  98. signed char sec; //定义数值
  99. x24c02_init(); //初始化24C08
  100. sec=x24c02_read(2);//读出保存的数据赋于sec

  101. //sec=10;        //设置使用次数

  102. sec--;
  103. x24c02_write(2,sec); //在24c08 的地址2 中写入数据sec

  104. while(1)
  105. {
  106. if(sec>=1)P2=0XAA;         //显示结果

  107. }
  108. }
复制代码
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表