AVR128单片机 自动售水机

一、系统方案

1、设计使用两个按键分别为S1和S2及一个发光二极管LED。S1为出水控制按键,当S1按下,表示售水机持续出水,继电器(库元件relay)接通,指示灯LED亮。S2为停水控制键,当S2按下,继电器断开,停止出水,指示灯LED熄灭。

2、用两片8LED数码管(库中的器件名为7SEG-MPX8-CA-BLUE或7SEG-MPX8-CC-BLUE)或液晶芯片LM041L或LM041液晶芯片LGM12641BS1R LM3228显示费率、出水总量及总价。

3、费率单位为元/升,假定费率为0.5元/升。出水总量单位为升,总价单位为元。假定出水速度为100ml/秒。费率、出水量、总价均保留两位有效数字。

4、用定时器设计一个1秒的定时间隔,当售水机出水键S1按下后同时启动该秒定时器,用于实时显示出水量,每过1秒,出水量加100ml,按下S2停止出水键后,则显示总价。不足1秒按1秒计算。

二、硬件设计

原理图如下:

三、单片机软件设计

1、首先是系统初始化

//***********************************************************************

// 显示屏初始化函数

//***********************************************************************

void LCD_init(void)

{

LCD_write_com(0x38); //显示模式设置

delay_nms(5);

LCD_write_com(0x08); //显示关闭

delay_nms(5);

LCD_write_com(0x01); //显示清屏

delay_nms(5);

LCD_write_com(0x06); //显示光标移动设置

delay_nms(5);

LCD_write_com(0x0C); //显示开及光标设置

delay_nms(5);

}

2、液晶显示程序

//***********************************************************************

// 显示屏命令写入函数

//***********************************************************************

void LCD_write_com(unsigned char com)

{

RS_CLR;

RW_CLR;

EN_SET;

Data_IO = com;

delay_nms(5);

EN_CLR;

}

//***********************************************************************

// 显示屏数据写入函数

//***********************************************************************

void LCD_write_data(unsigned char data)

{

RS_SET;

RW_CLR;

EN_SET;

Data_IO = data;

delay_nms(5);

EN_CLR;

}

3、按键程序

//按键扫描函数

void scan_key()

{

if(key1) //如果按键1按下

{

if(enable==0) //如果当前是停止状态,则对出水量进行清0操作,保证每次出水都是从0 开始

{

water_cnt = 0 ;

}

enable = 1; //置位使能标志位

}else if(key2) //当按键2按下,停止出水

{

enable = 0; //清除标志位

vision_cost();

}

}

4、核心算法程序

void main()

{

DDRA=0XFF; //设置端口A为输出

PORTA=0xff;

DDRB=0XFF; //设置端口B为输出

PORTB=0x00;

DDRC=0XFC; //数值按键为输入模式

PORTC=0xF3;

DDRD=0XFF; //设置端口D为输出

PORTD=0XFF;

DDRE=0XFF; //设置端口E为输出

PORTE=0XFF;

DDRF=0XFF; //设置端口F为输出

PORTF=0XF0;

//LCD初始化

//定时器1配置

//TCCR1B按键中配置

LCD_init();

vision_init();

timer1_init(); //定时器初始化

TIMSK = 0x04; //timer interrupt sources

SEI();

while(1)

{

scan_key(); //扫描按键,

vision_count();

delay_nms(500); //延时,主要控制刷新周期

}

}

四、 proteus仿真设计

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

相关推荐
我是一棵无人问荆的小草2 小时前
stm32f103单片机的NVIC分组2介绍
stm32·单片机·嵌入式硬件
紫幽3 小时前
从 0 用 Vue 做屏并生成 LVGL 单片机代码(完整源码备忘)
前端·单片机
智者知已应修善业3 小时前
【51单片机数码管逐位显示1-8余位不亮】2024-10-23
c语言·经验分享·笔记·嵌入式硬件·51单片机
Be for thing4 小时前
【嵌入式成长3】STC89C51外部中断|中断原理、寄存器、中断服务函数
单片机·嵌入式硬件·学习
科芯创展6 小时前
1A,5.5VIN,同步升降压恒流芯片,XZ3442
单片机
恒锐丰-罗生6 小时前
率能半导体 SS6840 单通道 H 桥电机驱动芯片深度解析
驱动开发·嵌入式硬件·硬件工程
9稳7 小时前
基于PLC的小车运料装卸控制系统设计
开发语言·网络·数据库·单片机·嵌入式硬件
拾知_H8 小时前
STM32+FreeRTOS基础配置
stm32·嵌入式硬件·freertos
智购科技自动贩卖机8 小时前
自动售货机硬件主控方案选型实战:单片机、树莓派、ESP32怎么选?
人工智能·单片机·嵌入式硬件·物联网·网络协议·yolo·架构
LCG元9 小时前
STM32 多通道 ADC + DMA 采集实战:数据错位、读数跳动的根因与滤波选型
stm32·单片机·嵌入式硬件