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

单片机音乐喷泉程序

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
单片机音乐喷泉程序
, T5 I3 H0 G3 ~5 |1 z1 |: g4 `6 C$ U1 P+ e2 f) \: S' i% [

6 C5 M+ e8 D/ r1 V单片机音乐喷泉程序源码:
) g6 N/ v1 ?: ~# e- P#include<reg51.h>
3 G: y- @) P7 ]% |#define uchar unsigned char
! ^+ H$ s7 x% c3 u1 U- u#define uint unsigned int) ?# u) [7 }3 a; @' @3 `
sbit out=P3^7;
& ^* n* h, W# i, n1 j5 X2 Vsbit led1=P0^0;
* V$ g) q( m3 N; r" ksbit led2=P0^1;
+ U1 L2 `2 Q; _8 d/ o1 `. {6 zsbit led3=P0^2;3 J- V, B% x6 C6 C( y7 k$ }
sbit led4=P0^3;
' x  G* }8 o! p3 U, ]6 z. wsbit led5=P0^4;
  g& K, R, K/ V1 c3 ?+ p; h; C  dsbit led6=P0^5;
. u+ t" Q8 }  Z1 v9 Usbit led7=P0^6;  O6 |. k* u$ Z, D' ~
sbit led8=P0^7;
4 x2 U+ J) Z) J' \7 b7 g: s8 D0 M. A8 [$ W' [2 v: p" F

6 |. ?+ p# Y/ Q3 c& m* Esbit SCL=P1^2;                //SCL定义为P1口的第3位脚,连接ADC0832SCL脚! m9 w1 z) F9 i$ w7 g9 s, x/ u/ M
sbit DO=P1^3;                //DO定义为P1口的第4位脚,连接ADC0832DO脚# J, M( E: P5 v6 }4 I' s4 W, }
sbit CS=P1^0;                //CS定义为P1口的第4位脚,连接ADC0832CS脚: p0 ]/ {8 w$ _6 ]* j4 r8 s! m

8 O. }, I8 T7 }3 b

: Z) G  z8 y) y( @5 ]3 R# ^
* |8 h  s# h' x8 C

