2.7

来源:互联网 发布:张家港美工设计培训 编辑:程序博客网 时间:2024/04/28 18:48
#include <reg52.h>                
#include "i2c.h"
#include "delay.h"
#include "display.h"


#define AddWr 0x90   //写数据地址 
#define AddRd 0x91   //读数据地址


sbit KEY1 = P1^0;
sbit KEY2 = P1^1;


bit flag = 1;
extern bit ack;


extern void InitLcd1602();
extern void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str);
unsigned char ReadADC(unsigned char Chl);
void ValueToString(unsigned char *str,unsigned char val);
bit WriteDAC(unsigned char dat);
/*------------------------------------------------
              主程序
------------------------------------------------*/
main()
{
    unsigned char num1 = 0,num2 = 0,num3 = 0,num4 = 0;
    unsigned char str1[10],str2[10],str3[10],str4[10];


     EA = 1;
     TMOD = 0x01;
TH0 = 0xFC;
TL0 = 0x67;
ET0 = 1;
     TR0 = 1;


    Init_Timer0();
    InitLcd1602();


    while (1)         //主循环
    {
      num1 = ReadADC(0);
 ValueToString(str1,num1);
 LcdShowStr(0,0,str1);


 num2 = ReadADC(1);
 ValueToString(str2,num2);
 LcdShowStr(8,0,str2);


 num3 = ReadADC(2);
 ValueToString(str3,num3);  dx
 LcdShowStr(0,1,str3);


 num4 = ReadADC(3);
 ValueToString(str4,num4);
 LcdShowStr(8,1,str4);
    }
}


void InterruptTimer0() interrupt 1
{
static unsigned int cnt = 0;


     TH0 = 0xFC;
TL0 = 0x67;
cnt++;
if(cnt >= 1000)
{
    cnt = 0;
flag = 1;
}  
}


void ValueToString(unsigned char *str,unsigned char val)
{
     static unsigned char i = 1;
     val = (val*25)/255;
     str[0] = 'C';
str[1] = i + '0';
str[2] = ':';
str[3] = val/10+'0';
str[4] = '.';
str[5] = (val/10)%10+'0';
str[6] = val%10+'0';
str[7] = 'v';


i++;
if(i>4)
{
    i = 1;
}
}
/*------------------------------------------------
             读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);
 }
0 0
原创粉丝点击