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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機+LCD12864指針數字切換萬年歷程序

  [復制鏈接]
跳轉到指定樓層
樓主
電路圖在附件

制作出來的實物圖如下:


單片機源程序如下:
  1. /*
  2. *******************************************************************************
  3. *                     “冬松電子工作室”        傾情奉獻
  4. *
  5. *                  配套 LCD12864電子萬年歷時鐘電路板
  6. *
  7. * 文 件 名:calendarMain.c
  8. * 描    述: LCD12864電子萬年歷時鐘工程主文件
  9. * 功    能:初始化定時器0,及中斷服務程序(用于鬧鐘),主函數調用
  10. * 咨詢電話:135-91697612
  11. *******************************************************************************
  12. */
  13. #include "clock.h"
  14. #include "calendar.h"
  15. #include "key.h"
  16. #include "lcd.h"
  17. #include "zhen.h"
  18. #include "sensor.h"
  19. uchar alarmStyle;   //定義蜂鳴器報警方式
  20. /****************************************************************************/
  21. sbit bell=P1^0;  //定義蜂鳴器端口
  22. /****************************************************************************
  23. * 名稱:void Timer0_Initial(void)
  24. * 功能:初始化timer0
  25. * 入口函數:無
  26. * 出口函數:無
  27. ****************************************************************************/
  28. void Timer0_Initial(void)
  29. {
  30.         TMOD=0x01;  //Timer0工作方式1定時
  31.         TH0 =0x4c;
  32.         TL0 =0x00;  //定時50 ms
  33.         ET0 =1;     //Timer0開中斷
  34.         TR0 =1;     //timer0啟動
  35. }
  36. /*****************************************************************************
  37. * 名稱: Timer0_Overflow() inturrupt 1
  38. * 功能: 中斷服務程序 1.整點報時 三聲嘟嘟的聲音  2.鬧鐘報時,持續一分鐘
  39. * 入口參數:無
  40. * 出口參數:無
  41. *****************************************************************************/
  42. void Timer0_Overflow() interrupt 1
  43. {
  44.         TH0 = 0x4c;
  45.         TL0 = 0x00; //延時 50 ms
  46.         bell=~bell;        //進入中斷,蜂鳴器取反,達到蜂鳴器間歇工作目的
  47.         
  48. }
  49. /******************************************************************************
  50. * 函數名稱: main()
  51. * 功    能: 主函數
  52. * 入口參數: 無
  53. * 出口參數: 無
  54. ********************************************************************************/
  55. void main()
  56. {        
  57.     uchar clock_time[7] = {0x00,0x11,0x20,0x01,0x02,0x01,0x16};  //定義時間變量 秒 分 時 日 月 周 年
  58.     uchar alarm_time[3]; //鬧鐘設置 alarm_time[0]:分鐘  alarm_time[1]:小時
  59.         uchar temperature[2];//定義溫度變量temperature[0]為低8位,temperature[1]為高8位
  60.         uchar i, j;
  61.         uchar CALL[3]; //存儲三畫面狀態(開和閉)數組
  62. //        bell = 1;
  63. //        lcd = 1;
  64. //        psb = 1; //12864采用并口輸出方式
  65. //  cs2 = 0;
  66.         Timer0_Initial();        //初始化定時器0
  67.         v_Lcd12864Init_f(); //12864初始化
  68.         port = 0xFF;        //釋放P0端口
  69.         Lcd_Write_Command(0x36); //采用擴充指令集,繪圖開,清除模擬指針畫面字符
  70.         delay_1ms(2);            //延時2ms
  71.         Lcd_Write_Command(0x36); //采用擴充指令集,繪圖開,需設定兩次,先改DL,再改RE
  72.         delay_1ms(2);                          //延時2ms
  73.         cls();                   //清屏,為顯示做準備
  74.         key_init();                             //初始化鍵盤掃描程序變量
  75. //  Set1302(clock_time);     //時鐘初試化
  76.         CALL1[0] = R1302(0xc7);        //讀取DS1302的RAM中 畫面一 狀態值
  77.         CALL1[1] = R1302(0xc9);        //讀取DS1302的RAM中 畫面二 狀態值
  78.         CALL1[2] = R1302(0xcb);        //讀取DS1302的RAM中 畫面三 狀態值
  79.         if(((CALL1[0]==1)||(CALL1[1]==1))&&(CALL1[2]==0)) //第一、二個畫面
  80.         {
  81.             frame_and_scale_f(); //繪制出邊框,和刻度
  82.         }                    
  83.         alarmStyle=0x00; //初始化報警方式,此時不報警
  84.         EA = 0;                         //關閉總中斷
  85.     while( 1 )
  86.         {                  
  87.                 CALL[0] = R1302(0xc1);        //讀取DS1302的RAM中 分 鬧鐘值
  88.                 CALL[1] = R1302(0xc3);        //讀取DS1302的RAM中 時 鬧鐘值
  89.                 CALL[2] = R1302(0xc5);        //讀取DS1302的RAM中 開和閉 狀態值
  90.                 CALL1[0] = R1302(0xc7);        //重新讀取DS1302的RAM中 畫面一 狀態值
  91.                 CALL1[1] = R1302(0xc9);        //重新讀取DS1302的RAM中 畫面二 狀態值
  92.                 CALL1[2] = R1302(0xcb);        //重新讀取DS1302的RAM中 畫面三 狀態值
  93.                 Get1302(clock_time);    //獲取 秒 分 時 日 月 周 年 的時鐘數據
  94.                 Lcd_Clock(clock_time);        //時鐘顯示
  95.                 Sensor_Fresh(temperature);    //溫度更新,讀取溫度
  96.                 Lcd_Temperature(temperature); //顯示溫度
  97.                 Conversion(0,clock_time[6],clock_time[4],clock_time[3]); //輸入BCD陽歷數據,輸出BCD陰歷數據
  98.                 Conver_week(0,clock_time[6],clock_time[4],clock_time[3]);//輸入BCD陽歷數據,輸出BCD星期數據
  99.                    if(KEY_FUNC==Key_Scan()) //如果按鍵作值KEY_FUNC(0x08)與按鍵掃描Key_Scan()數對比相等(也是0x08),
  100.                 {
  101.                         while(KEY_FUNC==Key_Scan()); //KEY_FUNC和Key_Scan()的值相等,就在這里等待,按鍵抬起就執行下面語句,
  102.                         Key_Function(clock_time, alarm_time); //則進入功能選擇菜單
  103.                 }
  104.                 if(KEY_UP == Key_Scan()) //如果按鍵作值KEY_UP(0x01)與按鍵掃描Key_Scan()數對比相等(也是0x01),
  105.                 {   
  106.                         lcd = 1; //打開液晶背光燈        
  107.                 }
  108.                 if(KEY_DOWN == Key_Scan()) //如果按鍵作值KEY_DOWN(0x02)與按鍵掃描Key_Scan()數對比相等(也是0x02),
  109.                 {
  110.                         lcd = 0; //關閉液晶背光燈        
  111.                 }
  112.                 if(((CALL1[0]==1)||(CALL1[1]==1))&&(CALL1[2]==0)) //第一、二個畫面
  113.                 {
  114.                     frame_and_scale_f(); //繪制出邊框,和刻度
  115.                         zhizhen();
  116.                 }                        
  117.                 if(((CALL1[0]==0)||(CALL1[1]==0))&&(CALL1[2]==1)) //第三個畫面
  118.                 {        
  119.                         Lcd_Write_Command(0x34); //采用擴充指令集,繪圖關
  120.                         Lcd_Write_Command(0x30); //基本指令集                                
  121.                 }                 
  122.                 if((*clock_time==0x59)&&(*(clock_time+1)==0x59)) //比較秒和分數據到59,整點報時
  123.                 {
  124.                         EA = 1;                //打開總中斷
  125.                         bell = 0;        //打開蜂鳴器
  126.                 }
  127.                 else
  128.                 {
  129.                         EA = 0;                //關閉總中斷
  130.                         bell = 1;        //關閉蜂鳴器
  131.                 }  
  132.                 //鬧鐘報警
  133.                 i = clock_time[1]; //分鐘數據傳遞給變量 i
  134.                 j = clock_time[2]; //小時數據傳遞給變量 j
  135.                 i = bcd_hex(i);    //分鐘數據轉換成十進制數
  136.                 j =bcd_hex(j);     //小時數據轉換成十進制數
  137.                 //不轉換鬧鐘調整數據和DS1302鬧鈴存儲的鬧鐘數據不同,鬧鐘不響
  138.                 if(CALL[2] == 0) //如果鬧鐘狀態是 “開”
  139.                 {                                                                                   
  140.                         if(( CALL[0] ==  i)&&( CALL[1]  == j)) //時鐘分鐘和小時與DS13202存儲的鬧鐘值相吻合,
  141.                         {         
  142.                                 EA = 1;                //打開總中斷
  143.                                 bell = 0;        //打開蜂鳴器
  144.                         }                    
  145.                 }
  146.                 else   //否則鬧鐘狀態是 “關”
  147.                 {
  148.                         EA = 0;                //關閉總中斷
  149.                         bell = 1;        //關閉蜂鳴器
  150.                 }                  
  151.         }        
  152. }
