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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
单片机蓝牙数码管 完成最基本的蓝牙信息显示以及开关控制功能
- t. v# `  v; z: O& S# J' _/**********************************************************************************************0 e3 U5 s$ j0 D$ k7 W2 o
程序名:    蓝牙数码管
  ~. `: [( D" U) C2 f" I1 t编写人:    莫沫 
- A. s# z) P+ H6 f编写时间:  2017年1月26日
3 ~# a$ Z7 C: E5 l) ]  B硬件支持:  STC12C2052AD 12MHz1 E0 K0 Q& b9 |6 P
接口说明:  pwm P3.7  
! x; G5 ^! w0 Q! e, G- Y: u修改日志:  
. c/ ~6 i2 J: M, \8 S4 v  NO.1-   2017年1月26日 14:56:26  完成最基本的蓝牙信息显示以及开关控制功能       6 F# S2 {0 p& l  L4 S3 Y. i, t
**********************************************************************************************/
) j$ O4 H1 f- q# T' w3 [: m#include <STC12C5A60S2.H>
, V; R& `7 k, J$ L) Z9 j, a#define DIS  P2
4 t, D" A/ @7 `; Y% d$ S" {unsigned char NUM;2 @2 @' e" Q: D* s0 f
unsigned char code disdata[]={
% c& U% a! A8 T3 R0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 //无小数点数码管段码表(0~f) ! S. F2 ~( f. O0 J# l
};  r8 b; Z. l" @
/*********************************************************************************************
& D( w& @9 O/ l3 S: k6 \# y' Y4 Q函数名:PWM初始化函数
. @4 A. E2 l! g9 ^- B+ f调  用:PWM_init();% i4 @: z3 I3 \$ a4 N- c% x/ m
参  数:无
3 g1 V" x3 _+ ^9 y0 E返回值:无: q7 S  T, m) S* V& @: ]  B; M
结  果:将PCA初始化为PWM模式,初始占空比为01 N; `6 j7 V: ]8 [& C9 w# \: C
备  注:需要更多路PWM输出直接插入CCAPnH和CCAPnL即可2 H$ v  N) L1 H% E+ S) N
/**********************************************************************************************/
% k" y# Z$ H6 p6 z- n/*void PWM_init (void){
+ X% l0 x8 ~) q0 kCMOD=0x02; //设置PCA定时器. \: z! ]6 k1 t! W4 s
  CL=0x00; " w' C& c$ ?9 i/ F3 j- f+ h
  CH=0x00;  ^) E3 [+ a( f( J& G( o. U, X
CCAPM0=0x42; //PWM0设置PCA工作方式为PWM方式(0100 0010)6 V8 `7 l$ T' R- X* f! J6 o. H
  CCAP0L=0x00; //设置PWM0初始值与CCAP0H相同
5 M! U+ g- K- K8 A- \# H2 ?  r  CCAP0H=0x00; // PWM0初始时为05 L% S3 [% K; L* l9 D4 x! g
CR=1; //启动PCA定时器
$ r8 C+ L) Q1 ~) y6 Y7 u}
- q) ?4 r- Z) P: p- r5 B4 m/**********************************************************************************************/8 R5 p# y; F5 W

, L" ?( Y; S; \  B3 M9 T

