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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12494|回復: 11
收起左側

有鬧鐘功能的單片機數字鐘制作 帶原理圖,PCB工程,代碼

  [復制鏈接]
ID:207187 發表于 2017-6-2 19:48 | 顯示全部樓層 |閱讀模式
自己做的第一個數字鐘,有鬧鐘功能。新手五分,求大神指導

Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
0.png
0.png 0.png
板子不超過10*8cm
不能用芯片,用三極管控制數碼管
有鬧鐘功能
顯示時分秒
有蜂鳴器
按鍵不超過六個(除復位外)
進入設置時時鐘停止
使用12分頻

單片機源代碼如下:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define numport P0              //段選
  5. #define placeport P2                         //位選                  
  6. uint hour=23,minut=59,second=59;    //時,分,秒
  7. uint hour1=0,minut1=0;     //鬧鐘
  8. uint tc0time;          //定時計數器0溢出次數
  9. uint numcode[]={0xC0,0xF9,0xA4, 0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xbf};           //零到九               
  10. uint numplace[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};     //數碼管數字從右到左第一至四位
  11. uint keyt;
  12. uchar pattern=0;  //0:時鐘模式 ,1:設置時,2設置分
  13. uchar npattern=0;  //0正常1鬧鐘時2鬧鐘分
  14. uchar alt=0,altt=0;

  15. sbit buzzer=P1^0;
  16. sbit key1=P1^4;  //時鐘
  17. sbit key2=P1^5;  //減一
  18. sbit key3=P1^6;  //加一
  19. sbit key4=P1^7;  //鬧鐘
  20. sbit led1=P1^1;
  21. sbit led2=P1^2;
  22. sbit led3=P1^3;
  23. bit al=0;
  24. bit alttt;



  25. void key(void)    //按鍵判斷
  26. {
  27.         if(key1==0)
  28.         {
  29.                 keyt++;
  30.                 if(keyt==5)
  31.                 {
  32.                         keyt=0;
  33.                         if(buzzer==1&&al==1){buzzer=0;al=0;led1=1;led2=1;led3=1;}else{
  34.                         if(npattern==0)
  35.                         {
  36.                                 pattern++;
  37.                                 if(pattern!=0){led1=0;};
  38.                                 if(pattern==3){pattern=0;led1=1;led2=1;led3=1;second=0;};
  39.                                 if(pattern==1){led2=0;led3=1;}
  40.                                 if(pattern==2){led3=0;led2=1;}
  41.                         }else{al=0;npattern=0;led2=1;led3=1;}
  42.                         }
  43.                 }
  44.         }
  45.         if(key2==0)
  46.         {
  47.                 keyt++;
  48.                 if(keyt==5)
  49.                 {
  50.                         keyt=0;
  51.                         if(buzzer==1&&al==1){buzzer=0;al=0;led1=1;led2=1;led3=1;}else{
  52.                         if(pattern==1){hour++;};
  53.                     if(pattern==2){minut++;};
  54.                     if(npattern==1){hour1++;if(hour1==24){hour1=0;};};
  55.                     if(npattern==2){minut1++;if(minut1==60){minut1=0;};};        
  56.                         }
  57.                 }
  58.         }
  59.         if(key3==0)
  60.         {
  61.                 keyt++;
  62.                 if(keyt==5)
  63.                 {
  64.                         keyt=0;
  65.                         if(buzzer==1&&al==1){buzzer=0;al=0;led1=1;led2=1;led3=1;}else{
  66.                         if(pattern==1)
  67.                         {
  68.                                 if(hour==0)
  69.                                 {
  70.                                         hour=23;
  71.                                 }else{hour--;}
  72.                         }
  73.                     if(pattern==2)
  74.                         {
  75.                                 if(minut==0)
  76.                                 {
  77.                                         minut=59;
  78.                                 }else{minut--;}
  79.                         }
  80.                         if(npattern==1)
  81.                         {
  82.                                 if(hour1==0)
  83.                                 {
  84.                                         hour1=23;
  85.                                 }else{hour1--;}
  86.                         }
  87.                     if(npattern==2)
  88.                         {
  89.                                 if(minut1==0)
  90.                                 {
  91.                                         minut1=59;
  92.                                 }else{minut1--;}
  93.                         }
  94.                   }
  95.                 }
  96.         }
  97.         if(key4==0)
  98.         {
  99.                 keyt++;
  100.                 if(keyt==5)
  101.                 {
  102.                         keyt=0;
  103.                         if(buzzer==1&&al==1){buzzer=0;al=0;led1=1;led2=1;led3=1;}else{
  104.                         if(pattern==0)
  105.                         {
  106.                                 npattern++;
  107.                                 if(npattern==3)
  108.                                 {
  109.                                         npattern=0;
  110.                                         led2=1;led3=1;
  111.                                         al=1;
  112.                                 }
  113.                                 if(npattern==1){led2=0;led3=1;}
  114.                                 if(npattern==2){led3=0;led2=1;}
  115.                         }
  116.                   }
  117.                 }
  118.         }
  119. }

  120. void delay (unsigned int a)                                                    //1ms延時
  121. {
  122.    while(a--)
  123.    {  
  124.       unsigned char i, j;
  125.           i = 12;
  126.           j = 169;
  127.           do
  128.           {
  129.                  while (--j);
  130.           }while (--i);
  131.    };
  132. }
  133. void delayu (unsigned int a)                //@12.000MHz
  134. {
  135.     while(a--)
  136.      {
  137.               unsigned char i, j;
  138.         i = 2;
  139.         j = 39;
  140.         do
  141.            {
  142.                 while (--j);
  143.             } while (--i);
  144.       };
  145. }
  146.       
  147. void Timer0Init(void)                                                                    //1毫秒@12.000MHz
  148. {
  149.     IE=0x83;                                                                    //中斷開關設定:打開總中斷開關,允許定時計數器中斷0工作
  150.     TCON=0x10;                                                                  //中斷控制寄存器設定:允許T/C0產生中斷,關閉其他中斷
  151.         TMOD=0x01;                                                                  //設置T/C0的工作方式為16位計數器
  152.         TL0 = 0x18;                                                                             //設置定時初值
  153.         TH0 = 0xfc;                                                                               //設置定時初值
  154. }      

  155. void numprintf(uchar a,uchar b,uchar c)                                                 //數碼管輸出函數
  156. {
  157.         uint i=0;
  158.         uint f[8];
  159.         f[2]=10;
  160.         f[5]=10;                                                                  //一到四位數字
  161.         f[0]=a/10;f[1]=a%10;                                                        //時位的數字
  162.         f[3]=b/10;f[4]=b%10;                                                        //分位的數字
  163.         f[6]=c/10;f[7]=c%10;
  164.         while(i<=7)
  165.         {
  166.                 placeport=numplace[i];
  167.                 numport=numcode[f[i]];
  168.                 delayu(1);
  169.                 numport=0xff;
  170.                 i++;
  171.         }        
  172. }

  173. void time(void)                                                                 //時間計算函數
  174. {
  175.         if(second>=60){second=0;minut++;};
  176.         if(minut>=60){minut=0;hour++;};
  177.         if(hour>=24){hour=0;};
  178.         if(tc0time==200){second++;tc0time=0;}
  179.         tc0time++;
  180. }

  181. void alarm(void)
  182. {
  183.         if(al==1)
  184.         {
  185.                 if(hour==hour1&&minut==minut1){buzzer=1;}
  186.                 else{buzzer=0;}
  187.         }
  188. }

  189. void tc0(void) interrupt 1 using 1                                              //1ms級別定時,1t模式
  190. {
  191.         TL0 = 0xb0;                                                                            //重新裝初始值
  192.         TH0 = 0x3c;                                                                            //重新裝初始值
  193.         time();
  194.         if(pattern==1||pattern==2){tc0time=0;};
  195.         alarm();
  196.         key();
  197.         if(buzzer==1&&al==1)
  198.         {
  199.                 alt++;
  200.                 altt=alt/5;
  201.                 if(altt/2==0){alttt=0;}else{alttt=1;};
  202.                 if(alttt==0)
  203.                 {
  204.                         led1=0;
  205.                         led2=0;
  206.                         led3=0;
  207.                 }
  208. ……………………

  209. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
鬧鐘.zip (10.74 MB, 下載次數: 167)


評分

參與人數 2黑幣 +55 收起 理由
d026530 + 5 贊一個!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:207187 發表于 2017-6-2 19:49 | 顯示全部樓層
新人能審核過去嗎?
回復

使用道具 舉報

ID:1 發表于 2017-6-2 20:31 | 顯示全部樓層
Anyaes 發表于 2017-6-2 19:49
新人能審核過去嗎?

這么好的作品 當然能,黑幣已經發放了
回復

使用道具 舉報

ID:250369 發表于 2017-11-17 14:03 | 顯示全部樓層
3、        動態顯示數字鐘(2隊、每隊1人)★ (1)        使用2個四位共陰數碼管做顯示部分。- (2)        上電的時候,L1發光二極管以1S閃爍。 (3)        可調時功能,有到點報時、鬧鈴功能。 最小系統:stc89c52rc,12M晶振,2*30P電容,10K電阻,10U電容; 外圍芯片:輕觸按鍵*5,4位共陰數碼管*2,三極管8550*1,蜂鳴器*1,排阻4K7*3,插針接口若干,LED*1,74HC573*1。  大哥幫幫忙
回復

使用道具 舉報

ID:323167 發表于 2018-12-12 14:07 | 顯示全部樓層
贊一個!加油
回復

使用道具 舉報

ID:497185 發表于 2019-3-24 12:16 | 顯示全部樓層
我要學習
回復

使用道具 舉報

ID:505337 發表于 2019-4-22 13:11 來自手機 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:518399 發表于 2019-5-16 09:44 | 顯示全部樓層
老哥, 想學習一下,我是新人,能不能 1457761062@qq.com  發一下!  很是感謝!
回復

使用道具 舉報

ID:537878 發表于 2019-5-16 20:32 | 顯示全部樓層

謝謝分享
回復

使用道具 舉報

ID:552355 發表于 2019-6-1 11:47 | 顯示全部樓層
謝謝樓主
回復

使用道具 舉報

ID:669377 發表于 2019-12-20 18:44 | 顯示全部樓層
給大佬點贊
回復

使用道具 舉報

ID:568502 發表于 2020-1-8 14:18 來自手機 | 顯示全部樓層
想學習一下
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产欧美日韩在线 | 看av片网站 | 久久免费视频在线 | 亚洲精品在线看 | 欧美v片 | 黄色三级免费网站 | 一级毛片免费视频观看 | 草草影院ccyy| 日韩福利视频 | 国产欧美日韩综合精品一区二区 | 精品久久久久久久 | av毛片 | 欧美一区二区久久 | 精品欧美一区二区在线观看视频 | 五月婷婷在线播放 | www.久久久久久久久久久 | 亚洲激精日韩激精欧美精品 | 337p日本欧洲亚洲大胆精蜜臀 | 久久精品免费看 | 五月天综合网 | 国产精品久久久久久久免费大片 | 久久亚洲国产精品日日av夜夜 | 国产精品美女一区二区三区 | 久久综合狠狠综合久久 | 精品国产高清一区二区三区 | 一级黄色播放 | 人人艹人人 | 日韩av一区二区在线观看 | 99re在线视频| 亚洲香蕉在线视频 | 国产精品美女久久久久久免费 | 亚洲精品久久久久久首妖 | 一级片在线免费看 | 亚洲免费在线观看视频 | 欧美成人aaa级毛片在线视频 | 欧美日产国产成人免费图片 | 欧产日产国产精品v | 成人免费黄色 | 在线婷婷| 老司机成人在线 | 国产乱人伦 |