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

单片机音乐喷泉程序

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
单片机音乐喷泉程序
7 L3 ~6 X' J% B% t2 ^* U$ _  B0 ?/ g, J3 A# E2 n

0 Z' a' g3 K; s7 v单片机音乐喷泉程序源码:4 G) n  R+ [" _/ y# C) @
#include<reg51.h>
& I" G3 x# c+ ], i0 U; U#define uchar unsigned char" Z" r% @% S8 b7 L3 e3 U# i
#define uint unsigned int
" I( I/ o) ?/ y3 [( J; vsbit out=P3^7;
2 ?: M5 M; L- f) e, k9 nsbit led1=P0^0;
  @; U6 v# }! L5 Hsbit led2=P0^1;
: A, ^. _0 S$ N/ D, \sbit led3=P0^2;, j' X$ z( Y* y+ c2 j
sbit led4=P0^3;
: F# f: l% ^& h  z, h7 Csbit led5=P0^4;, [; G! G. U& |
sbit led6=P0^5;
+ l9 g! Y& {7 u; N( ]sbit led7=P0^6;
! y3 s5 d0 z  csbit led8=P0^7;) D5 W3 n# w3 c# J

2 H# f8 y. s( h; _! u+ C; E
. Y* |6 \2 _2 ~! q
sbit SCL=P1^2;                //SCL定义为P1口的第3位脚,连接ADC0832SCL脚" P* C! j& O- }! L
sbit DO=P1^3;                //DO定义为P1口的第4位脚,连接ADC0832DO脚( v2 R+ F, ^, u1 h
sbit CS=P1^0;                //CS定义为P1口的第4位脚,连接ADC0832CS脚
4 w0 H( G. q" A9 j) F  s3 z5 H' _) _, b  |
" A2 c. J+ s; C! N

: c& {' v$ x5 B; r, V% ?

7 G! X' O& K; I# |. K. q7 N9 c2 G0 ~
( ^% [& f' H) f: I! G
0 `4 e' \4 E9 i2 P
uchar h1,date;8 |* f$ p% {1 q: \6 o
unsigned char adval;- Q4 f, w0 @" Y% z3 v+ J4 A
void delay(uint z)# S  ?  K# u, [/ q
{( D; h4 F0 d/ e, ?, l& a2 |
   uchar y;9 b: i! h* H9 Z. l' w
   for(;z>0;z--)1 e8 M3 u  n! t' V6 c
   for(y=5;y>0;y--);/ o: W# E) l7 F9 G8 K
}
$ |+ B# }' z" J7 n0 X; A
; m5 O! Y+ ~, q+ c/ Z" u2 l, B/ y

4 [* A# w) e1 J7 H; D0 P- W! C! q0 d. v5 y2 Z4 \

) d1 u- H9 d+ ]8 ?: B( e/***********读数模转换数据********************************************************/        
! f' w$ O* G! ?- @: \//请先了解ADC0832模数转换的串行协议,再来读本函数,主要是对应时序图来理解,本函数是模拟0832的串行协议进行的
2 n/ w) l0 H; d) i1 m6 c1 {- I. i                                                //  1  1  0 通道+ d. @) O* U8 \( h! a% f
                                                //  1  1  1 通道
8 }1 _" T' `# z) H& E: O3 A/ kunsigned char ad0832read(bit SGL,bit ODD)1 U2 ?) _8 J0 h/ y$ D
{: e: {* [  s# N- ?8 Z# K
        unsigned char i=0,value=0,value1=0;                : _! M, ?  r- X9 I1 d" @
                SCL=0;
% ]/ M& b: o5 a% x0 q                DO=1;
, H1 u; w* Z1 O* X+ {                CS=0;                //开始
$ Q- d. l( O, ?; `* K                SCL=1;                //第一个上升沿        # p6 k+ ?/ {1 K- U" f
                SCL=0;$ P, [. H% V6 D3 Y
                DO=SGL;1 G5 L6 g. ?9 ?7 L' R! j( }: t2 ]7 {
                SCL=1;          //第二个上升沿7 N* V1 u3 k! Z+ Q. R7 a
                SCL=0;
7 a% z" o9 c* O0 x% r, M( E' }                DO=ODD;7 @: W8 F" L, M( o$ q% z
                SCL=1;           //第三个上升沿
" G! c- c: I* f/ u* `                SCL=0;           //第三个下降沿
8 J& A/ Q0 f: m                DO=1;/ k: ~1 H! O5 Y- t4 l/ S. M2 ?
                for(i=0;i<8;i++)6 W+ H6 B  Y4 r  L) i1 Z$ B
                {
4 u' V3 J3 \) i: b8 @, G# G                        SCL=1;
5 }* ?$ [' U* m7 [! g8 ^% J                        SCL=0; //开始从第四个下降沿接收数据7 r* A" w6 Z: q" I% N
                        value<<=1;3 K- }' F4 P" u% D
                        if(DO)
! t, W/ u& Q* r! y* x- {2 W                                value++;                                                3 N" C( c& r+ m; p" Z# P7 W+ t& b
                }7 X) c2 Z6 S. g
                for(i=0;i<8;i++); w. D& n" f  F/ \
                {                        //接收校验数据/ C) p. y2 Y  Y7 q( U5 z
                        value1<<=1;( y4 l! Z. B4 f: D8 Q8 {
                        if(DO)
' o) G' j2 e' E                                value1+=0x80;
+ c, ]0 E; E6 c# T* K                        SCL=1;
) p( }. D7 V/ {; e  T- p' D+ }) A  t                        SCL=0;" ~. E, x& Q; I1 {: B7 a( l, O
                }
0 l. G. A" r- K                CS=1;
; l1 @/ H. U9 `0 ^. g& L                SCL=1;        
, q, m' X8 W+ ?0 N1 U                if(value==value1)                                //与校验数据比较,正确就返回数据,否则返回0        " X. b) o% m- A9 X
                        return value;/ T* b# p6 }% a
        return 0;9 [. Z* h2 U' P5 S2 q: @
}
; B5 L1 z! @# n. f+ d. S& ]5 P/ ^: P- S
5 H! m5 o0 |/ X
void penquan()          //PWM调压
' R% J* z! j0 j+ m! I7 m- v{
! w8 K; }; x% c8 l5 C    date=ad0832read(1,0);2 t( O9 n8 |! W6 [8 H
        
# }3 {6 p$ D: ^! H1 c* d, @; u    h1=(255-date);
$ b# ?$ t% B" h    out=0;
. X& _( ]5 N8 v4 K. t- Q9 W% Q& H    delay(h1);: a( l3 O3 V& M
        if(h1>30) led1=1; else led1=0;
) F7 b9 g; ?/ I$ T) M        6 v) G, x7 j, E6 t9 z7 \

9 h) p- u+ V( }- U  f8 n

6 A$ k# N! i( G" D8 Y4 m9 i: e! Z, n
+ C" U2 ~7 E; [2 ^

. o+ M/ d# H  x+ u/ M: H…………余下代码请下载附件…………3 s4 x4 X( J6 o4 J; ]; v2 ^

: U4 g6 T+ ]1 c下载:
' A5 x! c# T- W: {) g, B( [# i
游客,如果您要查看本帖隐藏内容请回复
( z2 _) l4 p$ s3 J

' m  h$ S+ i% u: H1 h

该用户从未签到

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

该用户从未签到

3#
发表于 2021-5-27 13:54 | 只看该作者
看看代码,参考参考5 W- d* B4 i' d% l( t
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-26 11:42 , Processed in 0.187500 second(s), 26 queries , Gzip On.

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

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

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