標(biāo)題:
51單片機(jī)A/D轉(zhuǎn)換及串行通信程序
[打印本頁(yè)]
作者:
1130718845
時(shí)間:
2022-6-9 15:13
標(biāo)題:
51單片機(jī)A/D轉(zhuǎn)換及串行通信程序
要求:
1.硬件選擇通道,轉(zhuǎn)換結(jié)果顯示在LED上
2.利用串口助手與單片機(jī)就行串行通信,收到大寫字母轉(zhuǎn)換成小寫字母發(fā)回,反之亦然,但數(shù)字不變。
單片機(jī)源程序如下:
#include <reg51.h>
#include <stdio.h>
#include <intrins.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
uchar D,VAR,H4,L4;
uchar cod[] = {0xC0, 0xF9, 0xA4, 0xB0,
0x99, 0x92, 0x82, 0xF8,
0x80, 0x90, 0x88, 0x83,
0xC6, 0xA1, 0x86, 0x8E
}; //16進(jìn)制
void delay(int n)
{
int i,j;
for(i=n;i>0;i--)
{
for(j=28;j>0;j--);
}
}
void display()
{
H4=D/16;
L4=D%16;
P2=cod[L4];
P1=0xfe;
delay(1);
P2=0xff;
delay(10);
P2=cod[H4];
P1=0xfd;
delay(1);
P2=0xff;
delay(10);
}
void main()
{
while(1)
{
XBYTE[0x8000]=0x00;
delay(50);
D=XBYTE[0x8000];
display();
}
}
復(fù)制代碼
#include <reg51.h>
#include <stdio.h>
#include <intrins.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
uchar D,VAR,H4,L4;
uchar cod[] = {0xC0, 0xF9, 0xA4, 0xB0,
0x99, 0x92, 0x82, 0xF8,
0x80, 0x90, 0x88, 0x83,
0xC6, 0xA1, 0x86, 0x8E
}; //16進(jìn)制
void delay(int n)
{
int i,j;
for(i=n;i>0;i--)
{
for(j=28;j>0;j--);
}
}
void display()
{
H4=D/16;
L4=D%16;
P2=cod[L4];
P1=0xfe;
delay(1);
P2=0xff;
delay(10);
P2=cod[H4];
P1=0xfd;
delay(1);
P2=0xff;
delay(10);
}
void main()
{
PCON=0x80;//SMOD置1,波特率加倍
SCON=0x50;//設(shè)置為工作方式1:SCON:SMO SM1 SM2 REN TB8 RB8 TI(0101 0000)
TMOD=0x20;//設(shè)置計(jì)數(shù)器工作方式2
TH1=0xfa;//計(jì)數(shù)器賦初值
TL1=0xfa;
TR1=1;//打開(kāi)計(jì)數(shù)器
while(1)
{
while(!RI){display();}
D=SBUF;
VAR=D;
RI=0;//清除接收中斷標(biāo)志位
display();
if(0x40<D&&D<0x5b){VAR=D+0x20;}//大寫變小寫
else if(0x60<D&&D<0x7b){VAR=D-0x20;}//小寫變大寫
SBUF=VAR;
while(!TI){display();}
TI=0;//清除發(fā)送完成標(biāo)志位
}
}
復(fù)制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1