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

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

QQ登錄

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

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

有鬧鐘功能的單片機(jī)數(shù)字鐘制作 帶原理圖,PCB工程,代碼

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
自己做的第一個(gè)數(shù)字鐘,有鬧鐘功能。新手五分,求大神指導(dǎo)

Altium Designer畫(huà)的原理圖和PCB圖如下:(51hei附件中可下載工程文件)


板子不超過(guò)10*8cm
不能用芯片,用三極管控制數(shù)碼管
有鬧鐘功能
顯示時(shí)分秒
有蜂鳴器
按鍵不超過(guò)六個(gè)(除復(fù)位外)
進(jìn)入設(shè)置時(shí)時(shí)鐘停止
使用12分頻

單片機(jī)源代碼如下:
  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;    //時(shí),分,秒
  7. uint hour1=0,minut1=0;     //鬧鐘
  8. uint tc0time;          //定時(shí)計(jì)數(shù)器0溢出次數(shù)
  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};     //數(shù)碼管數(shù)字從右到左第一至四位
  11. uint keyt;
  12. uchar pattern=0;  //0:時(shí)鐘模式 ,1:設(shè)置時(shí),2設(shè)置分
  13. uchar npattern=0;  //0正常1鬧鐘時(shí)2鬧鐘分
  14. uchar alt=0,altt=0;

  15. sbit buzzer=P1^0;
  16. sbit key1=P1^4;  //時(shí)鐘
  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延時(shí)
  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;                                                                    //中斷開(kāi)關(guān)設(shè)定:打開(kāi)總中斷開(kāi)關(guān),允許定時(shí)計(jì)數(shù)器中斷0工作
  150.     TCON=0x10;                                                                  //中斷控制寄存器設(shè)定:允許T/C0產(chǎn)生中斷,關(guān)閉其他中斷
  151.         TMOD=0x01;                                                                  //設(shè)置T/C0的工作方式為16位計(jì)數(shù)器
  152.         TL0 = 0x18;                                                                             //設(shè)置定時(shí)初值
  153.         TH0 = 0xfc;                                                                               //設(shè)置定時(shí)初值
  154. }      

  155. void numprintf(uchar a,uchar b,uchar c)                                                 //數(shù)碼管輸出函數(shù)
  156. {
  157.         uint i=0;
  158.         uint f[8];
  159.         f[2]=10;
  160.         f[5]=10;                                                                  //一到四位數(shù)字
  161.         f[0]=a/10;f[1]=a%10;                                                        //時(shí)位的數(shù)字
  162.         f[3]=b/10;f[4]=b%10;                                                        //分位的數(shù)字
  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)                                                                 //時(shí)間計(jì)算函數(shù)
  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級(jí)別定時(shí),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. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

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


評(píng)分

參與人數(shù) 2黑幣 +55 收起 理由
d026530 + 5 贊一個(gè)!
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:207187 發(fā)表于 2017-6-2 19:49 | 只看該作者
新人能審核過(guò)去嗎?
回復(fù)

使用道具 舉報(bào)

板凳
ID:1 發(fā)表于 2017-6-2 20:31 | 只看該作者
Anyaes 發(fā)表于 2017-6-2 19:49
新人能審核過(guò)去嗎?

這么好的作品 當(dāng)然能,黑幣已經(jīng)發(fā)放了
回復(fù)

使用道具 舉報(bào)

地板
ID:250369 發(fā)表于 2017-11-17 14:03 | 只看該作者
3、        動(dòng)態(tài)顯示數(shù)字鐘(2隊(duì)、每隊(duì)1人)★ (1)        使用2個(gè)四位共陰數(shù)碼管做顯示部分。- (2)        上電的時(shí)候,L1發(fā)光二極管以1S閃爍。 (3)        可調(diào)時(shí)功能,有到點(diǎn)報(bào)時(shí)、鬧鈴功能。 最小系統(tǒng):stc89c52rc,12M晶振,2*30P電容,10K電阻,10U電容; 外圍芯片:輕觸按鍵*5,4位共陰數(shù)碼管*2,三極管8550*1,蜂鳴器*1,排阻4K7*3,插針接口若干,LED*1,74HC573*1。  大哥幫幫忙
回復(fù)

使用道具 舉報(bào)

5#
ID:323167 發(fā)表于 2018-12-12 14:07 | 只看該作者
贊一個(gè)!加油
回復(fù)

使用道具 舉報(bào)

6#
ID:497185 發(fā)表于 2019-3-24 12:16 | 只看該作者
我要學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

7#
ID:505337 發(fā)表于 2019-4-22 13:11 來(lái)自手機(jī) | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

8#
ID:518399 發(fā)表于 2019-5-16 09:44 | 只看該作者
老哥, 想學(xué)習(xí)一下,我是新人,能不能 1457761062@qq.com  發(fā)一下!  很是感謝!
回復(fù)

使用道具 舉報(bào)

9#
ID:537878 發(fā)表于 2019-5-16 20:32 | 只看該作者

謝謝分享
回復(fù)

使用道具 舉報(bào)

10#
ID:552355 發(fā)表于 2019-6-1 11:47 | 只看該作者
謝謝樓主
回復(fù)

使用道具 舉報(bào)

11#
ID:669377 發(fā)表于 2019-12-20 18:44 | 只看該作者
給大佬點(diǎn)贊
回復(fù)

使用道具 舉報(bào)

12#
ID:568502 發(fā)表于 2020-1-8 14:18 來(lái)自手機(jī) | 只看該作者
想學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩视频一区二区 | 一区在线视频 | 欧美极品一区二区 | 亚洲精品乱码久久久久久按摩观 | 日韩欧美1区2区 | 久久机热| a级片播放 | www.日本在线播放 | 日韩在线小视频 | 日韩在线精品视频 | 亚洲 精品 综合 精品 自拍 | 日日摸夜夜爽人人添av | 国产va| 国产999精品久久久 精品三级在线观看 | 99热在这里只有精品 | 午夜成人在线视频 | 99re视频在线观看 | 欧美老少妇一级特黄一片 | 国产午夜视频 | 东方伊人免费在线观看 | 欧美精品1区2区3区 免费黄篇 | 国产精品国产a级 | 国产精品欧美一区二区三区不卡 | 中文字幕免费 | 日韩一区二区三区在线 | 成人网在线观看 | 国产精品视屏 | 日韩av在线一区 | 国产h视频 | 成人在线不卡 | 日韩综合网 | 国产伦精品一区二区三区高清 | 91视频进入| 亚洲一区二区三区四区五区午夜 | 日韩精品视频在线播放 | 成人国产在线视频 | 日韩精品一区二区三区中文在线 | 日韩欧美在线一区 | 欧美成年黄网站色视频 | 久久久久久国产精品免费免费狐狸 | 精品视频一区二区三区在线观看 |