PCF8591 1602液晶显示
来源:互联网 发布:matlab 矩阵色块图 编辑:程序博客网 时间:2024/06/03 04:43
- #include <reg52.h>
- #include "i2c.h"
- #include "delay.h"
- #include "1602.h"
- #include <stdio.h>
- #define AddWr 0x90 //写数据地址
- #define AddRd 0x91 //读数据地址
- extern bit ack;
- unsigned char ReadADC(unsigned char Chl);
- bit WriteDAC(unsigned char dat);
- unsigned char count;
- /*------------------------------------------------
- 主程序
- ------------------------------------------------*/
- main()
- {
- unsigned char num=0,i,j;
- unsigned char temp[7];//定义显示区域临时存储数组
- float Voltage; //定义浮点变量
- LCD_Init(); //初始化液晶
- DelayMs(20); //延时有助于稳定
- LCD_Clear(); //清屏
- TMOD = 0x01;
- TH0 = 0x3c;
- TL0 = 0xb0;
- ET0 = 1;
- TR0 = 1;
- EA = 1;
- while (1) //主循环
- {
- for(i=0;i<5;i++)//连续读5次,取最后一次,以便读取稳定值
- num=ReadADC(count); //读取第1路电压值,范围是0-255
- Voltage=(float)num*5/256; //根据参考电源VREF算出时间电压,float是强制转换符号,用于将结果转换成浮点型
- sprintf(temp,"CHL%c %3.2f V ",count+0x30,Voltage);//格式输出电压值,%3.2f 表示浮点输出,共3位数,小数点后2位
- LCD_Write_String(0,0,temp);
- }
- }
- /*------------------------------------------------
- 读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);
- }
- void ISR_time1() interrupt 1
- {
- unsigned char i;
- EA = 0;
- // TMOD = 0x01;
- TH0 = 0x3c;
- TL0 = 0xb0;
- i++;
- if(i == 20)
- {
- i = 0;
- count++;
- if(count == 4)
- {
- count = 0;
- }
- }
- EA = 1;
- }
- /*------------------------------------------------
- 写入DA转换数值
- 输入参数:dat 表示需要转换的DA数值,范围是0-255
- ------------------------------------------------*/
- /*bit WriteDAC(unsigned char dat)
- {
- Start_I2c(); //启动总线
- SendByte(AddWr); //发送器件地址
- if(ack==0)return(0);
- SendByte(0x40); //发送器件子地址
- if(ack==0)return(0);
- SendByte(dat); //发送数据
- if(ack==0)return(0);
- Stop_I2c();
- }*/
0 0
- PCF8591 1602液晶显示
- PCF8591 1602液晶显示
- PCF8591 1602液晶显示
- 1602液晶显示
- 1602液晶显示
- PCF8591
- PCF8591
- 1602液晶显示程序
- 1602液晶显示程序
- 1602液晶显示DS18B20温度
- 单片机的1602液晶显示
- 51单片机 1602液晶显示
- 1602液晶显示实验报告
- 1602动态液晶显示
- 1602LCD液晶显示
- 1602液晶显示温湿度
- 108-PCF8591 1路AD 1602显示
- 108-PCF8591 1路AD 1602显示
- 在Vue中通过自定义指令获取元素
- JVM 和 GC的工作机制详解
- ubuntu16.04下MySQL驱动、使用eclipse链接数据库
- Android研究的一些总结
- spring 使用redis集群配置
- PCF8591 1602液晶显示
- Ubuntu15安装IDEA开发工具
- 动态生成行,序号随之增加,删除后依然按顺序。所以给动态生成的html元素绑定click事件
- 1.1输出一行文字
- JVM系列二:GC策略&内存申请、对象衰老
- PKU 2777 Count Color
- 死锁(面试常考)
- Java 面试——基础程序题001
- 506. Relative Ranks