基于单片机预费电表控制系统(proteus仿真+源程序)

一、系统方案

1、本设计采用这51单片机作为主控器。

2、采集电量值送到液晶1602显示。

3、按键设置预设值,实际使用电量超过设置,蜂鸣器报警。

二、硬件设计

原理图如下:

三、单片机软件设计

1、首先是系统初始化

void LCD_init(void)

{

delay_n10us(10);

LCD_write_command(0x38);//设置8位格式,2行,5x7

delay_n10us(10); LCD_write_command(0x0c);//开显示,关光标,不闪烁

delay_n10us(10); LCD_write_command(0x06);//设定输入方式,增量不移位

delay_n10us(10); LCD_write_command(0x01);//清除屏幕显示

delay_n10us(100); //延时清屏,延时函数,延时约n个10us

}

2、液晶显示程序

void LCD_write_command(uchar dat)

{

delay_n10us(10);

LCD_RS=0; //指令

LCD_RW=0; //写入

LCD_E=1; //允许

LCD_DB=dat; delay_n10us(10); //实践证明,我的LCD1602上,用for循环1次就能完成普通写指令。

LCD_E=0; delay_n10us(10); //实践证明,我的LCD1602上,用for循环1次就能完成普通写指令。

}

void LCD_write_data(uchar dat)

{

delay_n10us(10);

LCD_RS=1; //数据

LCD_RW=0; //写入

LCD_E=1; //允许

LCD_DB=dat; delay_n10us(10);

LCD_E=0; delay_n10us(10);

}

void LCD_disp_char(uchar x,uchar y,uchar dat)

{

uchar address;

if(y==1)

address=0x80+x;

else

address=0xc0+x;

LCD_write_command(address);

LCD_write_data(dat);

}

void LCD_disp_str(uchar x,uchar y,uchar *str)

{

uchar address;

if(y==1)

address=0x80+x;

else

address=0xc0+x;

LCD_write_command(address);

while(*str!='\0')

{

LCD_write_data(*str);

str++;

}

}

3、按键程序

void keyscan()

{

复制代码
if(K1==0)//设定设定使用量+
{
	if(flag_KEY==1)	//按键只响应1次
	{
		flag_KEY=0;
		
		if(Set<9900)	Set=Set+10;
	}
}

if(K2==0)//设定设定使用量-
{
	if(flag_KEY==1)	//按键只响应1次
	{
		flag_KEY=0;
		
		if(Set>10)	Set=Set-10;
	}
}


//全部按键松开
if(K1&&K2)

{

flag_KEY=1;

}

}

4、核心算法程序

/-------------------------------------
主函数
---------------------------------------
/

void main(void)

{

TIM0init();//定时器配置

EX0=1;//打开外部中断0

IT0=1;//下降沿触发

复制代码
LCD_init();//LCD初始化              
LCD_disp_str(0,1," Check:000.0Kwh "); //显示
LCD_disp_str(0,2,"000.0  000.0yuan"); //显示 设定使用量
while(1)
{
	keyscan(); //按键扫描
	Check();//测速程序
	DisPlay();//LCD显示
}

}

四、 proteus仿真设计

Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。

相关推荐
H_oRIZoN_10 分钟前
Linux入门DAY40(51 单片机入门:GPIO、中断、定时器、PWM、蜂鸣器完整梳理)
单片机·嵌入式硬件
LCG元1 小时前
STM32F103 复位来源诊断实战:RCC_CSR 标志位判优、BKP 复位计数持久化与六种复位源注入实测
stm32·单片机·嵌入式硬件
HUI-4742 小时前
EG1177|SOP‑7 内置 100V‑NMOS 异步降压,20‑90V 高压恒压恒流小功率电源优选
嵌入式硬件·硬件工程
Doraemomo3 小时前
IMX6ULL裸机开发——I2C通信协议
arm开发·嵌入式硬件·imx6ull
国产HT1621B3 小时前
显示省不了电,休眠才见真章:1621 低功耗实操
驱动开发·单片机·嵌入式硬件·led驱动·lcd驱动
国科安芯3 小时前
低轨卫星姿轨控系统中高可靠嵌入式控制单元的设计与验证
单片机·mcu·低轨卫星·星间链路·卫星姿轨控
尼喃4 小时前
Type-C快充取电芯片工作流程:从适配器识别到电压输出
嵌入式硬件
昌原的儿子LEO5 小时前
ARM 汇编核心知识点总结
嵌入式硬件·学习
老当益壮梁奶奶5 小时前
ARM 汇编学习笔记(二)启动代码、指令、函数调用与 C 混合编程
c语言·arm开发·单片机·嵌入式硬件·51单片机
学习FPGA的电气小兴兴6 小时前
基于FPGA的CORDIC向量模式实现arctan运算,Verilog HDL实现
嵌入式硬件·fpga开发·数字信号处理·verilog·fpga·cordic·arctan