⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 display.c

📁 悬挂绘图系统(2005年全国电子设计大赛题目)基于凌阳单片机
💻 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 + -