找回密码
 立即注册

QQ登录

只需一步,快速开始

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

mini1608电子时钟分享

[复制链接]
跳转到指定楼层
楼主
最近玩了一下杜杨的1608点阵电子钟  分享一下

单片机源程序如下:
  1. /*********************************************************************************************
  2. 程序名:    DoClock_mini1608_V1 时钟程序
  3. 编写人:    杜洋 
  4. 编写时间:  2009年5月18日
  5. 硬件支持:  STC11F60(XE) 外部12MHZ晶振
  6. 接口说明:  详见《DoClock_mini1608电路原理图》  
  7. 修改日志:  
  8.   NO.1-20090518_20.13 已经可以实现静态显示,可控制50级灰度(20090518_1备)
  9.         NO.2-20090518_21.39 基本决定了流动速度和亮度的平衡,改为空点也扫描。(20090518_2备)
  10.         NO.3-20080519_14.30 使用汇编语言精确延时解决了DS18B20温度显示的问题。(20090519_3备)
  11.         NO.4-20090519_17.48 完成高亮度变速流动显示,并加入开机LOGO(20090519_4备)
  12.         N0.5-20090520_01.18 显示速度、亮度与方式确定,下一步开始设计纵向汉字显示。(20090520_5备)
  13.         NO.6-20090520_04.07 完成了汉字的纵向显示,效果良好。加入开机显示“杜洋工作室”(20090520_6备)
  14.         NO.7-20090523_20.33 制作了新的硬件,开始使用新硬件调试。(20090523_7备)
  15.         NO.8-20090528_16.34 下面开始写公历20年日期计算和按键调时部分的程序。(20090528_8备)
  16.         NO.9-20090529_01.51 完成了V1正式版的功能(调整时间、亮度、速度),正在实测。(20090529_9备)
  17.         NO.10-20090529_03.27 时间设置时关定时器,同时改正了一个走时问题的重大错误。
  18.         NO.11-20090529_05.59 设计了反向LED的三个检测环境光模式(强光、正常和夜间)(20090529_10备)
  19.         NO.12-20090529_16.52 改进了反向LED亮度检测的稳定性,但在临界值依然有快速跳变。(20090529_11备)
  20.         NO.13-20090529_18.55 将反向LED亮度改为正常和睡眠2个等级,修改后更稳定。(20090529_12备)
  21.         NO.14-20090601_03.14 星期值没有限定,导致出错。已经改正并调整了菜单顺序。(20090601_13备)
  22.         NO.15-20090624_01.45 减少了定时器中断中的指令,以减小时间误差(走时慢)。(20090624_14备)
  23.         NO.16-20090626_01.45 还原到“13备”因减少指令数没有效果,计划设计补偿校准功能。(20090626_15备)
  24. /*********************************************************************************************
  25. 说明:《DoClock mini1608 V1版本源程序包说明》

  26. [必读说明]
  27.   * 请参考本站相应的电路原理图制作
  28.   * 将STC11Fxx.H文件复制到C:\Keil\C51\INC中(如已安装头文件可省略)。
  29.   * 使用STC-ISP软件下载时,需选择“RST作为P4.7使用”项
  30.   * 使用STC-ISP软件下载时,需选择“使用外部晶体或时钟”项
  31.   * 使用STC-ISP软件下载时,需选择右下方选项“复位电压3.7V”项
  32.   
  33. [硬件特点]
  34. - 16×8点阵屏显示
  35. - 3按键操作
  36. - DS18B20数字温度传感器
  37. - 使用单片机产生时钟,无需RTC芯片
  38. - 闹钟、整点报时用蜂鸣器
  39. - 使用STC系统高级单片机
  40. - 大容量EEPROM,储存用户设置和环境状态的各种信息
  41. - 5V外电源或USB接口供电,备用电池用来保持走时。
  42. - 无PCB板、无更多外围元器件,极简单制作过程。

  43. [V1版本功能]
  44. - LED点阵屏横向日期、时间与英文显示。
  45. - LED点阵屏纵向汉字显示。
  46. - LED点阵屏自动变速流动显示。
  47. - 全中文3按键菜单操作(设置、加1、减1)。
  48. - 20级流动速度设置。
  49. - 9级LED显示亮度设置。
  50. - 自动检测环境亮度并变化LED屏亮度(正常亮度和睡眠亮度;不需要外扩任何光敏电路)
  51. - 自动检光开关设置。
  52. - 1~60摄氏度温度显示。
  53. - 单片机程序实现20年内的时间、日期计算并显示。(2009~2029)
  54. /*********************************************************************************************/

  55. #include <STC11Fxx.H> //STC头文件

  56. /**********************************************************************************************/
  57. //“程序开发调试设置项”
  58. #define DY_LOGOSPEED        10 //设置开机LOGO部分的流动速度
  59. #define DY_DELAY                12 //设置每一个点显示的时间长度(1~20)
  60. //#define DY_B_SPEED                7 //设置流动速度(与DY_DELAY配合实现)
  61. #define DY_DIS_RAM                80 //设置时间显示缓冲区大小
  62. /**********************************************************************************************/
  63. sbit        DY_LED1_H1        =P4 ^ 7; //设置LED点阵屏连接的I/O口
  64. sbit        DY_LED1_H2        =P1 ^ 3; //设置LED点阵屏连接的I/O口
  65. sbit        DY_LED1_H3        =P0 ^ 7; //设置LED点阵屏连接的I/O口
  66. sbit        DY_LED1_H4        =P1 ^ 5; //设置LED点阵屏连接的I/O口
  67. sbit        DY_LED1_H5        =P0 ^ 0; //设置LED点阵屏连接的I/O口
  68. sbit        DY_LED1_H6        =P0 ^ 6; //设置LED点阵屏连接的I/O口
  69. sbit        DY_LED1_H7        =P0 ^ 1; //设置LED点阵屏连接的I/O口
  70. sbit        DY_LED1_H8        =P0 ^ 4; //设置LED点阵屏连接的I/O口

  71. sbit        DY_LED1_L1        =P1 ^ 4; //设置LED点阵屏连接的I/O口
  72. sbit        DY_LED1_L2        =P0 ^ 2; //设置LED点阵屏连接的I/O口
  73. sbit        DY_LED1_L3        =P0 ^ 3; //设置LED点阵屏连接的I/O口
  74. sbit        DY_LED1_L4        =P1 ^ 7; //设置LED点阵屏连接的I/O口
  75. sbit        DY_LED1_L5        =P0 ^ 5; //设置LED点阵屏连接的I/O口
  76. sbit        DY_LED1_L6        =P1 ^ 6; //设置LED点阵屏连接的I/O口
  77. sbit        DY_LED1_L7        =P1 ^ 2; //设置LED点阵屏连接的I/O口
  78. sbit        DY_LED1_L8        =P1 ^ 1; //设置LED点阵屏连接的I/O口

  79. sbit        DY_LED2_H1        =P3 ^ 7; //设置LED点阵屏连接的I/O口
  80. sbit        DY_LED2_H2        =P3 ^ 2; //设置LED点阵屏连接的I/O口
  81. sbit        DY_LED2_H3        =P2 ^ 3; //设置LED点阵屏连接的I/O口
  82. sbit        DY_LED2_H4        =P3 ^ 4; //设置LED点阵屏连接的I/O口
  83. sbit        DY_LED2_H5        =P4 ^ 6; //设置LED点阵屏连接的I/O口
  84. sbit        DY_LED2_H6        =P2 ^ 4; //设置LED点阵屏连接的I/O口
  85. sbit        DY_LED2_H7        =P4 ^ 5; //设置LED点阵屏连接的I/O口
  86. sbit        DY_LED2_H8        =P2 ^ 6; //设置LED点阵屏连接的I/O口

  87. sbit        DY_LED2_L1        =P3 ^ 3; //设置LED点阵屏连接的I/O口
  88. sbit        DY_LED2_L2        =P4 ^ 4; //设置LED点阵屏连接的I/O口
  89. sbit        DY_LED2_L3        =P2 ^ 7; //设置LED点阵屏连接的I/O口
  90. sbit        DY_LED2_L4        =P3 ^ 6; //设置LED点阵屏连接的I/O口
  91. sbit        DY_LED2_L5        =P2 ^ 5; //设置LED点阵屏连接的I/O口
  92. sbit        DY_LED2_L6        =P3 ^ 5; //设置LED点阵屏连接的I/O口
  93. sbit        DY_LED2_L7        =P3 ^ 1; //设置LED点阵屏连接的I/O口
  94. sbit        DY_LED2_L8        =P3 ^ 0; //设置LED点阵屏连接的I/O口
  95. sbit        LED_LOOK_A        =P0 ^ 1;
  96. sbit        LED_LOOK_B        =P0 ^ 0;

  97. sbit        DY_BEEP                =P2 ^ 2; //扬声器
  98. sbit        DY_KEY1                =P0 ^ 2; //按键1(M键)(连接在P1.3和P0.2,读P0.2为低时表示有按键动作)
  99. sbit        DY_KEY2                =P3 ^ 0; //按键2(+键)(连接在P4.6和P3.0,读P3.0为低时表示有按键动作)
  100. sbit        DY_KEY3                =P3 ^ 6; //按键3(-键)(连接在P2.4和P3.6,读P3.6为低时表示有按键动作)
  101. //sbit        DY_18B20        =P2 ^ 1; //温度传感器(已经在汇编语言中定义)
  102. //sbit        DY_POWER        =P2 ^ 0; //电源监测

  103. #define DY_P0M1SET                0x00 //设置I/O口工作方式//00000000
  104. #define DY_P0M0SET                0xd3 //设置I/O口工作方式//11010011(PxM0为1时设置为强推)
  105. #define DY_P1M1SET                0x00 //设置I/O口工作方式//00000000(左到右,高到低位)
  106. #define DY_P1M0SET                0x28 //设置I/O口工作方式//00101000
  107. #define DY_P2M1SET                0x00 //设置I/O口工作方式//00000000
  108. #define DY_P2M0SET                0x5C //设置I/O口工作方式//01011100
  109. #define DY_P3M1SET                0x00 //设置I/O口工作方式//00000000
  110. #define DY_P3M0SET                0x94 //设置I/O口工作方式//10010100
  111. #define DY_P4M1SET                0x00 //设置I/O口工作方式//00000000
  112. #define DY_P4M0SET                0xe0 //设置I/O口工作方式//11100000

  113. data unsigned char Ledplay [DY_DIS_RAM];//定义显示缓冲寄存器
  114. data unsigned char TIME_DD,TIME_MO,TIME_YY,TIME_WW,TIME_HH,TIME_MM,TIME_SS,ty;//设置日、月、年、周、时、分、秒和温度存放区
  115. data bit DAY_BIT = 0;//天数增加标志位(用于日期进位的启动)
  116. data unsigned char DIS_BIT = 0; //多种信息的切换显示
  117. data unsigned char cou  = 0;     // 软计数器,对10ms时基信号累加到1s
  118. data unsigned char bn;//扫描映射全局变量
  119. idata unsigned char DY_PWM;//显示亮度
  120. idata unsigned char DY_PWM2;//显示暂存
  121. idata bit PWM_BIT;//自动调光开关标志
  122. idata unsigned char DY_B_SPEED;//流动速度
  123. idata unsigned char MENU;//菜单切换标志位
  124. idata unsigned char KEY_BIT = 0;//按键值
  125. idata unsigned char pp=1;//最终显示程序调用的普通变量
  126. idata unsigned char LEDLOOK_a=1;//用来保存目前的环境光状态

  127. unsigned char DSS (void); //汇编语言读18B20温度程序声明
  128. ……………………

  129. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
mini1608源程序.rar (772.22 KB, 下载次数: 25)


评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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