蓝桥杯单片机刷题——串口发送显示

设计要求

通过串口接收字符控制数码管的显示,PC端发送字符'A',数码管显示'A',发送其它非法字符时,数码管显示'E'。

数码管显示格式如下:

备注:

单片机IRC振荡器频率设置为12MHz。

串口通信波特率:9600bps。

按键模式:BTN;扩展方式:IO模式

除字符'A'外,其它字符均为非法字符。

个人代码

cpp 复制代码
#include <STC15F2K60S2.H>
code unsigned char Seg_Table[] = 
{
0x88, //A  0
0x86, //E  1
0xff //熄灭  2
};
unsigned char Seg_Buff[]={2,2,2,2,2,2,2,2};
unsigned char flag=0,rdat='A';
void init74hc138(unsigned char n){
	P2=(P2&0x1f)|(n<<5);
	P2&=0x1f;
}
void init(){
	P0=0x00;
	init74hc138(5);
	P0=0xff;
	init74hc138(4);
}
void seg(unsigned char addr,num){
	P0=0xff;
	init74hc138(7);
	P0=0x01<<addr;
	init74hc138(6);
	P0=Seg_Table[num];
	init74hc138(7);
}
void Seg_Loop(){
	static unsigned char i=0;
	seg(i,Seg_Buff[i]);
	i++;
	if(i==8)i=0;
}
void Timer0_Init(void)		//1毫秒@12.000MHz
{
	AUXR |= 0x80;			//定时器时钟1T模式
	TMOD &= 0xF0;			//设置定时器模式
	TL0 = 0x20;				//设置定时初始值
	TH0 = 0xD1;				//设置定时初始值
	TF0 = 0;				//清除TF0标志
	TR0 = 1;				//定时器0开始计时
	ET0 = 1;				//使能定时器0中断
	EA=1;
}
void UartInit(void)		//9600bps@12.000MHz
{
	SCON = 0x50;		//8位数据,可变波特率
	AUXR |= 0x40;		//定时器时钟1T模式
	AUXR &= 0xFE;		//串口1选择定时器1为波特率发生器
	TMOD &= 0x0F;		//设置定时器模式
	TL1 = 0xC7;			//设置定时初始值
	TH1 = 0xFE;			//设置定时初始值
	ET1 = 0;			//禁止定时器中断
	TR1 = 1;			//定时器1开始计时
	ES=1;
	EA=1;
}
//void uart_send_byte(unsigned char date){
//	SBUF=date;
//	while(TI==0);
//	TI=0;
//}
void main(){
	init();
	Timer0_Init();
	UartInit();
	while(1){
		if(flag){
			flag=0;
			if(rdat=='A')
				Seg_Buff[7]=0;
			else
				Seg_Buff[7]=1;
			Seg_Loop();
		}
	}
}
void Timer0_Isr(void) interrupt 1
{
	static unsigned char count=0;
	count++;
	if(count==2){
		count=0;
		flag=1;
	}
}
void uart() interrupt 4
{
	if(RI){
		RI=0;
		rdat=SBUF;
	}
}

测试结果

相关推荐
芯岭技术23 分钟前
PY32MD310单片机:高性能、低功耗的32位电机控制微控制器
单片机·嵌入式硬件
_OP_CHEN1 小时前
【算法基础篇】(五十六)容斥原理指南:从集合计数到算法实战,解决组合数学的 “重叠难题”!
算法·蓝桥杯·c/c++·组合数学·容斥原理·算法竞赛·acm/icpc
小龙报2 小时前
【51单片机】深度解析 51 串口 UART:原理、配置、收发实现与工程化应用全总结
c语言·开发语言·c++·stm32·单片机·嵌入式硬件·51单片机
Lester_11019 小时前
STM32 高级定时器PWM互补输出模式--如果没有死区,突然关闭PWM有产生瞬间导通的可能吗
stm32·单片机·嵌入式硬件·嵌入式软件
小李独爱秋10 小时前
“bootmgr is compressed”错误:根源、笔记本与台式机差异化解决方案深度指南
运维·stm32·单片机·嵌入式硬件·文件系统·电脑故障
进击的小头13 小时前
实战案例:51单片机低功耗场景下的简易滤波实现
c语言·单片机·算法·51单片机
宵时待雨16 小时前
STM32笔记归纳8:时钟
笔记·stm32·单片机·嵌入式硬件
JJRainbow17 小时前
SN75176 芯片设计RS-232 转 RS-485 通信模块设计原理图
stm32·单片机·嵌入式硬件·fpga开发·硬件工程
宁静致远202118 小时前
STM32模拟IIC读取PCF8563
stm32·单片机·嵌入式硬件
三佛科技-1341638421218 小时前
宠物洗澡打泡机方案,宠物泡泡机MCU方案开发设计分享
单片机·嵌入式硬件·物联网·智能家居·pcb工艺·宠物