C51单片机用串口通信助手控制数码管显示数字代码
时间: 2024-03-05 11:53:07 浏览: 18
以下是C51单片机用串口通信助手控制数码管显示数字的代码:
```c
#include <reg51.h>
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit DIN=P2^0;
sbit CS=P2^1;
sbit CLK=P2^5;
unsigned char code table[] = {
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, // 0-9
0x77,0x7c,0x39,0x5e,0x79,0x71, // A-F
0x80,0x40 // . -
};
void delay(unsigned int x){
unsigned int i, j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void send(unsigned char dat){
unsigned char i;
for(i=0;i<8;i++){
CLK=0;
DIN=dat&0x80;
dat=dat<<1;
CLK=1;
}
}
void sendCommand(unsigned char command){
CS=0;
send(command);
CS=1;
}
void sendData(unsigned char address, unsigned char dat){
sendCommand(address);
CS=0;
send(dat);
CS=1;
}
void init(){
sendCommand(0x9f);//打开译码,亮度为中等
sendCommand(0x0a);//使用代码B译码
sendCommand(0x0b);//扫描行数为8行
sendCommand(0x0c);//从地址00H开始显示
}
void display(unsigned char *p){
unsigned char i;
for(i=0;i<8;i++){
sendData(i+1,table[*(p+i)]);
}
}
void main(){
unsigned char i;
unsigned char receiveData;
unsigned char digit[8]={0};
init();
while(1){
if(RI){
receiveData = SBUF;
RI = 0;
if(receiveData>='0'&&receiveData<='9'){
digit[0]=table[receiveData-'0'];
display(digit);
}
}
delay(100);
}
}
```
此代码实现了使用串口通信助手控制数码管显示数字。当串口接收到数字字符时,将其转换为对应的数码管显示数字进行显示。