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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4960|回復: 10
打印 上一主題 下一主題
收起左側

求大神幫我把流水燈定時與蜂鳴器程序改正確,大體不變

[復制鏈接]
跳轉到指定樓層
樓主
20黑幣
本帖最后由 1130555300 于 2017-3-21 09:15 編輯



  1. #include<reg52.h>
  2. #include<present.h>

  3. sbit Buzz=P3^7;

  4. uchar flag=16,sign=1;
  5. uchar time=0;                 //流水燈定時
  6. uint *pf=Happy_Birthday;
  7. uint *p=Happy_Birthday;

  8. void init_devices(void)
  9. {
  10.         TMOD=0x11;
  11.         TH1=0x71;
  12.         TL1=0x48;        //40ms的定時
  13.         TH0=0x00;
  14.         TL0=0x00;        //初始化
  15.         IT1=1;
  16.         EA=1;
  17.         EX1=1;
  18.         ET0=1;
  19.         ET1=1;        
  20. }

  21. void int1() interrupt 2 using 0
  22. {
  23.         sign++;        //下一曲
  24.         switch(sign)
  25.         {        case 1:TR0=1;pf=Happy_Birthday;flag=16;break;
  26.                 case 2:pf=Legend;flag=8;break;
  27.                 case 3:pf=Childhood;flag=8;break;
  28.                 case 4:TR0=0;sign=0;Buzz=1;break;//停唱Buzz=1,三極管關斷,防止大電流
  29.                 default :pf=Happy_Birthday;flag=16;break;        
  30.         }
  31.     p=pf;
  32. }

  33. //定時器0產生頻率
  34. void timer0() interrupt 1 using 1
  35. {
  36.         uint temp=65536-*p;
  37.         TH0=(uchar)(temp>>8);
  38.         TL0=(uchar)temp;
  39.         if(*p) Buzz^=1;
  40.         else Buzz=1;        //Buzz=1,三極管關斷,防止大電流

  41. }

  42. //定時器1產生40ms延時
  43. void timer1() interrupt 3 using 2
  44. {               
  45.         TH1=0x71;
  46.         TL1=0x48;        //40ms的定時
  47.                   
  48.         if(flag==0)
  49.         {        
  50.                 flag=*(p+1);
  51.                 if(flag==0)
  52.                 {
  53.                         p=pf;
  54.                         flag=*(p+1);
  55.                 }
  56.                 else
  57.                 {        p++;
  58.                         p++;
  59.                 }
  60.         }
  61.         else flag--;
  62.         time++;                //流水燈定時
  63.         if(time%5==0)
  64.         {  switch(time)
  65.            {case 5:P0=0x01;break;
  66.             case 10:P0=0x02;break;
  67.                   case 15:P0=0x04;break;
  68.                 case 20:P0=0x08;break;
  69.             case 25:P0=0x10;break;
  70.                   case 30:P0=0x20;break;
  71.                 case 35:P0=0x40;break;
  72.                 case 40:P0=0x80;time=0;break;
  73.                 default :time=0;break;           
  74.            }
  75.         }
  76. }

  77. void delay(uint i)
  78. {        
  79.         while(i--);
  80. }
  81. void word(uchar *ps)         //顯示單個字符
  82. {        uchar i,j;
  83.         uchar _bit=0X80;
  84.         for(i=0;i<200;i++)
  85.         {               
  86.                 for(j=0;j<8;j++)
  87.                 {  P1=0xff;
  88.                    P2=~_bit;
  89.                    P1=*(ps+j);
  90.                    delay(100);
  91.                    _bit>>=1;
  92.                 }
  93.                 _bit=0X80;
  94.         }
  95. }
  96. void display(uchar *ps)         //顯示移動字符
  97. {        uchar i,j;
  98.         uchar _bit=0X80;
  99.         while(*(ps+8)!=0xaa)
  100.         {               
  101.                 for(i=0;i<20;i++)
  102.                 {               
  103.                                 for(j=0;j<8;j++)
  104.                                 {  P1=0xff;
  105.                                    P2=~_bit;
  106.                                    P1=*(ps+j);
  107.                                    delay(100);
  108.                                    _bit>>=1;
  109.                                 }
  110.                         _bit=0x80;
  111.                 }
  112.                 ps++;
  113.         }
  114. }

  115. void main()
  116. {        uchar i;
  117.         init_devices();
  118.         for(i=0;i<6;i++) word(figure[i]);        
  119.         word(arrow);
  120.         word(arrow);
  121.         TR0=1;
  122.         TR1=1;
  123.         while(1)
  124.         {
  125.                 display(str1);
  126.                 display(str1);        
  127.                 display(str2);
  128.         }
  129. }
復制代碼

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

使用道具 舉報

沙發
ID:151348 發表于 2017-3-20 21:28 | 只看該作者
這樣的問題最好把你的程序和仿真文件都傳上來,不然也沒人愿意花時間去幫你改
回復

使用道具 舉報

板凳
ID:157662 發表于 2017-3-20 23:03 | 只看該作者
imxuheng 發表于 2017-3-20 21:28
這樣的問題最好把你的程序和仿真文件都傳上來,不然也沒人愿意花時間去幫你改

不能上傳C文件和仿真文件
回復

使用道具 舉報

地板
ID:157662 發表于 2017-3-20 23:03 | 只看該作者
不能上傳C文件和仿真文件
回復

使用道具 舉報

5#
ID:175877 發表于 2017-3-21 00:43 | 只看該作者
沒有上拉吧
回復

使用道具 舉報

6#
ID:151348 發表于 2017-3-21 08:46 | 只看該作者
1130555300 發表于 2017-3-20 23:03
不能上傳C文件和仿真文件

打包上傳
回復

使用道具 舉報

7#
ID:157662 發表于 2017-3-21 09:14 | 只看該作者

是程序問題,
回復

使用道具 舉報

8#
ID:157662 發表于 2017-3-21 12:26 | 只看該作者

是程序問題
回復

使用道具 舉報

9#
ID:176808 發表于 2017-3-21 14:50 | 只看該作者
#include<reg52.h>

02.#include<present.h>

03.

04.sbit Buzz=P3^7;

05.

06.uchar flag=16,sign=1;

07.uchar time=0;                 //流水燈定時

08.uint *pf=Happy_Birthday;

09.uint *p=Happy_Birthday;

10.

11.void init_devices(void)

12.{

13.        TMOD=0x11;

14.        TH1=0x71;

15.        TL1=0x48;        //40ms的定時

16.        TH0=0x00;

17.        TL0=0x00;        //初始化

18.        IT1=1;

19.        EA=1;

20.        EX1=1;

21.        ET0=1;

22.        ET1=1;        

23.}

24.

25.void int1() interrupt 2 using 0

26.{

27.        sign++;        //下一曲

28.        switch(sign)

29.        {        case 1:TR0=1;pf=Happy_Birthday;flag=16;break;

30.                case 2:pf=Legend;flag=8;break;

31.                case 3:pf=Childhood;flag=8;break;

32.                case 4:TR0=0;sign=0;Buzz=1;break;//停唱Buzz=1,三極管關斷,防止大電流

33.                default :pf=Happy_Birthday;flag=16;break;        

34.        }

35.    p=pf;

36.}

37.

38.//定時器0產生頻率

39.void timer0() interrupt 1 using 1

40.{

41.        uint temp=65536-*p;

42.        TH0=(uchar)(temp>>8);

43.        TL0=(uchar)temp;

44.        if(*p) Buzz^=1;

45.        else Buzz=1;        //Buzz=1,三極管關斷,防止大電流

46.

47.}

48.

49.//定時器1產生40ms延時

50.void timer1() interrupt 3 using 2

