/*********************************************/
//如下程序使用了计数器T0,外部中断INT0,普通I/O口P3.5
//调用了用于显示的液晶12864的头文件
/*********************************************/
#include
#include <12864A.H> //调用12864模块
#define uchar unsigned char
#define uint unsigned int
sbit 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(a<0)
//此句是为了避免因计数误差而导致a<0而出现的错误显示。
(前提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(); //初始化12864
Init_ICL7135(); //初始化ICL7135
while(1)
{
while(ICL7135_BUSY==0);
TR0=1;
}
}
//程序格式粗糙,无暇整理,仅为备份。如需参考,不明白处可留言。
关键字:ICL7135 驱动程序 双积分AD
引用地址:
ICL7135(4位半双积分AD)驱动程序备份
推荐阅读最新更新时间:2024-03-16 13:05
字符设备驱动程序--LED驱动
编写驱动程序需要编写那些代码: 1、硬件相关的驱动程序 2、Makefile的编译程序 3、还需要编写一个相关的测试程序 比如说:一个摄像头驱动程序 1、驱动程序的编写,需要编写一些硬件相关的操作,编译Makefile 2、安装、运行、卸载驱动程序(insmod ***、。./*** 、remod *** )。 3、使用这个驱动程序:需要一个测试程序,如QQ(测试程序)打开摄像头。 编写驱动程序框架: APP:(测试程序) open read write ......... -----------------------------------------------------
[单片机]
STM32开发笔记85: SX1268驱动程序设计(芯片唤醒)
单片机型号:STM32L053R8T6 本系列开发日志,将详述SX1268驱动程序的整个设计过程,本篇介绍芯片唤醒驱动程序。 一、RxDutyCycle模式 在讲述本篇内容之前,我们先来看一下SX1268的一种模式RxDutyCycle,译为中文为接收占空比模式。其可使用SetRxDutyCycle命令进入RxDutyCycle模式,我们来看一下该命令的详细解释。 该命令具有2个参数,从字面的意思可以看出,1个是指接收周期时间,另1个是指睡眠周期时间。我们可分析出,该命令是在RX模式和SLEEP模式之间自动转换的一种模式,其目的是为了节省芯片功耗。如果在使能外部中断后,则单片机可以进入睡眠态,SX1268大部分时间也是
[单片机]
基于PCI总线的数字卫星解调卡驱动程序开发
引言 PCI总线(即外围部件互连总线)是Intel公司提出的计算机接口总线。它的时钟频率为33MHz,有32位数据总线,可支持突发传输模式,数据传输峰值速率高达132 MB/s。
此外,PCI总线还可扩展为64位数据总线,扩展后的数据传输峰值速率高达264 MB/s,并支持即插即用功能而且独立于处理器。由于PCI总线具有诸多优点,它已经成为PC机的标准总线。因此,PCI接口设备的驱动程序开发就显得尤为重要。
数字卫星解调卡主要用于接收卫星发来的调制信号的数字解调。设计中的桥接芯片可采用PLX公司的PCI9054。本文主要介绍数字卫星解调卡的WDM驱动程序开发方法。
1 PCI9054接口芯片
[嵌入式]
mini2440 简单touch screen驱动程序
模块加载后打印出水平和垂直方向的ad转换结果,没有做坐标的转换,只为学习一下touch screen接口的编程方法,代码记录如下: #include linux/errno.h #include linux/kernel.h #include linux/module.h #include linux/slab.h #include linux/input.h #include linux/init.h #include linux/serio.h #include linux/delay.h #include linux/platform_device.h #include linux/clk.h #in
[单片机]
STM32开发笔记45:看门狗驱动程序的移植
单片机型号:STM32F070F6P6 本文介绍将看门狗驱动程序移植到自己工程中的方法,本项目使用的是独立看门狗IWDG。 1、在STM32CubeMX中使能看门狗,如下图所示。 2、查看看门狗时钟。 3、对看门狗进行设置,这里主要的是设置IWDG down-counter reload value。IWDG counter clock prescaler为分频系数,我现在项目设置的IWDG的时钟是40KHz,所以分频后为40000/64=625Hz,我先在项目需要使用5秒的看门狗,则625*5=3125,就是IWDG down-counter reload value的数值。 4、在自己的工
[单片机]
STM32开发笔记83: SX1268驱动程序设计(芯片复位)
单片机型号:STM32L053R8T6 本系列开发日志,将详述SX1268驱动程序的整个设计过程,本篇介绍芯片复位驱动程序。 一、数据手册 1、NRESET是芯片第15引脚,低有效。 2、通过15引脚NREST,可以达到完整的芯片复位。复位后,会执行标准的校准程序,先前的内容将丢失。复位最短时间为50us,给100us较为合适。 3、这张图是芯片各个模式的引脚的状态表,可以看到除复位模式外,其余模式NREST引脚的状态都为IN PU,其意思是输入上拉,其上拉值为50K。 二、程序 1、由于其内部上来,我们可以给出低功耗的程序,不将单片机控制NREST的引脚设置为输出,而设置为analog引脚,程序如下: c
[单片机]
PCI总线语音卡及WDM驱动程序设计
CTI(Computer Telephone Integration)即计算机电话集成技术已经发展了30多年。其中电话语音卡是CTI中的典型应用之一,它作为电脑与公用电话网的接口设备,应用领域已经渗透到社会各个部门。同时,在语音卡的开发中也不断注入了新的技术,软件上有语音合成、语音识别等技术,而硬件上最重要的就是DSP技术和PCI总线技术。研制了基于TMS320VC5410 DSP的PCI语音卡,并设计了相应的WDM设备驱动程序,取得了良好的效果。
1 硬件设计
1.1 PCI总线控制芯片PCI2040
PCI总线是一种不依附于某个具体处理器的局部总线,它支持32位或64位的总线宽度,频率通常是33MHz,目前最快的P
[嵌入式]
利用WinDriver开发PCI设备驱动程序
摘要: WinDriver是一套PCI驱动程序开发包。它改变了传统驱动程序开发的方法与思路,极在地简化了驱动程序的编制;同时,又没有牺牲驱动程序的性能,是一套高效、快捷的PCI驱动程序开发软件包。特别适合专业硬件人员的使用。
关键词: 设备驱动程序 WinDriver PCI
WinDriver是Jungo公司出版的一个设备驱动程序开发组件,它可以大大加速PCI设备驱动程序的开发。作者在实际的项目中采用了WinDriver来开发设备驱动程序,取得了相当好的运行效果。从目前国内的资料上来看,大多数设计人员还是在用DDK、Wtools开发设备驱动程序,因而作者觉得有必要向大家介绍与推荐这个软件。
[嵌入式]