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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 5484|回復: 3
打印 上一主題 下一主題
收起左側

單片機流水燈中斷計數程序(帶Proteus仿真)

[復制鏈接]
跳轉到指定樓層
樓主
這是我做的流水燈+中斷計數,流水燈每亮一下,數碼管自動加1,有仿真圖

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


單片機源程序如下:
  1. #include <reg51.h>
  2. #define DATAPORT P2                //數碼管數據口
  3. sbit COM1 = P3^0;                //數碼管位1驅動口
  4. sbit COM2 = P3^1;                //數碼管位2驅動口
  5. sbit COM3=P3^7;//第三個數碼管
  6. sbit key1=P3^5;//清零按鍵
  7. sbit led=P1^0;//20分鐘那個小燈
  8. unsigned char miao,fen;//計時變量
  9. code unsigned char  cc_table[] = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //數碼管段碼
  10. unsigned int num;//計數變量
  11. void delay(unsigned char t)//延時函數
  12. {
  13.         unsigned char x,y;
  14.         for(x=t;x>0;x--)
  15.                 for(y=110;y>0;y--);
  16. }
  17. void display(void)
  18. {
  19.         COM1 = 1; //打開第一個數碼管,讓他亮
  20.         DATAPORT = cc_table[num/100];        //顯示百位段碼
  21.         delay(5);//延時5ms
  22.         COM1 = 0;//關閉第一個數碼管,滅,消影

  23.         COM2 = 1;//打開第二個數碼管                                                        
  24.         DATAPORT = cc_table[num%100/10];//顯輸十位段碼
  25.         delay(5);
  26.         COM2 = 0;//關閉
  27.         
  28.         COM3 = 1;        //打開第三個數碼管                                       
  29.         DATAPORT = cc_table[num%10];//顯輸個位段碼
  30.         delay(5);
  31.         COM3 = 0;//關閉三個數碼管,滅,消影
  32. }
  33. void main(void)
  34. {        
  35.         TMOD = 0X01;                                         //初始化定時器
  36.         TH0 =(65536-46078)/256;//定時器初始化
  37.         TL0 =(65536-46078)%256;//定時器初始化
  38.         EA = 1;                //開總中斷
  39.         ET0 = 1;        //開T0中斷
  40.         TR0=1;     //啟動定時器0
  41.         TH1 =(65536-46078)/256;//定時器初始化
  42.         TL1 =(65536-46078)%256;//定時器初始化
  43.         
  44.         ET1 = 1;        //開T1中斷
  45.         TR1=1;//啟動定時器1
  46.     IT0=1;   //下降沿觸發
  47.     EX0=1;//打開外部0中斷
  48.     P0=0x01;//P1第一燈亮
  49.         led=1;//20分鐘小燈亮
  50.          while(1)
  51.         {
  52.            
  53.                 display();                                                //顯示脈沖數
  54.                
  55.         if(key1==0)//清零按鍵按下
  56.            {
  57.                   delay(2);//延時消去按鍵抖動
  58.                   if(key1==0)//按鍵按下
  59.                   {
  60.                         while(!key1);//按鍵可釋放
  61.                         num=0;//清零
  62.           }
  63.            }        
  64.                
  65.                      


  66.         }
  67. }
  68. /********************************************************
  69. * INT0中斷函數                                          *
  70. ********************************************************/
  71. void  counter0(void) interrupt 0  using 1
  72. {
  73.   
  74.    EX0=0;  //關中斷
  75.    num++;//計數值加1
  76.    EX0=1;//開中斷
  77. }
  78. void T0_ISR(void) interrupt 1
  79. {
  80.         static unsigned char count,temp=0x02;
  81.         TH0 =(65536-46078)/256;//定時器初始化
  82.         TL0 =(65536-46078)%256;//定時器初始化
  83.         count++;//累計20次為1秒
  84.         
  85.         if(count==20)//1秒到
  86.         {
  87.                 P0=0x00;//不亮
  88.         }
  89.         if((count>=60)&&(count>20))//2秒
  90.         {
  91.                 count=0;//計數值清零
  92.                 P0=temp;
  93.                 temp=temp<<1;//左移動
  94.                 if(temp==0x40)//   0X40是循環6位,0X00是循環8位
  95.                         temp=0x01; //                 循環結束,由第一個燈開始
  96.         }

  97.         
  98. }
  99. void T1_ISR(void) interrupt 3
  100. {
  101.         static unsigned int count1;
  102.         TH1 =(65536-46078)/256;//定時器初始化
  103.         TL1 =(65536-46078)%256;//定時器初始化
  104.         count1++;
  105.         if(count1==20)//計數1秒
  106.         {
  107.                 count1=0;
  108.                 miao++;
  109.                 if(miao==60)//計時60秒到
  110.                 {
  111.                 miao=0;
  112.                 fen++;

  113.                 if(fen>=150)//計時20分鐘
  114.                 {
  115.                
  116.                 led=0;
  117.                 TR1=0;
  118.                 }
  119.                 }

  120.         }

  121. }

復制代碼


全部資料51hei下載地址:
流水燈中斷計數(帶仿真).rar (46.1 KB, 下載次數: 70)

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:508105 發表于 2019-11-19 23:58 | 只看該作者
樓主可以的
回復

使用道具 舉報

板凳
ID:649140 發表于 2019-11-26 13:16 | 只看該作者
可以的,做的很好!
回復

使用道具 舉報

地板
ID:837693 發表于 2020-11-2 14:45 | 只看該作者
為什么流水燈亮了數碼管沒有自動加一啊
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线免费看a| 伊人国产精品 | 国产一区二区中文字幕 | 午夜视频在线免费观看 | 青青草免费观看 | 亚洲黄色大片 | 综合色在线 | 伊人网在线播放 | 国产在线观看一区二区三区 | 日韩一级在线 | 91精品久久久久 | 精品一区二区三区在线观看 | 亚洲精品911| 久久久国产视频 | 国产欧美一区二区精品性色超碰 | 亚洲国产片 | 99久久久国产精品 | 午夜精品一区二区三区在线视频 | 黄色1级视频| 两性免费视频 | 99re在线观看视频 | 少妇一级淫片免费放 | 国产一区二区在线播放 | 免费看黄色大片 | 亚洲欧美一区二区三区在线 | aaaaaa毛片 | 草逼视频免费看 | 亚洲精品美女 | 99中文字幕| 黄色一区二区三区 | 成人免费视频一区二区 | 欧美精品二区 | 午夜激情福利视频 | 久久国产精品一区二区三区 | 青草免费视频 | 永久免费看mv网站入口亚洲 | 羞羞的视频网站 | 成人免费黄色片 | 日韩爱爱视频 | 91精品久久久久 | 免费观看全黄做爰视频 |