|
#include <reg52.h>
#include "i2c.h"
#include "delay.h"
#include "display.h"
#define AddWr 0x90 //寫數(shù)據(jù)地址
#define AddRd 0x91 //讀數(shù)據(jù)地址
extern bit ack;
unsigned char ReadADC(unsigned char Chl);
bit WriteDAC(unsigned char dat);
/*------------------------------------------------
主程序
------------------------------------------------*/
main()
{
unsigned char num=0;
Init_Timer0();
while (1) //主循環(huán)
{
num=ReadADC(2);//
TempData[0]=DuanMa[num/100];
TempData[1]=DuanMa[(num%100)/10];
TempData[2]=DuanMa[(num%100)%10];
//主循環(huán)中添加其他需要一直工作的程序
WriteDAC(num);//把當(dāng)前值寫入DA,用led演示亮度
DelayMs(100);
}
}
/*------------------------------------------------
讀AD轉(zhuǎn)值程序
輸入?yún)?shù) Chl 表示需要轉(zhuǎn)換的通道,范圍從0-3
返回值范圍0-255
------------------------------------------------*/
unsigned char ReadADC(unsigned char Chl)
{
unsigned char Val;
Start_I2c(); //啟動(dòng)總線
SendByte(AddWr); //發(fā)送器件地址
if(ack==0)return(0);
SendByte(0x40|Chl); //發(fā)送器件子地址
if(ack==0)return(0);
Start_I2c();
SendByte(AddWr+1);
if(ack==0)return(0);
Val=RcvByte();
NoAck_I2c(); //發(fā)送非應(yīng)位
Stop_I2c(); //結(jié)束總線
return(Val);
}
/*------------------------------------------------
寫入DA轉(zhuǎn)換數(shù)值
輸入?yún)?shù):dat 表示需要轉(zhuǎn)換的DA數(shù)值,范圍是0-255
------------------------------------------------*/
bit WriteDAC(unsigned char dat)
{
Start_I2c(); //啟動(dòng)總線
SendByte(AddWr); //發(fā)送器件地址
if(ack==0)return(0);
SendByte(0x40); //發(fā)送器件子地址
if(ack==0)return(0);
SendByte(dat); //發(fā)送數(shù)據(jù)
if(ack==0)return(0);
Stop_I2c();
}
|
|