標題: mini1608電子時鐘分享 [打印本頁]

作者: lhlbest    時間: 2017-7-1 20:19
標題: 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 已經可以實現(xiàn)靜態(tài)顯示,可控制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的三個檢測環(huán)境光模式(強光、正常和夜間)(20090529_10備)
  19.         NO.12-20090529_16.52 改進了反向LED亮度檢測的穩(wěn)定性,但在臨界值依然有快速跳變。(20090529_11備)
  20.         NO.13-20090529_18.55 將反向LED亮度改為正常和睡眠2個等級,修改后更穩(wěn)定。(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備”因減少指令數(shù)沒有效果,計劃設計補償校準功能。(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數(shù)字溫度傳感器
  37. - 使用單片機產生時鐘,無需RTC芯片
  38. - 鬧鐘、整點報時用蜂鳴器
  39. - 使用STC系統(tǒng)高級單片機
  40. - 大容量EEPROM,儲存用戶設置和環(huán)境狀態(tài)的各種信息
  41. - 5V外電源或USB接口供電,備用電池用來保持走時。
  42. - 無PCB板、無更多外圍元器件,極簡單制作過程。

  43. [V1版本功能]
  44. - LED點陣屏橫向日期、時間與英文顯示。
  45. - LED點陣屏縱向漢字顯示。
  46. - LED點陣屏自動變速流動顯示。
  47. - 全中文3按鍵菜單操作(設置、加1、減1)。
  48. - 20級流動速度設置。
  49. - 9級LED顯示亮度設置。
  50. - 自動檢測環(huán)境亮度并變化LED屏亮度(正常亮度和睡眠亮度;不需要外擴任何光敏電路)
  51. - 自動檢光開關設置。
  52. - 1~60攝氏度溫度顯示。
  53. - 單片機程序實現(xiàn)20年內的時間、日期計算并顯示。(2009~2029)
  54. /*********************************************************************************************/

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

  56. /**********************************************************************************************/
  57. //“程序開發(fā)調試設置項”
  58. #define DY_LOGOSPEED        10 //設置開機LOGO部分的流動速度
  59. #define DY_DELAY                12 //設置每一個點顯示的時間長度(1~20)
  60. //#define DY_B_SPEED                7 //設置流動速度(與DY_DELAY配合實現(xiàn))
  61. #define DY_DIS_RAM                80 //設置時間顯示緩沖區(qū)大小
  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; //電源監(jiān)測

  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;//設置日、月、年、周、時、分、秒和溫度存放區(qū)
  115. data bit DAY_BIT = 0;//天數(shù)增加標志位(用于日期進位的啟動)
  116. data unsigned char DIS_BIT = 0; //多種信息的切換顯示
  117. data unsigned char cou  = 0;     // 軟計數(shù)器,對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;//用來保存目前的環(huán)境光狀態(tài)

  127. unsigned char DSS (void); //匯編語言讀18B20溫度程序聲明
  128. ……………………

  129. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
mini1608源程序.rar (772.22 KB, 下載次數(shù): 25)







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1