📄 display.c
字号:
#include "cbit.h"
#include "hardware.h"
#include "SPCE061V004.h"
void initlcm(void);
void SendByte(char dat);
void SendCMD(unsigned char dat);
void SendDat(unsigned char dat);
void display(char *str);
void dis_12232num(long int b);
//-----------------------------------------------
//初始化 LCM-------------------------------------
void initlcm(void)
{
CLR_Bit(P_IOB_Data,Bit13); //RS_CS=0;
SendCMD(0x30); //基本指令集合//bit2,bit1,bit0中的bit2控制
SendCMD(0x000C);//0000,1100 整体显示,游标off,游标位置off
SendCMD(0x0001);//0000,0001 清DDRAM
}
//串行发送一字节数据----------------------------
void SendByte(char dat)
{
char i;
for(i=0;i<8;i++)
{
CLR_Bit(P_IOB_Data,Bit15); //E_CLK=0;
if(dat & 0x80)
SET_Bit(P_IOB_Data,Bit14); //RW_SID=1;
else CLR_Bit(P_IOB_Data,Bit14); //RW_SID=0;
SET_Bit(P_IOB_Data,Bit15); //E_CLK=1;
dat = dat << 1;
}
}
//写控制命令------------------------------------
void SendCMD(unsigned char dat)
{
SET_Bit(P_IOB_Data,Bit13); //RS_CS=1;
SendByte(0xF8); //11111,00,0 RW=0,RS=0 同步标志
SendByte(dat&0xF0); //高四位
SendByte((dat&0x0F)<<4);//低四位
CLR_Bit(P_IOB_Data,Bit13); //RS_CS=0;
}
//写显示数据或单字节字符------------------------
void SendDat(unsigned char dat)
{
SET_Bit(P_IOB_Data,Bit13); //RS_CS=1;
SendByte(0xFA); //11111,01,0 RW=0,RS=1
SendByte(dat & 0xF0); //高四位
SendByte((dat & 0x0F)<<4); //低四位
CLR_Bit(P_IOB_Data,Bit13); // RS_CS=0;
}
//将汉字写入,写完为止---------------------------
void display(char *str)
{
while(*str != '\0') SendDat(*(str++));
}
void dis_12232num(long int b)
{
int led[]={'0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F',',',' '};
if(b>=1000000000)SendDat(led[b/1000000000%10]);
if(b>=100000000) SendDat(led[b/100000000%10]);
if(b>=10000000) SendDat(led[b/10000000%10]);
if(b>=1000000) SendDat(led[b/1000000%10]);
if(b>=100000) SendDat(led[b/100000%10]);
if(b>=10000) SendDat(led[b/10000%10]);
if(b>=1000) SendDat(led[b/1000%10]);
if(b>=100) SendDat(led[b/100%10]);
if(b>=10) SendDat(led[b/10%10]);
SendDat(led[b%10]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -