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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1192|回復: 4
打印 上一主題 下一主題
收起左側(cè)

大佬,能幫我看看單片機閃爍函數(shù)為什么有問題嗎,Mode3是閃爍函數(shù)

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1102558 發(fā)表于 2023-12-4 19:49 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include <reg52.h>
  2. #include "Delay.h"
  3. sbit K1=P3^0;
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. bit Timer_1s,Timer_500ms;
  7. // 數(shù)碼管段選信號
  8. uchar code duan[] = {
  9.     0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,        
  10.         //0   1     2    3                4                5                        6                7                        8                9                A
  11.         0x7c,0x39,0x5e,0x79,0x71,
  12.         //B                C                        D                E                        F
  13.         0x76,0x73,0x6e,0x38,0x3e, 0x31,0x50,0X37,0x01,0x40,0x08,0X00,
  14.         //H16 P17  Y18        L19  V20   T21         R22  N23 上—  中-        下-
  15. };
  16. uchar T0_Cnt=0;        
  17. // 數(shù)碼管位選信號
  18. uchar code wei[] = {
  19.     0x1c,0x18,0x14,0x10,0x0c,0x08,0x04,0x00
  20. };
  21. uchar code SMGCONTENT[]={10,2,2,1,3,27,4,7,27,        //A2213 47
  22.                                                                                 16,10,17,17,18,24,25,26, 27,  //HAPPY_--
  23.                                                                                 18,14,23,11,6,6,6,27,                 //YENB666        
  24.                                                                                 18,14,23,11,6,6,6,27,                 //YENB666
  25.                                                                                 18,14,23,11,6,6,6,27        };        //YENB666
  26. uchar LEDBUFF[8];
  27. uchar LEDFLASHBUFF[8];
  28. uchar j,leftnum,Mode,i,flash,KeyVal=0;
  29. uint t;
  30. void Timer0Init( void )
  31. {
  32.         TMOD = 0x01;
  33.         TH0 = (65536-5000)/256;
  34.         TL0 = (65536-5000)%256;
  35.         ET0 = 1;
  36.         EA  = 1;
  37.         TR0 = 1;
  38. }
  39. void Timer1Init( void )
  40. {
  41.         TMOD = 0x01;
  42.         TH1 = (65536-5000)/256;
  43.         TL1 = (65536-5000)%256;
  44.         ET1 = 1;
  45.         EA  = 1;
  46.         TR1 = 1;
  47. }
  48. void display();
  49. void main()

  50. {
  51.         Timer0Init();
  52.         Timer1Init();
  53.     while (1)
  54.         {
  55.                 display();
  56.         }
  57.       
  58. }
  59. void display()
  60. {
  61.         
  62.         
  63.         if(Mode==0)
  64.         {
  65.                 for(j=0;j<8;j++)
  66.             {LEDBUFF[j]=SMGCONTENT[j];
  67.                 }
  68.         }

  69.         if(Mode==1)
  70.         {
  71.                 for(j=0;j<8;j++)
  72.             {LEDBUFF[j]=SMGCONTENT[j+9];}
  73.         }
  74.         
  75.         if(Mode==2)
  76.         {
  77.                 for(j=0;j<8;j++)
  78.             {LEDBUFF[j]=SMGCONTENT[j+18];}
  79.         }
  80.         
  81.         if(Mode==3)  //左移
  82.         {
  83.                 leftnum=0;
  84.                 do
  85.                 {
  86.                         for(j=0;j<8;j++)
  87.                         {
  88.                                 LEDBUFF[j]=SMGCONTENT[j+leftnum];
  89.                         }
  90.                     Delay(1000);
  91.                         
  92.                 }
  93.                 while(leftnum++<36);
  94.                 leftnum=0;
  95.                 Mode=0;
  96.         }
  97.         
  98.    
  99. }
  100. void Timer0_ISR(void) interrupt 1
  101. {
  102.         
  103.         TH0=(65536-5000)/256;
  104.         TL0=(65536-5000)%256;        
  105.         if(T0_Cnt==200) {T0_Cnt=0;Timer_1s=1;Mode++; }
  106.         T0_Cnt++;
  107.         P0=0x00;
  108.     P2=wei[i];
  109.         if(KeyVal!=0&&flash)
  110.                 P0=duan[LEDFLASHBUFF[i]];
  111.         else
  112.             P0=duan[LEDBUFF[i]];                                                               
  113.         i++;
  114.         if(i==8)  i=0;
  115.         
  116. }
  117. void Timer1_ISR(void) interrupt 3
  118. {
  119.         TH1=(65536-10000)/256;
  120.         TL1=(65536-10000)%256;
  121.         t++;
  122.         if(t==50)
  123.         { t=0;Timer_500ms=1;flash=~flash;}
  124.         if(K1==0)
  125.         {
  126.                 Delay(10);
  127.                 if(K1==0)
  128.                 {KeyVal++;
  129.                 while(K1==0);}
  130.         }
  131.     switch(KeyVal)
  132.         {
  133.                 case 1 :LEDFLASHBUFF[0]=27;LEDFLASHBUFF[1]=27;
  134.                         LEDFLASHBUFF[2]=LEDBUFF[2];LEDFLASHBUFF[3]=LEDBUFF[3];
  135.                         LEDFLASHBUFF[4]=LEDBUFF[4];LEDFLASHBUFF[5]=LEDBUFF[5];
  136.                         LEDFLASHBUFF[6]=LEDBUFF[6];LEDFLASHBUFF[7]=LEDBUFF[7];
  137.                 break;
  138.                 case 2 :LEDFLASHBUFF[0]=LEDBUFF[0];LEDFLASHBUFF[1]=LEDBUFF[1];
  139.                         LEDFLASHBUFF[2]=27;LEDFLASHBUFF[2]=27;
  140.                         LEDFLASHBUFF[4]=LEDBUFF[4];LEDFLASHBUFF[5]=LEDBUFF[5];
  141.                         LEDFLASHBUFF[6]=LEDBUFF[6];LEDFLASHBUFF[7]=LEDBUFF[7];
  142.                 break;
  143.                 case 3 :LEDFLASHBUFF[0]=LEDBUFF[0];LEDFLASHBUFF[1]=LEDBUFF[1];
  144.                         LEDFLASHBUFF[2]=LEDBUFF[2];LEDFLASHBUFF[3]=LEDBUFF[3];
  145.                         LEDFLASHBUFF[4]=27;LEDFLASHBUFF[5]=27;
  146.                         LEDFLASHBUFF[6]=LEDBUFF[6];LEDFLASHBUFF[7]=LEDBUFF[7];
  147.                 break;
  148.                 case 4 :LEDFLASHBUFF[0]=LEDBUFF[0];LEDFLASHBUFF[1]=LEDBUFF[1];
  149.                         LEDFLASHBUFF[2]=LEDBUFF[2];LEDFLASHBUFF[3]=LEDBUFF[3];
  150.                         LEDFLASHBUFF[4]=LEDBUFF[4];LEDFLASHBUFF[5]=LEDBUFF[5];
  151.                         LEDFLASHBUFF[6]=27;LEDFLASHBUFF[7]=27;
  152.                 break;
  153.                 default : LEDFLASHBUFF[0]=LEDBUFF[0];LEDFLASHBUFF[1]=LEDBUFF[1];
  154.                             LEDFLASHBUFF[2]=LEDBUFF[2];LEDFLASHBUFF[3]=LEDBUFF[3];
  155.                         LEDFLASHBUFF[4]=LEDBUFF[4];LEDFLASHBUFF[5]=LEDBUFF[5];
  156.                         LEDFLASHBUFF[6]=LEDBUFF[6];LEDFLASHBUFF[7]=LEDBUFF[7];
  157.                 break;
  158.         }
  159.                
  160.         
  161. }
