过往历程
历程1:秒表
历程2:按键显示时钟
历程3:列矩阵按键显示时钟
历程4:行矩阵按键显示时钟
历程5:新DS1302
历程6:小数点精确后两位ds18b20
历程7:35定时器测量频率
历程8:AT24C02
历程9:AT24C02秒表
历程10:AD
历程11:超声波
历程12:多样点灯方式
历程13:AT24C02页写入
历程14:DA
文章目录
- 过往历程
- 前期准备
- 串口通信知识点
- SCON
- 总代码
- 省赛代码传送门
前期准备
1:本文使用的头文件是由stc生成
点击保存文件之后,保存至自己文件目录下方即可
2:本文使用的都是官方提供的底层驱动代码
3:本文使用的都是STC中的串口配置
串口通信知识点
通讯的方式分类:并行通信 串行通信
并行通信:
数据的各位同时在多根数据线上发送或接收。
串行通信:
数据的各位在同一根数据线上逐位发送和接收7
并行通信的特点:
控制简单,传输速度快;由于传输线较多,适用于短距离通信。
串行通信的特点:
控制复杂,传输速度慢;只需要一根数据线,适用于远距离通信。
根据串行通信中对数据流的分界、定时以及同步方案方法不同,可分为和同步和异步。
同步方式:
发送端和接收端必须使用同一时钟,是一种连续传送数据的通信方式,一次通讯传送多个字符数据(一帧数据)
异步方式:
发送和接收端使用的是各自的时钟,是一种不连续传送数据的通信方式,一次通信只能传输一个字符数据(字符帧)。字符帧之间的间隙可以是任意的
根据串行数据的传输方向,我们可以将通信分为单工,半双工,双工。
单工:
信道是单向的,数据只能单方面传输,发送端只能发送数据,不能接收;接收端只能接收数据,不能发送;
半双工:
数据可以进行双向传输,但不能在两个方向上同时进行。
全双工:
数据可以同时进行双向传输。
SCON
SM0、SM1 工作方式:
SM2:多机通信控制位。方式2、方式3的时候才使用。
工作于方式2和方式3时,当SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF,发出中断申请,否则会将接受到的数据放弃。当SM2=0时,就不管第位数据是0还是1,都将数据送入SBUF,并发出中断申请。
REN=1允许接收;REN=0禁止接收。
TB8:接收数据的第8位
RB8:接收数据的第8位
TI:串口发送完成中断标志位。由硬件自动置1,需要软件清“0”。
RI:串口接收完成中断标志位。由硬件自动置1,需要软件清“0”。
总代码
#include "stc15f2k.h"
void buzz()
{
P2=((P2&0X1F)|0XA0);
P0=0X00;
P2&=0X1F;
P2=((P2&0X1F)|0X80);
P0=0XFF;
P2&=0X1F;
}
void din()
{
SCON = 0x50; //8???,?????
AUXR &= 0xBF; //???1???Fosc/12,?12T
AUXR &= 0xFE; //??1?????1???????
TMOD &= 0x0F; //?????1?16???????
TL1 = 0xE8; //??????
TH1 = 0xFF; //??????
ET1 = 0; //?????1??
TR1 = 1; //?????1
EA=1;
ES=1;
}
void receive(char i)
{
SBUF=i;
while(TI==0);
TI=0;
}
void send_out() interrupt 4
{
static int date;
if(RI==1)
{
RI=0;
date=SBUF;
receive(date);
}
}
void main()
{
buzz();
din();
receive(0x5a);
while(1);
}
省赛代码传送门
第三届蓝桥杯单片机省赛
第四届蓝桥杯单片机省赛
第五届蓝桥杯单片机省赛
第六届蓝桥杯单片机省赛
第七届蓝桥杯单片机省赛
第八届蓝桥杯单片机省赛
第九届蓝桥杯单片机省赛
第十届蓝桥杯单片机省赛
第十一届蓝桥杯单片机省赛