欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: LCD12864液晶菜單界面小系統 代碼開源+效果視頻 [打印本頁]

作者: daoyou    時間: 2013-8-7 01:16
標題: LCD12864液晶菜單界面小系統 代碼開源+效果視頻
效果視頻
http://player.youku.com/player.php/sid/XNTA2NDUyODg0/v.swf



這個是主界面

這個是主菜單界面

這個是設置時間的子界面

這個是設置日期


設置背景光

這是設置了按鍵音和鬧鈴以后,主界面出現狀態標志


鬧鈴的界面,喇叭出現鈴聲。

生日倒計時提醒功能。




今天晚上剛剛寫完代碼,第一次寫這個超過2天,以前都在學習過程中。有點小開心。趕緊上論壇來和大家分享下。絕對原創。因為,我根本看不懂別人太復雜的代碼,代碼量大了看起來就累,然后就不想看。。。不知道大家有沒有這樣的感覺,每次帖子看寫方法的比較舒服。

代碼獻上,我這里用的是STC90C516RD+,代碼量大了點

還有 希望有高手能看到,提點建議給我,感覺寫這個非常要命,我每次處理冗長的條件的時候,我只會加很多bit flag標志去判斷,然后節省時間,代碼量特別大,,,挺摸不著頭腦的,希望有志同道合的朋友經常一起交流。我經常登這個論壇,有興趣的可以回復我。先自我介紹下,我今年大三,剛學完開發板現有的模塊,然后準備這個寒假多實踐下,買了很多串口通信的器件,希望能找到個交流的伴,每次在學校就我一個人在搗鼓這東西,覺得時間久了有點沒有激情了。。。

數字菜單系統開發者YuMin_Dong-1.7z (71.22 KB, 下載次數: 5012)

