久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5110|回復: 5
收起左側

at24c20的應用 基于單片機的秒表程序上讀寫數據至24c02芯片

[復制鏈接]
ID:84299 發表于 2015-11-11 20:21 | 顯示全部樓層 |閱讀模式
本實驗是基于單片機的秒表程序上讀寫數據至24c02芯片,如數碼管顯示18,關掉電源,重新給單片機上電,然后可以看到數碼管上的數字會重18開始繼續及時。
  1.         #include<reg51.h>
  2.                 #define uchar unsigned char
  3.                 #define uint unsigned int

  4.                 bit write=0;
  5.                 sbit sda=P2^0;
  6.                 sbit scl=P2^1;
  7.                 sbit wei0=P1^0;
  8.                 sbit wei1=P1^1;
  9.                 uchar sec,tcnt;
  10.                 uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  11.                 void delay()
  12.                 { ; ; }
  13.                 void delayms(uint z)
  14.                 {
  15.                         uint x,y;
  16.                         for(x=z;x>0;x--)
  17.                         for(y=110;y>0;y--);

  18.                 }
  19.                 void start()
  20.                 {
  21.                         sda=1;
  22.                         delay();
  23.                         scl=1;
  24.                         delay();
  25.                         sda=0;
  26.                         delay();
  27.                 }
  28.                 void stop()
  29.                 {
  30.                         sda=0;
  31.                         delay();
  32.                         scl=1;
  33.                         delay();
  34.                         sda=1;
  35.                         delay();
  36.                 }
  37.                 void respons()
  38.                 {
  39.                         uchar i;
  40.                         scl=1;
  41.                         delay();
  42.                         while((sda==1)&&(i<250))i++;
  43.                         scl=0;
  44.                         delay();
  45.                 }
  46.                 void init()
  47.                 {
  48.                         sda=1;
  49.                         delay();
  50.                         scl=1;
  51.                         delay();
  52.                 }
  53.                 void write_byte(uchar date)
  54.                 {
  55.                         uchar i,temp;
  56.                         temp=date;
  57.                         for(i=0;i<8;i++)
  58.                         {
  59.                                 temp=temp<<1;
  60.                                 scl=0;
  61.                                 delay();
  62.                                 sda=CY;
  63.                                 delay();
  64.                                 scl=1;
  65.                                 delay();
  66.                         }
  67.                         scl=0;
  68.                         delay();
  69.                         sda=1;
  70.                         delay();
  71.                 }
  72.                 uchar read_byte()
  73.                 {
  74.                         uchar i,k;
  75.                         scl=0;
  76.                         delay();
  77.                         sda=1;
  78.                         delay();
  79.                         for(i=0;i<8;i++)
  80.                         {
  81.                                 scl=1;
  82.                                 delay();
  83.                                 k=(k<<1)|sda;
  84.                                 scl=0;
  85.                                 delay();
  86.                         }
  87.                     return k;
  88.                 }
  89.                 void write_add(uchar address,uchar date)
  90.                 {
  91.                         start();
  92.                         write_byte(0xa0);
  93.                         respons();
  94.                         write_byte(address);
  95.                         respons();
  96.                         write_byte(date);
  97.                         respons();
  98.                         stop();
  99.                 }
  100.                 uchar read_add(uchar address)
  101.                 {
  102.                         uchar date;
  103.                         start();
  104.                         write_byte(0xa0);
  105.                         respons();
  106.                         write_byte(address);
  107.                         respons();
  108.                         start();
  109.                         write_byte(0xa1);
  110.                         respons();
  111.                         date=read_byte();
  112.                         stop();
  113.                         return date;

  114.                 }
  115.                 void display(uchar shi,uchar ge)
  116.                 {
  117.                        
  118.                         wei0=1;
  119.                         wei1=1;
  120.                         P0=table[shi];
  121.                         wei0=0;
  122.                         delayms(10);
  123.                         wei0=1;
  124.                         wei1=0;
  125.                         P0=table[ge];
  126.                         delayms(10);
  127.                         wei1=1;
  128.                 }
  129.                 void main()
  130.                 {
  131.                         init();
  132.                         sec=read_add(2);
  133.                         if(sec>100)sec=0;
  134.                         TMOD=0x01;
  135.                         ET0=1;
  136.                         EA=1;
  137.                         TH0=(65536-50000)/256;
  138.                         TL0=(65536-50000)%256;
  139.                         TR0=1;
  140.                         while(1)
  141.                         {
  142.                                 display(sec/10,sec%10);
  143.                                 if(write==1)
  144.                                 {
  145.                                         write=0;
  146.                                         write_add(2,sec);
  147.                                 }
  148.                         }
  149.                 }
  150.                 void t0() interrupt 1
  151.                 {
  152.                          TH0=(65536-50000)/256;
  153.                         TL0=(65536-50000)%256;
  154.                         tcnt++;
  155.                         if(tcnt==20)
  156.                         {
  157.                                 tcnt=0;
  158.                                 sec++;
  159.                                 write=1;
  160.                                 if(sec==100)
  161.                                 sec=0;
  162.                         }
  163.                 }
復制代碼


at24c02.rar

34.29 KB, 下載次數: 15, 下載積分: 黑幣 -5

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的積分獎勵!

查看全部評分

回復

使用道具 舉報

ID:1 發表于 2015-11-12 00:23 | 顯示全部樓層
樓主能分享下電路圖嗎?
回復

使用道具 舉報

ID:84299 發表于 2015-11-12 12:34 | 顯示全部樓層
admin 發表于 2015-11-12 00:23
樓主能分享下電路圖嗎?

不好意思,我沒有畫電路圖,這些程序都是基于我自己焊的板子寫的,一般的開發板都有這些硬件吧。
回復

使用道具 舉報

ID:95423 發表于 2015-11-12 13:10 | 顯示全部樓層
這是郭天祥的。
回復

使用道具 舉報

ID:84299 發表于 2015-11-12 13:14 | 顯示全部樓層
是啊,上學期剛開始學單片機的時候學的。
回復

使用道具 舉報

ID:114643 發表于 2016-4-17 22:44 來自手機 | 顯示全部樓層
很好,3231時鐘有點象。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本电影一区二区 | 亚洲国产成人精品一区二区 | 精品影视| 欧美一区二区三区四区视频 | 欧美成视频 | 亚洲欧洲激情 | 亚洲欧美一区二区三区国产精品 | 久久久久久久一区二区 | 一区二区三区在线免费看 | 国产精品一级在线观看 | 国产精品美女久久久免费 | 国产精品久久久久久久久图文区 | 日韩精品免费视频 | 国产乱码精品一区二区三区忘忧草 | av电影手机版| 免费永久av | 日韩av在线一区 | 国产在线精品一区二区三区 | 国产一区二区精品在线观看 | 国产一区二区三区久久久久久久久 | 波多野结衣中文字幕一区二区三区 | 国产98在线 | 免费, | 国产精品久久久久久久久久妞妞 | 国产成人久久精品一区二区三区 | 99re视频这里只有精品 | 国产精品一区二区在线播放 | 噜啊噜在线 | 欧美视频二区 | 久久精品福利视频 | 久久精品国产99国产精品亚洲 | 国产精品黄色 | 久久国产精品视频 | 成人久久18免费 | 日本精品一区二区三区视频 | 91视频国产一区 | 一级毛片免费 | 久久在线看| 毛片免费在线观看 | 在线观看国产wwwa级羞羞视频 | 国产一区二区三区四区三区四 | 羞羞视频在线观免费观看 |