基于单片机的数字电压表
来源:互联网 发布:stm32f103 编程 编辑:程序博客网 时间:2024/04/29 16:18
此款电压表主要是利用adc0832作为ad转换芯片,可测范围为0~5v 。lcd16025作为显示芯片。
源程序如下:
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit rs=P3^0;
sbit rw=P3^1;
sbit e=P3^2;
sbit bf=P0^7;
sbit cs=P1^2;
sbit clk=P1^1;
sbit dio=P1^0;
uchar code table[]="0123456789";
void delay(uint z)
{uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);}
bit busytest()
{bit result;
rs=0;
rw=1;
e=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
result=bf;
e=0;
return result;}
void write_date(uchar date)
{while(busytest()==1);
rs=1;
rw=0;
P0=date;
e=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
e=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
e=0;}
void write_com(uchar com)
{while(busytest()==1);
rs=0;
rw=0;
P0=com;
e=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
e=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
e=0;}
void lcd_init()
{delay(15);
write_com(0x38);
delay(5);
write_com(0x38);
delay(5);
write_com(0x38);
delay(5);
write_com(0x01);
delay(5);
write_com(0x06);
delay(5);
write_com(0x0c);
delay(5);}
read_date()
{uchar i,dat;
cs=1;
clk=0;
cs=0;
dio=1;
clk=1;
clk=0;
dio=1; //选择单通道模式
clk=1;
clk=0;
dio=0; //选择0通道
clk=1;
clk=0;
dio=1;
clk=1;
for(i=0;i<8;i++)
{clk=1;
clk=0;
dat<<=1;
dat|=dio;}
cs=1;
return dat;}
void display_char()
{write_com(0x00+0x80);
write_date('D');
write_com(0x01+0x80);
write_date('=');
write_com(0x00+0x80+0x40);
write_date('V');
write_com(0x01+0x80+0x40);
write_date('=');
write_com(0x03+0x80+0x40);
write_date('.');
write_com(0x07+0x80+0x40);
write_date('v');}
void display_dv(uchar dv)
{uchar i,j,k;
i=dv/100;
j=dv%100/10;
k=dv%10;
write_com(0x02+0x80);
write_date(table[i]);
write_com(0x03+0x80);
write_date(table[j]);
write_com(0x04+0x80);
write_date(table[k]);}
void display_v(uchar dat)
{uchar i,j,k;
i=dat/51;
j=(dat%51)/10;
k=(dat%51)%10;
write_com(0x02+0x80+0x40);
write_date(table[i]);
write_com(0x04+0x80+0x40);
write_date(table[j]);
write_com(0x05+0x80+0x40);
write_date(table[k]);}
void main()
{uchar temp;
lcd_init();
display_char();
while(1)
{temp=read_date();
display_dv(temp);
display_v(temp);
}}
- 基于单片机的数字电压表
- 基于单片机的简易数字电压表设计
- 基于单片机的简易数字电压表设计
- 基于51单片机的直流数字电压表(0-5V)
- 简单易制作的0-30VSTC单片机数字电压表
- (1)设计基于51单片机的电压表
- (2)基于51单片机的电压表程序
- (3)基于51单片机电压表的程序
- 高精度交流数字电压表指标的分析
- ADC0808和AT89C51利用LCD的数字电压表
- 基于单片机的带有日历功能的数字时钟
- 51单片机A/D转换接口扩展,做一个16进制显示的电压表
- 基于51单片机及DS18B20温度传感器的数字温度计设计
- 电压表的工作原理
- 电压表的原理
- 数字单片机的技术发展
- 单片机的数字时钟
- 数字单片机的技术发展
- 开博感言
- 使用 AJAX 扩展器自定义控件
- 有关FPGA网口的开发(nios版)《二》
- 崛起
- 服务端恢复或改变鼠标的样式
- 基于单片机的数字电压表
- 一个简单的十进制转换为八进制的程序
- Java实现之冒泡排序
- tomcat+mysql连接池的配置
- 本博客已作废
- 使用Struts 2命名空间(NameSpace)的注意点
- 清理右键菜单 “用阿里旺旺发送此文件…”
- 求助C++ADO
- 用户 'NT AUTHORITY/NETWORK SERVICE' 登录失败解决方法