久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4149|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

Everlasting Time2 電子時(shí)鐘全部制作資料【含源程序、電路圖】歡迎仿制!!

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:127496 發(fā)表于 2016-6-20 23:46 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
ET2          永恒時(shí)鐘2

【本次功能更新】:
多方法鬧鐘(鬧鐘可設(shè)置 周一至周五 、周六周日、周六、周日、只響一次、天天響、關(guān)閉)
整點(diǎn)報(bào)時(shí)設(shè)置 (可設(shè)置整點(diǎn)報(bào)時(shí)和半點(diǎn)報(bào)時(shí)的時(shí)間范圍。)


這是整點(diǎn)報(bào)時(shí)設(shè)置:↓


















這個(gè)作品里面飽含著歡笑與酸辛,甚至還有危險(xiǎn)……
我原本打算用的是一塊手機(jī)鋰電池(撿的),不帶保護(hù)板,我把電池芯給拆了出來(lái)。接著我用這個(gè)做電源,還給ET2背上安了2塊太陽(yáng)能板。當(dāng)這個(gè)作品裝成,我興高采烈地拿到客廳。誰(shuí)知,危險(xiǎn)的事發(fā)生了,ET2開(kāi)始冒“清”煙,這下了我一跳,渾身出冷汗,條件反射似的把電池直接拔了下來(lái)……后來(lái)檢查電路時(shí),發(fā)現(xiàn)電源沒(méi)有問(wèn)題,鋰電池沒(méi)燒壞,但是連接鋰電池的導(dǎo)線居然燒糊了,導(dǎo)線的塑料殼都是又黑又“脆”的,一碰就“碎”,仔細(xì)檢查,終于發(fā)現(xiàn)了問(wèn)題:太陽(yáng)能板上面的濾波電容的引腳掉了,造成短路……于是我換了一塊電池,選用了18650電池(還是鋰電池),裝在1602后面,單片機(jī)下面,從正面看不到,保證了美觀。
(在此提醒大家:玩鋰電池的時(shí)候注意點(diǎn),鋰電池的輸出能力特別強(qiáng)……這一點(diǎn)我是親身體驗(yàn)過(guò)的……經(jīng)常搞豆腐渣工程的人士們一定要
(像我一樣……)注意啦!你可以選用鎳氫電池或是帶保護(hù)板的鋰電池,短路是不會(huì)爆炸,不會(huì)冒煙的。)

【功能】:
溫度顯示,
16級(jí)背光設(shè)置,
自動(dòng)調(diào)光,
9路鬧鐘,
4鍵調(diào)時(shí)設(shè)置,
整點(diǎn)報(bào)時(shí),
半點(diǎn)報(bào)時(shí),
39個(gè)公歷節(jié)日提醒,
生日提醒,
日期及星期顯示。
多方法鬧鐘(鬧鐘可設(shè)置 周一至周五 、周六周日、周六、周日、只響一次、天天響、關(guān)閉)
整點(diǎn)報(bào)時(shí)設(shè)置 (可設(shè)置整點(diǎn)報(bào)時(shí)和半點(diǎn)報(bào)時(shí)的時(shí)間范圍。)


唉,廢話少說(shuō),上圖!
所需元器件很簡(jiǎn)單!液晶屏直接與單片機(jī)連接,無(wú)需電路板,無(wú)需走線。單片機(jī)產(chǎn)生時(shí)間,無(wú)需時(shí)鐘芯片。四鍵調(diào)時(shí)并設(shè)置,按鈕直接焊在單片機(jī)背部。并具有自動(dòng)調(diào)光功能。
十分簡(jiǎn)單的設(shè)計(jì),大家都可以做的。對(duì)了,我用的一節(jié)18650電池,無(wú)保護(hù)板。可以連接一片5V太陽(yáng)能電池,這樣就無(wú)需維護(hù),充電。

做工不是很美觀,獻(xiàn)丑了。

所需元件列表:
鋰電池*1
標(biāo)準(zhǔn)型1602液晶屏*1          (最好是藍(lán)底白字的,藍(lán)色有永恒的含義。)
STC12c5a56s2單片機(jī)*1      (可用stc12c5a08s2或stc12c5a16s2或stc12c5a32s2或stc12c5a56s2或stc12c5a60s2替換)
12M晶振*1
30P電容*2
5V太陽(yáng)能板*2        (一片也可)
排針(圓孔)排孔(圓孔) *2       (16PIN)
微動(dòng)開(kāi)關(guān)
直徑3mmLED*1
5v有源蜂鳴器*1

這么點(diǎn)東西可以做出時(shí)鐘?是不是不信?愛(ài)動(dòng)手的人士們快開(kāi)電烙鐵去吧~

提供電路原理圖:(整整畫(huà)了2個(gè)多小時(shí)啊……)

DIY牛人照著這個(gè)圖可以拼出來(lái)。
電路非常簡(jiǎn)單,簡(jiǎn)潔!










以上圖片均為第一硬件版本,給大家看看第二硬件版本吧(全新的):(做工相比之前好看多了):























圖片看著不爽?沒(méi)關(guān)系,有視頻:(效果不好,請(qǐng)見(jiàn)諒。。。。)(此為硬件第一版本)



熱烈熱烈熱烈歡迎提出批評(píng)表?yè)P(yáng)或任何建議!

純屬個(gè)人原創(chuàng),希望大家支持!
版權(quán)“龜”我所有,轉(zhuǎn)載請(qǐng)注明出處,謝謝!

