资源简介
【核心代码】
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#define uchar unsigned char
#define uint unsigned int
#define LED P0
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 send(uchar str);//发送数据程序
void receive(void); //接收数据程序
void read_key(void);//读键值函数
/*------------------------------------------------
主函数
------------------------------------------------*/
void main()
{
TMOD=0x20; //定时器1,方式2
TL1=0xfd;
TH1=0xfd; //设置波特率9600
SCON=0xd8;
PCON=0x00; //串行口方式3,允许接收位
TR1=1; //打开定时器1
P2=0xff; //拉高P2口
while(1)
{
read_key(); //读按键程序
//receive(); //接收数据程序
}
}
/*------------------------------------------------
读键值函数
------------------------------------------------*/
void read_key(void)
{
uchar key;
key=keyscan(); //调用键盘扫描,
switch(key)
{
case 0xee:send(dofly[0]);break;//0 按下相应的键显示相对应的码值
case 0xed:send(dofly[1]);break;//1
case 0xeb:send(dofly[2]);break;//2
case 0xe7:send(dofly[3]);break;//3
case 0xde:send(dofly[4]);break;//4
case 0xdd:send(dofly[5]);break;//5
case 0xdb:send(dofly[6]);break;//6
case 0xd7:send(dofly[7]);break;//7
case 0xbe:send(dofly[8]);break;//8
case 0xbd:send(dofly[9]);break;//9
case 0xbb:send(dofly[10]);break;//a
case 0xb7:send(dofly[11]);break;//b
case 0x7e:send(dofly[12]);break;//c
case 0x7d:send(dofly[13]);break;//d
case 0x7b:send(dofly[14]);break;//e
case 0x77:send(dofly[15]);break;//f
}
}
/*------------------------------------------------
键盘扫描程序
------------------------------------------------*/
uchar keyscan(void) //键盘扫描函数,使用行列反转扫描法
{
uchar key;
uchar cord_h,cord_l;//行列值中间变量
P2=0x0f; //行线输出全为0
cord_h=P2&0x0f; //读入列线值
if(cord_h!=0x0f) //先检测有无按键按下
{
delay(100); //去抖
if(cord_h!=0x0f)
{
cord_h=P2&0x0f; //读入列线值
P2=cord_h|0xf0; //输出当前列线值
cord_l=P2&0xf0; //读入行线值
key=cord_h cord_l;//键盘最后组合码值
}
}
return(key); //返回该值
}
/*------------------------------------------------
发送数据函数
------------------------------------------------*/
void send(uchar str)
{
if(TI==0)
{
SBUF=str;
while(TI==0);
TI=0;
}
}
/*------------------------------------------------
接收数据函数
------------------------------------------------*/
void receive(void)
{
while(RI==0);
RI=0;
P0=SBUF; //立即点亮LED
}
/*------------------------------------------------
延时程序
------------------------------------------------*/
void delay(uint i) //延时函数
{
while(i--);
}
代码片段和文件信息
#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#define uchar unsigned char
#define uint unsigned int
#define LED P0
sbit WR2 = P3^2; // 控制MAX487发送接收方式
/*------------------------------------------------
函数声明
------------------------------------------------*/
void delay(uint i); //演示程序
void receive(void); //接收数据程序
/*------------------------------------------------
串口中断服务程序
------------------------------------------------*/
void UART(void) interrupt 4 using 1
{
if(RI)
{
LED=SBUF;
RI=0;
}
}
/*------------------------------------------------
主函数
------------------------------------------------*/
void main()
{
TMOD=0x20; //定时器1,方式2
TL1=0xfd;
TH1=0xfd; //设置波特率9600
SCON=0xd8;
PCON=0x00; //串行口方式3,允许接收位
TR1=1; //打开定时器1
ES=1; //开串口中断
EA=1; //开总中断
WR2=0; //MAX487为接收方式
while(1);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 195082 2013-07-04 15:31 3、PC到单片机单向通讯\Last Loaded 串口通信.DBK
文件 195179 2013-07-05 18:11 3、PC到单片机单向通讯\串口通信.DSN
文件 2954 2013-07-05 18:11 3、PC到单片机单向通讯\串口通信.PWI
文件 19 2011-05-20 00:11 3、PC到单片机单向通讯\串口通信receive(中断方式)\ExtDll.iex
文件 6376 2010-09-03 17:12 3、PC到单片机单向通讯\串口通信receive(中断方式)\STARTUP.A51
文件 14062 2013-06-26 14:15 3、PC到单片机单向通讯\串口通信receive(中断方式)\STARTUP.LST
文件 749 2013-06-26 14:15 3、PC到单片机单向通讯\串口通信receive(中断方式)\STARTUP.OBJ
文件 2758 2013-06-26 14:15 3、PC到单片机单向通讯\串口通信receive(中断方式)\UART
文件 1076 2013-06-26 14:15 3、PC到单片机单向通讯\串口通信receive(中断方式)\UART.c
文件 195 2013-06-26 14:16 3、PC到单片机单向通讯\串口通信receive(中断方式)\UART.hex
文件 41 2013-06-26 14:15 3、PC到单片机单向通讯\串口通信receive(中断方式)\UART.lnp
文件 2762 2013-06-26 14:15 3、PC到单片机单向通讯\串口通信receive(中断方式)\UART.LST
文件 4866 2013-06-26 14:15 3、PC到单片机单向通讯\串口通信receive(中断方式)\UART.M51
文件 2259 2013-06-26 14:15 3、PC到单片机单向通讯\串口通信receive(中断方式)\UART.OBJ
文件 235 2013-06-26 16:36 3、PC到单片机单向通讯\串口通信receive(中断方式)\UART.plg
文件 143665 2013-06-26 16:36 3、PC到单片机单向通讯\串口通信receive(中断方式)\UART.uvopt
文件 13408 2011-05-20 00:18 3、PC到单片机单向通讯\串口通信receive(中断方式)\UART.uvproj
文件 143658 2013-06-26 16:31 3、PC到单片机单向通讯\串口通信receive(中断方式)\UART_uvopt.bak
文件 13392 2011-05-19 23:11 3、PC到单片机单向通讯\串口通信receive(中断方式)\UART_uvproj.bak
文件 19 2013-06-27 13:41 3、PC到单片机单向通讯\串口通信receive(查询方式)\ExtDll.iex
文件 6376 2010-09-03 17:12 3、PC到单片机单向通讯\串口通信receive(查询方式)\STARTUP.A51
文件 14062 2013-07-04 14:15 3、PC到单片机单向通讯\串口通信receive(查询方式)\STARTUP.LST
文件 749 2013-07-04 14:15 3、PC到单片机单向通讯\串口通信receive(查询方式)\STARTUP.OBJ
文件 6729 2013-07-04 14:15 3、PC到单片机单向通讯\串口通信receive(查询方式)\UART
文件 3860 2013-07-04 14:15 3、PC到单片机单向通讯\串口通信receive(查询方式)\UART.c
文件 1455 2013-07-04 14:15 3、PC到单片机单向通讯\串口通信receive(查询方式)\UART.hex
文件 41 2013-07-04 14:15 3、PC到单片机单向通讯\串口通信receive(查询方式)\UART.lnp
文件 7162 2013-07-04 14:15 3、PC到单片机单向通讯\串口通信receive(查询方式)\UART.LST
文件 9635 2013-07-04 14:15 3、PC到单片机单向通讯\串口通信receive(查询方式)\UART.M51
文件 6803 2013-07-04 14:15 3、PC到单片机单向通讯\串口通信receive(查询方式)\UART.OBJ
............此处省略45个文件信息
评论
共有 条评论