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

標題: 用單片機做的女朋友生日禮物 點陣顯示生日快樂 喇叭播生日歌 [打印本頁]

作者: 51黑ff    時間: 2016-9-25 23:05
標題: 用單片機做的女朋友生日禮物 點陣顯示生日快樂 喇叭播生日歌
理工男給女朋友做的生日禮物就是特別,下面這個仿真可以實現(xiàn),點陣先顯示數(shù)字倒計時,等時間到后馬上播放音樂,然后點陣上面顯示生日快樂,大家有興趣可以做成成品哦.效果還是很牛逼的,相信女友會很高興.

仿真工程文件及源碼下載:
女朋友的生日禮物.rar (43.43 KB, 下載次數(shù): 78)


源程序:
  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產(chǎn)生頻率
  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產(chǎn)生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. }
復制代碼





作者: 天霸動霸tua    時間: 2016-12-25 23:29
這個單片機除了蜂鳴器 點陣 定時器 流水燈以外還能不能加點東西

另外我把Keil工程建立了一下

c樣本51hei.7z

79.18 KB, 下載次數(shù): 0, 下載積分: 黑幣 -5


作者: 天霸動霸tua    時間: 2016-12-26 12:59
問一下那個生日快樂的歌在主程序的哪里加進去的
作者: 1130555300    時間: 2016-12-28 11:47
為什么程序有錯?
作者: 1060040985    時間: 2020-6-17 16:07
下來試試,嘿嘿
作者: 1060040985    時間: 2020-6-17 16:46
添加生日快樂歌曲的程序在哪里添加

作者: einzig    時間: 2020-6-17 20:15
電子設計沒有女朋友
作者: 多學點1    時間: 2024-1-6 12:41
到中間D16錯誤程序就卡了,刪除就不能運行了。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 久久国产美女视频 | 一级日韩| 中文字幕一区二区不卡 | 色婷婷综合网 | 国产精品视频一区二区三区 | 日韩av啪啪网站大全免费观看 | 波多野结衣一区二区 | 99精品国自产在线 | 日产精品久久久一区二区福利 | 欧美国产日韩在线 | 久久精品久久久久久 | 日韩美女爱爱 | 日韩在线高清 | 91av在线免费播放 | 国产欧美性成人精品午夜 | 国产成人精品久久二区二区 | 91福利在线观看 | 一区二区三区免费 | 久久久xx | 日韩成人在线观看 | 深夜福利影院 | 四虎影院在线观看免费视频 | 欧美视频三区 | 日韩乱码一二三 | 国产精品99久久久久久久vr | 成年人免费在线视频 | 国产精品视频区 | 日韩精品无码一区二区三区 | www一级片 | 国产精品日韩欧美一区二区 | 欧美日一区二区 | 国产日韩欧美一区 | 羞羞视频在线观看免费观看 | 精品视频在线一区 | 最新黄色毛片 | 精精国产xxxx视频在线播放 | 高清成人免费视频 | 久久久这里只有17精品 | 日韩欧美不卡 | 久久久久久久久国产 | 国产精品一区二区无线 |