|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
要求:, X& n2 I% p. }1 D, s% x& S
1.硬件选择通道,转换结果显示在LED上0 ^/ d# b* _0 o$ m
2.利用串口助手与单片机就行串行通信,收到大写字母转换成小写字母发回,反之亦然,但数字不变。* ~) t$ j' I. k
- y; P; I. Z# W) ?) M单片机源程序如下:
0 b0 W7 A' m/ O3 e1 U3 T# q- #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进制
- 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();
- }
- }
& j8 C/ m U( `
- O L4 J5 ~# l2 ~+ u% `; ]9 }复制代码" z' H3 @9 O( ~4 [1 M2 T5 C
- #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进制
- 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;//设置为工作方式1:SCON:SMO SM1 SM2 REN TB8 RB8 TI(0101 0000)
- TMOD=0x20;//设置计数器工作方式2
- TH1=0xfa;//计数器赋初值
- TL1=0xfa;
- TR1=1;//打开计数器
- while(1)
- {
- while(!RI){display();}
- D=SBUF;
- VAR=D;
- RI=0;//清除接收中断标志位
- 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;//清除发送完成标志位
- }
- }
( K8 x4 J# N0 ^7 O 4 v3 J9 d; U$ [0 ]- u
|
|