51单片机PCF8591四路AD数值LCD1602屏显示源码

发布者:码农闲散人最新更新时间:2020-01-08 来源: 51hei关键字:51单片机  PCF8591  四路AD数值  LCD1602屏显示 手机看文章 扫描二维码
随时随地手机看文章

单片机源程序:

/**********************BST-V51实验开发板例程************************

*  平台:BST-V51 + Keil U3 + STC89C52

*  名称:四路AD数值LCD1602屏显示

*  公司:深圳市亚博软件开发有限公司

*  晶振:11.0592MHZ

******************************************************************/

/*-----------------------------------------------

  名称:IIC协议 PCF8591ADDA转换                  显示有4个,注意只有2个可以调节电压的

  内容:此程序通过IIC协议对DAAD芯片操作,读取电位器的电压通过液晶显示,并输出模拟量,用LED亮度渐变指示

------------------------------------------------*/

#include     //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

#include //包含NOP空指令函数_nop_();

#include "LCD1602.h"

#include "IIC.h"

#include "stdio.h"

unsigned char TempData[8];

unsigned char showtext[12];

/*------------------------------------------------

                    延时程序

------------------------------------------------*/

void mDelay(unsigned char j)

{

        unsigned int i;

        for(;j>0;j--)

        {

                for(i=0;i<125;i++);

        }

}

/*------------------------------------------------

                    初始化定时器1

------------------------------------------------*/

void Init_Timer1(void)

{

        TMOD |= 0x10;                             

        TH1=0xff;                              /* Init value */

        TL1=0x00;

        EA=1;                      /* interupt enable */

        ET1=1;                     /* enable timer1 interrupt */

        TR1=1;  

}


/*------------------------------------------------

                   主程序

------------------------------------------------*/

void main()

{

        //unsigned char num;                   //DA数模输出变量

        float ADtemp;                //定义中间变量

        

        LCD1602_init();

        mDelay(20);

        Init_Timer1();

                

        LCD_Write_String(0,0,"rank:");        //在第一行显示

        

        while(1)

        { 

                mDelay(20);     //延时用于清晰看出变化

                

                if(ADFlag)      //定时采集输入模拟量

                {

                        ADFlag=0;


                        ADtemp = ReadADC(0)*(5.0/256);

                        

//                        TempData[0]=(unsigned int)(ReadADC(0))*(5/256);//处理0通道电压显示

//                        TempData[1]=(unsigned int)(ReadADC(0))*50/256%10;

//                        TempData[2]=(unsigned int)(ReadADC(0))*500/256%10;

                        sprintf(showtext,"%1.2fV",ADtemp);

                        

                        LCD_Write_String(5,0,showtext);

        

//                        LCD_Write_Char(5,0,TempData[0] + '0');        

//                        LCD_Write_Char(6,0,'.');        

//                        LCD_Write_Char(7,0,TempData[1] + '0');

//                        LCD_Write_Char(8,0,TempData[2] + '0');

//                        LCD_Write_Char(9,0,'V');

                }

        }

}


/*------------------------------------------------

                   定时器中断程序

------------------------------------------------*/

void Timer1_isr(void) interrupt 3 using 1//定时器1执行数码管动态扫描

