我想问下51单片机开发板上如何将按键的数据作为向pc机发送的数据。求程序!若能帮助解决不胜感激!
如果能提供按键程序就更好了!以下是我的毕设题目!本题目要求PC通过UART与51单片机通讯,控制51单片机端的发光二极管的亮灭。并且可以实现单片机与PC机端的文件传输。传...
如果能提供按键程序就更好了!
以下是我的毕设题目!
本题目要求PC通过UART与51单片机通讯,控制51单片机端的发光二极管的亮灭。 并且可以实现单片机与PC机端的文件传输。传输出错时有语音提示。 1. 51单片机通过UART与PC通讯。 2. PC端可以用现成的串口工具,也可以自己编程实现PC端的串口收发。 3. 从PC上发送特定的数可以让单片机控制发光二极管亮灭。 4. 可以实现在单片机和PC间文件的传送。 5. 传输出错时有语音提示
现有51开发板,上头有6个数码管,max232,有按键,有灯,用89s52单片机
以下是我找的一些子程序后编的一部分:
#include <Reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code Tab[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
//数码管显示0-9的代码
unsigned char i; //储存中断次数
sbit S0=P1^0;
sbit S1=P1^1;
sbit S2=P1^2;
sbit S3=P1^3;
sbit S4=P1^4;
sbit S5=P1^5;
/****************延时函数**********/
void delay(uint m)
{uint i;
for(i=0;i<m;i++);
}
/********数码管显示函数:入口参数:k,出口参数:无*********/
void display(uchar k)
{
P2=0xfe; //即P2=1111 1110B,P2.0引出低电平数码管DS0接通电源
P0=Tab[k/100000];//显示十万位
delay(300);
P2=0xfd; //即P2=1111 1101B,P2.1引出低电平数码管DS1接通电源
P0=Tab[(k%100000)/10000]; //显示万位
delay(300);
P2=0xfb; //即P2=1111 1011B,P2.2引出低电平数码管DS2接通电源
P0=Tab[(k%10000)/1000]; //显示千位
delay(300);
P2=0xf7; //即P2=1111 0111B,P2.3引出低电平数码管DS3接通电源
P0=Tab[(k%1000)/100]; //显示百位
delay(300);
P2=0xef; //即P2=1110 1111B,P2.4引出低电平数码管DS4接通电源
P0=Tab[(k%100)/10]; //显示十位
delay(300);
P2=0xdf; //即P2=1101 1111B,P2.5引出低电平数码管DS4接通电源
P0=Tab[k%10]; //显示个位
delay(300);
P2=0xff; //关闭所有数码管
}
/*************单片机向pc机发送一个字节数据函数************/
void Send(uchar dat)
{
SBUF=dat;
while(TI==0)
;
TI=0;
}
/***************单片机接受pc机一个字节函数*******************/
unsigned char Receive(uchar dat)
{
while(RI==0) //只要接收中断标志位RI没有被置"1"
; //等待,直至接收完毕(RI=1)
RI=0; //为了接收下一帧数据,需将RI清0
dat=SBUF; //将接收缓冲器中的数据存于dat
return dat;
}
另外如果能有发送出错的程序就更好了! 展开
以下是我的毕设题目!
本题目要求PC通过UART与51单片机通讯,控制51单片机端的发光二极管的亮灭。 并且可以实现单片机与PC机端的文件传输。传输出错时有语音提示。 1. 51单片机通过UART与PC通讯。 2. PC端可以用现成的串口工具,也可以自己编程实现PC端的串口收发。 3. 从PC上发送特定的数可以让单片机控制发光二极管亮灭。 4. 可以实现在单片机和PC间文件的传送。 5. 传输出错时有语音提示
现有51开发板,上头有6个数码管,max232,有按键,有灯,用89s52单片机
以下是我找的一些子程序后编的一部分:
#include <Reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code Tab[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
//数码管显示0-9的代码
unsigned char i; //储存中断次数
sbit S0=P1^0;
sbit S1=P1^1;
sbit S2=P1^2;
sbit S3=P1^3;
sbit S4=P1^4;
sbit S5=P1^5;
/****************延时函数**********/
void delay(uint m)
{uint i;
for(i=0;i<m;i++);
}
/********数码管显示函数:入口参数:k,出口参数:无*********/
void display(uchar k)
{
P2=0xfe; //即P2=1111 1110B,P2.0引出低电平数码管DS0接通电源
P0=Tab[k/100000];//显示十万位
delay(300);
P2=0xfd; //即P2=1111 1101B,P2.1引出低电平数码管DS1接通电源
P0=Tab[(k%100000)/10000]; //显示万位
delay(300);
P2=0xfb; //即P2=1111 1011B,P2.2引出低电平数码管DS2接通电源
P0=Tab[(k%10000)/1000]; //显示千位
delay(300);
P2=0xf7; //即P2=1111 0111B,P2.3引出低电平数码管DS3接通电源
P0=Tab[(k%1000)/100]; //显示百位
delay(300);
P2=0xef; //即P2=1110 1111B,P2.4引出低电平数码管DS4接通电源
P0=Tab[(k%100)/10]; //显示十位
delay(300);
P2=0xdf; //即P2=1101 1111B,P2.5引出低电平数码管DS4接通电源
P0=Tab[k%10]; //显示个位
delay(300);
P2=0xff; //关闭所有数码管
}
/*************单片机向pc机发送一个字节数据函数************/
void Send(uchar dat)
{
SBUF=dat;
while(TI==0)
;
TI=0;
}
/***************单片机接受pc机一个字节函数*******************/
unsigned char Receive(uchar dat)
{
while(RI==0) //只要接收中断标志位RI没有被置"1"
; //等待,直至接收完毕(RI=1)
RI=0; //为了接收下一帧数据,需将RI清0
dat=SBUF; //将接收缓冲器中的数据存于dat
return dat;
}
另外如果能有发送出错的程序就更好了! 展开
展开全部
弄个矩阵键盘的程序,然后建立一个数组,里面的元素对应按键的数字值。然后将元素值在赋值给一个变量,发送给pc。出错的程序想不出来
追问
那麻烦你给个矩阵键盘的函数行吗!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询