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

標題: 51單片機音樂噴泉原理圖+源程序 [打印本頁]

作者: 文嘉瑜    時間: 2018-12-17 13:33
標題: 51單片機音樂噴泉原理圖+源程序
這是我之前做的一個基于51單片機的音樂噴泉
附有原理圖


單片機源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit out=P3^7;
  5. sbit led1=P0^0;
  6. sbit led2=P0^1;
  7. sbit led3=P0^2;
  8. sbit led4=P0^3;
  9. sbit led5=P0^4;
  10. sbit led6=P0^5;
  11. sbit led7=P0^6;
  12. sbit led8=P0^7;
  13. sbit SCL=P1^2;                //SCL定義為P1口的第3位腳,連接ADC0832SCL腳
  14. sbit DO=P1^3;                //DO定義為P1口的第4位腳,連接ADC0832DO腳
  15. sbit CS=P1^0;                //CS定義為P1口的第4位腳,連接ADC0832CS腳
  16. uchar scale;
  17. uchar m;
  18. uchar h1,date;
  19. unsigned char adval;
  20. void delay(uint z)
  21. {
  22.    uint y;
  23.    for(;z>0;z--)
  24.    for(y=5;y>0;y--);
  25. }

  26. /***********讀數模轉換數據********************************************************/       
  27. //請先了解ADC0832模數轉換的串行協議,再來讀本函數,主要是對應時序圖來理解,本函數是模擬0832的串行協議進行的
  28.                                                 //  1  1  0 通道
  29.                                                 //  1  1  1 通道
  30. unsigned char ad0832read(bit SGL,bit ODD)
  31. {
  32.         unsigned char i=0,value=0,value1=0;               
  33.                 SCL=0;
  34.                 DO=1;
  35.                 CS=0;                //開始
  36.                 SCL=1;                //第一個上升沿       
  37.                 SCL=0;
  38.                 DO=SGL;
  39.                 SCL=1;          //第二個上升沿
  40.                 SCL=0;
  41.                 DO=ODD;
  42.                 SCL=1;           //第三個上升沿
  43.                 SCL=0;           //第三個下降沿
  44.                 DO=1;
  45.                 for(i=0;i<8;i++)
  46.                 {
  47.                         SCL=1;
  48.                         SCL=0; //開始從第四個下降沿接收數據
  49.                         value<<=1;
  50.                         if(DO)
  51.                                 value=value|0x01;                                               
  52.                 }
  53.                 for(i=0;i<8;i++)
  54.                 {                        //接收校驗數據
  55.                         value1=value1>>1;
  56.                         if(DO)
  57.                                 value1=value1|0x80;
  58.                         SCL=1;
  59.                         SCL=0;
  60.                 }
  61.                 CS=1;
  62.                 SCL=1;
  63.                 DO=1;       
  64.                 if(value==value1)                                //與校驗數據比較,正確就返回數據,否則返回0       
  65.                         return value;
  66.                 return 0;
  67. }

  68. void penquan()          //PWM調壓
  69. {
  70.         date=ad0832read(1,0);
  71.         if(date>130&&date<=200)
  72.         {
  73.                 scale=(date-100)/10+2;
  74.                 if(scale>10)
  75.                 scale=10;
  76.         }
  77.        
  78.         else if(date>200)
  79.         scale=10;
  80.         else if(date<=130)
  81.         scale=0;
  82.         if(date>=0&&date<130) P0=0xfe;
  83.         else if(date>=130&&date<140) P0=0xfc;         
  84.         else if(date>=140&&date<150) P0=0xf8;
  85.         else if(date>=150&&date<160) P0=0xe0;
  86.         else if(date>=160&&date<170) P0=0xe0;
  87.         else if(date>=170&&date<180) P0=0xc0;
  88.         else if(date>=180&&date<200) P0=0x80;
  89.         else if(date>=200) P0=0x00;
  90. //        if(date>120) led1=0; else led1=1;
  91. //        if(date>130) led2=0; else led2=1;
  92. //        if(date>140) led3=0; else led3=1;
  93. //        if(date>150) led4=0; else led4=1;
  94. //        if(date>160) led5=0; else led5=1;
  95. //        if(date>170) led6=0; else led6=1;
  96. //        if(date>180) led7=0; else led7=1;
  97. //        if(date>200) led8=0; else led8=1;
  98.         delay(300);
  99. }

  100. void init()
  101. {
  102.         TMOD=0x01;
  103.         TH0=0xfc;
  104.         TL0=0x18;
  105.         ET0=1;
  106.         TR0=1;
  107.         EA=1;
  108. }
  109. void main()
  110. {
  111.    init();
  112.    while(1)
  113.    {       
  114.                 penquan();                   //給定個延時次數        
  115.    }
  116. }

  117. void T0_time() interrupt 1
  118. {
  119.         TH0=0xfc;
  120.         TL0=0x18;
  121.         m++;
  122.         if(m<scale)
  123.         {
  124.                 out=0;
  125.         }
  126.         else
  127.         {
  128.                 out=1;
  129.         }
  130.         if(m>10)
  131.         {
  132.                 m=0;
  133.         }
  134. }
復制代碼

所有資料51hei提供下載:
1-程序V1.0.rar (21.04 KB, 下載次數: 188)
原理圖.pdf (60.16 KB, 下載次數: 138)



作者: 景帝劉啟    時間: 2020-4-11 16:39
這原理圖,可以直接在protues打開用嗎
作者: 景帝劉啟    時間: 2020-4-11 17:23
樓主,這protues仿真有沒
作者: buibui~l    時間: 2020-7-22 11:41
景帝劉啟 發表于 2020-4-11 16:39
這原理圖,可以直接在protues打開用嗎

proteus.不能打開PDF格式文件,所以打不開的,這個原理圖簡單,自己畫也是很快就畫好的
作者: 路過的鄭佩奇    時間: 2020-11-29 21:30
一年后才看見,不知道樓主還在沒
作者: kiccleaf    時間: 2020-12-2 00:01
技術知識不錯,學習了
作者: 快樂眼淚    時間: 2020-12-20 20:32
正想做一個,謝謝樓主無私奉獻!
作者: zwh-86    時間: 2021-3-30 20:05
快樂眼淚 發表于 2020-12-20 20:32
正想做一個,謝謝樓主無私奉獻!

終于找到了,感謝樓主分享
作者: 362796718    時間: 2021-4-12 21:18
這個是用AD繪制的圖嗎,有沒有proteus繪制的圖啊
作者: luckyhappy    時間: 2021-5-8 08:28
我想問一下,你這代碼實現的彩燈變化是什么形式的啊?

作者: 用心做事    時間: 2021-12-21 23:40
樓主,還在嗎?能不能分享你的Proteus圖
作者: lhqniubi    時間: 2022-5-10 11:44
為啥程序中的中斷程序沒有用到呢?
作者: lhqniubi    時間: 2022-5-10 11:45
樓主,為啥程序中的中斷程序沒有被調用,能解釋一下嗎?




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩中文字幕视频在线观看 | 日韩成人在线观看 | 亚洲一区在线观看视频 | 午夜av在线 | 尤物在线视频 | av一区二区在线观看 | 国产综合网址 | 国产一区二区三区免费 | 国产在线精品一区二区三区 | 在线观看视频中文字幕 | 久久久成人一区二区免费影院 | 国产一区欧美 | 给我免费的视频在线观看 | av资源中文在线 | 毛片免费观看 | 91精品国产一区二区三区蜜臀 | 久在线| 国产xxxx岁13xxxxhd | 国产精品亚洲综合 | 老司机67194精品线观看 | 久久久久精 | 天天澡天天操 | 欧美一区二区三区在线 | 日日夜精品视频 | 男女羞羞视频在线免费观看 | 人和拘一级毛片c | 国产精品99免费视频 | 精品国产精品一区二区夜夜嗨 | 综合色久 | 欧美精品1区2区 | 午夜精品久久久久久久 | 福利在线看 | 久草在线 | 一本岛道一二三不卡区 | a级大毛片| 精品美女久久久久久免费 | 亚洲在线免费 | 中文字幕亚洲在线 | 午夜99 | 国产欧美在线 | 国内自拍视频在线观看 |