📄 text1.c
字号:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
/**************子函数定义****************************/
void long_delay(void);
void short_delay(void);
void delay10ms(uchar);
void write7279(uchar,uchar);
uchar read7279(uchar);
void send_byte(uchar);
uchar receive_byte(void);
void display7279();
void keyunit(void); //按键及显示测试
/************程序变量定义***************************/
uchar key_number,j,k,key0,key1,key2,key3,key4,key5,p;
/**************端口初始化**************************/
sbit key=P3^4;
sbit dat=P3^5;
sbit clk=P3^6;
sbit cs=P3^7;
/***********7279指令初始化*************************/
#define DEC0DE0 0x80 //采用译码方式0
#define DEC0DE1 0xc8 //采用译码方式1
#define CMD_READ 0x15 //读键盘的数据指令
#define UNDECODE 0x90 //不译码
#define RTL_CYCLE 0xa3 //循环左移
#define RTR_CYCLE 0xa2 //循环右移
#define RTL_RESET 0xa1 //左移
#define CMD_RESET 0xa4 //复位,所有的显示清除
#define CMD_TEST 0xbf //测试,将所有的LED点亮
#define RTR_UNCYL 0xa0 //右移
#define ACTCTL 0x98 //消隐
#define SEGON 0xe0 //段亮
#define SEGOFF 0xc0 //断灭
#define BLINKCTL 0x88 //闪烁
/****************************************************
主函数
主要功能:测试、复位、不译码显示、译码【0】【1】
显示、按键值测试并显示、移位、消隐、段显等
***************************************************/
main()
{
while(1)
{
keyunit();
}
}
/************************************************
7279写入函数
**********************************************/
void write7279(uchar cmd,uchar dta)
{
send_byte(cmd);
send_byte(dta);
}
/*************************************************
7279读取函数
**************************************************/
uchar read7279(uchar command)
{
send_byte(command);
return(receive_byte());
}
/*************************************************
7279发送字节函数
***************************************************/
void send_byte(uchar out_byte)
{
uchar i;
cs=0;
long_delay();
for(i=0;i<8;i++)
{
if(out_byte&0x80)
{
dat=1;
}
else
{
dat=0;
}
clk=1;
short_delay();
clk=0;
short_delay();
out_byte=out_byte*2;
}
dat=0;
}
/***************************************************
7279接受字节函数
******************************************************/
uchar receive_byte(void)
{
uchar i,in_byte;
dat=1;
long_delay();
for(i=0;i<8;i++)
{
clk=1;
short_delay();
in_byte=in_byte*2;
if(dat)
{
in_byte=in_byte|0x01;
}
clk=0;
short_delay();
}
dat=0;
return(in_byte);
}
/***************************************************
7279长延迟函数
****************************************************/
void long_delay(void)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -