找回密码
 注册
关于网站域名变更的通知
查看: 936|回复: 3
打印 上一主题 下一主题

单片机音乐喷泉程序

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-18 07:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
单片机音乐喷泉程序8 }# [, F5 B- B

& F7 y- a3 A, [5 d. N: w
0 t" e. J. s, u
单片机音乐喷泉程序源码:
, N! s+ g1 g! L  F+ j#include<reg51.h>( s* x5 k2 H1 L* x+ B
#define uchar unsigned char
, I1 J: d5 r1 Y+ i#define uint unsigned int( i' y4 G1 O, f3 A" m, o
sbit out=P3^7;
4 I6 A& w+ o; N  ?  o" Fsbit led1=P0^0;
0 a4 h5 A9 V7 v8 C8 Y- B  isbit led2=P0^1;
+ L# b; H/ V+ u  c6 ~; Csbit led3=P0^2;
! d  H% H; Z9 a& ]0 msbit led4=P0^3;2 y7 ^9 @' @& m; I
sbit led5=P0^4;
0 A5 m: e( D: L1 R) q" Lsbit led6=P0^5;& r1 t0 K# m1 A
sbit led7=P0^6;+ e) U/ Y, j) ^; l
sbit led8=P0^7;
" _5 @3 ^1 J' \/ [# L( v$ z1 `
# V7 f$ J2 r4 k7 Z) r0 }/ C, F
sbit SCL=P1^2;                //SCL定义为P1口的第3位脚,连接ADC0832SCL脚
% ]! i2 V1 A) @' x- w: Psbit DO=P1^3;                //DO定义为P1口的第4位脚,连接ADC0832DO脚+ s7 {+ R* e2 n& X9 u4 h
sbit CS=P1^0;                //CS定义为P1口的第4位脚,连接ADC0832CS脚6 h* H9 J; r+ V2 p6 ^
/ C6 {6 a3 r1 t. I' |+ ?

, H) @) o: a) E% X6 J2 Y" M* C- c0 P: f& t

! L- ?: }+ H5 n* A) t
5 a- \2 y3 ?3 ]9 h2 B% m
+ S( h2 K) e. Z) g4 C9 Q
uchar h1,date;
- o2 c2 g4 j/ n4 B& Yunsigned char adval;
/ p5 \' P4 z: mvoid delay(uint z)
, k! i4 c3 I  b/ W* @5 r4 @{
( E4 N" N) |5 A   uchar y;
+ T! x  D7 j; d4 V   for(;z>0;z--)
$ q; M- V& ?2 \" w# {! E3 @   for(y=5;y>0;y--);2 b1 Z+ Z: e* G- l4 |
}+ s2 w, I* m5 e/ o

7 H& R4 J' e+ W( k# N7 n3 u

3 c$ j0 O8 V) X1 \- Q* D4 _
! I9 c3 f! A1 V  a  Y
9 `8 S3 S# N1 i0 o
/***********读数模转换数据********************************************************/        ! ?0 ]: G: Q" ?  d
//请先了解ADC0832模数转换的串行协议,再来读本函数,主要是对应时序图来理解,本函数是模拟0832的串行协议进行的" A3 M' S. a4 a
                                                //  1  1  0 通道
. E$ N! L2 K7 N                                                //  1  1  1 通道
/ r/ T! k, d4 U- l& d/ X: Yunsigned char ad0832read(bit SGL,bit ODD)
1 b6 I, j" x; J" m{
* s( B9 k( U) h; Z# ?# L% v/ I        unsigned char i=0,value=0,value1=0;                4 h6 u7 Z) i: [5 i6 i2 d
                SCL=0;' l8 D/ d1 l# }; T3 p
                DO=1;
3 c8 w7 W  {+ U* B                CS=0;                //开始
8 m1 V- D( N, O0 b                SCL=1;                //第一个上升沿        ! }1 g7 l' r) Y
                SCL=0;* K& W% |+ L2 r: K
                DO=SGL;
9 L8 s1 J4 }3 G! z( r                SCL=1;          //第二个上升沿1 n* {6 w3 m6 S2 m2 o4 F+ n
                SCL=0;1 ?8 q2 W7 k2 K7 j/ d; ~5 O
                DO=ODD;" C1 Q% o7 N" P' d$ x% o
                SCL=1;           //第三个上升沿
+ B8 i) X6 ], W9 ~' t3 ^5 [                SCL=0;           //第三个下降沿0 ?3 p! i( G! g, F! P) K9 w" L6 g
                DO=1;
( _8 K) m) g, R( I                for(i=0;i<8;i++): {5 n8 S  A' C
                {
! m/ X8 l/ H" U, H1 z                        SCL=1;
& R/ S: E8 M6 k6 ^( t1 I  x# |                        SCL=0; //开始从第四个下降沿接收数据7 Y! ~. l( b) W" z
                        value<<=1;+ V+ v( R6 d1 O  N
                        if(DO)
2 q1 B6 U9 U7 m4 z                                value++;                                                
5 `8 X/ O# b1 d$ |; R                }
- V! `3 {* I8 i; k7 s: s                for(i=0;i<8;i++)
/ K/ }7 G1 p3 t" ?1 r                {                        //接收校验数据, g. k/ D+ a$ b* H& e. s7 c: B1 x
                        value1<<=1;
- B0 D; |. f7 k                        if(DO)
1 O4 `# |8 Q* w1 [: X+ D                                value1+=0x80;6 r6 n& N! O" c7 Q. S& h3 A9 s* x6 p
                        SCL=1;
