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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2981|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 手机日韩| 在线观看黄免费 | 在线看日韩| 亚洲精品一区二区三区丝袜 | 青草青草久热精品视频在线观看 | 成年人网站免费视频 | 亚洲国产精品自拍 | 一区二区中文字幕 | 欧美无乱码久久久免费午夜一区 | 久久久精品一区二区 | 欧美成人视屏 | 国产乱码精品1区2区3区 | 国产精品一区二区久久 | 91看片| 欧美jizzhd精品欧美巨大免费 | 亚洲精品成人 | 超碰人人人人 | 国产激情网| 黄色大片在线播放 | 日韩免费成人av | 久久精品国产免费一区二区三区 | 精品在线一区二区三区 | 亚洲人免费视频 | 日本一二三区高清 | 午夜婷婷激情 | 国产成人综合在线 | 欧美日韩在线播放 | 五月激情综合 | 日韩黄色小视频 | 在线啊v | 日韩久久精品视频 | 欧美在线观看一区 | 午夜精品一区二区三区免费视频 | 色综合久久88色综合天天 | 欧美不卡| 国产农村妇女精品一二区 | 久久成人免费视频 | 女人天堂av| 亚洲三级国产 | 97视频网站 | 97超碰成人|