main.c
来自「菜鸟,详细NRF24E1运用,程序,电路」· C语言 代码 · 共 184 行
C
184 行
/*************************************/
#include "reg51.h"
#include "intrins.h"
/*************************************/
#define uint unsigned int
#define uchar unsigned char
#define Dat 0x00
#define Cmd 0x01
/*************************************
#define DIO P00
#define SCLK P01
#define CS P02
#define RESET P03
*************************************/
sbit DIO = P0^0 ;
sbit SCLK = P0^1 ;
sbit CS = P0^2 ;
sbit RESET = P0^3 ;
#define Enableint do{EA=1;}while(0)
#define Disableint do{EA=1;}while(0)
/**************************************/
typedef enum YON{false,true}bool;
/**************************************/
uchar code tab[]={
"这是一个液晶测试"
"小江编写,仅供简"
"程序,由南华大学"
"当测试,谢谢支持"
};
/***************************************
/
/延时函数delay()
/
****************************************/
void delay (uint us)
{
while(us--);
}
/**************************************
/
/delayms()延迟指定的ms数
/
**************************************/
void delayms (uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<15;j++)
delay(1);
}
/***************************************
/
/nRF24LE1的I/O口初始化
/
***************************************/
void IOCNFG()
{
P0DIR&=0XF0; /*设置P0.0~P0.3为输出*/
}
/***************************************
/
/nRF24LE1工作时钟设置
/
***************************************/
void WorkClkSet()
{
CLKCTRL = 0x28;
CLKLFCTRL = 0x01;
}
/**************************************
/
/ResetLcd()复位液晶显示
/
***************************************/
void ResetLcd(void)
{
RESET=0;
delayms(10);
RESET=1;
}
/**************************************
/
/串行写一个字节
/
**************************************/
void SendByte(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
SCLK=0;
if(dat&0x80)
DIO=1;
else
DIO=0;
SCLK=1;
dat=dat<<1;
}
}
/**************************************
/
/通过串行方式往LCD里写数据或者指令
/
***************************************/
void WLcd( uchar Dat_Cmd,uchar dat)
{
uchar tmp;
if(Cmd==Dat_Cmd)
{
tmp=0xf8;
}
else if(Dat==Dat_Cmd)
{
tmp=0xfa;
}
SendByte(tmp);
SendByte((dat&0xF0));
SendByte((dat&0x0F));
}
/*****************************************
/
/LCD初始化函数
/
******************************************/
void init_lcd (void)
{ delay(100);
WLcd(Cmd,0x30); /*使用基本指令集*/
WLcd(Cmd,0x0c); /*开显示,关游标*/
WLcd(Cmd,0x01); /*清屏,地址指针指向00H*/
WLcd(Cmd,0x02);
WLcd(Cmd,0x80); /*光标的移动方向*/
delay(100);
}
/******************************************
/
/显示汉字或字符
/
*******************************************/
void chn_disp (uchar code *chn)
{
uchar i,j;
WLcd(Cmd,0x80);
for (j=0;j<4;j++)
{
for (i=0;i<16;i++)
{
WLcd(Dat,chn[j*16+i]);
}
}
}
/*****************************************
/
/清DDRAM
/
******************************************/
void clrram(void)
{
WLcd(Cmd,0x30); /*功能设定 */
WLcd(Cmd,0x01); /*清除显示指令*/
delay(180);
}
/******************************************
/
/主函数部分
/
*******************************************/
void main ()
{
// Disableint; /*中断关闭 */
// WorkClkSet(); /*设置nRF24LE1的时钟*/
// IOCNFG(); /*I/O口初始设置 */
init_lcd(); /*液晶初始化 */
// Enableint; /*使能中断 */
{
chn_disp(tab);
// delayms(500);
}
while (1);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?