|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
要求:
5 g+ K6 U R0 W6 |4 g1.硬件选择通道,转换结果显示在LED上
9 Z% o2 q4 T: ^* b6 [9 G2.利用串口助手与单片机就行串行通信,收到大写字母转换成小写字母发回,反之亦然,但数字不变。
! W# q7 c, o4 r7 ?7 ]4 n. r3 |/ q# W# @- h5 w8 I S7 \2 D
单片机源程序如下:* o: W0 L% B" M( ^
- #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();
- }
- }
. d, c8 n" N$ q2 N1 m1 Y1 l 9 |- q6 j8 t" Q" r
复制代码
4 H) k) e. Z; j2 b- #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;//清除发送完成标志位
- }
- }) T% o% q% u0 g% A
3 X) m7 s$ r8 j7 @% b |
|