: X. n' G: {- P7 F4 {' f; q! F# Q% e/ ~) h
+ P4 _! @8 I- V- b
uchar h1,date;# q# N8 @0 _( s7 _% f) p* A  S
unsigned char adval;' H% F" @" c) ^/ m4 Z4 j
void delay(uint z): K. t( y% o; m( P0 s
{; S8 I' p$ C' w. i
   uchar y;
9 T  l; @3 `' e, x( C- c, U   for(;z>0;z--)
1 b* X) C9 ^0 H- R   for(y=5;y>0;y--);! o/ [2 O% D& P& f
}/ }6 D4 s, h7 d6 }

3 r" I- N9 \3 `: [

' _+ Z1 q2 r3 U$ Z* j- L
: C) @& p9 Y% ?, W% B4 p
2 C/ O3 p9 \) y0 {8 M9 U$ R! W
/***********读数模转换数据********************************************************/        & g! E& G' w9 f
//请先了解ADC0832模数转换的串行协议,再来读本函数,主要是对应时序图来理解,本函数是模拟0832的串行协议进行的
6 U. q, w0 Q" `7 y                                                //  1  1  0 通道, m3 Z: }" x9 M
                                                //  1  1  1 通道 & ]& \: y3 k; t
unsigned char ad0832read(bit SGL,bit ODD)* w8 Z" N0 Z4 ?: y- ^- j8 ?; A
{
& a5 g% b6 ~9 {- L        unsigned char i=0,value=0,value1=0;                7 R( X+ e( z- ^% C
                SCL=0;
* n6 j: l) [: S' J: A6 u, a                DO=1;
! `+ r$ m7 a! a; J2 F                CS=0;                //开始2 U, U# Q$ m/ h' t) D! l! O5 e
                SCL=1;                //第一个上升沿        
7 R9 n% v- Y# f# F7 b) @/ p+ C                SCL=0;
$ H; L1 T7 K2 s* Y1 W' t                DO=SGL;1 i5 L7 I6 o9 D, v
                SCL=1;          //第二个上升沿
+ |, a. ?9 T# \: S                SCL=0;: Q" n3 @! R* b% j1 R
                DO=ODD;3 P6 K% c$ [% M2 G8 ^
                SCL=1;           //第三个上升沿
8 X5 }- S/ ]/ }- U7 Y7 M) g* {                SCL=0;           //第三个下降沿
9 l, U7 v$ b# Z$ e7 d2 }                DO=1;% E  A/ ?  y1 e
                for(i=0;i<8;i++)+ ~! \# _5 h$ b4 @7 x  Z
                {
7 e' b# ]8 v2 A. h                        SCL=1;: L8 o- \5 }, V8 a: C, B, n
                        SCL=0; //开始从第四个下降沿接收数据% _( d% T8 J6 k3 B! A+ h
                        value<<=1;
( u, k1 F2 m& v% w2 s2 x0 {- T- g6 K  s                        if(DO)* k  p. ~7 d- I3 ?+ g' p4 H
                                value++;                                                & r- X2 w9 M" }3 G+ ^3 m* y
                }  Q" `0 w  ?6 F  A2 F" z) [8 {
                for(i=0;i<8;i++)" @& W1 i& [+ ~
                {                        //接收校验数据. C* I- _& v6 h4 u7 c: q, D$ T
                        value1<<=1;) t- A9 s8 z2 N/ I; q
                        if(DO)7 W2 L4 [1 e1 l4 |1 B4 V( r
                                value1+=0x80;2 F) e; M  h+ ~5 `& w, L+ `
                        SCL=1;
# F8 }+ a0 l1 z                        SCL=0;
5 C0 i" @$ N, ^4 `; S: f                }% \- [+ A/ H: J! Z1 B
                CS=1;
8 V- R! c/ Y2 p7 v% i0 I! m                SCL=1;        ' g  i* W, @/ f% t, s
                if(value==value1)                                //与校验数据比较,正确就返回数据,否则返回0        - |4 |* f( H& W9 I
                        return value;
# L. s+ b$ f/ h  I8 k% [( ~        return 0;  c# z% `% w2 u1 H+ W! c* f
}
3 I. |1 {( P- P2 Y; k, X5 U- b! l! f& A

" ~+ g+ q$ `: P  O7 t. [void penquan()          //PWM调压
$ a. j  a) V' J" s% z* X' f{$ `5 {/ O1 j+ o7 S1 P0 t
    date=ad0832read(1,0);; y& `6 g. q1 `& c8 l4 `
        5 U2 ?- x" }- O/ S4 `: E! f5 G" {
    h1=(255-date);
- w) x7 c6 V6 q    out=0;
! r! t3 E; I9 e4 A! r1 W' ^( t    delay(h1);
# A& p1 F: A5 w5 e        if(h1>30) led1=1; else led1=0;
: m6 A* K2 Z/ _/ u4 c        1 B5 h5 M! `0 `" o
3 o4 N9 T8 C" ^5 `1 a

1 @: u" f% r/ y" F8 d
# M6 n, r) ^7 J  t6 H
9 t$ F# g  h0 {+ l
…………余下代码请下载附件…………
/ Q( n. A6 D( r: {( z3 T6 r! K- M% V+ P: W* a0 d6 F2 Q3 x; x% s6 n
下载:
* p; c3 e2 z; H- d1 Z
游客,如果您要查看本帖隐藏内容请回复
- t/ [$ h$ a# p3 @
1 a. ~3 O6 x, W& Q

该用户从未签到

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

该用户从未签到

3#
发表于 2021-5-27 13:54 | 只看该作者
看看代码,参考参考, j( i6 W. B5 R8 @5 |0 g- Z6 m2 R' l
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-23 23:37 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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