当前位置:数据分析 > STM32串口输出循环显示00至99

STM32串口输出循环显示00至99

  • 发布:2023-09-22 18:01

STM32串口输出循环显示00至99

51单片机,如何编写显示数码管00到99,可用电脑键盘(串行口)暂停,继续的程序(用汇编语言)

MOV 31H,#00H MOV 32H,#00H MOV 33H,#01H MOV 34H,#06H MOV 35H,#03H MOV 36H,#02H ACALL D0 JMP $-2D0: MOV R0,#31H MOV R2,#11111110B MOV DPTR,#TABD1: ORL P1,#00111111B MOV A,@R0 MOVC A,@A+DPTR MOV R3,#8D2: RLC A MOV P3.2,C SETB P3.3 CLR P3.3 DJNZ R3,D2 INC R0 MOV A,R2 ANL P1,AD3: MOV R3,#250 DJNZ R3,$ MOV A,R2 RL A MOV R2,A JB ACC.6,D1 RETTAB: DB 3FH,06H,5BH,4FH DB 66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH DB 39H,5EH,79H,71H DB 40H END追问

好像没用到串行口呀(SBUF..)好吧,还是谢谢你~

无论单片机输出什么,我的串口调试助手只会显示00,请问这是怎么回事

有可能是单片机发送的波特率太低。远低于9600.
如果是使用的STC的单片机,记得在下载时选择使用外部晶振。

proteusstm32利用独立按键数码管显示数字

proteusstm32利用独立按键数码管显示数字
实验环境
本次实验是通过Proteus+MDK一起模拟完成的。Proteus模拟实际电路,MDK编译代码。Proteus版本是8.13,MDK版本是5.21。需要注意的是,Proteus需要安装8.8以上版本,器件库里面要支持STM32F103C6。
• 实验目的
通过一个按键控制数码管0~9循环显示,并且把对应数字发给串口。通过接收串口数据,控制数码管0~9循环显示。实验目的,学会按键检测方法,这边用的是开源库multi_button,学会串口怎么用。
Proteus硬件电路
虚拟串口示意
• 主控:
STM32F103C6(本来想用C8的,但是Proteus只有C6,本质上只有Flash和SRAM大小的区别,所以没有必要纠结)
• 时钟:
没有用外部晶振,因为Proteus只支持一种时钟树,所以这里采用内部晶振,做实验够了,内部晶振配置为40MHz。
• 复位电路:
复位电路如图,包含了上电复位电路一个10K电阻(图上用的是100K实际应该都是可以的)+一个100nF电容。按键复位电路,包含了一个自复位按键,按下后,RST管脚就会短路到GND,MCU就会复位。
•电路上还要接一个Proteus虚拟串口,在自己电脑上也要用虚拟串口软件虚拟一对串口出来,上图所示,PC端我们用的是COM5,那么Proteus端我们用COM4。
• IO说明:
→ 我们利用PA0~PA6来控制7段数码管,高电平点亮;
→PB0用作LED的控制,指示程序状态;
→PB4作为按键输入状态读取;
→PA9,PA10是串口输入输出;
2.代码概述
目录结构
• 代码目录概述:
→APP文件夹:主要包含应用函数的.C文件。
→BSP文件夹:主要包含底层硬件驱动的.C文件。
→MDK-ARM文件夹:主要包含STM32的启动的.S文件。
→StdPeriph_Driver文件夹:主要包含ST官方提供的标准外设驱动.C文件(不是HAL库哦)。
→CMSIS文件夹:系统内核配置文件,标准库自带的。
→按键驱动使用的是multi_button。
→串口接收0x09这个代码1次就会反转数码管1次,0~9循环。
→按键按1次就会反转数码管1次,0~9循环。
→按键按下LED灯亮,松开灭。
【不用开发板学习STM32】串口收发+按键控制数码管显示(文末获取代码及工程文件)

stm32用一个按键控制两位数码管从00-99,代码怎么写

/按键控制加、减显示00-99(P1接8个独立按键,P10按下为加,P11按下为减,P2
接LED数码管的A- -H并加一个560欧的上拉排阻,P0接数码管DS1- -DS8位选)
**************************************************************//
按键控制加、减显示00-99(P1接8个独立按键,P10按下为加,P11按下为减,P2
接LED数码管的A- -H并加一个560欧的上拉排阻,P0接数码管DS1- -DS8位选)//
#include
sbit P0_0=P0^0; //个位数字
sbit P0_1=P0^1; //十位数字
void delay(int k); //Tab为数码管显示值,存入一个数组内
void key_ccan(void); //声明按键扫描函数
unsigned char code Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}unsigned char i,shi,ge,num,count=10; //num为被显示的数字
void main()
{
P2=Tab[0];P0_0=0;P0_1=0;//显示00
num=0; //被显示的数置0
while(1)
{
key_ccan(); //调用按键扫描程序
for(i=0;ishi=num/10; //取出十位数
ge=num%10; //取出个位数
P0_0=1;P0_1=1; //关闭显示
P2=Tab[shi]; //P2口送出十位数据显示代码
P0_0=0; //打开十位显示
delay(10); //延时
P0_0=1; //关闭显示
P2=Tab[ge]; //P2口送出个位数据显示代码
P0_1=0; //打开个位显示
delay(10); //延时
P0_1=1; //关闭个位显示
}
}
void key_ccan(void)
{
unsigned char ii;
P1=0xff;
ii=P1;
if(ii!=0xff)
{
P1=0xff;
delay(50);
ii=P1;
if(ii!=0xff)
{
switch(ii)
{
case 0xfe: num++;if(num==100) num=0; break;
case 0xfd: if(num==0) num=99;else num--;break;
default: break;
}
}
}
}
void delay(int k) //最简单的C延时程序
{ unsigned char i;
while(k--) //直至K减为0则跳出
{for(i=100;i>0;i--);}
}

5.9
百度文库VIP限时优惠现在开通,立享6亿+VIP内容
立即获取
单片机_两个数码管显示00~99
/按键控制加、减显示00-99(P1接8个独立按键,P10按下为加,P11按下为减,P2
接LED数码管的A- -H并加一个560欧的上拉排阻,P0接数码管DS1- -DS8位选)
**************************************************************//
按键控制加、减显示00-99(P1接8个独立按键,P10按下为加,P11按下为减,P2
接LED数码管的A- -H并加一个560欧的上拉排阻,P0接数码管DS1- -DS8位选)//
#include
sbit P0_0=P0^0; //个位数字

以上就是小编对于STM32串口输出循环显示00至99问题和相关问题的解答了,STM32串口输出循环显示00至99的问题希望对你有用!

相关文章