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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
单片机蓝牙数码管 完成最基本的蓝牙信息显示以及开关控制功能
" |# N! y$ c' w/**********************************************************************************************) V- b' N0 a6 H
程序名:    蓝牙数码管
4 u2 f( G' V" z# u4 i3 O! }9 p编写人:    莫沫 0 L: Y# W/ J3 W
编写时间:  2017年1月26日
$ E; C9 a! Y9 A/ \2 P" u% ~6 o4 ?1 X硬件支持:  STC12C2052AD 12MHz' r  R" m7 x' N' I( M: Q
接口说明:  pwm P3.7  6 z; N/ s8 C& m( p
修改日志:  
, g: u6 j, X% C1 ^# E  NO.1-   2017年1月26日 14:56:26  完成最基本的蓝牙信息显示以及开关控制功能       ; d4 l/ A, G& K
**********************************************************************************************/
) D& M% i6 D  F% z8 N#include <STC12C5A60S2.H> ' w; D4 u, E6 ]6 T1 X7 L
#define DIS  P2 0 ]8 V* G( c' R8 |, V  a! W* A% Y2 Y
unsigned char NUM;
# U$ n3 I  y! L. x0 x; ]( Munsigned char code disdata[]={
7 @1 U& t8 z: ]5 o0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 //无小数点数码管段码表(0~f) 4 _1 G% m# F% T# V$ o
};
) Q5 e: b0 K* f0 f/*********************************************************************************************
7 e3 E) }' H6 H: d1 f2 d8 S; ^  p5 v函数名:PWM初始化函数" {$ e$ C3 r2 p. B
调  用:PWM_init();
! `7 m- @/ A. Y- l9 N参  数:无
- L' K/ m1 v! g2 m* J返回值:无
- U+ Z) D  d: S( i; q, h结  果:将PCA初始化为PWM模式,初始占空比为0
4 T7 z& c# H' C' f) {5 W备  注:需要更多路PWM输出直接插入CCAPnH和CCAPnL即可
' S: ?- ?; n, N9 n" q/**********************************************************************************************/
5 b, n3 g7 r  k  |/ k$ i/*void PWM_init (void){( b# E6 j: u9 T/ R  D+ X( }
CMOD=0x02; //设置PCA定时器
" I$ \% U5 u% [% Q4 ~3 s. C  CL=0x00; + W: }& P5 c; D7 b+ x3 T# n5 V
  CH=0x00;8 N# j% u0 n. Z3 P  c1 k% ^
CCAPM0=0x42; //PWM0设置PCA工作方式为PWM方式(0100 0010)
  d9 ~$ q6 O& _  CCAP0L=0x00; //设置PWM0初始值与CCAP0H相同. a8 Z3 u5 p) h' C' l
  CCAP0H=0x00; // PWM0初始时为0
' C0 I, C1 q3 c4 N% Z9 g CR=1; //启动PCA定时器; _( q' [# s* z7 ?! l
}
% z. z1 W* B- m/**********************************************************************************************/
) v, B% l/ c" }/ S
- M2 l8 ^) a  x0 g2 s9 r5 Y

