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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2999|回復: 0
打印 上一主題 下一主題
收起左側

mickoC 編寫pic18f45k22讀取i2c接口RTC pcf8583時間顯示在數碼管,附仿真。

[復制鏈接]
跳轉到指定樓層
樓主
mickoC 編寫pic18f45k22讀取i2c接口RTC pcf8583時間顯示在數碼管,附仿真。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. /*
  2. * Project name:
  3.      Seven Segment Display (The 'Hello World' example for the Seven Segment Display)
  4. * Copyright:
  5.      (c) Mikroelektronika, 2011.
  6. * Revision History:
  7.      20110929:
  8.        - initial release (FJ);
  9. * Description:
  10.      This code demonstrates how to display number on one 7-segment display
  11.      (common cathode). Display is connected to PORTD (RD0..RD7, segment A to
  12.      RD0, segment B to RD1, etc); common cathode is connected to the pin RA0 on
  13.      PORTA. Number is incremented every 1s.

  14. * NOTES:
  15.      - Turn on Seven Segment Display switches SW4.1, SW4.2, SW4.3 and SW4.4. (board specific)
  16. */

  17. #include "Display_Utils.h"

  18. //unsigned short  portd_index;

  19. char seconds, minutes, hours, day, month, year; // Global date/time variables
  20. char i;
  21. // Software I2C connections
  22. /*sbit Soft_I2C_Scl           at RC3_bit;
  23. sbit Soft_I2C_Sda           at RC4_bit;
  24. sbit Soft_I2C_Scl_Direction at TRISC3_bit;
  25. sbit Soft_I2C_Sda_Direction at TRISC4_bit;
  26. */
  27. // End Software I2C connections


  28. //--------------------- Reads time and date information from RTC (PCF8583)
  29. void Read_Time() {

  30.   I2C1_Start();               // Issue start signal
  31.   I2C1_Wr(0xA0);           // Address PCF8583, see PCF8583 datasheet
  32.   I2C1_Wr(2);              // Start from address 2
  33.   I2C1_Repeated_Start();     // issue I2C signal repeated start
  34.   //I2C1_Start();               // Issue repeated start signal
  35.   I2C1_Wr(0xA1);           // Address PCF8583 for reading R/W=1

  36.   seconds = I2C1_Rd(1);     // Read seconds byte
  37.   minutes = I2C1_Rd(1);     // Read minutes byte
  38.   hours = I2C1_Rd(1);       // Read hours byte
  39.   day = I2C1_Rd(1);         // Read year/day byte
  40.   month = I2C1_Rd(0);       // Read weekday/month byte
  41.   I2C1_Stop();                // Issue stop signal

  42. }

  43. //-------------------- Formats date and time
  44. void Transform_Time() {
  45.   seconds  =  ((seconds & 0xF0) >> 4)*10 + (seconds & 0x0F);  // Transform seconds
  46.   minutes  =  ((minutes & 0xF0) >> 4)*10 + (minutes & 0x0F);  // Transform months
  47.   hours    =  ((hours & 0xF0)  >> 4)*10  + (hours & 0x0F);    // Transform hours
  48.   year     =   (day & 0xC0) >> 6;                             // Transform year
  49.   day      =  ((day & 0x30) >> 4)*10    + (day & 0x0F);       // Transform day
  50.   month    =  ((month & 0x10)  >> 4)*10 + (month & 0x0F);     // Transform month
  51. }

  52. /*
  53. void interrupt() {
  54.   LATD = 0;                             // Turn off all 7seg displays
  55.   LATD = mask(hours/10u);      // bring appropriate value to PORTD
  56.   LATA = 0b011111;                       // turn on appropriate 7seg. display
  57.   Delay_ms(2);
  58.   LATD=0;
  59.   LATD = mask(hours%10u);
  60.   LATA = 0b101111;
  61.   Delay_ms(2);
  62.   LATD=0;
  63.   LATD = mask(minutes/10u);
  64.   LATA = 0b110111;
  65.   Delay_ms(2);
  66.   LATD=0;
  67.   LATD = mask(minutes%10u);
  68.   LATA = 0b111011;
  69.   Delay_ms(2);
  70.   LATD=0;
  71.   LATD = mask(seconds/10u);
  72.   LATA = 0b111101;
  73.   Delay_ms(2);
  74.   LATD=0;
  75.   LATD = mask(seconds%10u);
  76.   LATA = 0b111110;
  77.   Delay_ms(2);
  78.   LATD=0;

  79.   TMR0L  =   0;                  // reset TIMER0 value
  80.   TMR0IF_bit = 0;                // Clear TMR0IF
  81. } */

  82. void main() {
  83.   ANSELA = 0;                    // Configure PORTA pins as digital
  84.   ANSELD = 0;                    // Configure PORTD pins as digital

  85.   TRISA = 0;                     // Configure PORTA as output
  86.   LATA  = 0;                     // Clear PORTA
  87.   TRISD = 0;                     // Configure PORTD as output
  88.   LATD  = 0;                     // Clear PORTD

  89.   //T0CON = 0xC4;                  // Set TMR0 in 8bit mode, assign prescaler to TMR0
  90.   //TMR0L = 0;                     // clear TMROL

  91.   //GIE_bit = 1;
  92.   //TMR0IE_bit = 1;

  93.   I2C1_Init(100000);         // initialize I2C communication

  94.   //Soft_I2C_Init();           // Initialize Soft I2C communication

  95.   do {
  96.      Read_Time();             // Read time from RTC(PCF8583)
  97.      Transform_Time();        // Format date and time
  98.      for (i=0;i<32;i++)
  99.       {
  100.       LATD = 0;                             // Turn off all 7seg displays
  101.       LATD = mask(hours/10u);      // bring appropriate value to PORTD
  102.       LATA = 0b011111;                       // turn on appropriate 7seg. display
  103.       Delay_ms(20);
  104.       LATD=0;
  105.       LATD = mask(hours%10u);
  106.       LATA = 0b101111;
  107.       Delay_ms(20);
  108.       LATD=0;
  109.       LATD = mask(minutes/10u);
  110.       LATA = 0b110111;
  111.       Delay_ms(20);
  112.       LATD=0;
  113.       LATD = mask(minutes%10u);
  114.       LATA = 0b111011;
  115.       Delay_ms(20);
  116.       LATD=0;
  117.       LATD = mask(seconds/10u);
  118.       LATA = 0b111101;
  119.       Delay_ms(20);
  120.       LATD=0;
  121.       LATD = mask(seconds%10u);
  122.       LATA = 0b111110;
  123.       Delay_ms(20);
  124.       LATD=0;
  125.       }
  126.      //Delay_ms(4000);                      // one second delay

  127.   } while(1);                            // endless loop
  128. }