源程序公開(kāi):
  1. /********************************************************************

  2. 編寫人:譚澤睿

  3. ET2主程序

  4. 最后修改于2017年8月

  5. ********************************************************************/

  6. #include <stc12c5a60s2.h>

  7. #include <intrins.h>

  8. //#include <float.h>

  9. /********************************************************************************************/

  10. unsigned char code nums[12]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf7,0x00,0x02};

  11. typedef unsigned char      uint8;          // 無(wú)符號(hào)8位整型變量 //

  12. unsigned int code fs[39]={32,76,101,105,107,108,114,115,125,129,131,146,156,159,163,178,

  13. 187,191,209,218,228,249,/*260*/289,311,314,315,319,334,338,339,341,349,355,373,375,396,397,

  14. 403

  15. };

  16. unsigned int code tab[]={ //音階表

  17. 63628,63835,64021,64103,64260,64400,64524,  //低音1-7

  18. 64580,64684,64777,64820,64898,64968,65030,//中音1-7

  19. 65058,65110,65157,65178,65217,65252,65283//高音1-7

  20. };

  21. unsigned int code br[3]={213,222,216};

  22. unsigned char alm[9][3]={{6,30,0},{7,30,0},{8,30,0},

  23. {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}

  24. };//Hour Min Way

  25. //#defineLCM2402_DB0_DB7P0                                                                     

  26. sbit LCM2402_RS   = P2 ^ 3;

  27. sbit LCM2402_RW   = P2 ^ 4;

  28. sbit LCM2402_E    = P2 ^ 5;

  29. sbit LCM2402_Busy = P0 ^ 5;

  30. data unsigned char year,month,day,week,hour,min,sec;

  31. data bit db = 0;

  32. bit kj;

  33. bit rbit;

  34. unsigned char autolum;

  35. data unsigned char cou  = 0;

  36. unsigned char i,hh,ll;

  37. //unsigned char mh;

  38. //unsigned char ml;

  39. unsigned char set,aln,reps,repe;

  40. unsigned char mo;

  41. unsigned char p;

  42. unsigned char v;

  43. unsigned char ke;

  44. unsigned char mt;

  45. unsigned char menu;

  46. unsigned char RP;

  47. unsigned char dbs;

  48. unsigned char light;

  49. unsigned int beepc,C,D;

  50. #defineCMD_clear0x01             // 清除屏幕

  51. #defineCMD_back0x02             // DDRAM回零位

  52. #defineCMD_dec10x04             // 讀入后AC(指針)減1,向左寫

  53. #defineCMD_add10x06             // 讀入后AC(指針)加1,向右寫

  54. #defineCMD_dis_gb10x0f             // 開(kāi)顯示_開(kāi)光標(biāo)_開(kāi)光標(biāo)閃爍

  55. #defineCMD_dis_gb20x0e             // 開(kāi)顯示_開(kāi)光標(biāo)_關(guān)光標(biāo)閃爍

  56. #defineCMD_dis_gb30x0c             // 開(kāi)顯示_關(guān)光標(biāo)_關(guān)光標(biāo)閃爍

  57. #defineCMD_OFF_dis0x08             // 關(guān)顯示_關(guān)光標(biāo)_關(guān)光標(biāo)閃爍

  58. #defineCMD_set820x38             // 8位總線_2行顯示

  59. #defineCMD_set810x30             // 8位總線_1行顯示(上邊行)

  60. #defineCMD_set420x28             // 4位總線_2行顯示

  61. #defineCMD_set410x20             // 4位總線_1行顯示(上邊行)

  62. #definelin_10x80             // 4位總線_1行顯示(上邊行)

  63. #definelin_20xc0             // 4位總線_1行顯示(上邊行)

  64. #define bee beep=0;beepc=1

  65. #define lbee beep=0;beepc=10

  66. sbit vss = P2^0;

  67. sbit vdd = P2^1;

  68. sbit vo = P2^2;

  69. //sbit RS = P2^3;

  70. sbit db0 = P2^6;

  71. sbit db1 = P2^7;

  72. sbit db2 = P4^4;

  73. sbit db3 = P4^5;

  74. sbit db4 = P4^6;

  75. sbit db5 = P0^7;

  76. sbit db6 = P0^6;

  77. sbit db7 = P0^5;

  78. sbit blv=P0^4;

  79. sbit blg=P0^3;

  80. sbit KEYAG=P3^7;

  81. sbit KEYA=P3^5;

  82. sbit KEYBG=P3^4;

  83. sbit KEYB=P3^2;

  84. sbit KEYCG=P3^1;  

  85. sbit KEYC=P4^7;

  86. sbit KEYDG=P1^7;

  87. sbit KEYD=P1^5;

  88. sbit ka=P1^4;

  89. sbit RC=P1^1;

  90. sbit beep=P1^0;

  91. sbit ltv=P4^6;

  92. sbit lm35vcc=P1^1;

  93. sbit lm35gnd=P1^3;

  94. sbit rlv=P0^1;

  95. sbit rl=P0^0;

  96. void delay (unsigned int a){

  97.   unsigned int i;

  98.   while(a > 0){

  99.     a--;

  100.     for(i=0;i<600;i++);

  101.   }

  102. }


  103. void db07(unsigned char dbs){

  104. db0=dbs%2;

  105. db1=dbs/2%2;

  106. db2=dbs/4%2;

  107. db3=dbs/8%2;

  108. db4=dbs/16%2;

  109. db5=dbs/32%2;

  110. db6=dbs/64%2;

  111. db7=dbs/128%2;

  112. }

  113. /*********************************************************************************************

  114. 函數(shù)名:10位A/D轉(zhuǎn)換初始化函數(shù)

  115. 調(diào)  用:Read_init (?);

  116. 參  數(shù):輸入的端口(0000 0XXX 其中XXX是設(shè)置輸入端口號(hào),可用十進(jìn)制0~7表示,0表示P1.0,7表示P1.7)

  117. 返回值:無(wú)

  118. 結(jié)  果:開(kāi)啟ADC功能并設(shè)置ADC的輸入端口

  119. 備  注:使用ADC功能時(shí)需要將對(duì)應(yīng)的IO接口設(shè)置為高阻輸入方式(例如:P1M1 = 0x01;)

  120. /**********************************************************************************************/

  121. void Read_init (unsigned char CHA){

  122. unsigned char AD_FIN=0; //存儲(chǔ)A/D轉(zhuǎn)換標(biāo)志

  123.     CHA &= 0x07;            //選擇ADC的8個(gè)接口中的一個(gè)(0000 0111 清0高5位)

  124.     ADC_CONTR = 0x40;//ADC轉(zhuǎn)換的速度(0XX0 0000 其中XX控制速度,請(qǐng)根據(jù)數(shù)據(jù)手冊(cè)設(shè)置)

  125.     _nop_();

  126.     ADC_CONTR |= CHA;       //選擇A/D當(dāng)前通道

  127.     _nop_();

  128.     ADC_CONTR |= 0x80;      //啟動(dòng)A/D電源

  129.     delay(1);            //使輸入電壓達(dá)到穩(wěn)定(1ms即可)

  130. }

  131. /**********************************************************************************************/

  132. /*********************************************************************************************

  133. 函數(shù)名:10位A/D轉(zhuǎn)換函數(shù)

  134. 調(diào)  用:? = ADC_Read();

  135. 參  數(shù):無(wú)

  136. 返回值:10位ADC數(shù)據(jù)高(從0到1023(十進(jìn)制))

  137. 結(jié)  果:讀出指定ADC接口的A/D轉(zhuǎn)換值,并返回?cái)?shù)值

  138. 備  注:適用于STC12C5A60S2系列單片機(jī)(必須使用STC12C5A60S2.h頭文件)

  139. /**********************************************************************************************/

  140. unsigned int ADC_Read (void){

  141. unsigned char AD_FIN=0; //存儲(chǔ)A/D轉(zhuǎn)換標(biāo)志

  142.     ADC_CONTR |= 0x08;      //啟動(dòng)A/D轉(zhuǎn)換(0000 1000 令A(yù)DCS = 1)

  143.     _nop_();

  144.     _nop_();

  145.     _nop_();

  146.     _nop_();

  147.     while (AD_FIN ==0){     //等待A/D轉(zhuǎn)換結(jié)束

  148.         AD_FIN = (ADC_CONTR & 0x10); //0001 0000測(cè)試A/D轉(zhuǎn)換結(jié)束否

  149.     }

  150.     ADC_CONTR &= 0xE7;      //1111 0111 清ADC_FLAG位, 關(guān)閉A/D轉(zhuǎn)換,

  151. return (ADC_RES*4+ADC_RESL);//返回A/D轉(zhuǎn)換結(jié)果(10位ADC數(shù)據(jù)高8位在ADC_RES中,低2位在ADC_RESL中)

  152. }


  153. void LCM2402_TestBusy(void){

  154.    db07(0xff);//設(shè)備讀狀態(tài)

  155.    LCM2402_RS = 0;

  156.    LCM2402_RW = 1;

  157.    LCM2402_E = 1;

  158.    while(LCM2402_Busy);//等待LCM不忙

  159.    LCM2402_E = 0;//

  160. }

  161. /********************************************************************************************

  162. // 寫指令程序 //

  163. // 向LCM2402寫命令 本函數(shù)需要1個(gè)指令集的入口參數(shù) //

  164. /********************************************************************************************/

  165. void LCM2402_WriteCMD(uint8 LCM2402_command) {

  166.   LCM2402_TestBusy();

  167.   db07(LCM2402_command);

  168.   LCM2402_RS = 0;

  169.   LCM2402_RW = 0;

  170.   LCM2402_E = 1;

  171.   LCM2402_E = 0;

  172. }

  173. void PWM_init (void){

  174. CMOD=0x00; //設(shè)置PCA定時(shí)器

  175. CL=0x00;

  176. CH=0x00;

  177. CCAPM0=0x42; //PWM0設(shè)置PCA工作方式為PWM方式(0100 0010)

  178. CCAP0L=0x00; //設(shè)置PWM0初始值與CCAP0H相同

  179. CCAP0H=0x00; // PWM0初始時(shí)為0

  180. CR=1; //啟動(dòng)PCA定時(shí)器

  181. }

  182. /**********************************************************************************************/


  183. /*********************************************************************************************

  184. 函數(shù)名:PWM0占空比設(shè)置函數(shù)

  185. 調(diào)  用:PWM0_set();

  186. 參  數(shù):0x00~0xFF(亦可用0~255)

  187. 返回值:無(wú)

  188. 結(jié)  果:設(shè)置PWM模式占空比,為0時(shí)全部高電平,為1時(shí)全部低電平

  189. 備  注:如果需要PWM1的設(shè)置函數(shù),只要把CCAP0L和CCAP0H中的0改為1即可

  190. /**********************************************************************************************/

  191. void PWM0_set (unsigned char a){

  192. hh=a;

  193. ll=0xff-a;

  194. TR1=1;

  195. }

  196. /********************************************************************************************

  197. // 寫數(shù)據(jù)程序 //

  198. // 向LCM2402寫數(shù)據(jù) //

  199. /********************************************************************************************/

  200. void LCM2402_WriteData(uint8 LCM2402_data){

  201.     LCM2402_TestBusy();

  202. db07(LCM2402_data);

  203.   LCM2402_RS = 1;

  204.   LCM2402_RW = 0;

  205.   LCM2402_E = 1;

  206.   LCM2402_E = 0;

  207. }

  208. /********************************************************************************************

  209. // 打印字符串程序 // (本函數(shù)調(diào)用指針函數(shù))

  210. // 向LCM發(fā)送一個(gè)字符串,長(zhǎng)度48字符之內(nèi)

  211. // 第一行位置 0x00~0x17  第二行位置 0x40~0x57

  212. // 應(yīng)用舉例:print(0x80,"doyoung.net"); //在第一行第一位處從左向右打印doyoung.net字符串

  213. /********************************************************************************************/

  214. void print(uint8 a,uint8 *str){

  215. LCM2402_WriteCMD(a | 0x80);

  216. while(*str != '\0'){

  217. LCM2402_WriteData(*str++);

  218. }

  219. *str = 0;

  220. }

  221. /********************************************************************************************

  222. // 打印單字符程序 //

  223. // 第一行位置 0x00~0x17  第二行位置 0x40~0x57

  224. // 向LCM發(fā)送一個(gè)字符,以十六進(jìn)制(0x00)表示

  225. // 應(yīng)用舉例:print(0xc0,0x30); //在第二行第一位處打印字符“0”

  226. /********************************************************************************************/

  227. void print2(uint8 a,uint8 t){

  228. LCM2402_WriteCMD(a | 0x80);

  229. LCM2402_WriteData(t+0x30);

  230. }

  231. void print3(uint8 a,uint8 t){

  232. LCM2402_WriteCMD(a | 0x80);

  233. LCM2402_WriteData(t);

  234. }

  235. /********************************************************************************************

  236. // 定義小漢字 //

  237. // 可寫入8個(gè)自字義字符,寫入后可用其CGRAM代碼直接提取顯示。

  238. // 字符定義方法請(qǐng)參考技術(shù)手冊(cè)

  239. /********************************************************************************************/

  240. uint8 code Xword[]={

  241.     0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,        //上,代碼 0x00

  242.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,        //下,代碼 0x01

  243.     0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,        //左,代碼 0x02

  244.     0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,        //右,代碼 0x03

  245.     0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,        //上下,代碼 0x04

  246.     0x00,0x00,0x04,0x04,0x00,0x00,0x00,0x00,        //點(diǎn)上,代碼 0x05

  247.     0x00,0x00,0x00,0x00,0x04,0x04,0x00,0x00,//點(diǎn)下,代碼 0x06

  248. 0x00,0x01,0x00,0x1E,0x10,0x10,0x10,0x1E //度,代碼 0x07

  249. /*0x00,0x1f,0x00,0x1f,0x10,0x1f,0x10,0x1f,//恒右上,代碼 0x08

  250. 0x10,0x00,0x1f,0x00,0x00,0x00,0x00,0x00,//恒右下,代碼 0x09

  251. 0x10,0x18,0x00,0x10,0x10,0x10,0x10,0x10,//恒右上上,代碼 0x0a

  252. 0x10,0x00,0x18,0x00,0x00,0x00,0x00,0x00,//恒右下下,代碼 0x0b */

  253. };

  254. void CgramWrite(void) {// 裝入CGRAM //

  255.     uint8 i;

  256. LCM2402_WriteCMD(0x06);// CGRAM地址自動(dòng)加1

  257. LCM2402_WriteCMD(0x40);// CGRAM地址設(shè)為00處

  258.     for(i=0;i<8*8;i++) {

  259.     LCM2402_WriteData(Xword[i]);// 按數(shù)組寫入數(shù)據(jù)

  260.     }

  261. }

  262. void LCM2402_Init(void){

  263.   LCM2402_WriteCMD(CMD_set82);//* 顯示模式設(shè)置:顯示2行,每個(gè)字符為5*7個(gè)像素

  264.   LCM2402_WriteCMD(CMD_clear);//  顯示清屏

  265.   LCM2402_WriteCMD(CMD_back);//* 數(shù)據(jù)指針指向第1行第1個(gè)字符位置

  266.   LCM2402_WriteCMD(CMD_add1);//  顯示光標(biāo)移動(dòng)設(shè)置:文字不動(dòng),光標(biāo)右移

  267.   LCM2402_WriteCMD(CMD_dis_gb3); //  顯示開(kāi)及光標(biāo)設(shè)置:顯示開(kāi),光標(biāo)開(kāi),閃爍開(kāi)

  268. CgramWrite();//  向CGRAM寫入自定義字符

  269. }

  270. bit IsLeapYear(void){    //計(jì)算本年是否是潤(rùn)年

  271. unsigned int a;

  272. a = 2000+year;//加2000表示成完整的年

  273. if((a%4==0 && a%100!=0)||(a%400==0)){ //潤(rùn)年的計(jì)算公式

  274. return 1;//是潤(rùn)年返回1

  275. }else{

  276. return 0;//不是潤(rùn)年返回0

  277. }

  278. }

  279. void month_day(void){  

  280. unsigned char mon_day[]={31,28,31,30,31,30,31,31,30,31,30,31};

  281. day++;

  282. week++;

  283. if(week>7){

  284. week=1;

  285. }

  286. if(day > mon_day[month-1]){

  287. if(IsLeapYear()&&month==2){  

  288. day = 29;

  289. }else{

  290. day = 1;

  291. month++;

  292. if(month > 12){

  293. month = 1;

  294. year++;

  295. }

  296. }

  297. }

  298. }

  299. void clear(void){

  300. print(0x80,"                ");

  301. print(0x40,"                ");

  302. }

  303. void change(void){

  304. bee;

  305. for(i=light;i>0;i--){

  306. PWM0_set(i);

  307. delay(2);

  308. }

  309. clear();

  310. for(i=0;i<0xff;i++){

  311. PWM0_set(i);

  312. delay(1);

  313. }

  314. for(i=0xff;i>light;i--){

  315. PWM0_set(i);

  316. delay(2);

  317. }

  318. }

  319. void jieri(void){

  320. v=0xff;

  321. for(i=0;i<38;i++){

  322. if(fs[i]/31==month && fs[i]%31==day){

  323. v=i;

  324. break;

  325. }

  326. }

  327. if(v==0){print(0x40,"Happy New Year! ");}

  328. if(v==1){print(0x40,"Valentine's Day ");}

  329. if(v==2){print(0x40," 38-Women's Day ");}

  330. if(v==3){print(0x40,"China Arbor Day ");}

  331. if(v==4){print(0x40," White Day ^-^  ");}

  332. if(v==5){print(0x40,"ConsumerRightDay");}

  333. if(v==6){print(0x40,"World Forest Day");}

  334. if(v==7){print(0x40,"World Water Day ");}

  335. if(v==8){print(0x40,"April Fools' Day");}

  336. if(v==9){print(0x40,"TombSweeping Day");}

  337. if(v==10){print(0x40,"World Health Day");}

  338. if(v==11){print(0x40,"World Earth Day ");}

  339. if(v==12){print(0x40,"5-1  Labour Day ");}

  340. if(v==13){print(0x40,"China Youth Day ");}

  341. if(v==14){print(0x40,"  Red-Cross Day ");}

  342. if(v==15){print(0x40,"  -Milk Day-    ");}

  343. if(v==16){print(0x40,"-Children's Day-");}

  344. if(v==17){print(0x40,"Environment Day ");}

  345. if(v==18){print(0x40,"  Olympic Day   ");}

  346. if(v==19){print(0x40,"Dang De Sheng Ri");}

  347. if(v==20){print(0x40," Population Day ");}

  348. if(v==21){print(0x40," the Army Day   ");}

  349. if(v==22){print(0x40,"ChinaTeachersDay");}

  350. if(v==23){print(0x40,"  National Day  ");}

  351. if(v==24){print(0x40,"World Animal Day");}

  352. if(v==25){print(0x40,"WorldTeachersDay");}

  353. if(v==26){print(0x40," World Post Day ");}

  354. if(v==27){print(0x40,"UnitedNationsDay");}

  355. if(v==28){print(0x40,"Mens Healthy Day");}

  356. if(v==29){print(0x40,"Biodiversity Day");}

  357. if(v==30){print(0x40,"   Halloween    ");}

  358. if(v==31){print(0x40,"ChinaReporterDay");}

  359. if(v==32){print(0x40,"WorldDiabetesDay");}

  360. if(v==33){print(0x40," World AIDS Day ");}

  361. if(v==34){print(0x40,"WorldDisabledDay");}

  362. if(v==35){print(0x40,"WorldFootballDay");}

  363. if(v==36){print(0x40,"Christmas Night ");}

  364. if(v==37){print(0x40," Christmas Day  ");}

  365. if(v==38){

  366. print(0x40," 20");

  367. print2(0x43,year/10);

  368. print2(0x44,year%10);

  369. print(0x45," Last Day  ");

  370. }

  371. if(v==0xff){

  372. print(0x40,"Good ");

  373. if(hour<11){print(0x45,"morning!^_^");

  374. }else if(hour<13){print(0x45,"noon!   ^_^");

  375. }else if(hour<18){print(0x45,"afternoon(:");

  376. }else if(hour<21){print(0x45,"evening!^-^");

  377. }else if(hour<24){print(0x45,"night!-_-zZ");

  378. }

  379. }

  380. }

  381. void birth(void){

  382. v=0xff;

  383. for(i=0;i<3;i++){

  384. if(br[i]/31==month && br[i]%31==day){

  385. v=i;

  386. break;

  387. }

  388. }

  389. if(v==0){print(0x40,"TZR's Birthday! ");}

  390. if(v==1){print(0x40,"CSJ's Birthday! ");}

  391. if(v==2){print(0x40,"TXT's Birthday! ");}

  392. if(v==0xff){

  393. print(0x40,"^_^ -_- 0_0");

  394. print(0x4b,":");

  395. print2(0x4c,sec/10);

  396. print2(0x4d,sec%10);

  397. print(0x4e,"s");

  398. print(0x4f," ");

  399. }

  400. }

  401. void time (void){

  402. if(sec%30/15==0){

  403. print2(0x80,C/10);

  404. print2(0x81,C%10);

  405. //print(0x82,".");

  406. //print2(0x83,D/10);

  407. print3(0x82,0x07);

  408. print(0x83,"  ");

  409. if(month>9){print2(0x85,month/10);}else{print(0x85," ");}

  410. print2(0x86,month%10);

  411. print(0x87,"-");

  412. if(day>9){print2(0x88,day/10);}else{print(0x88," ");}

  413. print2(0x89,day%10);

  414. print(0x8a," ");

  415. }else{

  416. if(week==1){print(0x80," MonDay    ");}

  417. if(week==2){print(0x80," TuesDay   ");}

  418. if(week==3){print(0x80," WednesDay ");}

  419. if(week==4){print(0x80," ThursDay  ");}

  420. if(week==5){print(0x80," FriDay    ");}

  421. if(week==6){print(0x80," SaturDay  ");}

  422. if(week==7){print(0x80," SunDay    ");}

  423. }

  424. print2(0x8b,hour/10);

  425. print2(0x8c,hour%10);

  426. if(sec%2==0){

  427. print(0x8d,":");

  428. }else{

  429. print(0x8d,"-");

  430. }

  431. print2(0x8e,min/10);

  432. print2(0x8f,min%10);

  433. if(sec%20/10==0){

  434. jieri();

  435. }else{

  436. birth();

  437. }

  438. if(db == 1){

  439. month_day();

  440. db = 0;

  441. }

  442. }

  443. /*void sound (unsigned char v,unsigned char b){

  444. ET1=1;

  445. TH1=mh;

  446. TL1=ml;

  447. TR1=1;

  448. } */

  449. void KEY(void){

  450. ke=0xff;

  451. KEYA=1;

  452. KEYB=1;

  453. KEYC=1;

  454. KEYD=1;

  455. delay(1);

  456. if(KEYA==0){delay(20);if(KEYA==0){ke=0x0a;while(~KEYA);}}

  457. if(KEYB==0){delay(20);if(KEYB==0){ke=0x0b;while(~KEYB);}}

  458. if(KEYC==0){delay(20);if(KEYC==0){ke=0x0c;while(~KEYC);}}

  459. if(KEYD==0){delay(20);if(KEYD==0){ke=0x0d;while(~KEYD);}}

  460. if(ke!=0xff){bee;}

  461. }

  462. void showbignum(unsigned char hour,unsigned char min){

  463. unsigned char s1,s2,s3,s4,temp;

  464. bit a,b,c,d,e,f,g;

  465. s1=hour/10;

  466. s2=hour%10;

  467. s3=min/10;

  468. s4=min%10;


  469. temp=nums[s1];

  470. a=temp/128;

  471. b=temp/64%2;

  472. c=temp/32%2;

  473. d=temp/16%2;

  474. e=temp/8%2;

  475. f=temp/4%2;

  476. g=temp/2%2;

  477. if(a==1){

  478. print3(0x81,0);

  479. }

  480. if(b==1){

  481. print3(0x82,2);

  482. }

  483. if(c==1){

  484. print3(0x42,2);

  485. }

  486. if(d==1 && g==0){

  487. print3(0x81,1);

  488. }

  489. if(e==1){

  490. print3(0x40,3);

  491. }

  492. if(f==1){

  493. print3(0x80,3);

  494. }

  495. if(g==1){

  496. print3(0x81,4);

  497. }

  498. }

  499. void init (void) {

  500. //mh=0x00;

  501. //ml=0x00; 3.5 3.2 4.7 1.5

  502. beep=1;

  503. beepc=0;

  504. mo=1;

  505. KEYAG=0;

  506. KEYBG=0;

  507. KEYCG=0;

  508. KEYDG=0;

  509. TMOD = 0x01;      

  510.     TH0 = 0x3c;        

  511.     TL0 = 0xb0;

  512. TH1 = 0x00;

  513. TL1 = 0x00;  

  514.     EA = 1;

  515.     ET0 = 1;

  516. ET1 = 1;

  517.     TR0 = 1;

  518. TR1 = 1;

  519. menu=0;

  520. P4SW=0x70;

  521. P2M0=0x02;

  522. P0M0=0x10;

  523. /*P3M1=0x24;

  524. P4M1=0x80;

  525. P1M1=0x20;*/

  526. blv=0;

  527. blg=0;

  528. vss=0;

  529. vdd=1;

  530. vo=0;

  531. ltv=1;

  532. P1M1=0x04;

  533. P1M0=0x02;

  534. RC=1;

  535. RP=0;

  536. //Read_init(1);

  537. Read_init(2);

  538. rbit=0;

  539. if(day==0){

  540. year=11;

  541. month=8;

  542. day=13;

  543. week=6;

  544. hour=8;

  545. min=51;

  546. sec=50;

  547. }

  548. kj=1;

  549. light=0xa0;                  

  550. LCM2402_Init();//LCM2402初始化   

  551. PWM_init();

  552. PWM0_set(light);

  553. //sound();

  554. change();

  555. autolum=1;

  556. lm35vcc=1;

  557. lm35gnd=0;

  558. P0M0=0x12;

  559. P0M1=0x01;

  560. rlv=1;

  561. rl=0;

  562. reps=6;

  563. repe=23;

  564. }

  565. void main (void){

  566. init();

  567. while (kj){

  568. /*print3(0x80,0x00);

  569. print3(0x81,0x02);   //永

  570. print3(0x82,0x04);

  571. print3(0x40,0x01);

  572. print3(0x41,0x03);

  573. print3(0x42,0x05);



  574. print3(0x83,0x06);

  575. print3(0x84,0x08);  //恒

  576. print3(0x85,0x0a);

  577. print3(0x43,0x07);

  578. print3(0x44,0x09);

  579. print3(0x45,0x0b);

  580. delay(2000);

  581. */

  582. change();

  583. print(0x80,"Everlasting Time");

  584. print(0x40," -V3- TZR Studio");

  585. delay(5000);

  586. kj=0;

  587. }

  588. change();                        

  589. while(1){ //主線程//

  590. //LCM2402_Init();

  591. if(cou==0){

  592. C=(ADC_Read()-8)*1000;

  593. C/=2048;

  594. }

  595. if(autolum==1 && rbit==1){

  596. rbit=0;

  597. LCM2402_Init();

  598. //LCM2402_Init();

  599. if(rl==1){

  600. light=165;

  601. PWM0_set(light);

  602. }else if(rl==0){

  603. light=45;

  604. PWM0_set(light);

  605. }

  606. }else if(autolum==0 && rbit==1){

  607. rbit=0;

  608. LCM2402_Init();

  609. //LCM2402_Init();

  610. }/*else if(autolum==2 && rbit==1){

  611. RC=1;

  612. rbit=0;

  613. delay(1);

  614. RP=ADC_Read();

  615. /*if(RP*4>245){

  616. light=RP*4-80*3;

  617. }else{

  618. light=5;

  619. }

  620. if(RP*4>495){

  621. light=255;

  622. }*//*

  623. light=RP;

  624. PWM0_set(light);

  625. RC=0;

  626. } */

  627. if(menu==0){

  628. aln=0xff;

  629. for(i=0;i<9;i++){

  630. if(alm[i][0]==hour && alm[i][1]==min && alm[i][2]==1){

  631. aln=i;

  632. break;

  633. }

  634. }

  635. if(aln==0xff){

  636. time();

  637. }else{

  638. print(0x80,"Alarm");

  639. print2(0x85,(i+1));

  640. print(0x86," ");

  641. print2(0x87,hour/10);

  642. print2(0x88,hour%10);

  643. print(0x89,":");

  644. print2(0x8a,min/10);

  645. print2(0x8b,min%10);

  646. print(0x8c," Pre");

  647. print(0x40,"ss any keys stop");

  648. }

  649. }else if(menu==1){

  650. print(0x80,"[A  B  C  D]");

  651. print2(0x8d,mt/10);

  652. print2(0x8e,mt%10);

  653. print(0x8f,"s");

  654. print(0x40,"Alm Time Lum Rep");

  655. if(mt==0){

  656. menu=0;

  657. change();

  658. }

  659. }else if(menu==2){

  660. if(set==0){

  661. print(0x80,"[+1 -1 SET ESC]");

  662. print(0x40,"Alm");

  663. print2(0x43,mo);

  664. print(0x44," ");

  665. print2(0x45,alm[mo-1][0]/10);

  666. print2(0x46,alm[mo-1][0]%10);

  667. print(0x47,":");

  668. print2(0x48,alm[mo-1][1]/10);

  669. print2(0x49,alm[mo-1][1]%10);

  670. if(alm[mo-1][2]==0){

  671. print(0x4a," Close");

  672. }else if(alm[mo-1][2]==1){

  673. print(0x4a," Open ");

  674. }else if(alm[mo-1][2]==2){

  675. print(0x4a," W1-5 ");

  676. }else if(alm[mo-1][2]==3){

  677. print(0x4a," W6-7 ");

  678. }else if(alm[mo-1][2]==4){

  679. print(0x4a," W 6  ");

  680. }else if(alm[mo-1][2]==5){

  681. print(0x4a," W 7  ");

  682. }else if(alm[mo-1][2]==6){

  683. print(0x4a," Once ");

  684. }

  685. }else{

  686. print(0x80,"+/-/next/OK ");

  687. if(mo==0){print(0x8c,"Hour");}

  688. if(mo==1){print(0x8c,"Mins");}

  689. if(mo==2){print(0x8c,"Ways");}

  690. print(0x40,"Alm");

  691. print2(0x43,set);

  692. print(0x44," ");

  693. print2(0x45,alm[set-1][0]/10);

  694. print2(0x46,alm[set-1][0]%10);

  695. print(0x47,":");

  696. print2(0x48,alm[set-1][1]/10);

  697. print2(0x49,alm[set-1][1]%10);

  698. if(alm[set-1][2]==0){

  699. print(0x4a," Close");

  700. }else if(alm[set-1][2]==1){

  701. print(0x4a," Open ");

  702. }else if(alm[set-1][2]==2){

  703. print(0x4a," W1-5 ");

  704. }else if(alm[set-1][2]==3){

  705. print(0x4a," W6-7 ");

  706. }else if(alm[set-1][2]==4){

  707. print(0x4a," W 6  ");

  708. }else if(alm[set-1][2]==5){

  709. print(0x4a," W 7  ");

  710. }else if(alm[set-1][2]==6){

  711. print(0x4a," Once ");

  712. }

  713. }

  714. }else if(menu==3){

  715. print(0x80,"[+1 -1 next ESC]");

  716. if(mo==0){

  717. print(0x40,"Year");

  718. print2(0x45,2);

  719. print2(0x46,0);

  720. print2(0x47,year/10);

  721. print2(0x48,year%10);

  722. }else if(mo==1){

  723. print(0x40,"Month");

  724. print(0x46,":");

  725. print2(0x47,month/10);

  726. print2(0x48,month%10);

  727. }else if(mo==2){

  728. print(0x40,"Day  ");

  729. print(0x46,":");

  730. print2(0x47,day/10);

  731. print2(0x48,day%10);

  732. }else if(mo==3){

  733. print(0x40,"Hour  ");

  734. print(0x46,":");

  735. print2(0x47,hour/10);

  736. print2(0x48,hour%10);

  737. }else if(mo==4){

  738. print(0x40,"Min  ");

  739. print(0x46,":");

  740. print2(0x47,min/10);

  741. print2(0x48,min%10);

  742. }else if(mo==5){

  743. if(week==1){print(0x40," MonDay    ");}

  744. if(week==2){print(0x40," TuesDay   ");}

  745. if(week==3){print(0x40," WednesDay ");}

  746. if(week==4){print(0x40," ThursDay  ");}

  747. if(week==5){print(0x40," FriDay    ");}

  748. if(week==6){print(0x40," SaturDay  ");}

  749. if(week==7){print(0x40," SunDay    ");}

  750. }

  751. }else if(menu==4){

  752. PWM0_set(light);

  753. print(0x80,"[+F -F Auto ESC]");

  754. print(0x40,"Lum:");

  755. print2(0x44,light/100%10);

  756. print2(0x45,light/10%10);

  757. print2(0x46,light%10);

  758. print(0x47," Auto:");

  759. if(autolum==0){

  760. print(0x4d,"OFF");

  761. }else if(autolum==1){

  762. print(0x4d,"ON ");

  763. }else if(autolum==2){

  764. print(0x4d,"AS ");

  765. }

  766. }else if(menu==5){

  767. /*print(0x80,"Sorry! This mode");

  768. print(0x40,"is open up now! ");

  769. delay(3000);

  770. menu=0;

  771. */                                                               

  772. print(0x80,"[St Ed Rep ESC]");

  773. if(reps!=0xff){

  774. print2(0x40,reps/10);

  775. print2(0x41,reps%10);

  776. print(0x42,":00 to ");

  777. print2(0x49,repe/10);

  778. print2(0x4a,repe%10);

  779. print(0x4b,":00");

  780. }else{

  781. print(0x40," -Closed-    ");

  782. }


  783. }

  784. /****************************按鈕操作***************************/

  785. KEY();

  786. if(menu==0){

  787. if(ke!=0xff){menu=1;mt=15;change();}

  788. }else if(menu==1){

  789. if(ke==0x0a){menu=2;change();mo=1;set=0;}

  790. if(ke==0x0b){menu=3;change();mo=0;}

  791. if(ke==0x0c){menu=4;change();}

  792. if(ke==0x0d){menu=5;change();}

  793. }else if(menu==2){

  794. if(set==0){

  795. if(ke==0x0a){mo++;if(mo==10){mo=1;}}

  796. if(ke==0x0b){mo--;if(mo==0){mo=9;}}

  797. if(ke==0x0c){set=mo;mo=0;}

  798. if(ke==0x0d){menu=0;change();}

  799. }else{

  800. if(ke==0x0a){

  801. if(mo==2){

  802. alm[set-1][2]++;

  803. if(alm[set-1][2]==7){

  804. alm[set-1][2]=0;

  805. }else if(alm[set-1][2]==0){

  806. alm[set-1][2]=6;

  807. }

  808. }else {

  809. alm[set-1][mo]++;

  810. }

  811. }

  812. if(ke==0x0b){

  813. if(mo==2){

  814. if(alm[set-1][2]>=7){

  815. alm[set-1][2]=0;

  816. }else if(alm[set-1][2]==0){

  817. alm[set-1][2]=7;

  818. }

  819. alm[set-1][2]--;

  820. }else if(alm[set-1][mo]!=0){alm[set-1][mo]--;

  821. }

  822. }

  823. if(ke==0x0c){mo++;if(mo==3){mo=0;}}

  824. if(ke==0x0d){menu=0;change();}

  825. if(alm[set-1][0]>23){

  826. alm[set-1][0]=0;

  827. }

  828. if(alm[set-1][0]<0){

  829. alm[set-1][0]=23;

  830. }

  831. if(alm[set-1][1]<0){

  832. alm[set-1][1]=59;

  833. }

  834. }

  835. }else if(menu==3){

  836. if(ke==0x0a){

  837. if(mo==0){year++;}

  838. if(mo==1){month++;}

  839. if(mo==2){day++;}

  840. if(mo==3){hour++;}

  841. if(mo==4){min++;}

  842. if(mo==5){week++;}

  843. if(year>29){

  844. year=11;

  845. }

  846. if(month>12){

  847. month=1;

  848. }

  849. if(day>31){

  850. day=1;

  851. }

  852. if(hour>23){

  853. hour=0;

  854. }

  855. if(min>59){

  856. min=0;

  857. }

  858. if(week>7){

  859. week=1;

  860. }

  861. }

  862. if(ke==0x0b){

  863. if(mo==0 && year>11){year--;}

  864. if(mo==1 && month>1){month--;}

  865. if(mo==2 && day>1){day--;}

  866. if(mo==3 && hour>0){hour--;}

  867. if(mo==4 && min>0){min--;}

  868. if(mo==5 && week>1){min--;}

  869. }

  870. if(ke==0x0c){mo++;if(mo==6){mo=0;}}

  871. if(ke==0x0d){menu=0;change();}

  872. }else if(menu==4){

  873. if(ke==0x0a){

  874. if(light>0xFE){

  875. light=0x00;

  876. }else{

  877. light+=0x0F;

  878. }

  879. }

  880. if(ke==0x0b){

  881. if(light<0x0E){

  882. light=0xFF;

  883. }else{

  884. light-=0x0F;

  885. }

  886. }

  887. if(ke==0x0c){

  888. autolum++;

  889. if(autolum==2){

  890. autolum=0;

  891. }

  892. }

  893. if(ke==0x0d){menu=0;change();}

  894. }else if(menu==5){

  895. if(ke==0x0a){

  896. if(reps>9){

  897. reps=5;

  898. }else{

  899. reps++;

  900. }

  901. }

  902. if(ke==0x0b){

  903. if(repe>23){

  904. repe=20;

  905. }else{

  906. repe++;

  907. }

  908. }

  909. if(ke==0x0c){

  910. if(reps<0xff){

  911. reps=0xff;

  912. }else{

  913. reps=6;

  914. }

  915. }

  916. if(ke==0x0d){menu=0;change();}

  917. }

  918. }

  919. }   

  920. void tiem0(void) interrupt 1 using 3{

  921.     cou++;  

  922. if(beepc>0){

  923. beepc--;

  924. beep=0;

  925. }else if(beepc==0){

  926. beep=1;

  927. beepc=0;

  928. }      

  929.     if(cou > 19){            

  930.         cou = 0;              

  931.         sec++;

  932. if(sec%2==0){

  933. rbit=1;

  934. }

  935. if(mt>0){

  936. mt--;

  937. }                  

  938.         if(sec > 59){

  939.             sec = 0;

  940.             min++;

  941. if(hour>=reps && hour<=repe && reps!=0xff && min==30){

  942. bee;

  943. }

  944.             if(min > 59){

  945.                 min = 0;

  946. if(hour>=reps && hour<=repe && reps!=0xff){

  947. lbee;

  948. }

  949.                 hour++;

  950.                 if(hour > 23){

  951.                     hour = 0;

  952. db = 1;

  953. }  

  954.             }

  955. for(i=0;i<9;i++){

  956. if(alm[i][0]==hour && alm[i][1]==min && alm[i][2]!=0){

  957. if(alm[i][2]==1){

  958. beep=0;

  959. beepc=20*30;

  960. break;

  961. }else if(alm[i][2]==2 && week>=1 && week<=5){

  962. beep=0;

  963. beepc=20*30;

  964. break;

  965. }else if(alm[i][2]==3 && week>=6 && week<=7){

  966. beep=0;

  967. beepc=20*30;

  968. break;

  969. }else if(alm[i][2]==4 && week==6){

  970. beep=0;

  971. beepc=20*30;

  972. break;

  973. }else if(alm[i][2]==5 && week==7){

  974. beep=0;

  975. beepc=20*30;

  976. break;

  977. }else if(alm[i][2]==6){

  978. beep=0;

  979. beepc=20*30;

  980. alm[i][2]=0;

  981. break;

  982. }

  983. }

  984. }   

  985.         }   

  986.     }   

  987.     TH0 = 0x3c;

  988.     TL0 = 0xd0;   

  989. }

  990. void t1(void) interrupt 3 using 2{

  991. blv=~blv;

  992. if(blv==0){

  993. TH1=hh;

  994. TL1=hh;

  995. }else{

  996. TH1=ll;

  997. TL1=ll;

  998. }

  999. }


