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);
}
#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
- 2.7
- 2.7
- 2.7
- 2.7
- 2.7
- 2.7
- 2.7
- 2.7 分组
- 2.7 小结
- 2.7 最大公约数
- hdu1.2.7
- 2.7 枚举
- CareerCup 2.7
- 2.7 GetWords
- 2.7 Fillvector
- 2.7 Intvector
- 2.7 注释
- 【例 2.7】
- Activity启动模式、Intent重复传递
- Android仿ios对话框
- 解决VB.net使用COM控件加载Excel文件速度慢的问题
- 详解公钥、私钥、数字证书的概念
- 程序员的几大痛点
- 2.7
- java hasNextInt判断是否为数字
- CMake&yacc&lex
- 公钥、密钥、SSL、会话密钥的简单解释
- 智能电子时钟(定时、报警、灯光自动调节)
- C++根据频率生成wav音频文件
- 网络请求框架对比
- Android端和服务端Tomcat的https添加记录
- java基础学习之函数 三