硬件设计

(末尾附文件)

仿真图:

代码设计

#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仿真相关推荐

  1. 133、仿真-基于51单片机太阳能热水器水温水位智能监控仪报警设计(Proteus仿真+程序+配套资料等)

    毕设帮助.开题指导.技术解答(有偿)见文未 目录 一.硬件组成 二.设计功能 三.Proteus仿真图​编辑 ​编辑 四.程序源码 资料包括: 需要完整的资料可以点击下面的名片加下我,找我要资源压缩包 ...

  2. 基于51单片机的语音控制GSM短信报警密码锁proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.输入密码正确,屏幕提示OK:输入密码错误,蜂鸣器LED声光报警 2.连续三次输入密码错误,屏幕提示LOCK锁住,并通过GSM发送报警短信 3. ...

  3. 基于51单片机水塔水箱液水位WIFI监控报警设计proteus仿真原理图PCB

    功能: 0.本项目采用STC89C52作为单片机系统的控制MCU 1.WIFI实时上传当前水位状态 2.通过液位传感器检测液位,检测到最低液位和最高液位时,超过设定阈值将声光报警 3.通过状态指示灯显 ...

  4. 基于51单片机宠物自动投料喂食器控制系统仿真设计( proteus仿真+程序+讲解视频)

    基于51单片机宠物自动投料喂食器控制系统仿真设计( proteus仿真+程序+讲解视频) 仿真图proteus 7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S00 ...

  5. 【003】基于51单片机的宠物自动定时、喂食系统的proteus仿真设计

    一.压缩包资料(私信获取) (1). 包含基于51单片机的宠物自动定时.喂食系统的proteus仿真设计一份: (2).包含基于51单片机的宠物自动定时.喂食系统keil源代码工程文件一份: (3). ...

  6. 基于51单片机的智能窗帘项目,源码+原理图+pro仿真。

    基于51单片机的智能窗帘项目,源码+原理图+pro仿真. 介绍 :此作品有四种模式,通过四个独立按键调控,模式1:三个光感范围,使得电机驱动窗帘自动开,半开,关;模式2:15-25度的温度阈值,低于或 ...

  7. 【031】基于51单片机的超声波倒车雷达系统(带温度显示补偿)Proteus仿真设计

    一.压缩包资料内容 (1).基于51单片机的超声波倒车雷达系统(带温度显示补偿)系统proteus仿真设计一份: (2).基于51单片机的超声波倒车雷达系统(带温度显示补偿)系统proteus仿真设计 ...

  8. 基于51单片机的超声波避障小车设计(含Proteus仿真)

    超声波避障程序随处可见,基于51单片机的超声波避障小车也很成熟,但是完整的Proteus仿真并不容易找到开源资料. 这次主要给大家分享其Proteus仿真部分. 涉及到的模块有:超声波模块(hc-sr ...

  9. 3、基于51单片机的智能水箱控制系统-温度-PH值-水位(仿真+程序+原理图)

    目录 基于51单片机的智能水箱控制系统 1.主要功能 2.实验结果 3.仿真工程 4.原理图 5.程序源码 6.资源获取 基于51单片机的智能水箱控制系统 1.主要功能 51单片机检测水箱内温度,ph ...

  10. c语言爱心灯制作步骤,基于51单片机设计的心形花样灯(PCB+Proteus仿真+源程序+设计报告)...

    设计了一个基于51单片机的心形花样灯电路,该电路可以实现32个LED灯循环闪亮.依次熄灭.对角闪亮.对角熄灭.间隔闪亮.间隔熄灭等多种功能,可以显示42种不同形式的变化效果.该电路主要由单片机芯片ST ...

最新文章

  1. python基础类型
  2. 武汉理工大学软件质量保证与测试,材料测试技术(武汉理工大材料测试技术(武汉理工大学).pdf...
  3. 爬取58二手数据.py
  4. 为 Neutron 准备物理基础设施(II) - 每天5分钟玩转 OpenStack(76)
  5. c语言中数组作为形参
  6. [转]ROS2 源码解析与实践 - Node
  7. c语言 fgets函数 去除换行符_C语言文件的打开和关闭
  8. 文档过期打不开怎么办_标准的产品需求文档在这里!(详细说明版)(2)
  9. java中缓冲区和缓存_Java中的Google协议缓冲区
  10. PHP中如何解决高并发
  11. SIP协议 会话发起协议(二)
  12. YARN组件详细介绍
  13. 如何搭建maven中,分布式工程
  14. 试试H3C Comware Platform Software Version 5.20
  15. Java实现蓝桥杯 垒骰子---dp动态规划+矩阵快速幂
  16. 怎么获取url_Requests库(十二)实战获取今日头条24小时热文
  17. Java正则表达式实现港、澳、台身份证验证
  18. 异构网络-元图、知识图谱
  19. H264视频高压心得——兼容华为U8800+(硬解720P)
  20. 使用OpenSSL生成/签发证书的原理、流程与示例

热门文章

  1. 模板方法模式-Template Method Pattern
  2. AlgoSec破解license
  3. 简单易学的机器学习算法——极限学习机(ELM)
  4. ue4序列帧ui_UE4动画序列帧通知机制(二)
  5. 数据资产管理及数据管控体系建设思路
  6. Matlab R2010b 破解安装
  7. oracle扩充字段长度的SQL语句,sql语句修改字段长度
  8. webstorm汉化攻略
  9. 笔试遇到的rgba转16进制,但透明度不需要加到里面
  10. 初学者学习Java 的软件有哪些?