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

QQ登錄

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

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

單片機(jī)8位動(dòng)態(tài)數(shù)碼管的24小時(shí)制電子表仿真+程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:404480 發(fā)表于 2018-10-12 20:27 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  基于80C51單片機(jī)的電子時(shí)鐘  8位動(dòng)態(tài)數(shù)碼管顯示時(shí)分秒

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. //==================================================//
  2. //==          電子信息科學(xué)與技術(shù)(2)班           ==//
  3. //==                                              ==//
  4. //==               八位數(shù)碼管電子時(shí)鐘             ==//
  5. //==   16214088       陳朝      24小時(shí)制電子表    ==//
  6. //==                                              ==//
  7. //==================================================//
  8. #include<reg51.h>
  9. #include"delay.h"
  10. unsigned char code LED[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //定義共陰極LED7段顯示碼

  11. unsigned char dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};   //定義數(shù)碼管位碼
  12. unsigned char hour=23,min=58,sec=52;                 //定義初始時(shí)間為23時(shí)58分52秒
  13. unsigned char tcount;                           //定義50ms計(jì)數(shù)變量

  14. void display(unsigned char,unsigned char,unsigned char);

  15. void delay(unsigned int time)//定義延時(shí)函數(shù)
  16.         {
  17.                 unsigned int j = 0;
  18.                 for(;time>0;time--)
  19.                         for(j=0;j<125;j++);
  20.         }

  21. void main(void)
  22. {
  23.          TMOD=0x01;                  //定時(shí)/計(jì)數(shù)器0設(shè)為方式1
  24.          TH0=(65536-50000)/256;      //定時(shí)50ms初值的高八位送入TH0
  25.          TL0=(65536-50000)%256;      //定時(shí)50ms初值的低八位送入TL0
  26.          EA=1;                       //開(kāi)CPU中斷
  27.          ET0=1;                      //開(kāi)定時(shí)/計(jì)數(shù)器0的中斷
  28.          TR0=1;                      //啟動(dòng)定時(shí)器0
  29.         while(1)
  30.         {
  31.              display(hour,min,sec);
  32.         }
  33. }


  34. void display(unsigned char hour,unsigned char min,unsigned sec)
  35. {
  36.        
  37.         P0=LED[hour/10];            //小時(shí)的十位送數(shù)碼管1位顯示
  38.         P2=0xfe;
  39.         delay(1);
  40.         P2=0xff;
  41.        
  42.         P0=LED[hour%10];            //小時(shí)的個(gè)位送數(shù)碼管2位顯示
  43.         P2=0xfd;
  44.         delay(1);
  45.         P2=0xff;
  46.        
  47.         P0=LED[10];                 //橫杠送數(shù)碼管3位顯示
  48.         P2=0xfb;
  49.         delay(1);
  50.         P2=0xff;
  51.        
  52.         P0=LED[min/10];             //分的十位送數(shù)碼管4位顯示
  53.         P2=0xf7;
  54.         delay(1);
  55.         P2=0xff;
  56.        
  57.         P0=LED[min%10];             //分的個(gè)位送數(shù)碼管5位顯示
  58.         P2=0xef;
  59.         delay(1);
  60.         P2=0xff;
  61.        
  62.         P0=LED[10];                 //橫杠送數(shù)碼管6位顯示
  63.         P2=0xdf;
  64.         delay(1);
  65.         P2=0xff;
  66.        
  67.         P0=LED[sec/10];             //秒的十位送數(shù)碼管7位顯示
  68.         P2=0xbf;
  69.         delay(1);
  70.         P2=0xff;
  71.        
  72.         P0=LED[sec%10];             //秒的個(gè)位送數(shù)碼管8位顯示
  73.         P2=0x7f;
  74.         delay(1);
  75.         P2=0xff;
  76. }



  77. void T0_time() interrupt 3    //定時(shí)器中斷處理函數(shù)
  78. {
  79.         TH0=(65536-50000)/256;      //重新將定時(shí)50ms初值的高八位送TH0
  80.         TL0=(65536-50000)%256;      //重新將定時(shí)50ms初值的低八位送TH0
  81.         tcount++;                   //定時(shí)50ms時(shí)間到加1
  82.         if(tcount==20)              //判斷是否到1s
  83.         {
  84.         tcount=0;                   //到1s,變量清0
  85.         sec++;                      //秒計(jì)數(shù)變量加1
  86.         if(sec==60)                 //判斷秒是否到60
  87.         {
  88.         sec=0;                      //到60,秒變量清0
  89.     min++;                    //分計(jì)數(shù)變量加1
  90.         if(min==60)                 //判斷分是否到60
  91.         {
  92.         min=0;                      //到60,分變量清0
  93.         hour++;                     //小時(shí)計(jì)數(shù)變量加1
  94.         if(hour==24)                //判斷小時(shí)是否到24
  95.         hour=0;                     //到24,小時(shí)清0
  96.         }
  97. }
  98. }
  99. }
  100.                                        
復(fù)制代碼

所有資料51hei提供下載:
8位數(shù)碼管24小時(shí)制電子表.zip (94.15 KB, 下載次數(shù): 95)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:458623 發(fā)表于 2018-12-31 16:48 | 只看該作者
我愛(ài)你

51hei.png (21.64 KB, 下載次數(shù): 142)

51hei.png
回復(fù)

使用道具 舉報(bào)

板凳
ID:723510 發(fā)表于 2020-5-4 16:59 | 只看該作者
大佬  跪了跪了  牛皮
回復(fù)

使用道具 舉報(bào)

地板
ID:854794 發(fā)表于 2020-12-6 15:48 | 只看該作者
Thanks♪(・ω・)ノ

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表