📄 test3pin.c
字号:
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#include <reg52.h>
sbit MCLK=P3^5;
sbit SCLK=P3^6;
sbit SDA=P3^7;
uchar bdata DATA;
sbit BIT0=DATA^0;
sbit BIT7=DATA^7;
// 发送一个数据到模块
putbytespi(uchar ch)
{
uchar i;
uint c;
if(!MCLK)return; //
MCLK=0; //申请通讯
DATA=ch;
for(i=4;i!=0;i--)
{
while(SCLK); //检测从机响应
SDA=BIT0; //放一个bit到SDA
MCLK=1;
DATA=DATA>>1; //准备下一个bit
while(!SCLK); //检测从机响应
SDA=BIT0; //放一个bit到SDA
MCLK=0;
DATA=DATA>>1; //准备下一个bit
}
while(SCLK); //检测从机收完
MCLK=1;
while(!SCLK);//等待从机准备好
SDA=1;
}
//从模块接收一个数据
//调用之前最好检测MCLK是否为0(对方是否申请数据通讯)再进入,否则里面是死等此信号!
uchar getbytespi()
{
uchar i;
while(MCLK);
SCLK=0; //接受通讯
for(i=4;i!=0;i--)
{
DATA=DATA>>1; //准备下一个bit
while(!MCLK); //检测主机放数据
BIT7=SDA;//收一个bit
SCLK=1;
DATA=DATA>>1; //准备下一个bit
while(MCLK); //检测从机响应
BIT7=SDA; //收一个bit
SCLK=0;
}
while(!MCLK); //检测从机收完
SCLK=1;
return(DATA);
}
//显示国标字符串
lcd_gbstring(uchar *pst)
{
uchar i;
putbytespi(0x1b);
putbytespi(0x37);
putbytespi(0x00);
for(i=0;*pst!=0;i++)
{
putbytespi(*pst);
pst++;
}
putbytespi(0x00);
}
//显示unicode串
lcd_unicodestring(uchar n,uchar *pst)
{
uchar i;
putbytespi(0x1b);
putbytespi(0x4e);
putbytespi(0x00);
putbytespi(n);
for(i=0;i<n*2;i++)
{
putbytespi(*pst);
pst++;
}
}
//定义一个国标字符串
uchar code gb2312[]="abc123汉显液晶真好用。";
//定义一个unicode字符串"字符串abcABC123内码转换《》?。【】¥!☆●★◆◇㈠⑴⑵㈡〖〗{}№§"
uchar code unicode[]={0x5B,0x57,0x7B,0x26,0x4E,0x32,0x00,0x61,0x00,0x62,0x00,0x63,0x00,0x41,0x00,0x42,0x00,0x43,0x00,0x31,0x00,0x32,0x00,0x33,0x51,0x85,0x78,0x01,0x8F,0x6C,0x63,0x62,0x30,0x0A,0x30,0x0B,0xFF,0x1F,0x30,0x02,0x30,0x10,0x30,0x11,0xFF,0xE5,0xFF,0x01,0x26,0x06,0x25,0xCF,0x26,0x05,0x25,0xC6,0x25,0xC7,0x32,0x20,0x24,0x74,0x24,0x75,0x32,0x21,0x30,0x16,0x30,0x17,0xFF,0x5B,0xFF,0x5D,0x21,0x16,0x00,0xA7};
uchar code dx58[3] _at_ 0x3b; //这句dx58仿真器调试需要
main()
{
uchar i;
uint n;
for(i=0;i<3;i++) //闪灯3下
{
putbytespi(0x1b);
putbytespi(0x25);
putbytespi(0x01);
for(n=0;n<30000;n++);
putbytespi(0x1b);
putbytespi(0x25);
putbytespi(0x00);
for(n=0;n<30000;n++);
}
while(1)
{
//清屏
putbytespi(0x1b);
putbytespi(0x32);
for(n=0;n<60000;n++);
//显示一个GB2312数据串
lcd_gbstring(gb2312);
for(n=0;n<60000;n++);
//显示一个unicode数据串
lcd_unicodestring(0x27,unicode);
for(n=0;n<60000;n++);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -