标题: 我的51单片机电子时钟课程设计,含源码(采用的是模块化编程) 原理图 [打印本页]

作者: 瞿hf    时间: 2018-12-24 17:47
标题: 我的51单片机电子时钟课程设计,含源码(采用的是模块化编程) 原理图
这是我大一做的51单片机电子时钟设计,用了一个月时间,附件

制作出来的实物图如下:


单片机程序源码:
  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)
1602电子钟源代码.zip (95.81 KB, 下载次数: 57)
DS1302N.pdf (217.31 KB, 下载次数: 31)
ds1302cn.pdf (205.99 KB, 下载次数: 27)


作者: 谭家锟9293    时间: 2019-3-20 22:09
我写入开发板,显示静止的时间,不记时,按键能用,就是时间是不动的

作者: icexja    时间: 2019-3-23 14:22
谭家锟9293 发表于 2019-3-20 22:09
我写入开发板,显示静止的时间,不记时,按键能用,就是时间是不动的

看看中断对不对!
作者: 糖伯虎    时间: 2019-12-9 08:38
还是想请问一下如何学单片机,学了多久吧,我也大一,也要做这个了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1