復(fù)制代碼

CODE代碼.rar (7.01 KB, 下載次數(shù): 19)

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

使用道具 舉報(bào)

沙發(fā)
ID:98618 發(fā)表于 2016-6-20 23:58 | 只看該作者
頂!!樓主的電子鐘做的很不錯(cuò)啊,很簡(jiǎn)潔構(gòu)造有創(chuàng)意呀,不知道準(zhǔn)確性上是否精確,感覺(jué)用單片機(jī)自身的時(shí)鐘可能會(huì)受程序等的影響產(chǎn)生誤差,還有電源的地方我基本沒(méi)有了解,很喜歡你做的et2中的電源部分,可否給我點(diǎn)電路原理圖,不勝感激(424780212@qq.com),給你提點(diǎn)建議,就是用da芯片與喇叭做蜂鳴器部分,這樣可以將鬧鐘部分播放優(yōu)質(zhì)的音樂(lè),還有諾基亞5110液晶屏很好(也有藍(lán)背景不是很好看),用它可以顯示更多的東西,性價(jià)比超高,加上18b20顯示溫度,單片機(jī)推薦msp430(我沒(méi)用過(guò))在功耗上效果明顯,最好用時(shí)鐘芯片(ds1302便宜)
回復(fù)

使用道具 舉報(bào)

