单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

PIC单片机电子钟程序+仿真电路

[复制链接]
跳转到指定楼层
楼主


  1. #include<pic.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define CS RA5
  5. uchar secs = 0;
  6. uchar minutes = 0;
  7. uchar hours = 0;
  8. unsigned char disbuf[8] = {1,2,3,4,5,6,7,8};
  9. void delay_ms(uint n)
  10. {
  11.         uchar i;
  12.         while(n--)
  13.         {
  14.                 for(i=0;i<100;i++);
  15.         }
  16. }
  17. void Port_Initial(void)
  18. {
  19.         TRISC = 0xD7;
  20.         PORTC = 0x00;
  21.         TRISA = 0x00;
  22.         PORTA = 0x00;
  23. }
  24. void Time0_Initial(void)
  25. {
  26.         T0CS = 0;
  27.         PSA = 1;
  28.         T0IF = 0;
  29.         T0IE = 1;
  30.         GIE = 1;
  31.         TMR0 = 0x00;
  32. }
  33. volatile unsigned int cnt = 0;
  34. void interrupt ISR(void)
  35. {
  36.         TMR0 = 0x13;
  37.         T0IF = 0;
  38.         CLRWDT();
  39.         cnt ++;
  40.         if(cnt==500)
  41.         {
  42.                 cnt = 0;
  43.                 secs ++;
  44.         }
  45.         if(secs==60)
  46.         {
  47.                 secs = 0;
  48.                 minutes ++;
  49.         }
  50.         if(minutes==60)
  51.         {
  52.                 minutes = 0;
  53.                 hours ++;
  54.         }
  55.         if(hours==24)
  56.         {
  57.                 hours = 0;
  58.         }
  59. }
  60. void SPI_Initial(void)
  61. {
  62.         PIR1 = 0;
  63.         SSPCON = 0x30;
  64.         SSPSTAT = 0x00;
  65. }
  66. void Display(uchar *str)
  67. {
  68.         uchar i;
  69.         for(i=0;i<8;i++)
  70.         {
  71.                 MAX7221_WRITE(i+1,str[i]);
  72.         }
  73. }
  74. void HEXTOBCD(void)
  75. {
  76.         disbuf[0] = hours/10;
  77.         disbuf[1] = hours%10;
  78.         disbuf[2] = 10;
  79.         disbuf[3] = minutes/10;
  80.         disbuf[4] = minutes%10;
  81.         disbuf[5] = 10;
  82.         disbuf[6] = secs/10;
  83.         disbuf[7] = secs%10;
  84. }
  85. void main()
  86. {
  87.         SPI_Initial();
  88.         delay_ms(10);
  89.         Port_Initial();
  90.         delay_ms(10);
  91.         Time0_Initial();
  92.         delay_ms(10);
  93.         MAX7221_Initial();
  94.         delay_ms(10);
  95.         while(1)
  96.         {
  97.                 HEXTOBCD();
  98.                 delay_ms(10);
  99.                 Display(disbuf);
  100.                 delay_ms(10);
  101.         }
  102. }
复制代码



全部资料51hei下载地址:
PIC电子钟.rar (16.99 KB, 下载次数: 7)
        

评分

参与人数 6黑币 +154 收起 理由
正规007 + 10 很给力!
shuisheng + 35 绝世好帖!
areyouok + 12
刀刀见红 + 12
jinsheng7533967 + 35 赞一个!
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
shuisheng 发表于 2019-2-13 17:11 | 只看该作者
值得学习了!谢谢1
回复

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51黑电子论坛单片机 联系QQ:125739409;技术交流QQ群582644647

Powered by 单片机教程网

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