昨天在群里面有一個網(wǎng)友提到51單片機使用printf為什么編譯通過了,但是沒有效果 。這里將我的筆記翻出來共享一下,這個實驗本身沒有太大的意義,主要是記錄51單片機應(yīng)該如何使用Printf函數(shù)。
實驗名稱:串口通信之單片機和PC計算梯形面積
MCU型號:STC12C5A60S2(12T模式)
晶振 :11.0592MHZ
實驗內(nèi)容:利用單片機和PC機串口通信的工作方式1(波特率可變),(已經(jīng)晶振為11.0592MHZ)設(shè)置波特率為9600B/S,結(jié)合定時器1的工作方式2(TH1=0xfd,TL1=0xfd),輸入梯形的上底、下底、高,輸出梯形面積
效果圖:
參考程序:
/*文件名:串口通信值單片機和PC機計算梯形面積.c創(chuàng)建人:楊瑞創(chuàng)建時間:2013年2月20日開發(fā)環(huán)境:HOT51增強型單片機開發(fā)板程序功用:利用單片機與PC機的串口通信,計算梯形面積附:利用單片機和PC機的串口通信的工作方式1(波特率可變),(已知晶振為11.0592MHZ)設(shè)置通信波特率為9600b/s,結(jié)合定時器1的工作方式2(TH1=0xfd,TL1=0xfd),輸入上底、下底、高,輸出梯形面積提示:下載程序后,打開串口工具,需要復(fù)位一下。*/#include#include #defineuintunsignedint#defineucharunsignedcharvoiduart(void)//串口通信初始化{SCON=0x40;//串口通信工作方式1REN=1;//允許接收TMOD=0x20;//定時器1的工作方式2TH1=0xfd,TL1=0xfd;TI=1;//這里一定要注意TR1=1;//打開定時器}voidmain(void){uintup=0,down=0,high=0;uintresult;uart();while(1){printf("********************************rn");printf("Pleaseinputup,dowm,high:rn");scanf("%d%d%d",&up,&down,&high);printf("rnResult=%drn",result=(up+down)*high/2);}}