首页 > 学院 > 开发设计 > 正文

PCF8591 1602液晶显示

2019-11-06 07:54:32
字体:
来源:转载
供稿:网友
[html] view plain copy 在CODE上查看代码片派生到我的代码片#include <reg52.h>                  #include "i2c.h"  #include "delay.h"  #include "1602.h"  #include <stdio.h>    #define AddWr 0x90   //写数据地址   #define AddRd 0x91   //读数据地址    extern bit ack;  unsigned char ReadADC(unsigned char Chl);  bit WriteDAC(unsigned char dat);  unsigned char count;  /*------------------------------------------------                主程序  ------------------------------------------------*/  main()  {      unsigned char num=0,i,j;   unsigned char temp[7];//定义显示区域临时存储数组   float Voltage;        //定义浮点变量   LCD_Init();           //初始化液晶   DelayMs(20);          //延时有助于稳定   LCD_Clear();          //清屏  TMOD = 0x01;   TH0 = 0x3c;   TL0 = 0xb0;   ET0 = 1;   TR0 = 1;   EA = 1;  while (1)              //主循环    {      for(i=0;i<5;i++)//连续读5次,取最后一次,以便读取稳定值      num=ReadADC(count);      //读取第1路电压值,范围是0-255   Voltage=(float)num*5/256;   //根据参考电源VREF算出时间电压,float是强制转换符号,用于将结果转换成浮点型   sPRintf(temp,"CHL%c %3.2f V ",count+0x30,Voltage);//格式输出电压值,%3.2f 表示浮点输出,共3位数,小数点后2位   LCD_Write_String(0,0,temp);     }  }  /*------------------------------------------------               读AD转值程序  输入参数 Chl 表示需要转换的通道,范围从0-3  返回值范围0-255  ------------------------------------------------*/  unsigned char ReadADC(unsigned char Chl)   {     unsigned char Val;     Start_I2c();               //启动总线     SendByte(AddWr);             //发送器件地址       if(ack==0)return(0);     SendByte(0x40|Chl);            //发送器件子地址       if(ack==0)return(0);     Start_I2c();     SendByte(AddWr+1);        if(ack==0)return(0);     Val=RcvByte();     NoAck_I2c();                 //发送非应位     Stop_I2c();                  //结束总线    return(Val);   }      void ISR_time1() interrupt 1  {      unsigned char i;                EA = 0;      //  TMOD = 0x01;      TH0 = 0x3c;          TL0 = 0xb0;          i++;          if(i == 20)          {              i = 0;                   count++;                  if(count == 4)                  {                      count = 0;                  }          }             EA = 1;       }    /*------------------------------------------------                 写入DA转换数值  输入参数:dat 表示需要转换的DA数值,范围是0-255  ------------------------------------------------*/  /*bit WriteDAC(unsigned char dat)  {     Start_I2c();               //启动总线     SendByte(AddWr);             //发送器件地址       if(ack==0)return(0);     SendByte(0x40);            //发送器件子地址       if(ack==0)return(0);     SendByte(dat);             //发送数据       if(ack==0)return(0);     Stop_I2c();    }*/ 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表