基于51单片机的电压电流检测系统rpotues仿真1.doc_第1页
基于51单片机的电压电流检测系统rpotues仿真1.doc_第2页
基于51单片机的电压电流检测系统rpotues仿真1.doc_第3页
基于51单片机的电压电流检测系统rpotues仿真1.doc_第4页
基于51单片机的电压电流检测系统rpotues仿真1.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一 设计思路本设计采用AT89C51为主控芯片,外部采用ADC0804作为电压采集芯片,外部电压最高为10V,而ADC0804最高电压为+5V,所以模拟量连接入ADC芯片之前,首先用电阻分压,把待测电压分为原来的一半,这样所检测的电压就用0-10V变成了0-5V,符合ADC芯片的输入要求,在检测电压后,经过单片机处理后,在在原来的电压基础上乘以2则可以恢复以前的待测电压。电压报警电路则由一路继电器和发光二极管,以及喇叭所组成。当ADC芯片所检测的电压超过一定的限制,则使特定的IO口变成低电平,导通PNP三极管,使继电器导通,发光LED和喇叭行成压降。产生报警。由ADC芯片采集的电压值,和由电阻所变换计算出的电流值,在LCD上显示。报警电压由两个按键所设定,当按键一按下则报警值加0.1V,当按键二按下则报警值减掉0.1V。单片机内部随时把采集电压和报警电压进行比较,当采集电压高过报警电压,则启动报警。二 整体电路图、三 仿真图形 电压,电流显示电路 声光报警电路 按键设置电路本次设计由于protues中的12864只有不带字库的液晶显示器,操作极为复杂。由于时间问题。软件程序仅仅调试了液晶1602显示器。相信只要有时间12864的显示也一定能够完成。 四 软件程序#include #include#define uint8 unsigned char#define uint16 unsigned int#define int16 int#define nops(); _nop_(); _nop_(); _nop_(); _nop_(); /定义空指令sbit RS = P2 0; /定义连接端口sbit RW = P2 1;sbit EN = P2 2;sbit BUSY = P07;sbit RD1=P37;sbit WR1=P36;sbit CS=P35;sbit k1=P24;sbit k2=P25;sbit baojing=P23;void delay(uint8 x);void delay1(uint16 n);void wait(void);void w_dat(uint8 dat);void w_cmd(uint8 cmd);void Init_LCD1602(void);void ad_kaishi();uint8 read_ad(); void w_string(uint8 addr_start, uint8 *p);void timer0_init();void xianshi();void key_init();void key();uint8 cout,ad1,c1,i2;int16 b1;uint16 counter,sce;float a,a1,ad,i1;unsigned char code word1=U:;unsigned char code word2=I:;void main() Init_LCD1602();timer0_init();key_init();baojing=1;ad=40;while(1) if(2*a1=(ad/10) /报警baojing=0;else baojing=1;key(); void key() if(!k1)delay(10);if(!k1) ad+;while(!k1);if(!k2)delay(10);if(!k2)ad-;while(!k2);void delay(uint8 x)uint8 i,j;for(i=x;i-;i0)for(j=110;j-;j0);void delay1(uint16 n)while (n-);void wait(void)P0 = 0xFF;doRS = 0;RW = 1;EN = 0;EN = 1;while (BUSY = 1);EN = 0;/* * 写数据*/void w_dat(uint8 dat)wait();EN = 0;P0 = dat;RS = 1;RW = 0;EN = 1;EN = 0;/* 写命令*/void w_cmd(uint8 cmd)wait();EN = 0;P0 = cmd;RS = 0;RW = 0;EN = 1;EN = 0;/* 初始化1602*/void Init_LCD1602(void)w_cmd(0x38); / 16*2显示,5*7点阵,8位数据接口w_cmd(0x0C); / 显示器开、光标开、光标允许闪烁w_cmd(0x06); / 文字不动,光标自动右移w_cmd(0x01); / 清屏void ad_kaishi() CS=0; delay(1); WR1=0; delay(1); WR1=1; CS=1;uint8 read_ad()uint8 ad1;CS=0;delay(1);RD1=0;ad1=P1;delay(10);RD1=1;CS=1;return ad1;void timer0_init()TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;EA=1;ET0=1;void w_string(uint8 addr_start, uint8 *p)w_cmd(addr_start);while (*p != 0)w_dat(*p+);void xianshi() /*c1=a;w_cmd(0x80);w_dat(c1/100+0);w_dat(c1/10%10+0);w_dat(c1%10+0);*/w_string(0x80,word1);w_string(0xc0,word2);b1=a1*100*2;w_cmd(0xc4); w_dat(b1/100+0);w_dat(0x2e);w_dat(b1/10%10+0);w_dat(b1%10+0);w_dat(0x56);w_dat(0x2d);ad1=ad;w_cmd(0x83);w_dat(ad1/10+0);w_dat(0x2e);w_dat(ad1%10+0);w_dat(0x56);i2=i1*1000*2; w_cmd(0xc0+10);w_dat(i2/100+0);w_dat(i2/10%10+0);w_dat(i2%10+0);w_dat(0x6d);w_dat(0x41); void key_init()k1=1;k2=1;void interrupt_timer1()interrupt 1 TH0 = (65536-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论