找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4034|回复: 3
收起左侧

我的51单片机电子时钟课程设计,含源码(采用的是模块化编程) 原理图

[复制链接]
ID:453621 发表于 2018-12-24 17:47 | 显示全部楼层 |阅读模式
这是我大一做的51单片机电子时钟设计,用了一个月时间,附件

制作出来的实物图如下:
QQ图片20150514114559.jpg QQ图片20150514114613.jpg

单片机程序源码:
  1. #include "lcd1602.h"
  2. #include "key.h"
  3. #include "delay.h"
  4. #include "ds1302.h"

  5. uchar count;


  6. void Timer0Init(void)                //10毫秒@12.000MHz
  7. {
  8.         TMOD &= 0xF0;                //设置定时器模式
  9.         TMOD |= 0x01;                //设置定时器模式
  10.         TL0 = 0xF0;                //设置定时初值
  11.         TH0 = 0xD8;                //设置定时初值
  12.         TF0 = 0;                //清除TF0标志
  13.         ET0 = 1;
  14.         EA  = 1;
  15. }

  16. void init_system(void)
  17. {
  18.         init_lcd1602();
  19.         Timer0Init();
  20.         write_string(NIAN_ADD-0X80,0,"20  -  -   ");
  21.         write_string(SHI_ADD-0XC0,1,"  :  :  ");
  22.         InitDS1302();
  23. }

  24. void main(void)
  25. {
  26.         init_system();
  27.         while(1)
  28.         {
  29.                 if(flag==0&&flag_r==0)
  30.                 {
  31.                         fen            = DS1302_Rdata(0x83);//从DS1302读取分数据
  32.                         write_sfm(3,fen);
  33.                         shi                = DS1302_Rdata(0x85);//从DS1302读取时数据
  34.                         write_sfm(0,shi);
  35.                         ri        = DS1302_Rdata(0x87);    //从DS1302读取日数据
  36.                         write_nyr(8,ri);
  37.                         yue            = DS1302_Rdata(0x89);//从DS1302读取月数据
  38.                         write_nyr(5,yue);                        
  39.                         nian        = DS1302_Rdata(0x8d); //从DS1302读取年数据
  40.                         write_nyr(2,nian);
  41.                         week         = DS1302_Rdata(0x8b);//从DS1302读取星期数据
  42.                         write_week(week);
  43.                         miao        = DS1302_Rdata(0x81);//从DS1302读取秒数据
  44.                         write_sfm(6,miao);

  45.                         write_sfm(0,shi);        //闹铃
  46.                         write_nyr(8,ri);
  47.                         write_nyr(5,yue);
  48.                         write_nyr(2,nian);
  49.                         write_week(week);
  50.                         if(shi==ashi&&fen==afen&&miao==amiao)
  51.                         {
  52.                                 TR0 = 1;                //定时器0开始计时
  53.                         }

  54.                         keyscan();
  55.                 }
  56.                 keyscan();
  57.         }
  58. }

  59. void timer0(void) interrupt 1
  60. {
  61.         TL0 = 0xF0;                //设置定时初值
  62.         TH0 = 0xD8;                //设置定时初值
  63.         count++;
  64.         if(count==50)
  65.         {
  66.                 count=0;
  67.                 beep=~beep;
  68.         }               
  69. }

复制代码

里包含电子时钟的单片机源代码,原理图和PCB,都是自己原创,请大家多多指教

全部资料51hei下载地址:
电子时钟(ds1302).7z (1.79 MB, 下载次数: 73)

评分

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

查看全部评分

回复

使用道具 举报

ID:458914 发表于 2019-3-20 22:09 | 显示全部楼层
我写入开发板,显示静止的时间,不记时,按键能用,就是时间是不动的
回复

使用道具 举报

ID:495626 发表于 2019-3-23 14:22 | 显示全部楼层
谭家锟9293 发表于 2019-3-20 22:09
我写入开发板,显示静止的时间,不记时,按键能用,就是时间是不动的

看看中断对不对!
回复

使用道具 举报

ID:659257 发表于 2019-12-9 08:38 来自手机 | 显示全部楼层
还是想请问一下如何学单片机,学了多久吧,我也大一,也要做这个了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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