作者: daoyou    時間: 2013-8-7 01:17
這個是main.c文件
  1. /*------------------------------------
  2. 名稱:多級菜單數字電子鐘
  3. 編寫:YuMin_Dong
  4. 時間:2013.01.24
  5. ------------------------------------*/
  6. #include <reg52.h>
  7. //#include<intrins.h>
  8. #include<stdio.h>
  9. #include"zm.h"
  10. #include"delay.h"
  11. #include"lcd12864.h"
  12. #include"ds18b20.h"
  13. #include"ds1302.h"
  14. #include"process.h"

  15. /*------------------------------------
  16.                         全局變量定義
  17. ------------------------------------*/

  18. bit Temperature_Flag;                        //讀取并顯示溫度標簽,使溫度刷新頻率低些
  19. //bit Re_Time_Flag;
  20. //bit Flag1;        //進入子菜單后置標志,中斷一次Menu_Count自加一次
  21. bit Bell_Work;

  22. /*------------------------------------
  23.                         轉換表
  24. ------------------------------------*/
  25. //code UINT8 *WEEK_TAB[]={"一","二","三","四","五","六","日",};                //星期中文字庫表

  26. /*------------------------------------
  27.                         函數聲明部分
  28. ------------------------------------*/
  29. //void Display_Time();
  30. //void System_BootScreen();
  31. //void Timer0_Init();
  32. //void Int0_Init();
  33. //void Display_Temperature();
  34. //UINT8 Conver_Week(bit c,UINT8 year,UINT8 month,UINT8 date);

  35. /*------------------------------------
  36.                         啟動畫面
  37. ------------------------------------*/
  38. void System_BootScreen()
  39. {
  40. UINT8 i;
  41. LCD_SendImg128x64(User0_128x64);        //歡迎畫面
  42. for(i=0;i<10;i++)
  43. DelayMs(255);                                                //畫面延時

  44. LCD_SendImg128x64(User1_128x64);        //照片顯示
  45. for(i=0;i<10;i++)
  46. DelayMs(255);
  47. }

  48. /*------------------------------------
  49.                         初始化定時器
  50. ------------------------------------*/
  51. void Timer_Init()                                       
  52. {
  53. TMOD|=0x11;                                        //兩個定時器置方式一
  54. IE|=0X8a;                                        //開總中斷開關和兩個定時器中斷開關
  55. PT1=1;                                                //按鍵音產生中斷T1權拉高,使之能在INT0下產生聲響
  56. TR0=1;                                                //開啟定時器0,刷新用
  57. //PX0=1;
  58. //TR1=1;
  59. }

  60. /*------------------------------------
  61.                         初始化INT0
  62. ------------------------------------*/
  63. void Int0_Init()
  64. {
  65. EX0=1;                //打開外中斷0,中斷允許
  66. IT0=1;                //設置下降沿觸發
  67. }

  68. /*------------------------------------
  69.                         INT0中斷處理函數
  70. ------------------------------------*/
  71. void Int0_IRQ() interrupt 0
  72. {
  73.         Menu_Flag=1;                                //進入主菜單標簽
  74.         TR1=1;                                                //開啟TR1有按鍵音       
  75.         while(!KEY_MENU)                        //等待按鍵結束,使用中斷做按鍵,能讓它實時性比較好
  76.         ;
  77.         TR1=0;                                        //按鍵結束,按鍵音結束
  78.                
  79.         if(Menu0)                                        //子菜單0(設置時間進入后)
  80.         {
  81.         Set_Hour=~Set_Hour;                        //因為只有時鐘和分鐘個設置,0和1兩種狀態能區分了
  82.         }
  83.         else if(Menu1)                                //子菜單1(設置日期進入后)
  84.                 Menu1_Flag=1;                        //為減少中斷代碼長度,事實證明,用個標志更好
  85.         else if(Menu2)
  86.                 Menu2_Flag=1;
  87.         else if(Menu3) Set_Bright=~Set_Bright;                //子菜單3(背景光開關)
  88.         else if(Menu4) Set_Speaker=~Set_Speaker;        //子菜單4(按鍵音開關)
  89. Refresh_SetTime=1;                                //在子狀態中任何狀態按一下都會使產生刷新顯示標簽。       
  90. }       

  91. /*------------------------------------
  92.                         T0中斷處理函數
  93. ------------------------------------*/
  94. void Timer0_IRQ() interrupt 1
  95. {
  96. static UINT8 i;
  97. TH0=-50000/256;
  98. TL0=-50000%256;
  99. i++;
  100. if(i==80)        Temperature_Flag=1;        //2.5s中產生一次(讀取并刷新溫度的標簽)
  101. }

  102. /*------------------------------------
  103.                         T1中斷處理函數
  104. ------------------------------------*/
  105. void Timer1_IRQ() interrupt 3
  106. {
  107. TH1=-600/256;                                        //產生某種頻率的按鍵音
  108. TL1=-600%256;                                        //經測試,2000HZ~4000HZ左右的比較適合做按鍵音
  109. SPEAKER=~SPEAKER;                                //產生方波 提供某種頻率的按鍵音
  110. }

  111. /*------------------------------------
  112.                         主函數
  113. ------------------------------------*/
  114. void main()
  115. {
  116. LCD_ClearGDRAM();                //清除DDRAM和GDRAM的顯示
  117. System_BootScreen();        //啟動畫面
  118. DS1302_Init();                        //初始化DS1302
  119. Int0_Init();                        //初始化外中斷0
  120. LCD_Init();                                //初始化12864
  121. Timer_Init();                        //初始化定時器
  122. LCD_ClearGDRAM();                //清屏DDRAM和GDRAM
  123. LCD_SetCGRAM(1,User1_16x16);//寫入CGRAM自定義字符 主菜單指向箭頭
  124. LCD_SetCGRAM(0,User0_16x16);//鬧鐘標志
  125. LCD_SetCGRAM(2,User2_16x16);//℃
  126. LCD_SetCGRAM(3,User4_16x16);//溫度計
  127. Display_Temperature();                //開始的時候先顯示下溫度,使界面比較完整不會空缺
  128. SPEAKER=0;                                        //斷開喇叭,使之不會長時間導通燒壞
  129. BRIGHT=1;                                        //打開背景光
  130. while(1)
  131. {
  132. SPEAKER=0;                                        //斷開喇叭,使之不會長時間導通燒壞
  133.         if(Temperature_Flag)        //大循環下,溫度標簽置位后刷新顯示溫度
  134.         {
  135.         Temperature_Flag=0;                //清零標簽
  136.         Display_Temperature();
  137.         }
  138.        
  139.        
  140.         if(!Menu_Flag)                        //沒有菜單標簽則顯示主時鐘界面
  141.         {
  142.         DS1302_ReadDate();                //讀取日期
  143.                 if(Bell_Flag)                //Bell標志被置位,表明在設置菜單里,開始定時了,開始往下執行,等待定時到
  144.                 {
  145.                         if(Hour==Bell_Hour&&Minute==Bell_Minute)
  146.                         {
  147.                         LCD_ClearGDRAM();
  148.                         LCD_SendImg128x64(User2_128x64);
  149.                         Bell_Work=1;
  150.                         ET1=1;
  151.                         TR1=1;
  152.                                 while(1)
  153.                                 {
  154.                                         if(!KEY_ENTER)
  155.                                         {
  156.                                         DelayMs(10);
  157.                                                 if(!KEY_ENTER)
  158.                                                 {
  159.                                                 while(!KEY_ENTER);
  160.                                                 Bell_Flag=0;
  161.                                                 Temperature_Flag=1;
  162.                                                 Bell_Work=0;
  163.                                                 TR1=0;
  164.                                                 Menu_Flag=0;
  165.                                                 LCD_ClearGDRAM();
  166.                                                 LCD_Init();
  167.                                                 break;
  168.                                                 }
  169.                                         }
  170.                                 }
  171.                         }
  172.                 }
  173.         Display_Date();                        //填充顯示日期
  174.         Display_Week();                        //填充顯示星期
  175.         DS1302_ReadTime();                //讀取時間
  176.         Display_Time();                        //填充顯示時間
  177.         }
  178.        
  179.         else if(Menu_Flag)                //顯示控制界面
  180.         {
  181.         LCD_ClearGDRAM();                //清屏之前的主時鐘界面
  182.         LCD_RefreshMenu();                //菜單顯示
  183.         FanHui1=0;                                //清零FanHui1標簽,使之每一次進入菜單后都能停在下面那個while菜單循環中
  184.         //guide_old++;                        //
  185.         while(!FanHui1)                        //FanHui沒有被置1,死循環,當主菜單下按了返回則置1,跳出循環
  186.         {       
  187.         MainMenu_Pro();                        //主菜單處理函數
  188.         SPEAKER=0;                                //斷開喇叭,使之不會長時間導通燒壞
  189.                 while(Enter_Menu)        //進入子菜單標簽
  190.                 {
  191.                                 if(Menu0) Menu0_Pro();                //子菜單0處理函數
  192.                                 else if(Menu1) Menu1_Pro();       
  193.                                 else if(Menu2) Menu2_Pro();
  194.                                 else if(Menu3) Menu3_Pro();
  195.                                 else if(Menu4) Menu4_Pro();
  196.                                 else if(Menu5) Menu5_Pro();
  197.                 SPEAKER=0;                                //斷開喇叭,使之不會長時間導通燒壞
  198.                 }
  199.         }//一級菜單while()
  200.         Temperature_Flag=1;                //每當退出主菜單,重新顯示溫度
  201.         }//顯示界面塊
  202. }
  203. }