復制代碼

所有資料51hei提供下載:
指針數字切換萬年歷.rar (114.42 KB, 下載次數: 216)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:688460 發表于 2020-5-2 11:07 | 只看該作者
感謝分享!最近正想學習一下LC方面的知識。謝謝了!
回復

使用道具 舉報

板凳
ID:722330 發表于 2020-10-26 21:37 | 只看該作者
感謝分享!最近正想學習一下LC方面的知識。謝謝了!
回復

使用道具 舉報

地板
ID:230742 發表于 2021-3-7 15:49 | 只看該作者
收藏一下。有空也學習學習指針鐘。
回復

使用道具 舉報

5#
ID:28992 發表于 2021-3-8 00:07 | 只看該作者
download for study, thank you so much.
回復

使用道具 舉報

6#
ID:938030 發表于 2021-6-15 16:29 | 只看該作者
附件里是只有電路圖嗎
回復

使用道具 舉報

7#
ID:230742 發表于 2021-6-18 00:53 | 只看該作者
1302的電源有一個穩壓二極管是什么作用?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品国产一区二区在线 | 日韩高清一区二区 | 欧美日韩中 | 国产日产精品一区二区三区四区 | 日韩精品在线视频免费观看 | 亚洲欧美日韩电影 | 久久久高清 | 99视频在线播放 | 欧美 日韩精品 | 81精品国产乱码久久久久久 | 日韩一区二区在线视频 | 国产精品不卡 | 一级黄色夫妻生活 | 啪视频在线 | 免费观看黄网站 | 婷婷久久综合 | 天堂资源视频 | h视频在线免费观看 | 欧美激情国产日韩精品一区18 | 久久久久久亚洲国产精品 | 在线国产欧美 | 久久久精品一区 | 久久在线精品 | 国产一区2区 | 国产91在线 | 中日 | 黄色一级免费看 | 国产一级片在线观看视频 | 久久久久久美女 | 日韩一二区 | 天天天天操 | 小h片免费观看久久久久 | 亚洲精品电影在线 | 欧美一级视频免费看 | 欧美一区二区在线看 | 特级a欧美做爰片毛片 | 亚洲视频中文字幕 | 欧美一级一区 | 国产精品视频网 | 麻豆一区一区三区四区 | 天天看天天操 | 91短视频网址 |