基于51单片机的电池过压欠压报警电路protues仿真
硬件设计
(末尾附文件)
仿真图:
代码设计
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define lcm P1
sbit p_csl=P0^4;
sbit p_csr=P0^3;
sbit p_di=P0^2;
sbit p_rw=P0^1;
sbit p_e=P0^0;
sbit p_rst=P0^7;
sbit ad_INTR=P2^4;
sbit ad_RD=P2^5;
sbit ad_WR=P2^6;
sbit beep = P2^0; //蜂鸣器IO口定义
sbit jidianqi=P2^1;
uchar code HZ[];
uchar code Ez[];
uint shi,ge,xiao1,xiao2,xiao3,get,get_l;
uint dianya;//电压实际是浮点数,这个电压实际是指AD转化完成后得到的二进制数据,电压的范围定位0到15V//那么得到的真实电压应该是dianya*15整除255得到整数部分,对255取余再乘100对255取余,得到小数部分
/*****函数声明********/
void delay(uint k);
void wcode(uchar c,uchar csl,uchar csr);
void wdata(uchar c,uchar csl,uchar csr);
void set_statrline(uchar i);
void set_xy(uchar x,uchar y);
void dison_off(uchar o);
void reset();
void lcd_init(void);
void lw(uchar x,uchar y,uchar dd);//写数据函数
void disp_Hz(uchar xx,uchar yy,uchar n,uchar fb);//显示汉字
void disp_Ez(uchar xx,uchar yy,uchar n,uchar fb);
void data_change(uint x);//数据转化将AD得到的数据按位转化为数字方便显示
void Tdelay(unsigned int i);
void get0804();
//延时
void Tdelay(unsigned int i)
{while(i--);
}
void get0804() {ad_WR=0;Tdelay(5) ;ad_INTR=0;Tdelay(5) ;ad_INTR=1;Tdelay(5) ;ad_WR=1;Tdelay(5);P1=0xff ; ad_WR=0;Tdelay(5);ad_RD=0;Tdelay(30);get=P3;Tdelay(5);ad_RD=1;Tdelay(5);ad_WR=1; }
void delay(uint k)
{ uint i;for(;k>0;k--){ for(i=0;i<124;i++){;}}
}
//
//LCM忙判断
void lcd_busy(void)
{ p_di=0;p_rw=1;/*lcm=0xff;while(1){ p_e=1;if(lcm<0x80)break;p_e=0;}p_e=0;*/
}
//写指令到LCM
void wcode(uchar c,uchar csl,uchar csr)
{ p_csl=csl;p_csr=csr;lcd_busy();p_di=0;p_rw=0;lcm=c;//将变量C赋予LCMp_e=1;p_e=0;
}
//写数据到LCM子函数
void wdata(uchar c,uchar csl,uchar csr) //c表示的是要写的数据8个二进制位
{ p_csl=csl;p_csr=csr;lcd_busy();p_di=1;p_rw=0;lcm=c;//将变量C赋予LCMp_e=1;p_e=0;
}
//设定起始行
void set_startline(uchar i)
{ i=0xc0+i;wcode(i,1,1);
}
//定位X方向,Y方向
void set_xy(uchar x,uchar y)
{ x=x+0x40;y=y+0xb8;wcode(x,1,1);wcode(y,1,1);
}
//屏幕开启、关闭
void dison_off(uchar o)
{ o=o+0x3e; //o为1为开,为0是关wcode(o,1,1);
}
//复位子函数
void reset()
{//delay(1000);p_rst=0;delay(20);p_rst=1;delay(20);
}
//LCM初始化
void lcd_init(void)
{ uchar x,y;reset();dison_off(0);for(y=0;y<8;y++) { for(x=0;x<128;x++)lw(x,y,0);}dison_off(1);set_startline(0);
}
//写数据到LCM
void lw(uchar x,uchar y,uchar dd) //先定位,再写入数据
{ if(x>=64){ set_xy(x-64,y);wdata(dd,0,1);//写右半屏 }else{ set_xy(x,y);wdata(dd,1,0);}
}
//显示汉字子函数
void disp_Hz(uchar xx,uchar yy,uchar n,uchar fb)//xx为该行第xx个字,共8字,yy为第几行,共8行,n为字库中第N个字。
{ uchar i,dx;for(i=0;i<16;i++){ dx=HZ[2*i+n*32]; //2*i为选择偶数行,因其为列扫描 一个字在X方向应该是16个像素,因为用的是整列16个从上到下编码每一列占两个字符if(fb)dx=255-dx;//反白显示lw(xx*16+i,yy,dx);dx=HZ[(2*i+1)+n*32];if(fb)dx=255-dx;lw(xx*16+i,yy+1,dx);}
}
void disp_Ez(uchar xx,uchar yy,uchar n,uchar fb)//显示数字或英语
{ uchar i,dx;for(i=0;i<8;i++){ dx=Ez[2*i+n*16];if(fb)dx=255-dx;lw(xx*8+i,yy,dx);//
dx=Ez[(2*i+1)+n*16];if(fb)dx=255-dx;lw(xx*8+i,yy+1,dx);}
}
void filter()//限幅滤波
{int x;x=get-get_l;if(x>10 & x<-10) dianya=get_l;else dianya=get;get_l=get;
}
void data_change(uint x)
{uint i,j;i=(x*15)/255;j=((x*15)%255)*200/51;//本来应该是 ((x*15)%255)*1000/255 会出现溢出shi=i/10;ge=i%10;xiao1=j/100;xiao2=j%100/10;xiao3=j%100%10;
}
.
链接:https://pan.baidu.com/s/1Bf10asnN2QO8I8yJpGT5_Q
提取码:yogv
.
基于51单片机的电池过压欠压报警电路protues仿真相关推荐
- 133、仿真-基于51单片机太阳能热水器水温水位智能监控仪报警设计(Proteus仿真+程序+配套资料等)
毕设帮助.开题指导.技术解答(有偿)见文未 目录 一.硬件组成 二.设计功能 三.Proteus仿真图编辑 编辑 四.程序源码 资料包括: 需要完整的资料可以点击下面的名片加下我,找我要资源压缩包 ...
- 基于51单片机的语音控制GSM短信报警密码锁proteus仿真原理图PCB
功能介绍: 0.本系统采用STC89C52作为单片机 1.输入密码正确,屏幕提示OK:输入密码错误,蜂鸣器LED声光报警 2.连续三次输入密码错误,屏幕提示LOCK锁住,并通过GSM发送报警短信 3. ...
- 基于51单片机水塔水箱液水位WIFI监控报警设计proteus仿真原理图PCB
功能: 0.本项目采用STC89C52作为单片机系统的控制MCU 1.WIFI实时上传当前水位状态 2.通过液位传感器检测液位,检测到最低液位和最高液位时,超过设定阈值将声光报警 3.通过状态指示灯显 ...
- 基于51单片机宠物自动投料喂食器控制系统仿真设计( proteus仿真+程序+讲解视频)
基于51单片机宠物自动投料喂食器控制系统仿真设计( proteus仿真+程序+讲解视频) 仿真图proteus 7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S00 ...
- 【003】基于51单片机的宠物自动定时、喂食系统的proteus仿真设计
一.压缩包资料(私信获取) (1). 包含基于51单片机的宠物自动定时.喂食系统的proteus仿真设计一份: (2).包含基于51单片机的宠物自动定时.喂食系统keil源代码工程文件一份: (3). ...
- 基于51单片机的智能窗帘项目,源码+原理图+pro仿真。
基于51单片机的智能窗帘项目,源码+原理图+pro仿真. 介绍 :此作品有四种模式,通过四个独立按键调控,模式1:三个光感范围,使得电机驱动窗帘自动开,半开,关;模式2:15-25度的温度阈值,低于或 ...
- 【031】基于51单片机的超声波倒车雷达系统(带温度显示补偿)Proteus仿真设计
一.压缩包资料内容 (1).基于51单片机的超声波倒车雷达系统(带温度显示补偿)系统proteus仿真设计一份: (2).基于51单片机的超声波倒车雷达系统(带温度显示补偿)系统proteus仿真设计 ...
- 基于51单片机的超声波避障小车设计(含Proteus仿真)
超声波避障程序随处可见,基于51单片机的超声波避障小车也很成熟,但是完整的Proteus仿真并不容易找到开源资料. 这次主要给大家分享其Proteus仿真部分. 涉及到的模块有:超声波模块(hc-sr ...
- 3、基于51单片机的智能水箱控制系统-温度-PH值-水位(仿真+程序+原理图)
目录 基于51单片机的智能水箱控制系统 1.主要功能 2.实验结果 3.仿真工程 4.原理图 5.程序源码 6.资源获取 基于51单片机的智能水箱控制系统 1.主要功能 51单片机检测水箱内温度,ph ...
- c语言爱心灯制作步骤,基于51单片机设计的心形花样灯(PCB+Proteus仿真+源程序+设计报告)...
设计了一个基于51单片机的心形花样灯电路,该电路可以实现32个LED灯循环闪亮.依次熄灭.对角闪亮.对角熄灭.间隔闪亮.间隔熄灭等多种功能,可以显示42种不同形式的变化效果.该电路主要由单片机芯片ST ...
最新文章
- python基础类型
- 武汉理工大学软件质量保证与测试,材料测试技术(武汉理工大材料测试技术(武汉理工大学).pdf...
- 爬取58二手数据.py
- 为 Neutron 准备物理基础设施(II) - 每天5分钟玩转 OpenStack(76)
- c语言中数组作为形参
- [转]ROS2 源码解析与实践 - Node
- c语言 fgets函数 去除换行符_C语言文件的打开和关闭
- 文档过期打不开怎么办_标准的产品需求文档在这里!(详细说明版)(2)
- java中缓冲区和缓存_Java中的Google协议缓冲区
- PHP中如何解决高并发
- SIP协议 会话发起协议(二)
- YARN组件详细介绍
- 如何搭建maven中,分布式工程
- 试试H3C Comware Platform Software Version 5.20
- Java实现蓝桥杯 垒骰子---dp动态规划+矩阵快速幂
- 怎么获取url_Requests库(十二)实战获取今日头条24小时热文
- Java正则表达式实现港、澳、台身份证验证
- 异构网络-元图、知识图谱
- H264视频高压心得——兼容华为U8800+(硬解720P)
- 使用OpenSSL生成/签发证书的原理、流程与示例