復制代碼
A2213_47_葉小宇_實驗4.zip (89.34 KB, 下載次數(shù): 4)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:1008290 發(fā)表于 2023-12-4 23:54 | 只看該作者
t=0;Timer_500ms=1;flash=~flash;這句話是什么作用
回復

使用道具 舉報

板凳
ID:1012735 發(fā)表于 2023-12-5 00:02 | 只看該作者
粗看了下,似乎28行的Mode沒有初始化,起始值也許不會在0~3,keyVal++可以大于4,沒有區(qū)間限制了

從126行        if(K1==0) 開始往后的代碼是可以放在主函數(shù)的while()里,中斷函數(shù)里的代碼越多越會影響定時器時間精度。
回復

使用道具 舉報

地板
ID:275826 發(fā)表于 2023-12-5 08:40 | 只看該作者
中斷函數(shù)里還有延時函數(shù)
回復

使用道具 舉報

5#
ID:1102558 發(fā)表于 2023-12-5 18:42 | 只看該作者
hy47566398 發(fā)表于 2023-12-5 00:02
粗看了下,似乎28行的Mode沒有初始化,起始值也許不會在0~3,keyVal++可以大于4,沒有區(qū)間限制了

從126 ...

感謝大佬解答
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 人人干人人玩 | 天天操网| 久久综合一区 | 99在线资源 | 欧美一区视频 | 亚洲成人免费视频 | 91九色视频 | 欧美一区二区免费视频 | 国产免费福利小视频 | 色噜噜狠狠色综合中国 | 亚洲人人| 老司机精品福利视频 | 成人自拍视频网站 | 激情五月综合网 | 成人九色 | 国产一级视频 | 99精品视频一区二区三区 | 精品一区av| 久久久久一区二区 | 国产精品日日做人人爱 | 欧美激情一区二区三区 | 亚洲不卡视频 | 亚洲综合二区 | 伊伊综合网| 天天插天天舔 | 国产欧美日韩在线 | 久久精品免费一区二区 | 亚洲精品成人在线 | 亚洲精品乱码久久久久久按摩观 | 日韩一区二区免费视频 | 国产免费高清 | 三级黄色大片网站 | 亚洲黄色成人网 | 久久爆操 | 亚洲黄色一级 | 免费成人高清在线视频 | 日韩欧美一区二区三区 | 日韩成年人视频在线 | 亚洲综合在线播放 | www.久草.com| 亚洲欧美视频 |