復制代碼

作者: 冷清___若水    時間: 2013-8-13 14:36
能不能把完整的程序和電路圖發來啊?!感激不盡

作者: qq324042093    時間: 2013-8-13 22:54
haoyang de !!!!51黑有你更精彩!!
作者: 游俠(單片機開    時間: 2013-10-21 15:43
很好  學習 謝謝
作者: fxping163    時間: 2013-10-25 09:31
這網站上下載怎么這么慢呢?
作者: bglhf    時間: 2013-10-29 13:50
收藏了
作者: EGO配支架    時間: 2013-10-30 11:03
128*64點陣,歡迎用RAIO的RA6963
作者: jiashengqiang    時間: 2013-10-31 21:41
完整的程序和電路圖發一下吧,樓主
作者: jldqc    時間: 2013-11-1 10:46
頂,謝謝
作者: 469396824    時間: 2013-11-4 00:08
受教了,學習中
作者: じ☆ve諟菈瞇蘇    時間: 2014-1-2 15:58
完整的程序和電路圖發一下吧,樓主

作者: xjxhsjl    時間: 2014-2-12 14:22
我下載編譯怎么這么多的錯誤啊?
作者: yamglang    時間: 2014-2-21 01:11
完整的程序和電路圖發一下吧,樓主 謝謝!
作者: xysgjxy    時間: 2014-2-28 12:24
贊一個!!!
作者: 異旅青絲    時間: 2014-3-8 08:35
看著很吊的樣子
作者: yixiaow810c    時間: 2014-4-4 14:02
樓主厲害啊,感謝分享
作者: zenghl    時間: 2014-4-6 14:06
樓主真強呀!
作者: 930417801    時間: 2014-4-14 17:34
支持樓主~~
作者: zhoudehua    時間: 2014-4-14 20:07
好東西,收藏學習
作者: a651738901    時間: 2014-4-28 22:03
謝謝樓主慷慨,謝謝了
作者: 漣漪    時間: 2014-4-28 22:25
樓主厲害啊。功能完善的萬年歷了。感謝分享
作者: 稻草人‘mirror    時間: 2014-5-2 02:30
謝謝樓主分享
作者: lyMarvin    時間: 2014-5-2 07:30
倒計時功能不錯,學習學習。
作者: Guo.Ke    時間: 2014-5-16 09:33
xie謝分享,學習一下
作者: 153956635    時間: 2014-5-26 21:13
樓主在嗎,怎么我的有錯誤?請教

ZM.H(11): 錯誤 C129: missing ';' before 'User16x32',,,
作者: 周安松    時間: 2014-6-1 23:57
不錯的東西
作者: 蒲林森    時間: 2014-6-3 10:29
能發下原理圖嗎
作者: JIUSHI    時間: 2014-7-7 21:19
漂亮    這就是我想要的
作者: radiance    時間: 2014-7-14 17:52
先看看了。
作者: 921555172    時間: 2014-7-17 21:32
可不可以把完整的程序發給我
作者: WKK001    時間: 2014-7-18 17:37
正在學習菜單,感覺挺麻煩的
作者: coolzoom    時間: 2014-7-19 23:20
支持支持
作者: yamglang    時間: 2014-8-16 22:41
可不可以把完整的程序和原理圖發給我,樓主  
作者: relationyao    時間: 2014-9-3 09:51
你好,我看了你的圖片了,第一次做的挺好的,就你說的,我也是想一直找個志同道合的朋友經常一起交流交流,有時間方便聊一聊!
作者: ladeng0303    時間: 2014-9-5 15:37
好東西啊,謝謝樓主分享!
作者: heam    時間: 2014-9-15 12:25
謝謝分享
作者: mcaeg    時間: 2014-9-15 23:14
郁悶.我的12864不顯示了.可能屏壞了.那天在找一塊試試
作者: qzsulin    時間: 2014-9-30 10:03
不錯。。。。
作者: zhang289444124    時間: 2014-10-3 19:55
很不錯
作者: snailgg    時間: 2014-10-4 11:02
樓主,挺你,成功的人是孤獨的。
作者: yc21    時間: 2014-10-5 20:33
必須頂,思路很清晰啊
作者: tjj163    時間: 2014-10-11 15:13
很好  學習 謝謝
作者: jst    時間: 2014-10-11 22:40
樓主在嗎,怎么我的有錯誤?請教

ZM.H(11): 錯誤 C129: missing ';' before 'User16x32',,,
作者: xs888    時間: 2014-10-12 06:58
不錯的東西,下載學習學習。
作者: 4258036    時間: 2014-10-20 18:52
謝謝分享
作者: 南開強子    時間: 2014-11-9 21:39
多謝了,學習。
作者: nsj21n    時間: 2014-11-10 08:54
GOOD,NICE MEMU!
作者: nojiya88    時間: 2014-11-11 19:27
我改了一下接口,然后編譯為什么不通過啊?  ZM.H(9): error C129: missing ';' before 'User_16x32'
  幫看一下怎么改一下。。。
作者: zhao58    時間: 2014-11-12 11:43
daoyou 發表于 2013-8-7 01:17
這個是main.c文件

下來學習一下 謝謝分享
作者: zhao58    時間: 2014-11-12 11:45
daoyou 發表于 2013-8-7 01:17
這個是main.c文件

就是沒有電路圖啊
作者: zhao58    時間: 2014-11-12 11:50
怎么下載不了呢
作者: maxtor686    時間: 2014-11-16 12:30
完整的程序和電路圖發一下吧  191277770@qq.com 謝謝
作者: 12345-----    時間: 2014-11-24 08:45
你這個12864的管腳怎么接的呀
作者: zjf110    時間: 2014-11-25 01:01
#在這里快速回復#不錯 頂頂頂頂
作者: zjf110    時間: 2014-11-25 01:50
daoyou 發表于 2013-8-7 01:17
這個是main.c文件


感謝樓主分享
作者: zjf110    時間: 2014-11-25 02:03
daoyou 發表于 2013-8-7 01:17
這個是main.c文件

很好  學習 謝謝
作者: 77408187    時間: 2014-11-25 19:54
樓主太強了。
作者: 77408187    時間: 2014-11-25 19:55
佩服啊
作者: 游戲機123456    時間: 2014-11-25 22:17
daoyou 發表于 2013-8-7 01:17
這個是main.c文件


完整的程序和電路圖發一下吧我非常喜歡謝謝。JZRCL88@163.COM
作者: 周安松    時間: 2014-11-28 03:31
學習學習,謝謝
作者: njdada    時間: 2014-12-6 10:17
再支持一下就可以了。
作者: njdada    時間: 2014-12-6 10:18
再支持一下就可以了。
作者: 517120074    時間: 2014-12-6 11:02
下載了,ZM的H文件不能通過編譯。
作者: xiejiaxiao    時間: 2014-12-6 16:11
下載了,謝謝分享
作者: swq123    時間: 2014-12-6 21:51
153956635 發表于 2014-5-26 21:13
樓主在嗎,怎么我的有錯誤?請教

ZM.H(11): 錯誤 C129: missing ';' before 'User16x32',,,

我運行也是,宏定義一下,還是讓看樓主解答吧
作者: hawkfyj    時間: 2014-12-7 10:37
大神啊!我照你的程序調了,溫度顯示95.9度啊?怎么回事啊?
作者: mycookie    時間: 2014-12-9 10:41
這個東西聽潮的
作者: 來自火星的蝸牛    時間: 2014-12-17 21:27
下載下來,學習一下。
作者: 來自火星的蝸牛    時間: 2014-12-17 21:28
樓主代碼寫的相當細致,值得學習。謝謝
作者: 星星一眨眼    時間: 2014-12-18 02:17
多謝分享
作者: 1250455243    時間: 2014-12-21 21:44
很好。。。。
作者: 1250455243    時間: 2014-12-21 21:44
支持  力頂。。
作者: touren    時間: 2015-1-2 15:03
謝謝分享,樓主厲害
作者: lxl2255    時間: 2015-1-7 10:44
good  想看看
作者: mcs51    時間: 2015-2-3 15:11
不錯,支持
作者: mcs51    時間: 2015-2-3 15:13
轉了,不錯
作者: wamgweix    時間: 2015-2-18 03:02
好東西,下載了
作者: 吳宇    時間: 2015-3-5 18:07
用不了
作者: wangzm521    時間: 2015-3-13 15:09
好東西呀
作者: wangzm521    時間: 2015-3-13 15:09
怎么還是不夠數據呢?
作者: csx140118    時間: 2015-3-13 19:22
路過。學習了……
作者: 釣魚臺    時間: 2015-3-15 22:02
程序不完整?本萊鳥木有辦法嘍。
作者: 飛蓬    時間: 2015-3-16 11:38
謝謝分享
作者: 周安松    時間: 2015-3-18 14:14
支持一下
作者: brantsun    時間: 2015-3-29 18:24
niumhzxb,jhzxv.ZXZXcZXZX
作者: brantsun    時間: 2015-3-29 18:24
希望有志同道合的朋友經常一
作者: delay    時間: 2015-3-29 20:46
謝謝分享
作者: delay    時間: 2015-3-29 20:53
很厲害
作者: 黎默-lymoo    時間: 2015-3-30 13:59
學習

作者: 酸葡萄愛好者2    時間: 2015-3-30 15:08
樓主您好,現大二,也想開始學這個東西個,能發下您的PCB 圖嗎,想參考學習一下!    謝謝啦!郵箱:guoleixuan@163.com
作者: 漿糊    時間: 2015-3-30 19:50
還可以呀
作者: hai861017    時間: 2015-4-1 13:22
樓主用的好像是DOFLY的學習板。我也有一塊一樣的。
作者: 新洛克    時間: 2015-4-5 18:15
太感動了,高手在民間。
作者: 詩人的眼YI    時間: 2015-4-8 17:25
新手表示高大上,學習下。
作者: Cynthia    時間: 2015-4-28 15:17
占兩行的大數字,用的是繪圖方式嗎?問個傻瓜的問題,繪圖和字符可以同時出現在同一屏幕上么?
作者: JY腳印    時間: 2015-5-1 15:13
觀摩!!!!!!!!
作者: 小天愛小蔥    時間: 2015-5-4 15:36
學習學習
作者: 嘉輝先生    時間: 2015-5-8 20:16
樓主能把代碼和電路圖發一下嗎,感激萬分。787327686@qq.com
作者: 文梃灃55    時間: 2015-5-8 22:54
求完整的程序和電路圖發一下吧,樓主發到18722820554@163.com謝謝




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