找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1290|回复: 0
打印 上一主题 下一主题
收起左侧

lcd万年历1602驱动程序代码

[复制链接]
跳转到指定楼层
楼主
ID:740383 发表于 2020-4-28 20:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
个人收集和改进的代码
非常适合新手
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. sbit sda=P2^0;
  4. sbit scl=P2^1;
  5. uchar a;
  6. void delay()
  7. { ;; }
  8. void start()  //¿aê¼DÅoÅ
  9. {       
  10.         sda=1;
  11.         delay();
  12.         scl=1;
  13.         delay();
  14.         sda=0;
  15.         delay();
  16. }

  17. void stop()   //í£Ö1
  18. {
  19.         sda=0;
  20.         delay();
  21.         scl=1;
  22.         delay();
  23.         sda=1;
  24.         delay();
  25. }

  26. void respons()  //ó|′e
  27. {
  28.         uchar i;
  29.         scl=1;
  30.         delay();
  31.         while((sda==1)&&(i<250))i++;
  32.         scl=0;
  33.         delay();
  34. }

  35. void init()
  36. {
  37.         sda=1;
  38.         delay();
  39.         scl=1;
  40.         delay();
  41. }

  42. void write_byte(uchar date)
  43. {
  44.         uchar i,temp;
  45.         temp=date;


  46.         for(i=0;i<8;i++)
  47.         {
  48.                 temp=temp<<1;
  49.                 scl=0;
  50.             delay();
  51.                 sda=CY;
  52.                 delay();
  53.                 scl=1;
  54.                 delay();
  55.         //        scl=0;
  56.      //   delay();
  57.         }
  58.         scl=0;
  59.         delay();
  60.         sda=1;
  61.         delay();
  62. }

  63. uchar read_byte()
  64. {
  65.         uchar i,k;
  66.         scl=0;
  67.         delay();
  68.         sda=1;
  69.         delay();
  70.         for(i=0;i<8;i++)
  71.         {
  72.                 scl=1;
  73.                 delay();       
  74.                 k=(k<<1)|sda;
  75.                 scl=0;
  76.                 delay();       
  77.         }
  78.         return k;
  79. }

  80. void delay1(uchar x)
  81. {
  82.         uchar a,b;
  83.         for(a=x;a>0;a--)
  84.          for(b=100;b>0;b--);
  85. }

  86. void write_add(uchar address,uchar date)
  87. {
  88.         start();
  89.         write_byte(0xa0);
  90.         respons();
  91.         write_byte(address);
  92.         respons();
  93.         write_byte(date);
  94.         respons();
  95.         stop();
  96. }

  97. uchar read_add(uchar address)
  98. {
  99.         uchar date;
  100.         start();
  101.         write_byte(0xa0);
  102.         respons();
  103.         write_byte(address);
  104.         respons();
  105.         start();
  106.         write_byte(0xa1);
  107.         respons();
  108.         date=read_byte();
  109.         stop();
  110.         return date;
  111. }

  112. void main()
  113. {
  114.         init();
  115.         write_add(23,0xaa);
  116.         delay1(100);
  117.         P1=read_add(23);
  118.         while(1);
  119. }


复制代码


欢迎下载指教

LCD万年历.docx

12.96 KB, 下载次数: 10, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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