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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 148920|回復: 490
打印 上一主題 下一主題
收起左側

LCD12864液晶菜單界面小系統 代碼開源+效果視頻

  [復制鏈接]
跳轉到指定樓層
樓主
效果視頻




這個是主界面

這個是主菜單界面

這個是設置時間的子界面

這個是設置日期


設置背景光

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


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

生日倒計時提醒功能。




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

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

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

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

評分

參與人數 24黑幣 +191 收起 理由
ttmax3 + 5
dww465757120 + 30 很給力!
A142989 + 30 很給力!
hym51hdz + 5 特別好的制作!謝謝朋友的分享!
HGQK + 5 共享資料的黑幣獎勵!
zkele + 5 贊一個!
gzgongying + 5
renqian4436 + 5 很給力!
Gianluca + 3
xiangbinbin + 5 絕世好帖!
feifede + 2 回帖助人的獎勵!
201511106109 + 6 很給力!
LN初學者 + 5 共享資料的黑幣獎勵!
張小帥1126 + 3 贊一個!
zhaok2013 + 5 很給力!
huang917500 + 5 很給力!
靜亦不靜 + 2 很給力!
hang007 + 1
YJGG + 10 共享資料的黑幣獎勵!
暗光 + 35 共享資料的黑幣獎勵!
王城wc + 1
JY腳印 + 10 很給力!
madell + 3 贊一個!
sfh0512 + 5 贊一個!

查看全部評分

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

使用道具 舉報

沙發
ID:52744 發表于 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. }
復制代碼

評分

參與人數 1黑幣 +5 收起 理由
Foyekoo + 5

查看全部評分

回復

使用道具 舉報

板凳
ID:52863 發表于 2013-8-13 14:36 | 只看該作者
能不能把完整的程序和電路圖發來啊?!感激不盡
回復

使用道具 舉報

地板
ID:53023 發表于 2013-8-13 22:54 | 只看該作者
haoyang de !!!!51黑有你更精彩!!
回復

使用道具 舉報

5#
ID:55815 發表于 2013-10-21 15:43 | 只看該作者
很好  學習 謝謝
回復

使用道具 舉報

6#
ID:52596 發表于 2013-10-25 09:31 | 只看該作者
這網站上下載怎么這么慢呢?
回復

使用道具 舉報

7#
ID:56369 發表于 2013-10-29 13:50 | 只看該作者
收藏了
回復

使用道具 舉報

8#
ID:56446 發表于 2013-10-30 11:03 | 只看該作者
128*64點陣,歡迎用RAIO的RA6963
回復

使用道具 舉報

9#
ID:56494 發表于 2013-10-31 21:41 | 只看該作者
完整的程序和電路圖發一下吧,樓主
回復

使用道具 舉報

10#
ID:14052 發表于 2013-11-1 10:46 | 只看該作者
頂,謝謝
回復

使用道具 舉報

11#
ID:56381 發表于 2013-11-4 00:08 | 只看該作者
受教了,學習中
回復

使用道具 舉報

12#
ID:58467 發表于 2014-1-2 15:58 | 只看該作者
完整的程序和電路圖發一下吧,樓主
回復

使用道具 舉報

13#
ID:59090 發表于 2014-2-12 14:22 | 只看該作者
我下載編譯怎么這么多的錯誤啊?
回復

使用道具 舉報

14#
ID:59084 發表于 2014-2-21 01:11 | 只看該作者
完整的程序和電路圖發一下吧,樓主 謝謝!
回復

使用道具 舉報

15#
ID:59315 發表于 2014-2-28 12:24 | 只看該作者
贊一個!!!
回復

使用道具 舉報

16#
ID:59377 發表于 2014-3-8 08:35 | 只看該作者
看著很吊的樣子
回復

使用道具 舉報

17#
ID:60237 發表于 2014-4-4 14:02 | 只看該作者
樓主厲害啊,感謝分享
回復

使用道具 舉報

18#
ID:46750 發表于 2014-4-6 14:06 | 只看該作者
樓主真強呀!
回復

使用道具 舉報

19#
ID:52249 發表于 2014-4-14 17:34 | 只看該作者
支持樓主~~
回復

使用道具 舉報

20#
ID:60687 發表于 2014-4-14 20:07 | 只看該作者
好東西,收藏學習
回復

使用道具 舉報

21#
ID:61227 發表于 2014-4-28 22:03 | 只看該作者
謝謝樓主慷慨,謝謝了
回復

使用道具 舉報

22#
ID:61200 發表于 2014-4-28 22:25 | 只看該作者
樓主厲害啊。功能完善的萬年歷了。感謝分享
回復

使用道具 舉報

23#
ID:61339 發表于 2014-5-2 02:30 | 只看該作者
謝謝樓主分享
回復

使用道具 舉報

24#
ID:58110 發表于 2014-5-2 07:30 | 只看該作者
倒計時功能不錯,學習學習。
回復

使用道具 舉報

25#
ID:61904 發表于 2014-5-16 09:33 | 只看該作者
xie謝分享,學習一下
回復

使用道具 舉報

26#
ID:61311 發表于 2014-5-26 21:13 | 只看該作者
樓主在嗎,怎么我的有錯誤?請教

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

使用道具 舉報

27#
ID:47760 發表于 2014-6-1 23:57 | 只看該作者
不錯的東西
回復

使用道具 舉報

28#
ID:59850 發表于 2014-6-3 10:29 | 只看該作者
能發下原理圖嗎
回復

使用道具 舉報

29#
ID:63365 發表于 2014-7-7 21:19 | 只看該作者
漂亮    這就是我想要的
回復

使用道具 舉報

30#
ID:63977 發表于 2014-7-14 17:52 | 只看該作者
先看看了。
回復

使用道具 舉報

31#
ID:64095 發表于 2014-7-17 21:32 | 只看該作者
可不可以把完整的程序發給我
回復

使用道具 舉報

32#
ID:62989 發表于 2014-7-18 17:37 | 只看該作者
正在學習菜單,感覺挺麻煩的
回復

使用道具 舉報

33#
ID:63888 發表于 2014-7-19 23:20 | 只看該作者
支持支持
回復

使用道具 舉報

34#
ID:59084 發表于 2014-8-16 22:41 | 只看該作者
可不可以把完整的程序和原理圖發給我,樓主  
回復

使用道具 舉報

35#
ID:65740 發表于 2014-9-3 09:51 | 只看該作者
你好,我看了你的圖片了,第一次做的挺好的,就你說的,我也是想一直找個志同道合的朋友經常一起交流交流,有時間方便聊一聊!
回復

使用道具 舉報

36#
ID:65585 發表于 2014-9-5 15:37 | 只看該作者
好東西啊,謝謝樓主分享!
回復

使用道具 舉報

37#
ID:66181 發表于 2014-9-15 12:25 | 只看該作者
謝謝分享
回復

使用道具 舉報

38#
ID:66142 發表于 2014-9-15 23:14 | 只看該作者
郁悶.我的12864不顯示了.可能屏壞了.那天在找一塊試試
回復

使用道具 舉報

39#
ID:64825 發表于 2014-9-30 10:03 | 只看該作者
不錯。。。。
回復

使用道具 舉報

40#
ID:66929 發表于 2014-10-3 19:55 | 只看該作者
很不錯
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表