{


static unsigned int j;

TH1=0xfb;                //重新赋值

TL1=0x00;

j++;

if(j==200) 

    {j=0;ADFlag=1;} //定时置位AD采样标志位

          

……………………


关键字:51单片机  PCF8591  四路AD数值  LCD1602屏显示 引用地址:51单片机PCF8591四路AD数值LCD1602屏显示源码

上一篇:51单片机6自由度机械臂调试程序,带LCD1602PWM显示
下一篇:单片机恒温控制系统程序和仿真

推荐阅读最新更新时间:2024-11-16 22:07

51单片机中将变量、数组、函数设置在固定位置,定位到绝对地址
一、不带初值的变量或数组 直接使用_at_ 关键字加上地址就行。 如: unsigned char idata myvar _at_ 0x40; unsigned char code myvar _at_ 0x40; _at_ 关键字的前后都有空格。 二、带初值的变量或数组 要将某变量定位在一绝对位置且要赋初值,此时用 _at_ 不能完成,要进行如下操作: 1、在工程中建立一个新的文件,如InitVars.c,在其中对要处理的变量赋初值(假设是code变量): char code myVer = { COPYRIGHT 2001-11 }; 2、然后将该文件加入工程,编译,打开M51文件,若定义的是code型,则在 * * *
[单片机]
自制简单51单片机编程器(烧写器)
AT89C51是一款应用最为广泛的8051单片机,更重要的是他具有反复烧写(FLASH)的特性。一般情况下可重复烧写1000次,这样为初学者试验提供了一个廉价的平台。为了满足广大单片机爱好者动手的需要,本人利用半个月的时间,参考国外资料,实际设计制作成功一款简单的AT89C51/52/55单片机编程器。由于单片机编程时序不同,这一款编程器仅仅支持ATMEL公司的AT89C51, AT89C52, AT89C55芯片,不支持华邦或飞利浦兼容芯片。下面是单片机编程器电路图. 注:元器件清单见附录 工作原理简述: Q2, Q4以及周围的几个元件构成了电平转换电路,这样节省了1片max 232芯片,在要求不高的场合,这个电路在
[单片机]
自制简单<font color='red'>51单片机</font>编程器(烧写器)
51单片机制作呼吸灯
//晶振11.0592 //灯光在单片机控制之下完成由亮到暗的逐渐变化,感觉像是在呼吸 //本例在51hei-5型开发板上实现了一个数码管和一个led灯一起实现呼吸效果 //文件下载:http://www.51hei.com/f/fxd.rar #include reg52.h #define uint unsigned int #define uchar unsigned char sbit D1=P0^7; uchar sr; uchar jf; uchar code table ={ 0,1,2,3,4,5,6,7,8,9,10, 11,12,13,14,15,16,17,18, 19,20,21,22,23,24,25,2
[单片机]
基于8051单片机的多功能用电故障控制器实现
1 引言 对于电网短路和线路故障检测保护已有不少研究。市面上的电器短路、过载、超压的保护器功能单一。容易损坏,没用提示功能,不够人性化。但随人们生活水平的不断提高。用电设备也不断增加,产生了肓目用电现象。这给人们造成极大的安全隐患。其中危害性最大的用电故障有三种:输入电压过高、室内线路严重过载、用电器短路。本文设计的单片机AT89C5l用电故障控制系统的目的就是为了防止这三种故障带来的危害。 2 硬件的组成 单片机用电故障控制系统的硬件分别是:由降压变压器、2个相瓦串联的感应线圈、升压变JK器、电磁开关、5V稳压电源、超压过流信号获取比较电路、可编程接门扩展芯片8255、HD44780字符液晶显示
[单片机]
基于80<font color='red'>51单片机</font>的多功能用电故障控制器实现
51单片机+74hc595锁存器驱动一个静态数码管
实验开发板HC6800 v2.8 (淘宝可以查到) 将JP2 与JP3相连即可,注意排线要反接 代码如下: /* * 标题: 试验数码管上如何显示数字(共阳极) * * * * 连接方法:P2 与P3 用8PIN排线连接 * * * * * / #include reg51.h #include intrins.h void delay(unsigned int i); //函数声名 // 此表为 LED 的字模,0~F un
[单片机]
<font color='red'>51单片机</font>+74hc595锁存器驱动一个静态数码管
基于C51单片机的家庭防盗报警系统
从实际出发,设计一种家庭用、与电话线连接、操作简单、工作稳定可靠的远程智能防盗报警装置。当人们外出时,往往希望实施自动监测报警以使家庭财产免受损失。针对这一需求,研制出了一系列自动报警系统,如门磁式、触摸式和红外线监测自动报警系统等。本文将介绍的远程智能防盗报警装置,可同时监视多个重要点(如门、窗等),发现盗情及时拨叫号码,并能利用普通电话线进行告警信号呼叫,其性能稳定可靠,实用性、适用性强,且具有较高的灵活性。 基本工作原理 如图1所示,远程智能防盗报警装置由信号检测电路、复位电路、电话号码输入电路、89C51单片机、语音电路、模拟摘机挂机电路、DTMF编码发送电路、铃流信号检测电路和忙音信号检测电路等
[单片机]
基于C<font color='red'>51单片机</font>的家庭防盗报警系统
基于51单片机的可调PWM波程序
#include reg52.h #define uint unsigned int uint pp; char num=2,dis; sbit pwm=P1^0; sbit s2=P3^4; sbit s3=P3^5; sbit dula=P2^6; sbit wela=P2^7; unsigned char code table = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f, 0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; void keyscan() { if(s2==0) { while(!
[单片机]
基于双51单片机的信号处理系统设计
当检测与控制系统处理大量数据和多路信息时,只用一片单片机往往无法满足系统实时性和扩展性要求,且处理时间较长。例如在液面信息采集过程中,单片机要在相等的时间间隔进行A/D转换以及数据处理。由于要实现高通量的液体操作,液体操作平台通常配置多根移液针同时进行液体操作工作,采集多路液面信息。因此这里提出一种基于双单片机的信号处理系统设计方案,该系统采用单片机(AT89S51)作为核心器件,2片AT89S51型单片机作为双核心分担整个检测单元的任务。 1 系统硬件电路设计 该信号处理系统的总体设计方案为:单片机1定时进行A/D转换,并且将转换结果存入外部数据存储器:单片机2读取数据存储器中的转换结果并且通过串口传递给计算机,同时
[测试测量]
基于双<font color='red'>51单片机</font>的信号处理系统设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved