找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 3458|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

mini1608電子時(shí)鐘分享

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
最近玩了一下杜楊的1608點(diǎn)陣電子鐘  分享一下

單片機(jī)源程序如下:
  1. /*********************************************************************************************
  2. 程序名:    DoClock_mini1608_V1 時(shí)鐘程序
  3. 編寫人:    杜洋 
  4. 編寫時(shí)間:  2009年5月18日
  5. 硬件支持:  STC11F60(XE) 外部12MHZ晶振
  6. 接口說明:  詳見《DoClock_mini1608電路原理圖》  
  7. 修改日志:  
  8.   NO.1-20090518_20.13 已經(jīng)可以實(shí)現(xiàn)靜態(tài)顯示,可控制50級(jí)灰度(20090518_1備)
  9.         NO.2-20090518_21.39 基本決定了流動(dòng)速度和亮度的平衡,改為空點(diǎn)也掃描。(20090518_2備)
  10.         NO.3-20080519_14.30 使用匯編語言精確延時(shí)解決了DS18B20溫度顯示的問題。(20090519_3備)
  11.         NO.4-20090519_17.48 完成高亮度變速流動(dòng)顯示,并加入開機(jī)LOGO(20090519_4備)
  12.         N0.5-20090520_01.18 顯示速度、亮度與方式確定,下一步開始設(shè)計(jì)縱向漢字顯示。(20090520_5備)
  13.         NO.6-20090520_04.07 完成了漢字的縱向顯示,效果良好。加入開機(jī)顯示“杜洋工作室”(20090520_6備)
  14.         NO.7-20090523_20.33 制作了新的硬件,開始使用新硬件調(diào)試。(20090523_7備)
  15.         NO.8-20090528_16.34 下面開始寫公歷20年日期計(jì)算和按鍵調(diào)時(shí)部分的程序。(20090528_8備)
  16.         NO.9-20090529_01.51 完成了V1正式版的功能(調(diào)整時(shí)間、亮度、速度),正在實(shí)測(cè)。(20090529_9備)
  17.         NO.10-20090529_03.27 時(shí)間設(shè)置時(shí)關(guān)定時(shí)器,同時(shí)改正了一個(gè)走時(shí)問題的重大錯(cuò)誤。
  18.         NO.11-20090529_05.59 設(shè)計(jì)了反向LED的三個(gè)檢測(cè)環(huán)境光模式(強(qiáng)光、正常和夜間)(20090529_10備)
  19.         NO.12-20090529_16.52 改進(jìn)了反向LED亮度檢測(cè)的穩(wěn)定性,但在臨界值依然有快速跳變。(20090529_11備)
  20.         NO.13-20090529_18.55 將反向LED亮度改為正常和睡眠2個(gè)等級(jí),修改后更穩(wěn)定。(20090529_12備)
  21.         NO.14-20090601_03.14 星期值沒有限定,導(dǎo)致出錯(cuò)。已經(jīng)改正并調(diào)整了菜單順序。(20090601_13備)
  22.         NO.15-20090624_01.45 減少了定時(shí)器中斷中的指令,以減小時(shí)間誤差(走時(shí)慢)。(20090624_14備)
  23.         NO.16-20090626_01.45 還原到“13備”因減少指令數(shù)沒有效果,計(jì)劃設(shè)計(jì)補(bǔ)償校準(zhǔn)功能。(20090626_15備)
  24. /*********************************************************************************************
  25. 說明:《DoClock mini1608 V1版本源程序包說明》

  26. [必讀說明]
  27.   * 請(qǐng)參考本站相應(yīng)的電路原理圖制作
  28.   * 將STC11Fxx.H文件復(fù)制到C:\Keil\C51\INC中(如已安裝頭文件可省略)。
  29.   * 使用STC-ISP軟件下載時(shí),需選擇“RST作為P4.7使用”項(xiàng)
  30.   * 使用STC-ISP軟件下載時(shí),需選擇“使用外部晶體或時(shí)鐘”項(xiàng)
  31.   * 使用STC-ISP軟件下載時(shí),需選擇右下方選項(xiàng)“復(fù)位電壓3.7V”項(xiàng)
  32.   
  33. [硬件特點(diǎn)]
  34. - 16×8點(diǎn)陣屏顯示
  35. - 3按鍵操作
  36. - DS18B20數(shù)字溫度傳感器
  37. - 使用單片機(jī)產(chǎn)生時(shí)鐘,無需RTC芯片
  38. - 鬧鐘、整點(diǎn)報(bào)時(shí)用蜂鳴器
  39. - 使用STC系統(tǒng)高級(jí)單片機(jī)
  40. - 大容量EEPROM,儲(chǔ)存用戶設(shè)置和環(huán)境狀態(tài)的各種信息
  41. - 5V外電源或USB接口供電,備用電池用來保持走時(shí)。
  42. - 無PCB板、無更多外圍元器件,極簡單制作過程。

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

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

  56. /**********************************************************************************************/
  57. //“程序開發(fā)調(diào)試設(shè)置項(xiàng)”
  58. #define DY_LOGOSPEED        10 //設(shè)置開機(jī)LOGO部分的流動(dòng)速度
  59. #define DY_DELAY                12 //設(shè)置每一個(gè)點(diǎn)顯示的時(shí)間長度(1~20)
  60. //#define DY_B_SPEED                7 //設(shè)置流動(dòng)速度(與DY_DELAY配合實(shí)現(xiàn))
  61. #define DY_DIS_RAM                80 //設(shè)置時(shí)間顯示緩沖區(qū)大小
  62. /**********************************************************************************************/
  63. sbit        DY_LED1_H1        =P4 ^ 7; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  64. sbit        DY_LED1_H2        =P1 ^ 3; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  65. sbit        DY_LED1_H3        =P0 ^ 7; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  66. sbit        DY_LED1_H4        =P1 ^ 5; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  67. sbit        DY_LED1_H5        =P0 ^ 0; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  68. sbit        DY_LED1_H6        =P0 ^ 6; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  69. sbit        DY_LED1_H7        =P0 ^ 1; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  70. sbit        DY_LED1_H8        =P0 ^ 4; //設(shè)置LED點(diǎn)陣屏連接的I/O口

  71. sbit        DY_LED1_L1        =P1 ^ 4; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  72. sbit        DY_LED1_L2        =P0 ^ 2; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  73. sbit        DY_LED1_L3        =P0 ^ 3; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  74. sbit        DY_LED1_L4        =P1 ^ 7; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  75. sbit        DY_LED1_L5        =P0 ^ 5; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  76. sbit        DY_LED1_L6        =P1 ^ 6; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  77. sbit        DY_LED1_L7        =P1 ^ 2; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  78. sbit        DY_LED1_L8        =P1 ^ 1; //設(shè)置LED點(diǎn)陣屏連接的I/O口

  79. sbit        DY_LED2_H1        =P3 ^ 7; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  80. sbit        DY_LED2_H2        =P3 ^ 2; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  81. sbit        DY_LED2_H3        =P2 ^ 3; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  82. sbit        DY_LED2_H4        =P3 ^ 4; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  83. sbit        DY_LED2_H5        =P4 ^ 6; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  84. sbit        DY_LED2_H6        =P2 ^ 4; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  85. sbit        DY_LED2_H7        =P4 ^ 5; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  86. sbit        DY_LED2_H8        =P2 ^ 6; //設(shè)置LED點(diǎn)陣屏連接的I/O口

  87. sbit        DY_LED2_L1        =P3 ^ 3; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  88. sbit        DY_LED2_L2        =P4 ^ 4; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  89. sbit        DY_LED2_L3        =P2 ^ 7; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  90. sbit        DY_LED2_L4        =P3 ^ 6; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  91. sbit        DY_LED2_L5        =P2 ^ 5; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  92. sbit        DY_LED2_L6        =P3 ^ 5; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  93. sbit        DY_LED2_L7        =P3 ^ 1; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  94. sbit        DY_LED2_L8        =P3 ^ 0; //設(shè)置LED點(diǎn)陣屏連接的I/O口
  95. sbit        LED_LOOK_A        =P0 ^ 1;
  96. sbit        LED_LOOK_B        =P0 ^ 0;

  97. sbit        DY_BEEP                =P2 ^ 2; //揚(yáng)聲器
  98. sbit        DY_KEY1                =P0 ^ 2; //按鍵1(M鍵)(連接在P1.3和P0.2,讀P0.2為低時(shí)表示有按鍵動(dòng)作)
  99. sbit        DY_KEY2                =P3 ^ 0; //按鍵2(+鍵)(連接在P4.6和P3.0,讀P3.0為低時(shí)表示有按鍵動(dòng)作)
  100. sbit        DY_KEY3                =P3 ^ 6; //按鍵3(-鍵)(連接在P2.4和P3.6,讀P3.6為低時(shí)表示有按鍵動(dòng)作)
  101. //sbit        DY_18B20        =P2 ^ 1; //溫度傳感器(已經(jīng)在匯編語言中定義)
  102. //sbit        DY_POWER        =P2 ^ 0; //電源監(jiān)測(cè)

  103. #define DY_P0M1SET                0x00 //設(shè)置I/O口工作方式//00000000
  104. #define DY_P0M0SET                0xd3 //設(shè)置I/O口工作方式//11010011(PxM0為1時(shí)設(shè)置為強(qiáng)推)
  105. #define DY_P1M1SET                0x00 //設(shè)置I/O口工作方式//00000000(左到右,高到低位)
  106. #define DY_P1M0SET                0x28 //設(shè)置I/O口工作方式//00101000
  107. #define DY_P2M1SET                0x00 //設(shè)置I/O口工作方式//00000000
  108. #define DY_P2M0SET                0x5C //設(shè)置I/O口工作方式//01011100
  109. #define DY_P3M1SET                0x00 //設(shè)置I/O口工作方式//00000000
  110. #define DY_P3M0SET                0x94 //設(shè)置I/O口工作方式//10010100
  111. #define DY_P4M1SET                0x00 //設(shè)置I/O口工作方式//00000000
  112. #define DY_P4M0SET                0xe0 //設(shè)置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;//設(shè)置日、月、年、周、時(shí)、分、秒和溫度存放區(qū)
  115. data bit DAY_BIT = 0;//天數(shù)增加標(biāo)志位(用于日期進(jìn)位的啟動(dòng))
  116. data unsigned char DIS_BIT = 0; //多種信息的切換顯示
  117. data unsigned char cou  = 0;     // 軟計(jì)數(shù)器,對(duì)10ms時(shí)基信號(hào)累加到1s
  118. data unsigned char bn;//掃描映射全局變量
  119. idata unsigned char DY_PWM;//顯示亮度
  120. idata unsigned char DY_PWM2;//顯示暫存
  121. idata bit PWM_BIT;//自動(dòng)調(diào)光開關(guān)標(biāo)志
  122. idata unsigned char DY_B_SPEED;//流動(dòng)速度
  123. idata unsigned char MENU;//菜單切換標(biāo)志位
  124. idata unsigned char KEY_BIT = 0;//按鍵值
  125. idata unsigned char pp=1;//最終顯示程序調(diào)用的普通變量
  126. idata unsigned char LEDLOOK_a=1;//用來保存目前的環(huán)境光狀態(tài)

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

  129. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

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


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表