TA的每日心情 | 开心 2019-11-20 15:00 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
胎压监测单片机串口传输的Proteus仿真与源程序 胎压监测,利用了单片机串口传输数据,也可以只用一个蓝牙模块,通过发送端的单片机,连接蓝牙模块,然后手机连接蓝牙,并且下载一个蓝牙串口助手,就可以实现手机与单片机通讯了,还可以通过接受数据来实现各种指令,再进一步就可以单独写一个APP来与单片机通讯了, r: H5 o+ t3 U& k6 \$ H7 }
% d0 U# f7 |; ^ d+ _' v仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
. [: S* O8 }# X7 P* Y0 O& J Y3 }
$ k/ M: F @. |# J8 L
+ K/ p. p6 v$ X. A; }
9 ^8 q y4 u$ Z % X7 D8 t! O8 J Y
; n# G: Z& P/ a
5 y5 r$ O E& `. V8 [, p! M2 `" H3 s9 A- n* v5 E
胎压监测接收端单片机源程序如下(发送端程序在附件中): | #include <reg52.h>
0 f: T' e) @* Z$ ]" D* c6 [#include <intrins.h>
) d% h% U `& \#include <1602.h>
. ~1 M3 F* i7 S3 ?- m' e# N2 n9 ytypedef unsigned int u16; //对数据类型进行声明定义- Q$ d8 \ d& x7 F4 `2 O
typedef unsigned char u8;& k3 l+ t" {) x( P* ^9 D
u8 y,changdu=0;
* u2 {6 t# R- p/ ~: O6 f: @unsigned char x[3];2 }" ^6 P( H; p9 s' Q% m$ g, L$ D
void delayms(unsigned char xms)
6 r5 H+ |4 i5 ?3 K% o{6 E8 n+ D' [2 T
unsigned char i,j;# Z' S9 q4 b: I5 d
for(j=xms;j>0;j--) D5 j, X; U+ m. q3 M1 n7 Z
for(i=114;i>0;i--);: G& u! N9 h2 U
}
5 e8 N l4 _. D* u" _6 `' Zvoid init()
- b( D7 e$ I7 I; u* Z3 A& ~3 U{0 x, B& f9 L. _8 @
SCON=0X50; //设置为工作方式1
7 `. s" R& _' Q# _! ~9 e1 d9 z TMOD=0X20; //设置计数器工作方式2
( Q9 g3 |7 y8 I; K1 l5 z! q PCON=0X80; //波特率加倍
3 ?: M- R6 O+ L6 ~ TH1=0XF4; //计数器初始值设置,注意波特率是4800的& D4 ^9 x# i6 o- q. L
TL1=0XF4;" }* f5 Y5 M) B( p0 u3 D6 P
ES=1; //打开接收中断# t3 c: a( Y' B7 y3 ]8 L( l& f
EA=1; //打开总中断
9 c5 p) m, `' G. a5 P TR1=1; //打开计数器6 _! i8 b- L0 b4 T9 L
}% k" t$ Q+ l/ P, Q7 {. R" n
void Usart() interrupt 4- ~& M" x/ q6 N- J
{9 o* L# {) x! m& W
. ]# X3 K$ E: N8 `8 j x[changdu]=SBUF;//出去接收到的数据
; ?, E# k) @+ D8 y9 W0 J6 A8 \& ^' I if(RI)+ c7 O6 S- ]5 _0 j
{# ^- U6 N* L6 q1 J. m- _
changdu++;
) |( C4 C4 ^4 w* Q: D. G RI = 0;//清除接收中断标志位8 F4 ]* W* q1 O+ [1 |
}
8 w! o7 ~) c9 g6 B2 U7 n}
8 T9 h1 r( c2 evoid main()
# L, V9 t( X1 Z5 f8 E& e{/ }4 V7 ]# n4 g8 U* j4 Y2 k+ E
init();! s8 i M% ^) m: e8 ?+ w# Z( K
LCD_init();
7 J: Z6 Z8 b% C2 F while(1)
' n; K1 ]5 Y9 ?; ^( Y f& ~5 q {
9 D; ?! |$ J2 z( C7 I3 | if(changdu>3)) d0 D S4 ]0 ], [
{) P! ^/ z- u# C
LCD_disp_char(0,1,num[x[0]]);. T8 l) K+ [% L1 x4 ]6 L
LCD_disp_char(1,1,num[x[1]]);
+ h9 l# ?; U4 F( ~$ G( O' b) t LCD_disp_char(2,1,num[x[2]]);: {0 o8 A/ R! S! _
LCD_disp_char(3,1,num[x[3]]);5 h( R+ ]4 R0 @
delayms(1000);
A* w! f- ^& U; A// LCD_disp_char(0,2,num[y/1000]);+ z9 E6 C1 x" y- _3 n
// LCD_disp_char(1,2,num[y/100%10]);
2 H$ U/ Y; w) {' S6 i// LCD_disp_char(2,2,num[y%100/10]);
( ~% ?; Z! Q: |2 R# p// LCD_disp_char(3,2,num[y%10]);
9 l7 F' x- p4 n: P( H changdu=0;
6 e) r8 G& ^* u$ d( k/ R }
) h7 G" t' c( a3 Y Q3 p; L$ y }
4 @1 x# n: J3 R( }% P}
. p* _ x+ v7 w1 k- i
1 I+ p; I7 ~/ |! q4 J' \9 n5 S; m; Z0 w! M
|
|