#include<reg51h>
#define uint unsigned int
#define uchar unsigned char
sbit sta=P3^4;
sbit eoc=P3^3;
sbit oe=P3^2;
sbit clk=P3^1;
sbit lcdrs=P3^5;
sbit lcdrw=P3^6;
sbit lcdoe=P3^7;
uchar code table1[]="Voltage!";
uchar code table2[]="(V)";
uchar tt0;
void delay(uint x)
{
uchar t;
while(x--) for(t=0;t<120;t++);
}
void timer0() interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
clk=~clk;
}
void write_com(uchar com)
{
lcdrs=0;
lcdoe=0;
P0=com;
lcdoe=1;
delay(5);
lcdoe=0;
delay(5);
}
void write_dat(uchar dat)
{
lcdrs=1;
lcdoe=0;
P0=dat;
lcdoe=1;
delay(5);
lcdoe=0;
delay(5);
}
void init_lcd()
{
uchar i;
lcdrw=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x84);
for(i=0;i<9;i++)
{
write_dat(table1[i]);
delay(5);
}
write_com(0x80+0x48);
for(i=0;i<3;i++)
{
write_dat(table2[i]);
delay(5);
}
}
void display(uchar dat)
{
uchar votc;
votc=dat;
write_com(0x80+0x44);
write_dat(0x30+votc/51);
write_com(0x80+0x45);
write_dat('');
write_com(0x80+0x46);
write_dat(0x30+votc%51/51);
write_com(0x80+0x47);
write_dat(0x30+(votc%51%10));
}
void main()
{
init_lcd();
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
TMOD=0x01;
EA=1;
ET0=1;
TR0=1;
while(1)
{
sta=0;
sta=1;
sta=0;
while(eoc==0);
oe=1;
display(P2);
oe=0;
}
这是我以前做过的测试程序,或许对你有所帮助,不明白的话可以加976434210,也有ADC0832的测试程序。
8位AD,最大255;uchar num;
num=AD_receive();//把AD采集回来的数据保存
write_com(0x80);//1602从0x80开始显示数据
write_data(num/100+0x30); //显示字符百位,后面以此类推
write_data(num%100/10+0x30);//十位数
write_data(num%10+0x30);//个位数
至于1602的驱动程序,网上多得是,找找就有了首先保证硬件是连通的,比如单片机与1602显示屏、串口电平转换芯片等部分电路都已正确连接。然后可以下载1602、串口的实例程序,别人已经做好的,直接拿来用,分别试验,成功后把它做成一个函数,以后直接调用,有时间还可以与datasheet比较,读懂后进行优化。
电脑上串口显示可以用“串口助手”之类的软件。先利用电压互感器将市电高压降为低压,此时是电流信号经过一放大器转换为电压信号,此时依然是交流信号;然后再经过一芯片转换成有效值直流信号,由于此时信号比较小,再需要经过放大器放大,接入AD芯片,将模拟信号数字化(量化),最后接入单片机系统完成数据的处理与显示。 电压互感器选择DXPT202,结合武汉市场与性能价格比后确定的。通过DXPT202在限流电阻下取得2mA电流。然后通过OP07进行电流到电压的转换,由于考虑到后续器件的性能,这里转换来的电压信号要控制在200mV下,通过一较小电阻(小于100Ω,这里采用的是91Ω的精密电阻)即可满足要求。再通过AD736JN集成芯片前级经过OP07转换而来的交流电压信号转换成真有效值直流信号以便于模数转换。再一次将AD736JN的输出直流信号放大,由于AD736JN的输出电压信号小于200mV,不适宜模数转换。采用常用的ADC0809把OP07转换而来的模拟电压信号进行A/D转换。最后将ADC0809转换而来的数字信号送入AT89S51单片机处理并驱动LCD模块(1602)显示。具体方法如下:
1、点击左下角的“开始”菜单,选择“设备和打印机”。
2、右击写真机,选择“属性”。
3、切换到“端口”,点击“配置端口”。
4、在d出的对话框中出现IP地址,复制该地址。
5、打开浏览器,将复制号的IP粘贴进入。
6、打开后在“首页”点击“使用日志”。
7、这时就可以看到详细的打印记录了(打印时间、张数、是否彩色、文件名等等)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)