// 发送文件
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#define uchar unsigned char
#define uint unsigned int
#define LED P0
#define ADDRESS (P1&0x03)
sbit WR1=P3^2; //接收发送方式
uchar const dofly[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,
0x0b,0x0c,0x0d,0x0e,0x0f};//0-F
/*------------------------------------------------
函数声明
------------------------------------------------*/
uchar keyscan(void); //键盘扫描
void delay(uint i); //延时程序
void SendByte(uchar str); //发送字节数据
void SendString(uchar *s); //发送字符串数据
void receive(void); //接收数据程序
void read_key(void); //读键值函数
void Send(uint num); //发送数据函数
/*------------------------------------------------
主函数
------------------------------------------------*/
void main()
{
TMOD=0x20; //定时器1,方式2
TL1=0xfd;
TH1=0xfd; //设置波特率9600
SCON=0xd8;
PCON=0x00; //串行口方式3,允许接收位
TR1=1; //打开定时器1
P2=0xff; //拉高P2口
WR1 = 1; //发送方式
while(1)
{
read_key(); //读按键程序,发送程序时添加该函数
//receive(); //接收数据程序,接收程序时添加该函数
}
}
/*------------------------------------------------
发送数据函数
------------------------------------------------*/
void Send(uint num)
{
//第1步、握手发送数据
SendByte(0xAA); //起始字节
SendByte(ADDRESS); //地址字节
SendByte(dofly[num]); //发送数据
delay(10);
//2、等待反馈地址
WR1 = 0; //接收方式
while(RI==0);
RI=0;
WR1 = 1; //发送方式
P0=SBUF; //显示反馈地址
}
/*------------------------------------------------
读键值函数
------------------------------------------------*/
void read_key(void)
{
uchar key;
key=keyscan(); //调用键盘扫描,
switch(key)
{
case 0x77:Send(0);break;//0 按下相应的键显示相对应的码值
case 0xb7:Send(1);break;//1
case 0xd7:Send(2);break;//2
case 0xe7:Send(3);break;//3
case 0x7b:Send(4);break;//4
case 0xbb:Send(5);break;//5
case 0xdb:Send(6);break;//6
case 0xeb:Send(7);break;//7
case 0x7d:Send(8);break;//8
case 0xbd:Send(9);break;//9
case 0xdd:Send(10);break;//a
case 0xed:Send(11);break;//b
case 0x7e:Send(12);break;//c
case 0xbe:Send(13);break;//d
case 0xde:Send(14);break;//e
case 0xee:Send(15);break;//f
default:break;
}
}
/*------------------------------------------------
键盘扫描程序
------------------------------------------------*/
uchar keyscan(void) //键盘扫描函数,使用行列反转扫描法
{
uchar key;
uchar cord_h,cord_l;//行列值中间变量
key = 0;
P2=0x0f; //行线输出全为0
cord_h=P2&0x0f; //读入列线值
if(cord_h!=0x0f) //先检测有无按键按下
{
delay(100); //去抖
cord_h=P2&0x0f; //读入列线值
if(cord_h!=0x0f)
{
P2=0xf0; //输出当前列线值
cord_l=P2&0xf0; //读入行线值
key=cord_h+cord_l; //键盘最后组合码值
}
while((P2&0xf0)!=0xf0); //等待按键弹起
}
return(key); //返回该值
}
/*------------------------------------------------
发送字节数据函数
------------------------------------------------*/
void SendByte(uchar str)
{
if(TI==0)
{
SBUF=str;
while(TI==0);
TI=0;
}
}
/*------------------------------------------------
发送字符串数据函数
------------------------------------------------*/
void SendString (uchar *s)
{
while (*s != 0)
{
SendByte(*s++);
}
}
/*------------------------------------------------
接收数据函数
------------------------------------------------*/
void receive(void)
{
while(RI==0);
RI=0;
P0=SBUF; //立即点亮LED
}
/*------------------------------------------------
延时程序
------------------------------------------------*/
void delay(uint i) //延时函数
{
while(i--);
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
3、PC到单片机单向通讯.rar (67个子文件)
3、PC到单片机单向通讯
Last Loaded 串口通信.DBK 191KB
串口通信receive(中断方式)
UART.c 1KB
UART.plg 235B
UART.LST 3KB
UART.uvproj 13KB
STARTUP.LST 14KB
UART 3KB
UART.hex 195B
UART_uvproj.bak 13KB
ExtDll.iex 19B
UART.M51 5KB
UART.OBJ 2KB
STARTUP.A51 6KB
UART.uvopt 140KB
UART.lnp 41B
UART_uvopt.bak 140KB
STARTUP.OBJ 749B
串口通信send(查询方式)
UART.c 4KB
UART.plg 197B
UART.LST 8KB
UART.uvproj 13KB
STARTUP.LST 14KB
UART 7KB
UART.hex 2KB
UART_uvproj.bak 13KB
ExtDll.iex 19B
UART.M51 11KB
UART.OBJ 7KB
STARTUP.A51 6KB
UART.uvopt 140KB
UART.lnp 41B
UART_uvopt.bak 140KB
STARTUP.OBJ 749B
串口通信.PWI 3KB
串口通信send(中断方式)
UART.c 3KB
UART.plg 193B
UART.LST 6KB
UART.uvproj 13KB
STARTUP.LST 14KB
UART 6KB
UART.hex 1KB
UART_uvproj.bak 13KB
ExtDll.iex 19B
UART.M51 9KB
UART.OBJ 6KB
STARTUP.A51 6KB
UART.uvopt 140KB
UART.lnp 41B
UART_uvopt.bak 140KB
STARTUP.OBJ 749B
串口通信.DSN 191KB
串口通信receive(查询方式)
UART.c 4KB
UART.plg 2KB
UART.LST 7KB
UART.uvproj 13KB
STARTUP.LST 14KB
UART 7KB
UART.hex 1KB
UART_uvproj.bak 13KB
ExtDll.iex 19B
UART.M51 9KB
UART.OBJ 7KB
STARTUP.A51 6KB
UART.uvopt 140KB
UART.lnp 41B
UART_uvopt.bak 141KB
STARTUP.OBJ 749B
共 67 条
- 1
chenjiechenl
- 粉丝: 2
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页