51单片机+ 0804+ 1602-单片机:51单片机+ADC0804+LCD1602

问题描述

单片机:51单片机+ADC0804+LCD1602
#include
#include
#include
#define uint unsigned int
#define uchar unsigned char
#define IO_1602 P0
#define IO_0804 P1

uint temp date;
uchar qianbaishige;
uchar cc[16]="" M O D E "";

sbit lcdrs=P2^0;//LCD液晶的寄存器选择端
sbit lcdrw=P2^1;//LCD液晶的读写选择端
sbit lcden=P2^2;//LCD液晶的使能端
sbit adcs=P3^2;//AD的片选信号
sbit adrd=P3^7;//外部读取转换结果的控制信号
sbit adwr=P3^6;//A/D转换器启动控制信号
sbit adintr=P3^3;//中断请求信号输出端

void delay_ms(uint t);//延时函数
void lcdxzl(uchar dat);//LCD液晶写指令函数
void lcdxsj(uchar dat);//LCD液晶写数据函数
void lcdinit();//LCD液晶初始化函数
/*void adinit();//ADC0804初始化函数
void start();//AD0804开始转化函数
uint adraed();//读取AD0804转化后的数据*/
uchar adc0804(void);
uint datpro(void);//ADC0804读出的数据处理
void display();//显示电压值函数

void delay_ms(uint t)//延时程序
{
uchar xy;
for(t;t>0;t--)
{for(x=0;x<114;x++)
for(y=0;y<1;y++);
}
}

void lcdxzl(uchar dat) //LCD液晶写指令函数
{
lcden=0;
IO_1602=dat;
lcdrs=0;
lcdrw=0;
lcden=1;
delay_ms(10);
lcden=0;
delay_ms(10);
}

void lcdxsj(uchar dat)//LCD液晶写数据函数
{
lcden=0;
IO_1602=dat;
lcdrs=1;
lcdrw=0;
lcden=1;
delay_ms(10);
lcden=0;
delay_ms(10);
}

void lcdinit()//LCD液晶初始化函数
{
uint a;
delay_ms(15);
lcdxzl(0x38);//设置16x2显示,5x7点阵,8位数据口
delay_ms(5);
lcdxzl(0x38);//设置16x2显示,5x7点阵,8位数据口
delay_ms(5);
lcdxzl(0x01);//光标及移动设置
lcdxzl(0x06);//显示开及光标设置
lcdxzl(0x0c);//全屏清0
lcdxzl(0x80);//设置初始显示地址
delay_ms(50);
for(a=1;a<16;a++)
{
lcdxsj(cc[a]);
delay_ms(50);
}
}

void adinit()//AD0804初始化函数
{
adcs=1;
adwr=1;
adrd=1;
P3=0xff;
delay_ms(10);
}

void start()//AD0804开始转化函数
{
P1=0xff;
adcs=0;
adwr=1;
adwr=0;
delay_ms(10);
adwr=1;
delay_ms(10);
}

uint adraed()//读取AD0804转化数据
{
adcs=0;
adrd=1;
adrd=0;
delay_ms(10);
temp=P1;
delay_ms(10);
adrd=1;
adcs=1;
adwr=1;
delay_ms(10);
return (temp);
}

void display()
{
uint s;
uint a;
s=adread();
s=s*1200;
a=s*8;
lcdxzl(0x80+0x40);
lcdxsj('U');
lcdxzl(0x80+0x41);
lcdxsj(':');
lcdxzl(0x80+0x42);

lcdxsj('0'+s/1000);
lcdxzl(0x80+0x43);
lcdxsj('0'+s%1000/100);
lcdxzl(0x80+0x44);
lcdxsj('.');
lcdxzl(0x80+0x45);
lcdxsj('0'+s%100/10);
lcdxzl(0x80+0x46);
lcdxsj(0x30+s%10);
lcdxzl(0x80+0x47);
lcdxsj('V');
lcdxzl(0x80+0x4a);
lcdxsj('I');
lcdxzl(0x80+0x4b);
lcdxsj(':');
lcdxzl(0x80+0x4c);
lcdxsj('0'+s*8/10);
lcdxzl(0x80+0x4d);
lcdxsj('0'+s*8%10);
lcdxzl(0x80+0x4e);
lcdxsj('A');
}

void main()
{
lcdinit();
while(1)
{
display();//显示电压值在LCD1602

}

}
为什么我写出来的程序不能显示测出的电压

解决方案

你首先要确保自己的1602显示没有问题,这样才能有个信息反馈给你是否采集到电压。
入股显示没有问题,那么就要看你IO口的顺序是否正确,0804与单片机的通信是否有问题

解决方案二:
51单片机和ADC0804连接是否有问题?
ADC0804周围的连接是否有问题?
51单片机是否可正常运行
51单片机和LCD1602连接是否有问题?

解决方案三:
adc初始化和开始函数都没有用到

时间: 2024-11-10 00:42:44

51单片机+ 0804+ 1602-单片机:51单片机+ADC0804+LCD1602的相关文章

单片机编程 keil-基于51单片机运用液晶屏显示字符

