ICL71354位半双积分AD驱动程序备份
/*********************************************///如下程序使用了计数器T0,外部中断INT0,普通I/O口P3.5//调用了用于显示的液晶12864的头文件/*********************************************/#include reg51.h>#include 12864A.H> //调用12864模块#define uchar unsigned char#define uint unsigned intsbit ICL7135_POL=P3^5;sbit ICL7135_BUSY=P3^2; //接外部中断口sbit ICL7135_CLK=P3^4; //接计数器口 int ICL7135_count; //计数存储单元uint ICL7135_out; //A转D后数据的10000倍,存于此单元bit ICL7135_flag; //输出正负的位标志float ICL7135_ref=2.0; //定义基准电压变量,方便修改Init_ICL7135() //初始化子程序{TMOD=0x05; //T0工作于计数模式EA=1;TL0=0;TH0=0;EX0=1;IT0=1;}/*---------------------------------------------------------------*/int0() interrupt 0{float a; //浮点型转整型中间变量uchar A1,A2,A3,A4,A5,B1,B2,B3,B4,B5; //万、千、百、十、个位TR0=0; //停止计数ICL7135_count=TH0*256+TL0; //16方式计得的数ICL7135_flag=ICL7135_POL; //判断输出是正是负a=ICL7135_ref*(ICL7135_count-10000);
// 正向积分为10000个脉冲ICL7135输出放大10000倍后的采样值 if(a0)
//此句是为了避免因计数误差而导致a0而出现的错误显示。
(前提ICL7135_count必须为有符号变量)a=0;ICL7135_out=a; //浮点型转整型。//被测电压的各位A1=ICL7135_out/10000; A2=ICL7135_out%10000/1000; A3=ICL7135_out%1000/100;A4=ICL7135_out%100/10;A5=ICL7135_out%10;//AD采样的源码各位B1=ICL7135_count/10000;B2=ICL7135_count%10000/1000;B3=ICL7135_count%1000/100;B4=ICL7135_count%100/10;B5=ICL7135_count%10;/*****************************************************************///显示模块 此处用液晶显示器12864 可替换为CH451驱动的数码管/*****************************************************************/LCD_Setaddress(1,1); //送显示的纵横坐标print("当前测试电压:"); LCD_Setaddress(2,3);if(ICL7135_flag) //如果为正数{ LCD_write_dat(0x30+A1); LCD_write_dat(0x2E); //显示小数点LCD_write_dat(0x30+A2);LCD_write_dat(0x30+A3);LCD_write_dat(0x30+A4);LCD_write_dat(0x30+A5);}else //如果为负数{LCD_write_dat(0x2d); //显示负号LCD_write_dat(0x30+A1);LCD_write_dat(0x2E);LCD_write_dat(0x30+A2);LCD_write_dat(0x30+A3);LCD_write_dat(0x30+A4);LCD_write_dat(0x30+A5);}LCD_Setaddress(3,1); //送显示的纵横坐标print("输出源码:"); LCD_Setaddress(4,3);LCD_write_dat(0x30+B1); LCD_write_dat(0x30+B2);LCD_write_dat(0x30+B3);LCD_write_dat(0x30+B4);LCD_write_dat(0x30+B5);/**********************************************************************/TL0=0; //重新转载数据 TH0=0; }/*-----------------------------------------------------------*/void main(){LCD_init(); //初始化12864Init_ICL7135(); //初始化ICL7135while(1){while(ICL7135_BUSY==0);TR0=1;}}//程序格式粗糙,无暇整理,仅为备份。如需参考,不明白处可留言。
- 全球视角的多晶硅行业分析多菌灵瓜类蔬菜酒店筒灯过程分析干燥剂Frc
- 中联重科车桥公司再获出口订单田园家具光跳线氩弧焊汽缸垫片冲压加工Frc
- 丹麦不粘锅涂料会降低婴儿出生体重钎头墨粉录音棚网络工程喷漆Frc
- 抗菌塑料产业呼唤检测标准分切机夹头通风管道绝缘电缆专业油墨Frc
- 苯泄漏事故现场处置方案排屑器工业烤箱镶入螺母控制仪表遥控器Frc
- 湖南长沙中美投资12亿建立UV固化涂料基仪征龙眼烤版机变位机旋涡气泵Frc
- 出口贸易增长人造革合成革产业聚集发展汽车贴膜润滑设备蝶型螺母信封印刷微型轴承Frc
- 全国社保基金逾160亿元投资保障房建设0特殊木液位开关刀带裁断机加热棒Frc
- 陶瓷药瓶标准试行二灌封胶柳州尼龙手套游戏光枪点歌系统Frc
- 工信部发布2017年我国光伏产业运行情况接线柱呼和浩特平垫圈人造棉西瓜Frc