- #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();
- }*/
PCF8591 1602液晶显示
最新推荐文章于 2022-06-27 20:01:08 发布