功能介绍:采用51单片机作为主控CPU,采用按键设置相关功能,LCD1602显示数据,可以完成以下几个功能点:
1.火力分为5挡(高中高中低解冻采用按键切换挡位)
2.使用按键控制微波炉的开关
3.微波炉工作计时时间10s1min5min10min(采用按键设置时间)
4.蜂鸣报警器led灯(倒计时为0后蜂鸣器报警,led灯闪烁)
5.显示屏(火力,时间,温度)
采用keil5编写程序,使用的C语言,用的Proteus仿真,原理图和PCB用的AD画图,全套资料齐全:
下面是仿真演示视频和相关仿真图片
73-基于51单片机智能微波炉Proteus仿真(程序+仿真+原理图+PCB)
下面是程序部分展示(程序有中文注释,新手容易看懂)
程序部分展示:
sbitLCD_RS=P2^0;
sbitLCD_RW=P2^1;
sbitLCD_EN=P2^2;
#defineLCD_DataPortP0
//函数定义:
/**
*@briefLCD1602延时函数,12MHz调用可延时1ms
*@param无
*@retval无
*/
voidLCD_Delay()
{
unsignedchari,j;
i=2;
j=239;
do
{
while(--j);
}while(--i);
}
/**
*@briefLCD1602写命令
*@paramCommand要写入的命令
*@retval无
*/
voidLCD_WriteCommand(unsignedcharCommand)
{
LCD_RS=0;
LCD_RW=0;
LCD_DataPort=Command;
LCD_EN=1;
LCD_Delay();
LCD_EN=0;
LCD_Delay();
}
/**
*@briefLCD1602写数据
*@paramData要写入的数据
*@retval无
*/
voidLCD_WriteData(unsignedcharData)
{
LCD_RS=1;
LCD_RW=0;
LCD_DataPort=Data;
LCD_EN=1;
LCD_Delay();
LCD_EN=0;
LCD_Delay();
}
/**
*@briefLCD1602设置光标位置
*@paramLine行位置,范围:1~2
*@paramColumn列位置,范围:1~16
*@retval无
*/
voidLCD_SetCursor(unsignedcharLine,unsignedcharColumn)
{
if(Line==1)
{
LCD_WriteCommand(0x80|(Column-1));
}
elseif(Line==2)
{
LCD_WriteCommand(0x80|(Column-1+0x40));
}
}
/**
*@briefLCD1602初始化函数
*@param无
*@retval无
*/
voidLCD_Init()
{
LCD_WriteCommand(0x38);//八位数据接口,两行显示,5*7点阵
LCD_WriteCommand(0x0c);//显示开,光标关,闪烁关
LCD_WriteCommand(0x06);//数据读写操作后,光标自动加一,画面不动
LCD_WriteCommand(0x01);//光标复位,清屏
}
/**
*@brief在LCD1602指定位置上显示一个字符
*@paramLine行位置,范围:1~2
*@paramColumn列位置,范围:1~16
*@paramChar要显示的字符
*@retval无
*/
voidLCD_ShowChar(unsignedcharLine,unsignedcharColumn,charChar)
{
LCD_SetCursor(Line,Column);
LCD_WriteData(Char);
}
程序打开办法:特别注意:下载资料包以后一定要先解压!!!(建议解压到桌面上,文件路径太深会导致程序打开异常),解压后再用keil5打开。
原理图和PCB采用【AD】altiumdesigner打开,文件中有安装包
下面是资料包里面包含的相关文件展示
百度云盘资料分享链接