资源简介
数字电压表课程设计是我们很多童鞋一起辛苦做出来的劳动成果,里面东西很详细有protues仿真图,keill编程,还有我们使用的元器件的引脚资料图,所以以才值十分,希望下载看了后再给我评价!
功能要求:
1.用按键选择测量11路0~10V的输入电压值。
2.显示器件为LCD1602
3.测量的最小分辨率为0.002V,测量误差约为正0.002V
所用AD转换器件为TLC549,单片机为89C51
最好有超量程报警电路
代码片段和文件信息
#include
#include
#ifndef TLC549_ADC_H_
#define TLC549_ADC_H_
sbit Y=P1^7;
sbit X=P1^6;
sbit IOCLK = P1^0;
sbit DATAOUT = P1^1;
sbit CS = P1^2;
sbit rs=P1^3;
sbit rw=P1^4;
sbit ep=P1^5;
typedef unsigned char BYTE ;
typedef unsigned int WORD ;
typedef bit BOOL ;
unsigned int Volt;
unsigned int LCD[7];
BYTE code dis1[]={“Voltage:“};
BYTE code dis2[]={“ error!“};
unsigned char TLC549_ADC(void);
void Data_Conversion(void);
void Volt_To_LCD(void);
unsigned char TLC549_ADC(void)
{
unsigned char itmp;
CS=1;
IOCLK=0;
CS=0;
_nop_();
_nop_();
for(i=0;i<8;i++)
{
IOCLK=1;
tmp<<=1;
tmp|=DATAOUT;
IOCLK=0;
}
CS=1;
for(i=17;i!=0;i--)
_nop_();
return(tmp);
}
void Data_Conversion(void)
{
unsigned char AD_Data;
AD_Data=TLC549_ADC();
Volt=5.0/256*AD_Data*10000;
}
void delay(BYTE ms)
{
BYTE i;
while(ms --)
{
for(i=0; i<250; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
BOOL lcd_bz()
{
BOOL result;
rs = 0;
rw = 1;
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
result = (BOOL)(P2 & 0x80);
ep = 0;
return result;
}
void lcd_wcmd(BYTE cmd)
{
while(lcd_bz());//判断LCD是否忙碌
rs = 0;
rw = 0;
ep = 0;
_nop_();
_nop_();
P2 = cmd;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}
lcd_pos(BYTE pos)
{
lcd_wcmd(pos | 0x80);
}
lcd_wdat(BYTE dat)
{
while(lcd_bz());//判断LCD是否忙碌
rs = 1;
rw = 0;
ep = 0;
P2 = dat;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}
lcd_init()
{
lcd_wcmd(0x38);
delay(1);
lcd_wcmd(0x0c);
delay(1);
lcd_wcmd(0x06);
delay(1);
lcd_wcmd(0x01);
delay(1);
}
void main(void)
{
BYTE iz;
lcd_init();// 初始化LCD
delay(10);
while(1)
{
lcd_pos(0x00);//设置显示位置
i = 0;
while(dis1[i] != ‘\0‘)
{
lcd_wdat(dis1[i]);//显示字符
i++;
}
Data_Conversion();
LCD[0]=Volt/10000;
LCD[1]=Volt%10000/1000;
LCD[2]=‘.‘-0x30;
LCD[3]=Volt%1000/100;
LCD[4]=Volt%100/10;
LCD[5]=Volt%10;
LCD[6]=‘V‘-0x30;
Y=0;
if(LCD[0]>=2)
{
Y=1;
X=1;
lcd_pos(0x40);// 设置显示位置
i = 0;
_nop_();
_nop_();
while(dis2[i] != ‘\0‘)
{
lcd_wdat(dis2[i]);//显示字符
i++;
}
}
else
{
Y=0;
X=0;
lcd_pos(0x40);// 设置显示位置
i = 0;
for(i=0;i<7;i++)
{
z=LCD[i]+0x30;
lcd_wdat(z);
}
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2011-07-10 21:37 数字电压表课程设计\
目录 0 2011-07-04 11:46 数字电压表课程设计\仿真电路图\
文件 136039 2011-07-02 09:31 数字电压表课程设计\仿真电路图\Last Loaded 总电路完整图.DBK
文件 136043 2011-07-02 09:24 数字电压表课程设计\仿真电路图\Last Loaded 总电路完整图123.DBK
文件 3383 2011-07-04 09:36 数字电压表课程设计\仿真电路图\qq
文件 3118 2011-07-04 09:36 数字电压表课程设计\仿真电路图\qq.hex
文件 24 2011-07-04 09:36 数字电压表课程设计\仿真电路图\qq.lnp
文件 12936 2011-07-04 09:36 数字电压表课程设计\仿真电路图\qq.M51
文件 1008 2011-07-04 11:46 数字电压表课程设计\仿真电路图\qq.Opt
文件 811 2011-07-04 09:36 数字电压表课程设计\仿真电路图\qq.plg
文件 1978 2011-07-04 11:46 数字电压表课程设计\仿真电路图\qq.Uv2
文件 1011 2011-07-01 10:41 数字电压表课程设计\仿真电路图\qq_Opt.Bak
文件 1978 2011-07-01 10:41 数字电压表课程设计\仿真电路图\qq_Uv2.Bak
文件 2762 2011-07-04 09:36 数字电压表课程设计\仿真电路图\Text1.c
文件 8503 2011-07-04 09:36 数字电压表课程设计\仿真电路图\Text1.LST
文件 3941 2011-07-04 09:36 数字电压表课程设计\仿真电路图\Text1.OBJ
文件 136092 2011-07-04 11:46 数字电压表课程设计\仿真电路图\总电路完整图.DSN
文件 768 2011-07-04 11:46 数字电压表课程设计\仿真电路图\总电路完整图.PWI
文件 136043 2011-07-02 09:24 数字电压表课程设计\仿真电路图\总电路完整图123.DSN
文件 768 2011-07-04 08:25 数字电压表课程设计\仿真电路图\总电路完整图123.PWI
目录 0 2011-07-05 23:31 数字电压表课程设计\相关引脚资料\
文件 35084 2011-07-04 11:29 数字电压表课程设计\相关引脚资料\A008343[1].jpg
文件 380266 2011-07-01 11:18 数字电压表课程设计\相关引脚资料\at89s52中文资料.pdf
文件 410354 2011-07-01 11:20 数字电压表课程设计\相关引脚资料\LCD-1602引脚定义[1].pdf
文件 83968 2011-07-01 11:23 数字电压表课程设计\相关引脚资料\TLC549中文介绍.doc
文件 162 2011-07-05 23:31 数字电压表课程设计\相关引脚资料\~$C549中文介绍.doc
- 上一篇:五子棋人机对战 图解 算法举例
- 下一篇:Cache映像策略和数据访问流性能分析
评论
共有 条评论