復制代碼

所有資料51hei提供下載:
pic18f45k22 led rtc.zip (61.09 KB, 下載次數: 16)


評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一二三区在线观看 | 精品亚洲91 | 国产成人免费网站 | 亚洲精品在线免费观看视频 | 欧美成人精品一区二区男人看 | www.日本在线播放 | 成人精品视频免费 | 在线观看www | 中文字幕在线一区 | 色婷婷精品 | 刘亦菲国产毛片bd | 一区二区三区精品视频 | 激情国产视频 | 国产精品久久久久久久午夜片 | 国产午夜视频 | 午夜影院在线观看免费 | 欧美日韩在线综合 | 精品日韩一区二区 | 黄视频网站免费观看 | 日韩精品一区二区三区在线观看 | 欧美激情亚洲天堂 | 黄色一级电影免费观看 | 国产精品视频导航 | 日韩欧美一区二区三区免费观看 | 91精品国产欧美一区二区 | 亚洲国产69 | 看a网站 | aa级毛片毛片免费观看久 | 亚洲精品在线看 | 精品美女视频在免费观看 | 国产精品久久 | 欧美日韩成人影院 | 久久国产综合 | 91精品国产色综合久久不卡98口 | 久草综合在线视频 | 久久69精品久久久久久久电影好 | 色欧美日韩 | 在线看一区二区 | 久久首页| 亚洲国产一区二区三区 | 欧美一区永久视频免费观看 |