问题描述 基于51单片机运用液晶屏显示字符 基于51单片机运用液晶屏显示字符时出了些问题,编译什么的都没问题,但是就是液晶屏没动静,液晶屏是1602,求助,急急急,跪谢 #includesbit lcd_en= P2^7;sbit lcd_rs = P2^6;sbit lcd_rw =P2^5;sbit lcd_data = P0;#define unchar unsigned char#define uint unsigned intunchar code table[]={"baby Che

单片机课程设计-基于51单片机的分时分区照明控制器的汇编程序

问题描述 基于51单片机的分时分区照明控制器的汇编程序 (1)具有3种固定的模式,作息模式之间可以根据时间自动转换或手动转换.模式如下: 手动:可以任意管制各个分区的照明. 时间控制:按照学校日常运行模式,6:00~12:00.14:00~18:00启用照明,其他时间关闭,自动切换. 自动模式:在6:00~12:00.14:00~18:00启用照明时间段中,6:00开始启用照明,当室外照度达到一定强度时,关闭B区.C区照明,当室外照度低于一定强度时,重新启用.在此期间,A区采用温度场控制,当该区

单片机 上电 正脉冲-STC89C52单片机刚上电就有一个正脉冲,万分感谢啊

问题描述 STC89C52单片机刚上电就有一个正脉冲,万分感谢啊 请教一个问题,在使用STC89C52单片机时,我初始化输出端口为0(低电平),但在刚上电的时,输出端口有个60ms左右的正脉冲(高电平),现在不知道怎么消除这个问题.(是不是单片机上电时都会有一个复位啊,所以会有一个高电平输出,如果是这样,怎么消除这个高电平啊)谢谢啊!程序如下:#include #define LED P1unsigned int timecount;void main(void){ LED=0x00; TMOD

继电器-基于51单片机的蓝牙开关

问题描述 基于51单片机的蓝牙开关 带底板的hc-05蓝牙模块怎么用啊,引脚为startenrxdtxdvccgnd想要做8路的继电器开关,蓝牙模块需要怎样和单片机相连,还有at模式到底是什么,设置后还需要在电路中接vcc吗 解决方案 这个很简单,RX和TX和单片机的RX和TX相连接 但是要相反连接,然后利用串口通信就可以实现了,通过接受的BUFF数据来个switch就可以实现相应的功能 解决方案二: 找hc-05的文档啊. 解决方案三: 高深莫测啊.求教求教啊-- 解决方案四: 用startr

用51单片机做一个数字电子钟

问题描述 用51单片机做一个数字电子钟 想用51单片机做一个电子钟,但是刚接触单片机,只会编流水灯的程序,请指点一下具体的实现原理 解决方案 单片机,数字电子钟51单片机之电子钟设计 解决方案二: 实时时钟的话要接其他芯片DS1302什么的,简单的秒表这样的在计时器中断里面计数,然后再控制数码管扫描显示出来就好了

《51单片机应用开发从入门到精通》——1.2 学习单片机的必备工具

1.2 学习单片机的必备工具 多动手做实验能够帮助初学者很快理解单片机的原理和开发技巧.单片机开发之前都要创建一个开发环境.所以,学习前应准备好实验所需的器材和单片机开发的相关软件. 1.2.1 计算机 单片机开发对计算机的要求不高,只要能正常运行Windows操作系统的计算机即可. 1.2.2 单片机集成开发系统软件 单片机集成开发系统软件,是指用来在计算机上编写.汇编和仿真.调试单片机程序的软件. 目前用来开发单片机的应用软件比较多,如Keil公司的Keil C51,是比较好的51单片机集成

汇编语言-51单片机,汇编大神求解!

问题描述 51单片机,汇编大神求解! LCD1602液晶万年历,日期判断怎么编,就是闰年,平年,二月的判断! 解决方案 你这个是毕业设计的小项目,我有源代码,在我的百度盘里你费点神,我给你连接你自己去找找看链接: http://pan.baidu.com/s/1gd507tT 密码: sney

《51单片机应用开发范例大全(第3版)》——第2章 单片机接口的扩展

第2章 单片机接口的扩展 51单片机应用开发范例大全(第3版) 单片机输入/输出(I/O)接口是单片机和外部设备之间信息交换和控制的桥梁.它可以实现和不同外部设备的速度匹配,可以改变数据传送的方式,也可以改变信号的性质和电平等,可以根据不同的外设需要对输入/输出(I/O)接口进行扩展.本章主要结合具体的实例进行讲解,主要包括以下内容: 基本器件实现端口扩展: 扩展芯片实现端口扩展: cpld实现端口扩展.

51单片机

问题描述 51单片机是比较容易入门的 解决方案 解决方案二:楼主想表达的是啥呢?单片机这东西只要资料够多.就容易搞.解决方案三: 解决方案四:同意楼主的意见解决方案五:我建议从AVR开始入门.同样是8位单片机,AVR比51更现代一些,现在的应用前景也不错.而且AVR的学习并没有比51更难.解决方案六:入门啥都可以解决方案七:王德田德田兄也来逛论坛了呵呵解决方案八:引用4楼xinyaping的回复: 我建议从AVR开始入门.同样是8位单片机,AVR比51更现代一些,现在的应用前景也不错.而且AVR