微波炉控制系统c语言编程
#include #include #define nop _nop_#define uchar unsigned char#define uint unsigned int/*****************************************************************************///定义sbit WEI_LE=P1^1;//数码管控制sbit DUAN_LE=P1^0;
sbit RS=P2^0;//LCD端口sbit RW=P2^1;sbit E=P2^2;#define DB P0sbit PSB=P2^3;sbit NC=P2^4;sbit RST=P2^5;
sbit BEEP=P1^0;//蜂鸣器
sbit KEY1=P3^4;//按键sbit KEY2=P3^5;sbit KEY3=P3^2;sbit KEY4=P3^3;
uchar key_up,key_x;//按键变量uchar fire,min,sec;//火力和时间变量uchar o_hour,o_min,o_sec;//预约时间变量/*****************************************************************************///辅助函数//延迟函数void delay50us(uint m)//for双重嵌套型。公式:t=m*(2*n+12)+偏差值。m比较小时,偏差为+13;m=0时,t=14。{uchar n;for(;m>0;m--)for(n=19;n>0;n--);}void delay500us(uint m)//for双重嵌套型。公式:t=m*(2*n+12)+偏差值。m比较小时,偏差为+13;m=0时,t=14。{uchar n;for(;m>0;m--)for(n=244;n>0;n--);}/*****************************************************************************///底层驱动//LCD驱动void lcd_wcom(uchar com)//写指令函数{delay50us(1);RS=0;RW=0;DB=com;E=1;delay50us(1);E=0;}void lcd_wdat(uchar dat)//写数据函数{delay50us(1);RS=1;RW=0;DB=dat;E=1;delay50us(1);E=0;}void lcd_init()//初始化{lcd_wcom(0x30);delay50us(2);lcd_wcom(0x30);delay50us(1);lcd_wcom(0x0c);delay50us(2);lcd_wcom(0x01);delay500us(20);lcd_wcom(0x06);delay50us(2);}void lcd_wstr(uchar *s)//写字符串{while(*s!=0)lcd_wdat(*s++);}void lcd_clr()//清屏{lcd_wcom(0x01);delay500us(3);}//按键驱动void key_get()//按键录入{if(KEY1==1 && KEY2==1 && KEY3==1 && KEY4==1){key_up=1;}else {if(KEY1==0 && key_up==1){key_up=0;key_x=1;}else if(KEY2==0 && key_up==1){key_up=0;key_x=2;}else if(KEY3==0 && key_up==1){key_up=0;key_x=3;}else if(KEY4==0 && key_up==1){key_up=0;key_x=4;}delay500us(100);//防抖}}/*****************************************************************************///应用层函数//显示相关信息void dis_author()//作者{lcd_clr();lcd_wcom(0x80);lcd_