昨天在群里面有一个网友提到51单片机使用printf为什么编译通过了,但是没有效果 。这里将我的笔记翻出来共享一下,这个实验本身没有太大的意义,主要是记录51单片机应该如何使用Printf函数。
实验名称:串口通信之单片机和PC计算梯形面积
MCU型号:STC12C5A60S2(12T模式)
晶振 :11.0592MHZ
实验内容:利用单片机和PC机串口通信的工作方式1(波特率可变),(已经晶振为11.0592MHZ)设置波特率为9600B/S,结合定时器1的工作方式2(TH1=0xfd,TL1=0xfd),输入梯形的上底、下底、高,输出梯形面积
效果图:
参考程序:
/*
文件名:串口通信值单片机和PC机计算梯形面积.c
创建人:杨瑞
创建时间:2013年2月20日
开发环境:HOT51增强型单片机开发板
程序功用:利用单片机与PC机的串口通信,计算梯形面积
附:利用单片机和PC机的串口通信的工作方式1(波特率可变),(已知晶振为11.0592MHZ)设置通信波特率为9600b/s,结合定时器1的工作方式2(TH1=0xfd,TL1=0xfd),输入上底、下底、高,输出梯形面积
提示:下载程序后,打开串口工具,需要复位一下。
*/
#include
#include
#define uint unsigned int
#define uchar unsigned char
void uart(void) //串口通信初始化
{
SCON=0x40; //串口通信工作方式1
REN=1; //允许接收
TMOD=0x20; //定时器1的工作方式2
TH1=0xfd,TL1=0xfd;
TI=1; //这里一定要注意
TR1=1; //打开定时器
}
void main(void)
{
uint up=0,down=0,high=0;
uint result ;
uart();
while(1)
{
printf("********************************\r\n");
printf("Please input up,dowm,high:\r\n");
scanf("%d%d%d",&up,&down,&high) ;
printf("\r\nResult=%d\r\n",result=(up+down)*high/2);
}
}
关键字:51单片机 Printf 使用方法
引用地址:
51单片机的Printf使用方法
推荐阅读最新更新时间:2024-03-16 15:35
51单片机系列连载12-串行总线
今天介绍I2C串行总线,相比较之前的一些内容,这个相对难理解一些。常用的串行总线有很多,现只简单地说一下I2C总线。 I2C总线总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。 I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。 I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线 与 关系。 I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为
[单片机]
基于51单片机自动巡线轮式机器人控制系统设计
轮式移动机器人是机器人研究领域的一项重要内容.它集机械、电子、检测技术与智能控制于一体。在各种移动机构中,轮式移动机构最为常见。轮式移动机构之所以得到广泛的应用。主要是因为容易控制其移动速度和移动方向。因此.有必要研制一套完整的轮式机器人系统。并进行相应的运动规划和控制算法研究。笔者设计和开发了基于51型单片机的自动巡线轮式机器人系统。 2 控制系统总体设计 机器人控制系统由主控制电路模块、存储器模块、光电检测模块、电机及舵机驱动模块等部分组成,控制系统的框图如图1所示。 控制系统的框图 3 主控制模块设计 3.1 CPLD设计 在机器人控制系统中.需要控制多个电动机和行程开关.还要进行光电
[单片机]
8051单片机TLC1549数据采集程序源代码
#i nclude stdio.h #i nclude REGX51.H #i nclude iic.h #define uchar unsigned char #define uint unsigned int uint Timer_Pro_Flag=0;//0为显示处理,1为时序采集处理 sbit TEST_CAP_VOL_CRLT=P1^0;//用于控制外部继电器 sbit PWM_Pin=P3^7;//PWM输出 sbit IrDA_in_Pin=P1^0;//红外脉冲输入检测脚 bit PWMFlag=0; uchar OLD_TH0,OLD_TL0; #define MAXCMD_LENGTH 7 #d
[单片机]
51单片机开发主要方法
ISD51 (在线调试器)为8051编程用户提供了新的监控调试技术。将 ISD51 进行配置后与您的用户程序连接起来用户就可以通过8051的一个串口直接在芯片上调试程序了。ISD51的软件和硬件可以工作于最小模式。它可以运行于带有外部或内部程序空间的系统并且不要求增加像冯.诺伊曼架构的数据存储器等的特殊硬件部件。ISD51 可以工作在像 Philips LPC 系列之类的微型单片机上并且可以完全访问其 CODE 和 XDATA 地址空间。 ISD51硬件需求,一个8051兼容串口, 500-700字节的程序代码在相应数量的特殊积存器中运行,6字节堆栈空间,1字节IDATA RAM,为每个软件断点预留2字节IDATA RAM
[单片机]
基于AT89C51单片机为核心的数显超声波测距仪设计
超声波由于其指向性强、能量消耗缓慢、传播距离较远等优点,而经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。超声波测距主要应用于倒车雷达、建筑施工工地以及一些工业现场。例如:液位、井深、管道长度等场合。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在测控系统的研制上也得到了广泛的应用。 1 超声波测距原理 1.1 超声波发生器 超声波是一种频率超过20kHz的机械波。为了研究和利用超声波,人们已经设计和制成了许多超声波发生器。总体上讲,超声波发生器可以分为两大类:一类是用电气方式产生超声波。一类是用机械方式产生超声波。电气方式包括压电型、磁致伸
[单片机]
单片机系统重写printf函数
//将stdio.h头文件中的printf函数注释掉不然会冲突 //stdio.h头文件还是要包含的里面有va_list的定义 //使用vsprintf将要打印的数据赋给字符串 //使用字符串发送函数发送字符串 //不要把这个数组放在printf函数里面,一方面会在栈分配内存上耗费时间 //另一方面也是最主要的如果栈空间不够了还要分配100个字节那就会导致 //堆栈溢出,CC2530使用256字节的IDATA的一部分作为栈空间,我设置成了0xC0 //也就是192字节,在函数调用层次很深的时候在调用printf函数就会很容易 //导致堆栈溢出,出现莫名其妙的问题。 char string ; void printf(char
[单片机]
51单片机数字钟温度计的编程实例
#include "reg51.h" char disp ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; char disp_dot ={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xc0}; sbit DQ = P1^3; //定义通信端口 //晶振12MHz void delay_18B20(unsigned int i) { while(i--); } //初始化函数 Init_DS18B20(void) { unsigned char x=0; DQ = 1; //DQ复
[模拟电子]
-51单片机中软时钟设计的优化方法
0 引言 随着微电脑应用的普及,以MCS-51单片机为核心的微机测控系统已随处可见。为满足用户要求,这些系统通常都具有数码显示时钟的功能。由于MCS-51内部包含2个定时计数器,通过采用将其中一个定时计数器用于软时钟设计的方法,可以大大节省硬件开销。本文提出了如何提高软时钟的定时精度,以及在软时钟存在的情况下,如何提高以MCS-51单片机为核心的测控系统的设计质量的方法。 1 MCS-51单片机内部定时计数器概述 MCS-51单片机内部包含2个定时计数器T0和T1,它们都是16位的加法计数器,既可用于定时,也可用于计数,在用于定时的情况下,计数脉冲由内部提供,因此计数速率固定为CPU振荡频率的1/12;在用于计数的情况下
[单片机]