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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
单片机蓝牙数码管 完成最基本的蓝牙信息显示以及开关控制功能
: K% }: h1 I" P' V: j6 s- r- o/**********************************************************************************************( Z5 ]6 T2 }& M9 z# B: R
程序名:    蓝牙数码管( W9 X0 H# O: {! q! {
编写人:    莫沫 4 l/ p0 \) V" U4 D" S6 g5 [! t
编写时间:  2017年1月26日
5 k8 }- R: ?9 f$ w% S% Y. Z- e硬件支持:  STC12C2052AD 12MHz
6 O! {' N! \8 i8 i- D( h接口说明:  pwm P3.7  1 J3 |9 v. P% S% G8 o% N" a1 D  I
修改日志:  . M. @. w. W- ~) b6 _, I/ [
  NO.1-   2017年1月26日 14:56:26  完成最基本的蓝牙信息显示以及开关控制功能      
: Q0 [( G3 P( f0 O( U0 E$ @**********************************************************************************************/) T  I) {+ n4 l5 x0 o1 B
#include <STC12C5A60S2.H> ' ]9 x' Q/ Z0 u# p4 |0 |
#define DIS  P2 + Y) K" @* f/ I+ U) N; N
unsigned char NUM;% o- T3 U" t! W& Z
unsigned char code disdata[]={! U) e0 o! Y/ J; x
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 //无小数点数码管段码表(0~f)
  T" y( E( D" J# c/ K' g};7 U. H3 c+ A8 k6 @" @
/*********************************************************************************************
! n7 v4 ~  Z7 F& a# I" c) _函数名:PWM初始化函数6 K" h2 A( _8 [  o" ?% ^% o# u! c
调  用:PWM_init();
" g$ H/ g% H' N8 }参  数:无
9 k3 ^1 O6 i8 i3 T; }, S+ h( C返回值:无. |; k8 ?* i. P1 J2 i
结  果:将PCA初始化为PWM模式,初始占空比为0! n5 j7 X% S. T' J: P# \. a% p8 P
备  注:需要更多路PWM输出直接插入CCAPnH和CCAPnL即可3 |1 ~1 B1 D( I1 ?3 ^5 K' \5 s
/**********************************************************************************************/
1 q* V. p7 r* R9 \/*void PWM_init (void){3 w% K$ B- K- u: p- L! l# H4 C
CMOD=0x02; //设置PCA定时器
3 y; Y0 E1 {4 L  CL=0x00;
1 L: p; I* c+ b4 w: n0 W  CH=0x00;" P* ?' x" v$ a! ?8 c
CCAPM0=0x42; //PWM0设置PCA工作方式为PWM方式(0100 0010)0 l+ }0 O  t, E+ l. i: C9 D  \# `0 X
  CCAP0L=0x00; //设置PWM0初始值与CCAP0H相同2 v5 \% h" D# ^2 s, t7 I# t& o' y
  CCAP0H=0x00; // PWM0初始时为0
3 |! W# H! x$ b# H8 a7 j0 M$ [ CR=1; //启动PCA定时器' ^7 o) ~% l5 Q# s
}: O8 r) E- ?7 q7 f9 ?$ o! w& k; s
/**********************************************************************************************/
1 j; u$ w; F/ f  n5 w& F4 a2 B
- q* B; J0 a$ w
/*********************************************************************************************9 c) H1 G8 i. O+ c$ B
函数名:UART串口初始化函数) _7 q3 T0 }4 v# ?3 Y* Y# X
调  用:UART_init();
1 w+ I' w3 A$ A参  数:无
2 s+ }1 J- t$ O: V) \返回值:无
! G2 D5 S" o! @" \- u( F' c& ^+ k! {结  果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用)1 g3 c% Q4 X3 u- r2 ?% I
备  注:振荡晶体为11.0592MHz,PC串口端设置 [ 19200,8,无,1,无 ]4 L) k. @. w3 [) g0 v0 F8 F
/**********************************************************************************************/
, T' `" G$ t6 G0 q/ Lvoid UART_init (void){
3 J% k; i9 B! p+ Q  K# X  Z; N EA = 1; //允许总中断(如不使用中断,可用//屏蔽)
6 y- R3 }' L5 ~3 t. o" d ES = 1; //允许UART串口的中断2 }7 @; n9 J# p1 @
TMOD = 0x20; //定时器T/C1工作方式23 s6 ^, }/ j1 V0 j  }5 `+ I
SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收)# c3 a% ?( f8 Y
TH1 = 0xFD; //定时器初值高8位设置
/ U  w6 u1 I9 P: q2 T! ^0 G( D! v; B TL1 = 0xFD; //定时器初值低8位设置- W- A: M4 U* S6 M! [1 n
// PCON = 0x80; //波特率倍频(屏蔽本句波特率为9600)" S* \( I, v/ N; v% N8 f1 i
TR1 = 1; //定时器启动   
  G* a% D6 r; F" c}- H2 G  }; X2 L% F/ x
/**********************************************************************************************/
8 j6 [3 }! P" j8 E& S7 A/*********************************************************************************************
! }& F5 O) `& v$ O" l; W函数名:UART串口接收中断处理函数/ K6 Y6 Z- P" ]. o+ q
调  用:[SBUF收到数据后中断处理]
1 y) T$ N7 J- |* K' _参  数:无# l( F& ]! ~* `" x# V
返回值:无% n7 S* Y# j7 w  Z; l( m7 {% S
结  果:UART串口接收到数据时产生中断,用户对数据进行处理(并发送回去)' X3 F/ ~% y7 c2 Z* B3 O. A, ~
备  注:过长的处理程序会影响后面数据的接收
3 M6 x! q2 C1 j2 \/ u/**********************************************************************************************/
. g& V/ E1 I* t3 Z7 B4 |void UART_R (void) interrupt 4  using 1{ //切换寄存器组到1' W: H9 }9 G% ]. m
unsigned char UART_data; //定义串口接收数据变量
* R8 e2 f2 J7 t( V* q: J) P' f, w RI = 0;   //令接收中断标志位为0(软件清零); o/ p3 ~% ~) Y2 j# P8 T
UART_data = SBUF; //将接收到的数据送入变量 UART_data* z8 E3 g& X! J! Q
if(UART_data == '0')  NUM=0;" |: Q# E; t0 ?8 P
if(UART_data == '1')  NUM=1;
  Z4 a( z3 n: `# k$ ^* I6 Q; ] if(UART_data == '2')  NUM=2;) p  x/ j6 z% ]: A
if(UART_data == '3')  NUM=3;
  e1 Z! f* o/ e6 @% A" H' F if(UART_data == '4')  NUM=4;
& j' r1 F% v% R$ P& E. b- P' E if(UART_data == '5')  NUM=5;; |5 V1 I8 ]* o4 _2 B: c
if(UART_data == '6')  NUM=6;+ U; b9 h- B) z. x6 X. C
if(UART_data == '7')  NUM=7;
: u9 ~& \. R' W" V8 u if(UART_data == '8')  NUM=8;
. C6 |$ h$ ]. {  z if(UART_data == '9')  NUM=9;) N' v; U3 z% M1 e* R
if(UART_data == 'A')  NUM=10;
) E* _( T* }  N# Y1 q* N3 o if(UART_data == 'B')  NUM=11;) o. g1 V" q6 A6 d( K! q
if(UART_data == 'C')  NUM=12;
. y! r/ Y% y2 o4 Y% U* L if(UART_data == 'D')  NUM=13;6 C' H# d: k" I& U9 r& i7 V
if(UART_data == 'E')  NUM=14;
0 U2 O8 A1 h9 O, ^5 } if(UART_data == 'F')  NUM=15;
: \5 n5 O9 [9 ]7 W- H1 I$ W} * @4 u2 {: N+ D) [. |
/**********************************************************************************************/
5 F3 b- ^- }4 s- ?" p7 m/*********************************************************************************************& W, E2 h* q* A$ o! t) `
函数名:PWM0占空比设置函数
& q6 S4 _3 z6 ^2 f; i7 a- h1 M# {调  用:PWM0_set();
/ a% B! p# Q/ f* z+ [! c; q参  数:0x00~0xFF(亦可用0~255)
7 a( q! T7 a& L; g* ~0 A$ ]& s2 B4 x, l返回值:无
7 d* r( g5 R3 T% F8 e. v结  果:设置PWM模式占空比,为0时全部高电平,为1时全部低电平
+ F' s2 r  ?" }$ [* Z" V- {备  注:如果需要PWM1的设置函数,只要把CCAP0L和CCAP0H中的0改为1即可, S7 t5 n7 J0 U/ C! D5 D
/**********************************************************************************************
. M: o  {9 w5 ~2 C* xvoid PWM0_set (unsigned char a){
* Y, R! f. C# D$ s( } CCAP0L= a; //设置值直接写入CCAP0L4 e' ?* R) W) F+ p5 }% y# C% O
  CCAP0H= a; //设置值直接写入CCAP0H
8 U  a) X* Z) M' l4 I! U6 N; F}1 D0 T6 R) [! g' k% r: p+ I4 C
/**********************************************************************************************/
4 H* f3 I7 c) Q" O9 X9 P
+ W; [, O7 o2 ^9 o

3 \/ {0 {9 Q5 w& w/*********************************************************************************************
. c2 v2 j/ u( j& I7 u7 L' c# W函数名:主函数! ?; V. c% ^- Y% r# T
调  用:无
  s) A$ P% O. I参  数:无
. U; d( f" \6 M! A4 g返回值:无4 H- i# N6 S6 k9 `1 }4 o  i# s
结  果:程序开始处,无限循环
( [) {( c( A& a, v/ ?1 p备  注:
3 ^' W5 P' B$ [2 ?' [+ J2 M/**********************************************************************************************/; \3 U1 T1 O2 d5 q. W
void main (void){  g, h; ^% T$ F5 r
NUM = 15;
$ A& v! M7 A" a" B UART_init();
% _% ]% C6 z0 c) m9 E( o; X1 v$ ]/ S: E2 `8 m
9 t3 T7 |5 e2 |. P7 ]
9 s9 @& [  h/ ]
…………限于本文篇幅 余下代码请从论坛下载附件…………
' g6 f* W0 ?% c0 j6 I* J2 `! f. r% |6 X% |
. _* @0 w1 ]3 t, C

1 r0 ~$ z7 h3 n4 M  ~
游客,如果您要查看本帖隐藏内容请回复

, m" W% j- ?" n8 ^2 z" l. Q
5 U& d; A* ?% ~
9 X- a- {: t; A7 B- n( ]) ^6 W/ R/ W
* q1 D& M. m  v
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-2 23:13 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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