板凳
ID:10075 發(fā)表于 2016-6-21 09:13 | 只看該作者
新人看看看看看學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 玖玖在线免费视频 | 91精品久久久久久久久 | 秋霞电影一区二区 | 日本又色又爽又黄又高潮 | 久久久精品网站 | 日韩一级精品视频在线观看 | 美女爽到呻吟久久久久 | 在线看一区二区三区 | 欧美激情在线精品一区二区三区 | 午夜激情免费视频 | 精品粉嫩超白一线天av | 91精品国产91久久久久久最新 | 欧美在线一区二区三区 | 亚洲一区二区免费看 | 亚洲欧美中文日韩在线v日本 | 久久国产精品视频 | 久久成人国产 | 91免费版在线观看 | 成人在线视频网 | 国产999精品久久久 午夜天堂精品久久久久 | 色站综合 | 91在线看片| 亚洲视频网 | 男女精品网站 | 免费国产一区二区视频 | 99国产精品99久久久久久粉嫩 | 日韩1区 | 久久久久久99 | 国产情侣一区 | 欧美日韩在线视频一区二区 | 久久久久久国产一区二区三区 | 国产精品美女 | 亚洲天堂久久新 | 美女张开腿露出尿口 | 欧美v日韩v | 国产精品一区二区三 | 黑人巨大精品欧美一区二区免费 | 成人精品一区二区三区 | 狠狠爱一区二区三区 | 91亚洲国产成人精品一区二三 | 久久高清免费视频 |