7 [! p  v4 c& w# z+ f- ?/*********************************************************************************************
5 S( \0 B# y2 q' h函数名:UART串口初始化函数$ G/ g+ x$ r' |+ E* b( W
调  用:UART_init();
7 u  `& K8 X$ f, \参  数:无
: N% U$ v% j* y* K6 E返回值:无& v# U1 @/ V& s# e; q1 N/ t
结  果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用)
; Q% D& l) h+ g/ G备  注:振荡晶体为11.0592MHz,PC串口端设置 [ 19200,8,无,1,无 ]/ Y3 m  N6 c( a  z* _7 t2 o( v& F
/**********************************************************************************************/
1 {/ {- E# K# f% uvoid UART_init (void){; m6 [0 ]- Q* K9 N% Z1 j
EA = 1; //允许总中断(如不使用中断,可用//屏蔽)
/ v* N' `( b) F5 H2 ?+ t ES = 1; //允许UART串口的中断, ]. Q9 z# F4 {+ o: c- p
TMOD = 0x20; //定时器T/C1工作方式2/ g6 O7 ]2 {0 M$ A: T! ^8 p
SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收)
! Y- M& x) a# Y TH1 = 0xFD; //定时器初值高8位设置! b5 M, E( B5 W" W* G3 {+ ^$ @1 S
TL1 = 0xFD; //定时器初值低8位设置
8 e6 i# A% H# F// PCON = 0x80; //波特率倍频(屏蔽本句波特率为9600)2 T+ O% K3 \7 x
TR1 = 1; //定时器启动    # W! j. F: A( N) s! X
}
2 \% \# E3 F, n# ?) u% D/**********************************************************************************************/
" g$ [0 Z7 v. K, p+ W/*********************************************************************************************( v$ L  R+ \0 m5 f3 b
函数名:UART串口接收中断处理函数
6 B8 B4 k9 s) g调  用:[SBUF收到数据后中断处理]
/ j' v( @9 `2 G1 b4 {0 b! X1 v8 t参  数:无
, I/ B: s" _+ ~* e返回值:无
+ n! E! e: \! s# b  p7 |& h, w结  果:UART串口接收到数据时产生中断,用户对数据进行处理(并发送回去)" v; d1 h7 ?5 H1 Z2 M' j& a* G+ J
备  注:过长的处理程序会影响后面数据的接收# l; Q! X/ h9 P- x! g6 q  \
/**********************************************************************************************/
" q" _; P$ Z. a; l1 H& Lvoid UART_R (void) interrupt 4  using 1{ //切换寄存器组到1
6 E) U4 B. \+ v' M6 O unsigned char UART_data; //定义串口接收数据变量
* a) @* x  y8 C8 f" Q1 [ RI = 0;   //令接收中断标志位为0(软件清零)
' t3 P2 ?+ D5 P. a2 D+ A UART_data = SBUF; //将接收到的数据送入变量 UART_data# G$ h, m* S: w" T
if(UART_data == '0')  NUM=0;
4 b9 g) Q  [: N if(UART_data == '1')  NUM=1;0 u) M" ~+ y* g
if(UART_data == '2')  NUM=2;
8 l* |- G  E/ W, N- n* v# ^7 m if(UART_data == '3')  NUM=3;: m  j& D! w' T
if(UART_data == '4')  NUM=4;4 Q8 h; l  \/ d" l; k* ]; B
if(UART_data == '5')  NUM=5;7 _# R) K4 P& Z! S
if(UART_data == '6')  NUM=6;* }" j) S- |! S" z9 X7 `& q
if(UART_data == '7')  NUM=7;$ I( ]. {. Z# G5 T  W0 Y
if(UART_data == '8')  NUM=8;
) \' j/ f9 O0 G3 e* M& H' f( ~& S/ L if(UART_data == '9')  NUM=9;( k6 f6 M4 b- Y3 M) C7 |
if(UART_data == 'A')  NUM=10;; E3 U. n+ I! _5 m6 S1 E9 Z9 @
if(UART_data == 'B')  NUM=11;
" ?; x1 K& n& J8 u* s7 I if(UART_data == 'C')  NUM=12;
* S8 G8 b8 h, R, o1 v if(UART_data == 'D')  NUM=13;
# H+ T+ G+ V% q" O& U3 |2 ]5 y: @ if(UART_data == 'E')  NUM=14;" T4 i3 T0 r  l7 ~* h; [
if(UART_data == 'F')  NUM=15;5 u$ I, h6 K3 P- W" X1 F
} " ^( M7 Q0 `4 _% p* i& v8 o) j
/**********************************************************************************************/
& D; E4 p8 g3 U/*********************************************************************************************) [2 S- j5 m, {5 R4 V
函数名:PWM0占空比设置函数% O, {) Q! o7 e" x* n) }
调  用:PWM0_set();
$ {% a1 D1 p; W, q. d参  数:0x00~0xFF(亦可用0~255)( X7 ]3 w) c, P0 G. T* S9 i! R
返回值:无
/ t+ [" U( L% o* t9 Q3 h结  果:设置PWM模式占空比,为0时全部高电平,为1时全部低电平- S* P; v. j, N- S: R+ n& f7 X
备  注:如果需要PWM1的设置函数,只要把CCAP0L和CCAP0H中的0改为1即可4 z8 D3 L1 n9 p: Q
/**********************************************************************************************) A5 y4 k( m4 O
void PWM0_set (unsigned char a){
" m5 D% z, Q( g0 t3 t5 y0 P& j$ O7 c CCAP0L= a; //设置值直接写入CCAP0L5 j* L4 g3 w  T3 Z4 }
  CCAP0H= a; //设置值直接写入CCAP0H; D4 q6 T% w( ^& v% ^. N
}8 N% J. E+ o8 a
/**********************************************************************************************/, F) i& z) ?; A: F; X! i' ~3 }" A
! \) ]. }& Y+ C# R2 d

1 ^+ L- P5 a* R" F; `/*********************************************************************************************
7 w# W" N/ x7 o7 U; V( A' Y函数名:主函数* V3 N0 j' E7 T9 S
调  用:无
4 A9 s" ~6 B0 h9 p参  数:无& @6 V8 g8 C3 C- E  f
返回值:无( d3 F/ |3 I1 U9 Q, i9 ?" U
结  果:程序开始处,无限循环. e4 U7 `6 F9 C8 l
备  注:) w1 O& c" W9 A  J
/**********************************************************************************************/- q4 z! L" G* K1 h$ U  H' p
void main (void){3 w8 r! n: [/ Q2 v1 ]
NUM = 15;, P4 `$ g, `) V9 }1 u  l
UART_init();+ v" ^% d! x7 p3 p
4 o+ d! L: Z. M' k# r% n  O
9 r+ N2 ^* o$ S
6 T3 e% U: u  u" y, u5 Y
…………限于本文篇幅 余下代码请从论坛下载附件…………
# @% t7 G4 l5 g: U+ d
" F$ _: E7 j% _8 |! C; T1 [
  o" f$ t2 Q: U' W0 @$ y

& U& c) b$ k+ @% [
游客,如果您要查看本帖隐藏内容请回复
6 @2 @5 v: \0 A

# E# f9 W: V, H- R7 [9 Y

5 z- U! j3 @: {  c9 a5 ]
$ a8 U; T3 ?; g1 A, R; Q
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-28 12:07 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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