|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
要求:
' t9 X: k& s: y1.硬件选择通道,转换结果显示在LED上
. V6 E* ~. ~* z7 R8 I8 }2.利用串口助手与单片机就行串行通信,收到大写字母转换成小写字母发回,反之亦然,但数字不变。
1 W' Y8 w3 U5 j( v+ z1 N7 e* V: [ F- U- J
单片机源程序如下:. v* _0 Z) y' p! ~
- #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();
- }
- }2 e8 S3 s* O1 d6 G; b, ?( P
$ A% g/ z) r$ d& ]* _$ {
复制代码
: g+ p! w k, v( X* ]- #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;//清除发送完成标志位
- }
- }9 a: X' e; S! N x5 J
[7 u2 Y3 y) p( |7 ?8 {. B
|
|