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

📄 main.c

📁 uzz9001驱动程序
💻 C
字号:
#include"reg51.h"
#define uchar unsigned char
#define uint unsigned int
//LCD端口要根据实际的连接情况分配IO
#define  busy 0x80
sbit RS=P3^7;
sbit RW=P3^6;
sbit E=P3^5;
sfr LCDData=0x80;//0x80--P0,0X90--P1,0xa0--P2,0xb0--P3
sbit da=P1^0;
sbit cs=P1^1;
sbit clk=P1^2;
uchar dis[5];
/************延时函数*/
void Delay(uint i)
{
  while(i--);
}
/*写指令函数*/
void Write_Instruction(uchar x)
{
 Delay(1000);
 E=0;
 RW=0;
 RS=0;
 LCDData=x;
 E=1;
 Delay(20);
 E=0;
 }
/*写单个数据的函数*/
void Write_Data(uchar x)
{
 Delay(1000);
 E=0;
 RW=0;
 RS=1;
 E=1;
 LCDData=x;
 E=0;
}
/*清屏函数*/
void Cls(void)
{
  Write_Instruction(0x01);
}
/*写入一串字符串函数*/
void Write_String(uchar x,uchar *p)
{ Write_Instruction(x);
  while(*p!=0x00)
 {Write_Data(*p);
  p++;
  if (x++==0x8f)
  {Write_Instruction(0xc0);}
 }
}
/*初始化函数*/
void InitLCD(void)
{Write_Instruction(0x38);
 Delay(2000);
 Write_Instruction(0x0e);
 Delay(2000);
 Write_Instruction(0x06);
 Delay(2000);
}
/**************/
void get_angue(void)
{
 int value=0,value1=0;
 uchar i;
 clk=1;
 cs=1;
 cs=0;
 for(i=0;i<16;i++)
 {
  value<<=1;
  clk=0;
  if(da)
  {
   value++;
  }
  cs=1;
  if(!(value&0x4000))
  {
   value1=value&0x3f00;
   value1>>=1;
   value&=0x007f;
   value=value+value1;
  }
  else
  {
  value=0;
  }
  value=value*2/10;
  dis[0]=value/1000+0x30;
  dis[1]=value%1000/100+0x30;
  dis[2]=value%100/10+0x30;
  dis[3]=0x2e;
  dis[4]=value%10/1+0x30; 
 }

 /**/
}
uint uzz9001(void)
{
uchar i,tem1;
 uint t;
 i=16;
 t=0;
 
 clk=1;
 cs=1;
 Delay(5);
 cs=0;
 Delay(2); 
 for(i=0;i<16;i++)
 {
  clk=0;
  Delay(2);
  clk=1;
  t=t<<1;
  if(da)
   {
    t=t+1;
   } 
  Delay(2);
 }
 cs=1;
 tem1=t;
 t=((t&0x7f00)>>1)+(tem1&0x7f);
 return(t);
}
void displaybit(uchar addr,uint d)
{
 uchar i;
 i=16;
 Write_Instruction(addr);
 while(i--)
 {
  if(d&0x8000)
   Write_Data(0x31);
  else
  Write_Data(0x30);
  d=d<<1;
 }
}
/*主函数*/
void main(void)
{
 uint angle;
// uchar j;
 InitLCD();//初始化液晶屏
 Write_String(0xc0,"Ang=");
 while(1)
 {
 angle=uzz9001();
 Write_Instruction(0xc4);
 Write_Data(angle/10000+0x30);
 Write_Data(angle%10000/1000+0x30);
 Write_Data(angle%10000%1000/100+0x30);
 Write_Data(angle%10000%1000%100/10+0x30);
 Write_Data(angle%10000%1000%100%10+0x30);
 Delay(0xffff);
 Delay(0xffff);
  Delay(0xffff);
  displaybit(0x80,angle);
/* get_angue();
 Write_Instruction(0xc4);
 for(j=0;j<5;j++)
  {
    Write_Data(dis[j]); 
    Delay(20);
  }*/
 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -