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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
单片机蓝牙数码管 完成最基本的蓝牙信息显示以及开关控制功能
( X7 z8 S: B0 T/**********************************************************************************************
" P+ H3 w; B+ q; S, Y' g. q) x1 ~- b  p程序名:    蓝牙数码管9 _# j/ W& m/ H0 K2 L. u
编写人:    莫沫 ! h1 w8 L, y; A: m# m/ R
编写时间:  2017年1月26日
) u% l8 C$ p4 V9 }硬件支持:  STC12C2052AD 12MHz) h) c7 p6 O6 Y& u) P& v; l
接口说明:  pwm P3.7  * J3 h' W7 u/ I. G& |+ m
修改日志:  
9 `, s9 y9 P0 U7 d7 m  NO.1-   2017年1月26日 14:56:26  完成最基本的蓝牙信息显示以及开关控制功能       ( N0 }% k8 ^7 d
**********************************************************************************************// V3 _' ~2 t7 I- H6 J
#include <STC12C5A60S2.H>
" ^9 C! V9 y+ Z#define DIS  P2
2 e6 q' @" z. c! Q% r+ b0 _. G4 B. ~unsigned char NUM;4 ~$ D, F  v1 }2 z# _. Y
unsigned char code disdata[]={" O0 I( a. i6 Z9 v+ ^
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 //无小数点数码管段码表(0~f)
+ r1 A# {0 S% c* ]};
3 h8 ]; o1 E: v! `, A& ^/*********************************************************************************************
, q: `: G' r- j& c# N3 Z( A函数名:PWM初始化函数: y) F$ Q- G& j
调  用:PWM_init();
9 k* q; @" D0 A+ W2 j, j参  数:无
# ]% Y6 b, h5 U返回值:无
! [* K- h) a% F" v' ~结  果:将PCA初始化为PWM模式,初始占空比为0
! r+ ]8 s# W$ k% t& E% j2 H, w5 p* L备  注:需要更多路PWM输出直接插入CCAPnH和CCAPnL即可, N5 ^1 n( W) I# Q& r7 W! n
/**********************************************************************************************/
, J( R8 u# B8 e3 [. J1 e/*void PWM_init (void){8 u- a, C: Q$ @4 {) M3 z
CMOD=0x02; //设置PCA定时器: f9 n6 B7 h. e9 ?: i9 q
  CL=0x00; 1 H6 W$ P8 {" O" G
  CH=0x00;$ R4 @5 n8 J- w- C8 i, t
CCAPM0=0x42; //PWM0设置PCA工作方式为PWM方式(0100 0010)
# M" l9 Q% y/ ?& D6 K5 j* G+ ~: K, Z  CCAP0L=0x00; //设置PWM0初始值与CCAP0H相同
* H+ ]% K( y7 A* l- U! Z  CCAP0H=0x00; // PWM0初始时为0; w9 G5 p  Y6 }2 \6 ]
CR=1; //启动PCA定时器
. D) g& E7 x7 X: J}
, J. q" y4 L4 \& @* C* L/**********************************************************************************************/9 Q3 b3 a( r/ z- A" ]

* O% W' J& U# W* j" q9 S

/ t/ \& W/ s1 W/*********************************************************************************************, L' h' l! A7 ~8 J
函数名:UART串口初始化函数2 Z6 @9 J/ q" k5 |) G! E
调  用:UART_init();
, M' _2 z- ?+ d参  数:无
) J! f; ]; H6 {; m; @- E返回值:无
! W2 S3 I% k. t9 t结  果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用)
7 z' u. t3 l, U  f# u备  注:振荡晶体为11.0592MHz,PC串口端设置 [ 19200,8,无,1,无 ]
: |- y7 m3 Z0 k4 ~/**********************************************************************************************/
2 I  Y6 B. F8 O* c! svoid UART_init (void){
* Q- @& ^6 r- m& A. V EA = 1; //允许总中断(如不使用中断,可用//屏蔽)
2 T  o+ y& p5 o( ?/ \) G" j ES = 1; //允许UART串口的中断
" l4 m0 D9 `( y7 d1 F, L TMOD = 0x20; //定时器T/C1工作方式2
5 J/ O+ }9 P& r SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收)2 F: w# D/ Z; C
TH1 = 0xFD; //定时器初值高8位设置
! w" f9 i# w4 l$ `/ K TL1 = 0xFD; //定时器初值低8位设置9 ]6 S2 W+ {% y6 G9 k
// PCON = 0x80; //波特率倍频(屏蔽本句波特率为9600)
. T$ I. A9 I" U) _ TR1 = 1; //定时器启动   
$ _# q4 a) U( ?  n; v}! n- \0 Q% Z9 a& H0 D
/**********************************************************************************************/
$ ~% l/ S1 n/ n0 M3 O# W/*********************************************************************************************; w4 G0 h& N$ D
函数名:UART串口接收中断处理函数# e8 m% e! \1 K8 m: N. _; j% D5 s8 L8 r
调  用:[SBUF收到数据后中断处理]/ v/ c* ~" ^/ a. C
参  数:无1 Q* p, f- i5 F2 y8 \  T3 W# C# q
返回值:无  T0 A* s& B( k0 q. m3 \
结  果:UART串口接收到数据时产生中断,用户对数据进行处理(并发送回去)( ?7 ~+ A, s, G0 p3 C
备  注:过长的处理程序会影响后面数据的接收2 G, @2 O, ?6 s& O6 C% s  B
/**********************************************************************************************/. ^/ V9 M2 R$ D" N% ~( y
void UART_R (void) interrupt 4  using 1{ //切换寄存器组到1. ?; {% C- i/ {* s2 _. _3 y" i
unsigned char UART_data; //定义串口接收数据变量
+ c8 H& W2 F, J$ _4 {7 { RI = 0;   //令接收中断标志位为0(软件清零)' o2 J5 e! C  d: Z. Y* m
UART_data = SBUF; //将接收到的数据送入变量 UART_data
+ |" s( q1 [  B1 m if(UART_data == '0')  NUM=0;1 w, C! Q$ }, l  s# x. y
if(UART_data == '1')  NUM=1;9 N( |) W6 S9 V' Z% k
if(UART_data == '2')  NUM=2;
" V5 x: l% Z0 l6 `+ Y if(UART_data == '3')  NUM=3;
9 v, ~4 V, M, ~! `  Q if(UART_data == '4')  NUM=4;
% t1 {* R3 M& K% s* A& I& l$ I if(UART_data == '5')  NUM=5;
6 I6 h0 _0 B  v1 L2 E$ s if(UART_data == '6')  NUM=6;
% \& s0 n# m' E9 b if(UART_data == '7')  NUM=7;
3 ?7 g' m! a; k3 V if(UART_data == '8')  NUM=8;6 J- ^, A  C! v7 u. [, d
if(UART_data == '9')  NUM=9;
8 A/ r: C" S: \: \/ p% ]) J if(UART_data == 'A')  NUM=10;9 n- Y; O! `0 A+ v
if(UART_data == 'B')  NUM=11;
4 O4 }' [/ V5 W/ g( U  j if(UART_data == 'C')  NUM=12;1 L7 {9 m5 |. R) F
if(UART_data == 'D')  NUM=13;
( Z1 P- [. Z' |" \; o2 `/ r. a if(UART_data == 'E')  NUM=14;. K$ h5 e' l6 G
if(UART_data == 'F')  NUM=15;
5 q/ l+ Y7 z0 C7 R1 w3 F- O, u}
4 q) g$ c/ c7 G& `/**********************************************************************************************/  }8 j5 o. F) K  B, n( y
/*********************************************************************************************8 j2 P% M1 `7 r8 L( N$ V
函数名:PWM0占空比设置函数* o7 s: V) q' H8 K8 V
调  用:PWM0_set();% a) s" Q3 t4 e( o9 t! ?
参  数:0x00~0xFF(亦可用0~255)& {. p6 ]; I# @7 m
返回值:无
0 @0 K5 h/ W. j6 v  I# Y/ k6 A结  果:设置PWM模式占空比,为0时全部高电平,为1时全部低电平
( H; B' j7 T6 z备  注:如果需要PWM1的设置函数,只要把CCAP0L和CCAP0H中的0改为1即可) q' e( w! ]) f! k- m8 m! H; d, C# N
/**********************************************************************************************
, q7 [6 Z1 f% B9 P) j9 ivoid PWM0_set (unsigned char a){# `5 D5 V+ V" W- W* E
CCAP0L= a; //设置值直接写入CCAP0L
$ X* `/ t3 U# @7 [/ J) a  T  CCAP0H= a; //设置值直接写入CCAP0H
' W+ i$ T# Q: ]7 q* p. T}
; V! D$ }0 h4 E' R# @4 C/**********************************************************************************************/' N( [, F9 t9 q

" |. `5 t( q# D* P/ P
, N  U9 E. [" I; t3 r- k
/*********************************************************************************************
' g5 ]1 T6 T3 {9 y5 C( f函数名:主函数% P! k  P( q2 i3 i3 s2 z
调  用:无
+ G0 o7 I4 X& o. l) [7 E: r参  数:无1 E5 O1 ]0 P  s' e& C' P
返回值:无
; i; b+ C% l0 J5 ~7 }4 c; U) c! T4 u+ L结  果:程序开始处,无限循环- P6 X6 t2 _  j! ^* }
备  注:
  ?. D/ |# ]  E8 l3 ?/**********************************************************************************************/
" i/ z8 _0 X" H5 c3 K3 n( \void main (void){
/ _* d& S/ g( F" N NUM = 15;
5 v. d8 N! ^. X2 l; f/ G UART_init();  a3 j9 O" L1 P; Q- Z6 |1 {

" h, h' p1 f; H+ K5 [% p
) Y" X/ B8 E8 P
/ T9 Z4 S; w8 v7 y6 D
…………限于本文篇幅 余下代码请从论坛下载附件…………( }8 Z& S- H: ^# Y6 H8 _, d
& g: c' U( g  R* Q: n( G" H5 h+ _3 \3 k
1 _  Q' F2 G! X6 s( Y# J

" f' C3 X8 k- x& z7 f( X( k
游客,如果您要查看本帖隐藏内容请回复
+ f& c- W( R8 S9 H, o1 e4 B
! `  q6 v9 v0 U( h

8 {( i- M- I( Z% h4 K
0 W- |) I/ ~6 @% @/ G
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-19 21:20 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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