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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
单片机蓝牙数码管 完成最基本的蓝牙信息显示以及开关控制功能: c" q( Y* m3 t9 V
/**********************************************************************************************; D5 V  T: T+ N
程序名:    蓝牙数码管
, n9 Y# `# C4 v编写人:    莫沫 
4 M  l- @. K1 {0 y% l* Z) K编写时间:  2017年1月26日 % a9 X4 Z# b7 G4 s+ V; U
硬件支持:  STC12C2052AD 12MHz2 T2 g2 R9 D9 F3 K$ _, E. e
接口说明:  pwm P3.7  " j4 z  k8 R- n
修改日志:  
( @, y. `* `. x- \4 T  NO.1-   2017年1月26日 14:56:26  完成最基本的蓝牙信息显示以及开关控制功能      
3 w; m& {: P" a6 V+ d! M) e* J**********************************************************************************************/2 H3 U0 S- E: J, l( X$ |+ t% d
#include <STC12C5A60S2.H> 2 Z. U% P; x" i  d3 a
#define DIS  P2
2 r, Q6 }% j" [! Zunsigned char NUM;; [7 J; g7 r; a) T
unsigned char code disdata[]={
8 L& D7 k4 v: a0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 //无小数点数码管段码表(0~f) - }5 [4 `; E4 a  Y+ {9 a/ _# A# ]
};. j3 e! X( {6 r% i& \# E
/*********************************************************************************************9 j$ c' ]) @  v; P$ N% N
函数名:PWM初始化函数- N! A8 V9 U) S3 {- }
调  用:PWM_init();. E/ c2 y- B' v% m
参  数:无9 S, L7 m% ^5 }0 X
返回值:无0 T9 G0 ~3 K2 U6 n) N5 P
结  果:将PCA初始化为PWM模式,初始占空比为0' T8 P3 I( }4 n! Z
备  注:需要更多路PWM输出直接插入CCAPnH和CCAPnL即可
( ?3 R: l# Q5 z" d2 A! F4 C9 }0 T/**********************************************************************************************/
0 J: {8 D! {0 o/*void PWM_init (void){( B7 x) @6 y' F- }
CMOD=0x02; //设置PCA定时器
2 L( c" c) n* a3 A9 e. s- [2 s  CL=0x00;
( i, u, W; K0 X6 C7 ?2 {  CH=0x00;8 a' R% E  c2 w" d0 U
CCAPM0=0x42; //PWM0设置PCA工作方式为PWM方式(0100 0010)
  C" f/ D& R! v2 y  CCAP0L=0x00; //设置PWM0初始值与CCAP0H相同
% s, F! k' v- s: v  CCAP0H=0x00; // PWM0初始时为0
4 Z3 l* h8 w2 P4 W8 a* F& F CR=1; //启动PCA定时器
) {; p* M6 n: C7 x9 C* v  f; Q}
1 L9 ]! W$ o3 ^" H7 h3 k/**********************************************************************************************/# A2 `( z7 J7 G) V

* X* V9 B* }( g) B& Q

4 Y/ U8 _* }: e& h# j! n/********************************************************************************************** T+ }7 w# R7 `% N" i
函数名:UART串口初始化函数
0 V- G6 n& A- E6 v2 z$ l调  用:UART_init();
( G$ u# p8 {' P$ K6 C% `参  数:无: R, i& B0 ~5 L  b- T
返回值:无) K* T- p' u6 V, v
结  果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用)
! ?. ?! q! Z# b9 k备  注:振荡晶体为11.0592MHz,PC串口端设置 [ 19200,8,无,1,无 ]
: g+ f- q% y% v: X% P+ q/**********************************************************************************************/
& K1 S9 M+ s7 f/ T7 N1 P2 ]! @7 L# fvoid UART_init (void){9 L5 X% B/ x  l2 H/ C' D
EA = 1; //允许总中断(如不使用中断,可用//屏蔽)
; \( O, \5 `$ ~7 X0 g. c) L ES = 1; //允许UART串口的中断- a, g6 J& g/ q& C( V7 n7 I: Y$ a3 L
TMOD = 0x20; //定时器T/C1工作方式2$ |  ~( C* j0 B. _$ I2 L8 Z" {! l
SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收)
& x! ^7 c0 u1 t$ j% J7 q( o$ R TH1 = 0xFD; //定时器初值高8位设置. t% f8 o* z7 i: d2 C3 H0 |
TL1 = 0xFD; //定时器初值低8位设置& M5 y" s0 E4 I7 e+ L* A- ^9 [
// PCON = 0x80; //波特率倍频(屏蔽本句波特率为9600)* c6 F$ D8 }/ G9 {4 K0 y& q
TR1 = 1; //定时器启动      x7 D) n6 [! `4 z- @5 F6 T
}* O. A" X/ U% V, h2 ~/ s1 y
/**********************************************************************************************/
0 H, s2 b% h9 w5 L$ E; G! _/********************************************************************************************** m2 P* X, S) I3 Z
函数名:UART串口接收中断处理函数7 z1 H; t* i9 l- ?
调  用:[SBUF收到数据后中断处理]; F* y5 R' V9 s7 L4 I5 k
参  数:无
$ E7 G7 }  r0 R) \5 ~( l返回值:无
$ f( g. h, ^  L4 l$ H结  果:UART串口接收到数据时产生中断,用户对数据进行处理(并发送回去)! k6 v1 Z2 {( @, u6 b' Q" c
备  注:过长的处理程序会影响后面数据的接收$ k$ c# I1 T; L7 N) z7 l% j2 i: ~
/**********************************************************************************************/7 ?3 z! U1 s' z" M4 k  h
void UART_R (void) interrupt 4  using 1{ //切换寄存器组到1' q( S5 V! n  V" ?& f
unsigned char UART_data; //定义串口接收数据变量7 A: v1 [+ s# A0 t
RI = 0;   //令接收中断标志位为0(软件清零)
0 f0 P9 e# s, K6 X! j( X UART_data = SBUF; //将接收到的数据送入变量 UART_data: D, H( E7 u% h- ?) O
if(UART_data == '0')  NUM=0;
( V( Q/ {  F- L2 Z- f  e if(UART_data == '1')  NUM=1;
4 ?7 X) S3 F. E8 q if(UART_data == '2')  NUM=2;$ i0 y4 }& o) v$ b7 V
if(UART_data == '3')  NUM=3;: {9 U4 S% N: ?: m9 }
if(UART_data == '4')  NUM=4;! s+ x0 b  T7 K  p% q0 ~/ c
if(UART_data == '5')  NUM=5;
- Y. J: r& ^1 m$ A& \0 k, p if(UART_data == '6')  NUM=6;# L9 D* P! |+ D- ^+ |1 N4 G5 M. h) t" r
if(UART_data == '7')  NUM=7;
$ T: ]( R# o+ l* H0 l& J if(UART_data == '8')  NUM=8;
+ @0 A& j" B7 d0 t if(UART_data == '9')  NUM=9;
: ~& f& K/ h" L& Y/ @9 [ if(UART_data == 'A')  NUM=10;
% o7 k! O0 W. Q$ m& ~! u9 W. k if(UART_data == 'B')  NUM=11;
5 r2 _' I7 `5 A& {, S6 S2 r3 _ if(UART_data == 'C')  NUM=12;( s3 |1 t) y' \' Y# i8 u" |
if(UART_data == 'D')  NUM=13;
7 O+ \  w' q1 ^' T if(UART_data == 'E')  NUM=14;
7 O+ `0 G2 k, f if(UART_data == 'F')  NUM=15;/ ]: E6 O, I3 e9 d6 B: [
}
" }" ]$ \" b1 x. j' \/**********************************************************************************************/+ Q( K, |0 A' G
/*********************************************************************************************
2 V" W* L) U4 F: ~函数名:PWM0占空比设置函数
( T  Y  E" C6 D6 ^" ?6 `调  用:PWM0_set();) i0 h$ r* T7 O# ^: {4 D
参  数:0x00~0xFF(亦可用0~255)
3 w: C8 ^3 c$ q) ?, [9 s1 X. j返回值:无
: ?. h. u, ^0 t- U$ Y6 J结  果:设置PWM模式占空比,为0时全部高电平,为1时全部低电平- Q: }, g6 u( [
备  注:如果需要PWM1的设置函数,只要把CCAP0L和CCAP0H中的0改为1即可. ^& P/ X. A4 W/ ^  y- ]$ r
/**********************************************************************************************
; h. o2 \+ D7 D9 |' Evoid PWM0_set (unsigned char a){$ w. P  F( g5 y! P# F/ N  @/ y
CCAP0L= a; //设置值直接写入CCAP0L0 n/ s/ B8 h8 V: n+ h+ s3 ]
  CCAP0H= a; //设置值直接写入CCAP0H
: O5 p( S7 I8 _! k+ x6 k}, ~( e% }) P' R( @/ y
/**********************************************************************************************/8 a" K& P! q, {% s

, j% i8 R6 ^: s% E
1 M+ t$ h* S$ m# m" U& a& a
/*********************************************************************************************& Z8 q+ k! w" m8 `: O8 t, e, h9 X
函数名:主函数
0 \$ B0 g* ?8 u7 a调  用:无
+ P7 _% z' W0 V$ B- e5 _' e参  数:无
  C! e& }$ n. o* e返回值:无: S' M+ e3 U2 B* h+ C% V2 P
结  果:程序开始处,无限循环
+ ^- O5 [, g* p) x# ^0 r1 J( q# y备  注:
0 |/ }9 z- R8 f9 w/**********************************************************************************************/
6 z4 S  Z+ L7 j$ \% yvoid main (void){
. l1 b8 y4 A) `- e* H7 v; } NUM = 15;
+ ]2 Z' F& n6 @7 h4 q% M. z* ? UART_init();
+ z) x* T, n# C; u7 A4 D2 U! |' G4 X$ E3 K
/ J( r; h  Z) D& N* e+ u

2 q  C% n! [+ {/ x; V1 U, L…………限于本文篇幅 余下代码请从论坛下载附件…………6 M2 F0 t& H* L, h7 ?
* W% O' Z2 Q/ Y5 \: g
1 m* c3 g1 d4 s: ~  c- C
  N  d( L% ~* }, [) _
游客,如果您要查看本帖隐藏内容请回复
. q# I  O7 X( Y& g7 n$ c& ~$ w
* ]- ^' y2 m, Y% L) f  U1 A! i. s
: J. H1 S9 B+ k  _+ r6 Q

+ x" n& \, n6 J0 c2 S& g3 R7 p
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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