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

单片机蓝牙数码管 完成最基本的蓝牙信息显示以及开关控...

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
单片机蓝牙数码管 完成最基本的蓝牙信息显示以及开关控制功能
( X- o* K9 H& [! n/ e/**********************************************************************************************
8 f" D% p# U9 \- ~* a7 n程序名:    蓝牙数码管  m! v% X- C' g
编写人:    莫沫 
+ i4 m" y4 i8 y" C' b/ R编写时间:  2017年1月26日
( w6 ^" ?& p; B% C8 \硬件支持:  STC12C2052AD 12MHz
  N# y- C2 L6 _接口说明:  pwm P3.7  & A$ ]# C! ~  ^. G
修改日志:    ~& h& b/ V. C% B" }& n9 p
  NO.1-   2017年1月26日 14:56:26  完成最基本的蓝牙信息显示以及开关控制功能      
, e+ E- v0 p7 C- d**********************************************************************************************/+ E$ P, y+ w' _2 T# A# Y7 c! P
#include <STC12C5A60S2.H>
+ P. G8 P0 c1 W#define DIS  P2 . B" D8 Q7 K5 ^- ~  F: |
unsigned char NUM;" b/ l/ o; s0 m: U0 [: C' Q
unsigned char code disdata[]={
' [& e* x# m. Z) w/ x0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 //无小数点数码管段码表(0~f)
+ `7 V) p5 f& Q};
! H8 Z1 [$ Q2 [% k7 {/*********************************************************************************************
7 k, s9 n4 `6 X3 V1 ?函数名:PWM初始化函数$ u$ g& e# a% N' T
调  用:PWM_init();
- P. E3 Y- [. K* Z' r* t参  数:无& Y$ @, N+ j" K* d5 c
返回值:无
' ~. ^' T3 ], h3 k; N6 E% k结  果:将PCA初始化为PWM模式,初始占空比为0
: K2 K% p  G3 F5 e: e( O备  注:需要更多路PWM输出直接插入CCAPnH和CCAPnL即可" v. k& j3 F( |/ @$ u
/**********************************************************************************************/9 }4 x0 ?3 x" K
/*void PWM_init (void){
  C0 f& H1 Y9 }, Q1 L8 a  W- TCMOD=0x02; //设置PCA定时器
/ T4 d6 {7 m* \  CL=0x00; ) M6 u# u" N7 g% q; {3 N
  CH=0x00;
0 b1 d  N. _! w6 b+ w0 }: M4 o CCAPM0=0x42; //PWM0设置PCA工作方式为PWM方式(0100 0010)8 S; K# ~! U# k, d) P& w* M
  CCAP0L=0x00; //设置PWM0初始值与CCAP0H相同
/ M  C/ [( F+ q; l) B7 s: B/ r  CCAP0H=0x00; // PWM0初始时为0- _! Z' g+ v& V! I
CR=1; //启动PCA定时器3 g" J1 B- ]4 m5 F2 `* B
}; o( K- S3 i! ]) a0 r
/**********************************************************************************************/
% F, m" p( E2 }. x) ^! L2 N8 x0 E3 ^9 V& |( X

" D( w" S8 s. O/*********************************************************************************************+ N% v, S9 A! U$ C, b. \" W4 t. s) }
函数名:UART串口初始化函数
8 w5 B# P2 h5 X2 B2 m8 z3 g2 Z调  用:UART_init();3 O3 L% L+ }2 b9 M! v  V
参  数:无# x& T. H, E7 x* X! L
返回值:无
4 c& {& I- y* Q% O$ h  K" L/ N8 i; n结  果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用)
/ K. @0 _- v- x% X+ `+ {$ o; b备  注:振荡晶体为11.0592MHz,PC串口端设置 [ 19200,8,无,1,无 ]5 [# ~$ R& I( e$ p& y' d( ]! c
/**********************************************************************************************/
+ s3 |& ]5 z8 P3 E7 T2 Jvoid UART_init (void){% o- z  l/ i) l8 Y, O0 }/ C, I" J
EA = 1; //允许总中断(如不使用中断,可用//屏蔽)" |1 a  m1 M8 g1 O
ES = 1; //允许UART串口的中断0 z* v3 K5 [0 }$ O* ?9 D  u* ^1 x
TMOD = 0x20; //定时器T/C1工作方式2
: U4 ]  y  m4 q' G. L SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收)
. q3 h+ G1 F9 c* } TH1 = 0xFD; //定时器初值高8位设置9 D5 q* _" C! S: K. Y
TL1 = 0xFD; //定时器初值低8位设置( L. `4 M7 K* u
// PCON = 0x80; //波特率倍频(屏蔽本句波特率为9600)
) k. ~( ?/ a% ^8 I. D2 N$ n0 M TR1 = 1; //定时器启动   
0 \( W* J' O9 l" o% s8 x6 a}
* K8 L# I3 I" i' y. I/**********************************************************************************************/$ @5 L5 {" S6 Z! g
/*********************************************************************************************
9 h. i4 r; N0 z  V8 e3 N% ^函数名:UART串口接收中断处理函数
. H. c: A/ P! x$ B) e  A调  用:[SBUF收到数据后中断处理]
+ ]3 G! q: P2 `) K* g. |参  数:无
* h" S2 D6 y9 ]1 U2 i# |4 q返回值:无7 E# L- q) D$ n+ S+ D; O! Y0 ^
结  果:UART串口接收到数据时产生中断,用户对数据进行处理(并发送回去): ~5 C% t  U& I
备  注:过长的处理程序会影响后面数据的接收
% Z' r" B* o. t/ K5 u; P' \/**********************************************************************************************/8 C7 S+ B5 N7 f% V
void UART_R (void) interrupt 4  using 1{ //切换寄存器组到1- n# f- o( I1 u( G
unsigned char UART_data; //定义串口接收数据变量
( O( C9 D% x2 d  a RI = 0;   //令接收中断标志位为0(软件清零)8 V# B, _  ?8 `5 v
UART_data = SBUF; //将接收到的数据送入变量 UART_data% J0 a7 L6 o2 x- v0 E
if(UART_data == '0')  NUM=0;1 p  K# ?' B. t2 \
if(UART_data == '1')  NUM=1;. ^* r! x- c5 R' r8 n9 N. m
if(UART_data == '2')  NUM=2;
( c4 l, |7 f  P" }& G, H5 W( ~ if(UART_data == '3')  NUM=3;
, p; y. o$ P% F4 V if(UART_data == '4')  NUM=4;
7 O2 `8 G  B& | if(UART_data == '5')  NUM=5;
7 O9 v, H" v8 f/ s% R1 {0 j if(UART_data == '6')  NUM=6;
+ O! a' _. D# N if(UART_data == '7')  NUM=7;/ ~1 w, I  ]( k7 V8 z2 H
if(UART_data == '8')  NUM=8;, D$ E: [7 @. u; t- }) r
if(UART_data == '9')  NUM=9;: a0 p$ V& i+ \5 w3 Y
if(UART_data == 'A')  NUM=10;
( A0 w! P8 Y7 _! Y8 z. ~2 | if(UART_data == 'B')  NUM=11;
& J% X. ]3 M9 `# I if(UART_data == 'C')  NUM=12;7 o- @" U( ^6 P& `4 m+ C6 y
if(UART_data == 'D')  NUM=13;) K2 s: K) W$ `# k3 z
if(UART_data == 'E')  NUM=14;, `5 G8 y  n7 u5 a& k0 @
if(UART_data == 'F')  NUM=15;
1 w6 S: a. I6 K  M2 e} 8 S! S" E$ Z, t
/**********************************************************************************************/6 o; K( I4 K/ N% X. F
/*********************************************************************************************
7 C/ U  U- J$ j: U; Q函数名:PWM0占空比设置函数9 `' c0 S. g& R5 c. N
调  用:PWM0_set();/ g: c" ]  s9 {- l" U% m& r" J8 c
参  数:0x00~0xFF(亦可用0~255)
2 ]4 T" e' f" T' E' T- c. w返回值:无5 e. O6 Z. v: i  A+ D2 H! u
结  果:设置PWM模式占空比,为0时全部高电平,为1时全部低电平
. V! \3 L5 [# b% ~备  注:如果需要PWM1的设置函数,只要把CCAP0L和CCAP0H中的0改为1即可
/ t  j2 t+ ^" H- c0 o/**********************************************************************************************
7 l- z: B# Z8 Y- \8 Z8 fvoid PWM0_set (unsigned char a){
: ^9 H4 f" F: z CCAP0L= a; //设置值直接写入CCAP0L
1 J7 G) n; z# K5 c" R  CCAP0H= a; //设置值直接写入CCAP0H
: @% b8 g0 c1 y# \) W. p}" ^, z& v  D- `' N- f6 k  w+ i
/**********************************************************************************************/
7 r5 l" w( x& s" u2 n# h1 T+ G
, k& c, s; K/ v6 `* o
# i0 W  ^+ k/ l" Z( `5 d, U" I; {
/*********************************************************************************************+ d: D# U& H( B8 s2 ^
函数名:主函数9 v! F, B; p2 n6 ]- d, U/ w7 L
调  用:无1 r7 Y( y, C8 W' c, |* ~
参  数:无
; }- g6 \* _7 s$ \2 ]返回值:无
7 `8 }( Y7 d5 ~; P) g结  果:程序开始处,无限循环
) M6 ^/ J" |6 {5 ?* j. m' c; ]备  注:8 l, W; ?- f- x6 ?6 R8 ?4 ~
/**********************************************************************************************/" x$ \8 e& {% e; ?3 d+ i
void main (void){
, E. o5 ?' `  Q; O NUM = 15;+ ]9 ^: O" n* a' f0 n8 E
UART_init();+ k: @! G2 p; T' \  O

8 L$ Z/ a. c  P  o! E( y8 w

# `, V0 I3 H" d- g6 S$ U% h( d
" A, `2 F2 L3 @! ~3 `( ]" t* I8 X…………限于本文篇幅 余下代码请从论坛下载附件…………4 \9 i3 c5 G/ R! N* d" i  E. g5 ^" _
' i) S8 Z% _8 ]2 M+ h. o1 u5 Y
- D5 o4 F  }( `9 _' [
3 c) Y. h! W+ C& R" U
游客,如果您要查看本帖隐藏内容请回复
6 @1 \; e7 S- o1 X4 y

" w  n" Z# F; Y/ Z5 R- A4 |

1 {8 O0 w1 t! @
1 I4 ~8 [. x0 s
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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