?? 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 + -