& W1 J7 u' f1 A0 e% n                        SCL=0;
; Z* b1 y; ]; z; [* Q! g& ?                }7 a! F( _% K3 _! A* v2 I
                CS=1;
* g( v0 L. x0 E- ~9 {7 G) D! M. ^% b                SCL=1;        
! k  f0 c8 l* `- R7 d# t2 a, p                if(value==value1)                                //与校验数据比较,正确就返回数据,否则返回0        ; B" y$ K8 e0 m
                        return value;
. e. h! ]  t6 B/ F1 L& ]5 C        return 0;' d" K) J) p, p8 v4 V0 \
}5 l, S8 G% x. l5 }
3 t4 w$ d+ ]5 M& z3 y

$ k2 M! c% p. r+ v8 t; a( G) Wvoid penquan()          //PWM调压, v: Y9 j) I' w/ @& Y% b
{" F# w4 `' I6 V
    date=ad0832read(1,0);
% x7 e9 r% ?2 {( m$ W8 ?, N, X        6 N) e# `) Q* ?8 `0 r" ?# Q
    h1=(255-date);& }$ ?. j. k( J7 U; l+ ^+ d, [
    out=0;  {+ x; j0 ~: L# h4 p2 _$ c
    delay(h1);
0 l8 d4 T7 R+ _+ l        if(h1>30) led1=1; else led1=0;! A' q6 k. f, J3 b) S
        
8 h! @. c5 a  }( _/ v
* H* z$ d3 O5 B/ l5 P

7 M( |* @) Z7 C/ T
9 P2 k( u% N+ P2 i3 X  r

, x  T, E1 E3 a( Z' j) c1 F+ W8 R…………余下代码请下载附件…………5 x, }# V6 e9 d# m2 \# H

/ O( ?% Z6 v  k下载:
2 C( B' c; u  [& L! O( ~, s
游客,如果您要查看本帖隐藏内容请回复
9 X5 T4 w- s% l6 b6 C2 i7 O, j; u
7 @; m# [" s; M9 L, x

该用户从未签到

2#
发表于 2019-1-18 11:35 | 只看该作者
看看楼主的代码

该用户从未签到

3#
发表于 2021-5-27 13:54 | 只看该作者
看看代码,参考参考
. X3 n. e9 A* b
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2026-4-18 22:11 , Processed in 0.125000 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表