51.{               

52.        TH1=0x71;

53.        TL1=0x48;        //40ms的定時

54.                  

55.        if(flag==0)

56.        {        

57.                flag=*(p+1);

58.                if(flag==0)

59.                {

60.                        p=pf;

61.                        flag=*(p+1);

62.                }

63.                else

64.                {        p++;

65.                        p++;

66.                }

67.        }

68.        else flag--;

69.        time++;                //流水燈定時

70.        if(time%5==0)

71.        {  switch(time)

72.           {case 5:P0=0x01;break;

73.            case 10:P0=0x02;break;

74.                  case 15:P0=0x04;break;

75.                case 20:P0=0x08;break;

76.            case 25:P0=0x10;break;

77.                  case 30:P0=0x20;break;

78.                case 35:P0=0x40;break;

79.                case 40:P0=0x80;time=0;break;

80.                default :time=0;break;           

81.           }

82.        }

83.}

84.

85.void delay(uint i)

86.{        

87.        while(i--);

88.}

89.void word(uchar *ps)         //顯示單個字符

90.{        uchar i,j;

91.        uchar _bit=0X80;

92.        for(i=0;i<200;i++)

93.        {               

94.                for(j=0;j<8;j++)

95.                {  P1=0xff;

96.                   P2=~_bit;

97.                   P1=*(ps+j);

98.                   delay(100);

99.                   _bit>>=1;

100.                }

101.                _bit=0X80;

102.        }

103.}

104.void display(uchar *ps)         //顯示移動字符

105.{        uchar i,j;

106.        uchar _bit=0X80;

107.        while(*(ps+8)!=0xaa)

108.        {               

109.                for(i=0;i<20;i++)

110.                {               

111.                                for(j=0;j<8;j++)

112.                                {  P1=0xff;

113.                                   P2=~_bit;

114.                                   P1=*(ps+j);

115.                                   delay(100);

116.                                   _bit>>=1;

117.                                }

118.                        _bit=0x80;

119.                }

120.                ps++;

121.        }

122.}

123.

124.void main()

125.{        uchar i;

126.        init_devices();

127.        for(i=0;i<6;i++) word(figure[i]);        

128.        word(arrow);

129.        word(arrow);

130.        TR0=1;

131.        TR1=1;

132.        while(1)

133.        {

134.                display(str1);

135.                display(str1);        

136.                display(str2);

137.        }

138.}
復制代碼
回復

使用道具 舉報

10#
ID:157662 發表于 2017-3-21 18:27 | 只看該作者

好像沒有變吧
回復

使用道具 舉報

11#
ID:157662 發表于 2017-3-21 18:28 | 只看該作者

已經上傳了,幫我看一下吧
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美视频 | 欧美成人免费在线视频 | 欧美精品一区二区三区在线播放 | 人和拘一级毛片c | 日韩aⅴ片| 亚洲高清在线观看 | 亚洲福利视频网 | 欧美日韩免费一区二区三区 | 国产黄色小视频在线观看 | 男女羞羞视频在线 | 国产精品视频导航 | 国产高清一区 | 91大神在线看 | 91精品国产综合久久婷婷香蕉 | 亚洲中国字幕 | 日本在线播放一区二区 | 亚洲网站在线观看 | 午夜免费视频 | 久久中文网 | 日韩成人专区 | 免费精品视频 | 欧美日韩国产一区二区 | 四虎av电影 | 亚洲精品一区二区三区中文字幕 | 操操日| 午夜影院在线观看 | 99精品欧美一区二区三区综合在线 | 男女爱爱网站 | 国产精品久久一区二区三区 | 欧美在线免费 | 久久久久国产一区二区三区不卡 | 91久久精品日日躁夜夜躁欧美 | 午夜不卡一区二区 | 中文字幕乱码视频32 | 亚洲一区二区久久久 | 国产精产国品一二三产区视频 | av网站免费 | 97起碰| 久久成人综合 | 成人精品鲁一区一区二区 | 国产精品亚洲一区二区三区在线 |