; S0 }3 E# c: n; @8 b! M: U/*********************************************************************************************
) l, p4 H# f! M: ^5 P  T函数名:UART串口初始化函数( D) _1 s( r" Z9 Z
调  用:UART_init();
% ^! u3 ]/ M' ]& k9 d! x5 f# j$ R% g参  数:无0 g! k- D2 b( \/ N( Z
返回值:无/ f8 T% C  V; `( {
结  果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用)4 F. ]& \7 ~  W$ Y  ]
备  注:振荡晶体为11.0592MHz,PC串口端设置 [ 19200,8,无,1,无 ]9 f3 S* A* c* b% W" X
/**********************************************************************************************/
9 E! u- w: ^9 a* \9 u$ Y2 Z/ zvoid UART_init (void){3 x- M* Y0 H" S/ _5 a
EA = 1; //允许总中断(如不使用中断,可用//屏蔽)
' M3 f7 s! O' g2 d ES = 1; //允许UART串口的中断
& O) h, O) Y: N9 R1 |$ B& N TMOD = 0x20; //定时器T/C1工作方式2
; |9 B: \0 J1 t7 t3 ?* p SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收)
- C/ D. g* E& M9 h2 K0 p TH1 = 0xFD; //定时器初值高8位设置' R0 i7 e$ D! M4 K" X
TL1 = 0xFD; //定时器初值低8位设置/ X& e2 p. ?* j- k
// PCON = 0x80; //波特率倍频(屏蔽本句波特率为9600)1 b5 _! X  z4 `5 r
TR1 = 1; //定时器启动   
/ x+ s4 W+ o3 r" ~6 r. o}
! a4 T6 n. E! X/**********************************************************************************************/
# `) R+ z  V5 w: A0 k; N/*********************************************************************************************
& J8 P1 g4 f- Y; O5 a- h7 {) h函数名:UART串口接收中断处理函数
9 G8 b0 d" Z* P. J调  用:[SBUF收到数据后中断处理]$ B, h0 A! C+ N- p* b& z9 R! R
参  数:无
7 k5 X" g" ~- `2 i" ^& X! {返回值:无0 K+ ?8 ~3 f+ X- e+ i
结  果:UART串口接收到数据时产生中断,用户对数据进行处理(并发送回去)4 x$ e" s2 w# |- a7 ]5 i  f- G% _
备  注:过长的处理程序会影响后面数据的接收% @  f* w: Z, [
/**********************************************************************************************/
0 D6 }2 g( `! J6 @- u- p5 L* h/ Kvoid UART_R (void) interrupt 4  using 1{ //切换寄存器组到1: \2 k' i, o* c5 D/ p* m
unsigned char UART_data; //定义串口接收数据变量# d+ R/ F6 i+ ?$ {8 F) J
RI = 0;   //令接收中断标志位为0(软件清零)
7 C0 x7 y( s9 Y5 p3 l. j- M& W UART_data = SBUF; //将接收到的数据送入变量 UART_data
$ _8 i- ^" L( c4 s8 x; E' ] if(UART_data == '0')  NUM=0;
- P3 K, D. ?, {% `+ j5 O5 n1 U if(UART_data == '1')  NUM=1;
# ]# d" D  P2 @+ m3 M) x  R. ` if(UART_data == '2')  NUM=2;
) B, C; K/ j( E$ z if(UART_data == '3')  NUM=3;
8 V) z# N  w8 ]: X0 y" \ if(UART_data == '4')  NUM=4;
8 i4 z' B& l( E7 @5 n+ \ if(UART_data == '5')  NUM=5;- I$ Y, ]0 e* h# {
if(UART_data == '6')  NUM=6;
* v3 F( `0 K$ ~! t5 i; g; } if(UART_data == '7')  NUM=7;! a! z, X8 v3 L* L) B3 H
if(UART_data == '8')  NUM=8;+ U  e  M8 V! ]1 c
if(UART_data == '9')  NUM=9;
1 v/ Z. J, m) ?& k if(UART_data == 'A')  NUM=10;5 Z7 f  Q# X8 [$ H
if(UART_data == 'B')  NUM=11;
' \- ^1 _+ k  W8 D/ [: S if(UART_data == 'C')  NUM=12;
) S. b, Y5 K! c if(UART_data == 'D')  NUM=13;
; ?% M/ N( z; O5 M4 m5 ^  y/ ? if(UART_data == 'E')  NUM=14;+ n4 q! R% U! p4 X' w  _
if(UART_data == 'F')  NUM=15;( Y4 n& ^9 ]* P( L2 {3 W. P
}
3 L( Y, C8 P: i/**********************************************************************************************/
* D% z& f5 K: h/*********************************************************************************************
, d7 @1 _* b/ z& `$ s' Y! `函数名:PWM0占空比设置函数
) K/ M2 G( _& n( T. f- A$ r调  用:PWM0_set();
7 {' o5 k# h# l8 x: E0 ]; Z参  数:0x00~0xFF(亦可用0~255)* ]4 ?# m6 O% E- q: E4 x; `
返回值:无
8 d& H- c. N. [0 ^( R7 M4 ^结  果:设置PWM模式占空比,为0时全部高电平,为1时全部低电平
$ O& k# E% ^" k6 f; n7 Y- ]) K# U备  注:如果需要PWM1的设置函数,只要把CCAP0L和CCAP0H中的0改为1即可
  h1 f1 c# p4 t4 X0 _7 L/**********************************************************************************************
$ c. X( R/ `( _1 @( Ivoid PWM0_set (unsigned char a){
! |, g( R) y$ d% Q: @& h CCAP0L= a; //设置值直接写入CCAP0L, v. Z6 V1 T5 Z4 h$ t
  CCAP0H= a; //设置值直接写入CCAP0H
7 h" S& _! h1 N% x& N}
, E. F- h( B/ j1 S/**********************************************************************************************/% J0 y5 R; k) Y. c5 A
0 ?4 N+ f4 ^' m4 ]& y

2 Q  O# f* P* Y' o- ~/*********************************************************************************************7 z1 @5 j/ T" g9 }' s
函数名:主函数
8 X- \3 T; p' W7 q7 }$ e调  用:无
: N2 z; t: {8 s$ t3 c/ m9 o: \参  数:无9 G# i: E1 @+ y7 V9 x
返回值:无
* m7 R: i5 ^% h$ I, J结  果:程序开始处,无限循环
( G/ |( d8 X) O7 I2 A备  注:0 i# p/ M- Z+ b- Q$ r. r6 j& B; n8 y
/**********************************************************************************************/" o. |; @% x+ [7 q, `9 c
void main (void){2 y8 @0 R2 j  w
NUM = 15;' l3 b; L1 K. J0 e2 Q8 N  b9 r
UART_init();: x* u" q3 r; e$ P

& E& ?, v/ g" x# z  O4 `
, ~3 v& `9 P1 Q5 A  L1 M7 h( q
/ Y4 G% x; E3 e, R  S; W
…………限于本文篇幅 余下代码请从论坛下载附件…………
/ ~6 o: ^- ]* ~( \' w: ~) c; E8 [: ]# p- H

. l5 `: Z' s2 R' c/ @6 y
: X  ]" t- F' o( \3 s
游客,如果您要查看本帖隐藏内容请回复
: O  J9 l$ a5 [% H* `& `4 p
7 m& I2 a6 L  N, Z* r
( x9 Y- Y* H- j0 w4 \  e% m; D
5 t& ~6 j1 e6 ~1 V3 ?6 E) O) |' b
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-9 06:04 , Processed in 0.156250 second(s), 27 queries , Gzip On.

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

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

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