C语言AD0808测电压在LCD1602显示
时间: 2023-12-02 08:06:33 浏览: 100
要在LCD1602上显示AD0808测得的电压值,需要以下步骤:
1. 使用C语言编写AD0808的驱动程序,将其连接到单片机上,并通过单片机读取AD0808的输出电压值。
2. 根据读取到的电压值,使用C语言编写LCD1602的驱动程序,将其连接到单片机上,并通过单片机将电压值显示在LCD1602上。
3. 在主程序中调用AD0808和LCD1602的驱动程序,实现读取电压值并显示在LCD1602上的功能。
以下是一个简单的示例程序,其中使用了AT89C51单片机、AD0808模块和LCD1602模块:
```c
#include <reg51.h>
#define LCD_RS P2_0
#define LCD_RW P2_1
#define LCD_EN P2_2
#define LCD_DATA P0
void delay(unsigned int t)
{
while(t--);
}
void lcd_cmd(unsigned char cmd)
{
LCD_RS = 0;
LCD_RW = 0;
LCD_DATA = cmd;
LCD_EN = 1;
delay(10);
LCD_EN = 0;
}
void lcd_data(unsigned char dat)
{
LCD_RS = 1;
LCD_RW = 0;
LCD_DATA = dat;
LCD_EN = 1;
delay(10);
LCD_EN = 0;
}
void lcd_init()
{
lcd_cmd(0x38);
lcd_cmd(0x0c);
lcd_cmd(0x06);
lcd_cmd(0x01);
}
unsigned int read_adc(unsigned char ch)
{
unsigned int result;
ADC_CONTR = 0x80 | ch;
delay(100);
ADC_CONTR |= 0x20;
while(!(ADC_CONTR & 0x10));
result = ADC_RES;
result <<= 8;
result |= ADC_RESL;
return result;
}
void display_voltage()
{
unsigned int adc_value = read_adc(0);
float voltage = adc_value * 5.0 / 1024.0;
unsigned char buf[16];
sprintf(buf, "Voltage:%.2fV", voltage);
lcd_cmd(0x80);
for(int i = 0; i < 16; i++)
{
if(buf[i] == '\0')
{
break;
}
lcd_data(buf[i]);
}
}
void main()
{
lcd_init();
while(1)
{
display_voltage();
delay(500);
}
}
```
在这个示例程序中,read_adc函数用于读取AD0808模块输出的电压值,display_voltage函数用于将电压值显示在LCD1602上。主程序中不断调用display_voltage函数,实现了连续读取和显示电压值的功能。
阅读全文