找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1810|回复: 0
收起左侧

51单片机+MAX7221可调实时时钟程序Proteus仿真图

[复制链接]
ID:860250 发表于 2022-4-15 10:20 | 显示全部楼层 |阅读模式
基于51单片机的实时时钟,附上proteus仿真和源码。
B45AFA6D-128A-424b-A904-5FA9B0E6A2AC.png 51hei.gif

有调节时间的按钮  可调时分秒

单片机源程序如下:
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #include "MAX7221.h"

  4. sbit DIN7221 = P2^0;    //MAX7221的数据端
  5. sbit CS7221 = P2^1;     //MAX7221的片选端
  6. sbit CLK7221 = P2^2;    //MAX7221的时钟端

  7. //MAX7221的写子程序(addr芯片地址,Data写入数据)
  8. void Wr_Max7221(unsigned char addr,unsigned char Data)
  9. {
  10.         unsigned char i;
  11.         CS7221=0;                           //片选有效         
  12.         for(i=0;i<8;i++)                    //写8位地址
  13.         {
  14.                 CLK7221=0;                        //时钟低
  15.                 DIN7221=(addr&(0x80>>i))? 1:0;    //先发高位,依次到低位
  16.                 _nop_();
  17.                 _nop_();
  18.                 CLK7221=1;                        //时钟高,上升沿锁数据
  19.                 _nop_();
  20.                 _nop_();
  21.         }
  22.         
  23.         for(i=0;i<8;i++)                    //写8位地址
  24.         {
  25.                 CLK7221=0;                        //时钟低
  26.                 DIN7221=(Data&(0x80>>i))? 1:0;    //先发高位,依次到低位
  27.                 _nop_();
  28.                 _nop_();
  29.                 CLK7221=1;                        //时钟高,上升沿锁数据
  30.                 _nop_();
  31.                 _nop_();
  32.         }
  33.         CS7221=1;                           //片选无效
  34. }

  35. //MAX7221初始化程序
  36. void Init_Max7221(unsigned char mode,unsigned char intensity,unsigned char scanlimit,unsigned char shutdown)
  37. {
  38.         Wr_Max7221(0x09,mode);          //译码选择,非BCD码
  39.         Wr_Max7221(0x0a,intensity);     //亮度调节
  40.         Wr_Max7221(0x0b,scanlimit);     //显示位数
  41.         Wr_Max7221(0x0c,shutdown);      //正常工作状态,关断模式
  42. }

  43. //MAX7221显示子程序(由于此工程中未用到,所以注释掉了)
  44. //void Disp_Max7221(unsigned char *buffer,unsigned char num)
  45. //{
  46. //        unsigned char i;
  47. //        for(i=0;i<num;i++)                      //数码管显示
  48. //        {
  49. //                Wr_Max7221(i+1,*(buffer+i));          //调mAX7221的写子程序
  50. //        }
  51. //}
复制代码
Keil代码与Proteus8.8仿真下载:
Proteus里面双击单片机重新选择hex文件路径"实时时钟\C51\Objects"
实时时钟.7z (92.32 KB, 下载次数: 32)

评分

参与人数 1黑币 +40 收起 理由
admin + 40 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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