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

📄 c.txt

📁 发送端
💻 TXT
字号:
#include <reg51.h>
#include <intrins.h>

#define uchar unsigned char

sbit CLK = P1^2 ;
sbit DAT = P1^3 ;
sbit ADDR = P1^6 ;
sbit P17 = P1^7 ;
sbit CS1543 = P2^4 ;
sbit YJRS = P2^5; //    片选端,高电平有效
sbit YJRW = P2^6; //    串行数据输入端
sbit YJCE = P2^7; //    串行同步时钟,上升沿时读取
sbit RXD1 = P3^0 ;
sbit TXD1 =  P3^1 ;
bit  RD1 ;	      //    空闲标志位

unsigned char  code BUF[]={"毕设    电压表  电压为:      伏"};
unsigned char  shiwei;
unsigned char  gewei;
unsigned char  point_1;
unsigned char  point_2;
unsigned char  point_3;
unsigned int   ad=12;
uchar   idata  zhu[5];

#define FIRST_ADDR 0       //定义字符/汉字显示起始位置
void change_data(void);
void disp_data(void);
//延时子程序
void delay(unsigned int t)
{  unsigned int i,j;
   for(i=0;i<t;i++)
      for(j=0;j<10;j++)
         ;
}
//测忙
void chk_busy(void)
{  RD1=1;
   P0 = 0xff ;
   delay(5);
   YJRS=0;
   YJRW=1;
   YJCE=1;
   while(P0&0x80)
      {   };
   YJCE=0;
   RD1=0	;

}
//读数据
unsigned char read_lcd()
{  unsigned char i;
   RD1=1;
   _nop_();
   YJRS=1;
   YJRW=1;
   YJCE=1;
   delay(5);
   i=P0;
   _nop_();
   YJCE=0;
   return i;
}
//写数据
void writedata_lcd(unsigned char dispdata)
{  RD1=1;
   chk_busy();
   _nop_();
   YJRS=1;	  //RS为高,显示数据
   YJRW=0;
   YJCE=1;
   P0=dispdata;
   delay(5);
   YJCE=0;
   P0=0xff;
}
//写指令代码
void writecode_lcd(unsigned char cmdcode)
{  RD1=1;
   chk_busy();
   _nop_();
   YJRS=0;	   //RS为低,显示指令数据
   YJRW=0;
   YJCE=1;
   P0=cmdcode;
   delay(5);
   YJCE=0;
   P0=0xff;
}

//初始化
void reset_lcd()
{  delay(2000);
   writecode_lcd(0x30);       //选择基本指令集
   delay(5);
   writecode_lcd(0x01);       //清除显示,并且设定地址指针为00H
   delay(5);
   writecode_lcd(0x0c);       //开显示(无游标、不反白)
   delay(5);
   writecode_lcd(0x06);       //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位
}
void hzklib()
{  char  i;
   writecode_lcd(0x80); //80为第一行起始位
   for (i=0;i<=0x20;i++)
   {
     writedata_lcd(BUF[i]);
   }
   disp_data();
}
unsigned int TLC1543AD(unsigned char ADDRESS)
{  unsigned char i ;
   unsigned int adresult;
   CLK     = 0 ;
   CS1543  = 0 ;
   adresult= 0 ;
   for (i=0;i<0x0a;i++)
      {
	    if (ADDRESS&0x08)
	       { ADDR  =  1 ;}		 //发送地址	,高位优先
	    else
		   { ADDR  =  0 ;}
		ADDRESS    =  ADDRESS*2 ;
	    CLK  =  1 ;
		adresult  *=  2 ;
		if (DAT)
		   { adresult = adresult + 0x01 ;}
		CLK  =  0 ;
       }
   CS1543   = 1 ;
   return(adresult) ;

}
void change_data(void)
{  int result ;
   result = ad * 7.8 ;
   shiwei=result/10000;
   gewei=result%10000/1000;
   point_1=result%1000/100;
   point_2=result%100/10;
   point_3=result%10;
}

void disp_data(void)
{
   change_data();
   writecode_lcd(0x8c); //8c为第三行第5位起始位
   if(shiwei!=0)
     writedata_lcd(shiwei+'0');
   else
     writedata_lcd(' ');
   writedata_lcd(gewei+'0');
   writedata_lcd('.');
   writedata_lcd(point_1+'0');
   writedata_lcd(point_2+'0');
   writedata_lcd(point_3+'0');
}
//485初始化
void init232(void){
   TMOD = 0x20;
   TH1  = 0xe8;
   TL1  = 0xe8;
   PCON = 0x00;
   TR1  = 1;
   SCON = 0X50;
   P17  = 1   ;
}
//发送程序
void send(uchar idata *d)
{    SBUF  = shiwei ;
   while(TI ==0);
      TI = 0;
   SBUF  = gewei ;
   while(TI ==0);
      TI = 0;
   SBUF  = point_1 ;
   while(TI ==0);
      TI = 0;
   SBUF  = point_2 ;
   while(TI ==0);
      TI = 0;
   SBUF  = point_3 ;
   while(TI ==0);
      TI = 0;
}
main()
{
   SP  = 0x5f ;
   YJRW=0;
   reset_lcd();       //初始化LCD屏
   init232();
   delay(1000);
   hzklib();
   while(1)
   {
       ad=TLC1543AD(2);
       disp_data();
       delay(5000);
       send(zhu);
    }
}

⌨️ 快捷键说明

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