日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

微波炉定时c语言程序,微波炉控制系统c语言编程.doc

發(fā)布時(shí)間:2025/3/20 windows 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微波炉定时c语言程序,微波炉控制系统c语言编程.doc 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

#include #define nop _nop_

#define uchar unsigned char

#define uint unsigned int

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

//定義

sbit WEI_LE=P1^1;//數(shù)碼管控制

sbit DUAN_LE=P1^0;

sbit RS=P2^0;//LCD端口

sbit RW=P2^1;

sbit E=P2^2;

#define DB P0

sbit 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;//火力和時(shí)間變量

uchar o_hour,o_min,o_sec;//預(yù)約時(shí)間變量

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

//輔助函數(shù)

//延遲函數(shù)

void delay50us(uint m)//for雙重嵌套型。公式:t=m*(2*n+12)+偏差值。m比較小時(shí),偏差為+13;m=0時(shí),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比較小時(shí),偏差為+13;m=0時(shí),t=14。

{

uchar n;

for(;m>0;m--)

for(n=244;n>0;n--);

}

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

//底層驅(qū)動(dòng)

//LCD驅(qū)動(dòng)

void lcd_wcom(uchar com)//寫指令函數(shù)

{

delay50us(1);

RS=0;

RW=0;

DB=com;

E=1;

delay50us(1);

E=0;

}

void lcd_wdat(uchar dat)//寫數(shù)據(jù)函數(shù)

{

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);

}

//按鍵驅(qū)動(dòng)

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);//防抖

}

}

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

//應(yīng)用層函數(shù)

//顯示相關(guān)信息

void dis_author()//作者

{

lcd_clr();

lcd_wcom(0x80);lcd_wstr("作者:");lcd_wstr("黃志輝");

lcd_wcom(0x93); lcd_wstr("董曉敏");

lcd_wcom(0x8b); lcd_wstr("蔡定材");

while(key_up==0)key_get();

key_x=0;

}

//預(yù)約時(shí)間

void order_mark(uchar sel)//預(yù)約光標(biāo)

{

switch(sel)

{

case 1:lcd_wcom(0x89);lcd_wcom(0x0e);break;

case 2:lcd_wcom(0x8b);lcd_wcom(0x0e);break;

case 3:lcd_wcom(0x8d);lcd_wcom(0x0e);break;

case 4:lcd_wcom(0x9a);lcd_wcom(0x0c);lcd_wdat(0x10);break;

}

}

void order_shift(uchar sel)//預(yù)約調(diào)整

{

uchar quit=0;

char a;

do

{

lcd_wcom(0x89);

lcd_wdat(o_hour/10+0x30);

lcd_wdat(o_hour%10+0x30);

lcd_wstr("時(shí)");

lcd_wdat(o_min/10+0x30);

lcd_wdat(o_min%10+0x30);

lcd_wstr("分");

lcd_wdat(o_sec/10+0x30);

lcd_wdat(o_sec%10+0x30);

lcd_wstr("秒");

order_mark(sel);

lcd_wcom(0x0f);

while(key_up==0)key_get();

while(key_up==1)key_get();

switch(key_x)

{

case 4:quit=1;break;

case 3:quit=1;break;

case 2:a=1;break;

case 1:a=-1;

}

if(key_x==2 || key_x==1)

{

switch(sel)

{

case 1:o_hour=o_hour+a;

if(o_hour==24)o_hour=0;

if(o_hour==-1)o_hour=23;

break;

case 2:o_min=o_min+a;

if(o_min==60)o_min=0;

if(o_min==-1)o_min=59;

break;

case 3:o_sec=o_sec+a;

if(o_sec==60)o_sec=0;

if(o_sec==-1)o_sec=59;

}

}

}

while(quit!=1);

key_x=0;

}

void order()//預(yù)約界面

{

static uchar sel=1;

uchar quit=0;

do

{

lcd_clr();

lcd_wcom(0x82);lcd_wstr(" [預(yù)約]");

lcd_wcom(0x92);lcd_wstr("倒計(jì)時(shí):");

lcd_wcom(0x89);

lcd_wdat(o_hour/10+0x30);

lcd_wdat(o_hour%10+0x30);

lcd_wstr("時(shí)");

lcd_wdat(o_min/10+0x30);

lcd_wdat(o_min%10+0x30);

lcd_wstr("分");

lcd_wdat(o_sec/10+0x30);

lcd_wdat(o_sec%10+0x30);

lcd_wstr("秒");

lcd_wcom(0x9b);lcd_wstr("開始");

order_mark(sel);

while(key_up==0)key_get();

while(key_up==1)key_get();

switch(key_x)

{

case 4:switch(sel)

{

case 1:

case 2:

case 3:order_shift(sel);break;

case 4:break;

}

break;

case 3:quit=1;break;

case 2:sel--;if(sel<1)sel=4;break;

case 1:sel++;if(sel>4)sel=1;

}

}

while(quit!=1);

lcd_wcom(0x0c);

key_x=0;

}

//調(diào)整火力和時(shí)間

void shift_mark(uchar sel)//調(diào)整光標(biāo)

{

switch(sel)

{

case 1:lcd_wcom(0x92);lcd_wcom(0x0c);lcd_wdat(0x10);break;

case 2:lcd_wcom(0x8b);lcd_wcom(0x0e);break;

case 3:lcd_wcom(0x8d);lcd_wcom(0x0e);break;

case 4:lcd_wcom(0x98);lcd_wcom(0x0c);lcd_wdat(0x10);break;

case 5:lcd_wcom(0x9c);lcd_wcom(0x0c);lcd_wdat(0x10);

}

}

void dis_fire_time()//顯示火力和時(shí)間

{

uchar f;

lcd_wcom(0x90);lcd_wstr("火力 ");

f=fire;while(f--)lcd_wdat(0x04);f=8-fire;while(f--)lcd_wdat(0x20);

lcd_wcom(0x88);lcd_wstr("時(shí)間 ");

lcd_wdat(min/10+0x30);

lcd_wdat(min%10+0x30);

lcd_wstr(":");

lcd_wdat(sec/10+0x30);

lcd_wdat(sec%10+0x30);

}

void shift_fire_time(uchar custom_sel)//進(jìn)行調(diào)整

{

uchar quit=0;

char a;

do

{

dis_fire_time();

shift_mark(custom_sel);

lcd_wcom(0x0f);

while(key_up==0)key_get();

while(key_up==1)key_get();

switch(key_x)

{

case 4:quit=1;break;

case 3:quit=1;break;

case 2:a=1;break;

case 1:a=-1;

}

if(key_x==2 || key_x==1)

{

switch(custom_sel)

{

case 1:fire=fire+a;

if(fire==0)fire=1;

if(fire==9)fire=8;

break;

case 2:min=min+a;

if(min==60)min=0;

if(min==-1)min=59;

break;

case 3:sec=sec+a;

if(sec==60)sec=0;

if(sec==-1)sec=59;

}

}

}

while(quit!=1);

key_x=0;

}

void custom_heat()//自定義

{

uchar quit=0;

static uchar sel=1;

static uchar custom_fire=1,custom_min=00,custom_sec=00;

fire=custom_fire;min=custom_min;sec=custom_sec;

do

{

lcd_clr();

lcd_wcom(0x82);lcd_wstr(" [自定義]");

dis_fire_time();

lcd_wcom(0x99);lcd_wstr("預(yù)約");

lcd_wcom(0x9d);lcd_wstr("開始");

shift_mark(sel);

while(key_up==0)key_get();

while(key_up==1)key_get();

switch(key_x)

{

case 4:switch(sel)

{

case 1:

case 2:

case 3:shift_fire_time(sel);

custom_fire=fire;custom_min=min;custom_sec=sec;

break;

case 4:order();break;

case 5:break;

}

break;

case 3:quit=1;break;

case 2:sel--;if(sel<1)sel=5;break;

case 1:sel++;if(sel>5)sel=1;

}

}

while(quit!=1);

lcd_wcom(0x0c);

key_x=0;

}

void fast_heat(uchar menu_sel)//快速加熱

{

uchar quit=0;

static uchar sel=5;

do

{

lcd_clr();

switch(menu_sel)

{

case 1:lcd_wcom(0x82);lcd_wstr(" [燒烤]");fire=6;min=10;sec=0;break;

case 2:lcd_wcom(0x82);lcd_wstr(" [湯類]");fire=7;min=1;sec=30;

}

dis_fire_time();

lcd_wcom(0x99);lcd_wstr("預(yù)約");

lcd_wcom(0x9d);lcd_wstr("開始");

shift_mark(sel);

while(key_up==0)key_get();

while(key_up==1)key_get();

switch(key_x)

{

case 4:switch(sel)

{

case 4:order();break;

case 5:break;

}

break;

case 3:quit=1;break;

case 2:sel--;if(sel<4)sel=5;break;

case 1:sel++;if(sel>5)sel=4;

}

}

while(quit!=1);

key_x=0;

}

//菜單

void menu_mark(uchar sel)//菜單光標(biāo)

{

switch(sel)

{

case 1:lcd_wcom(0x90);break;

case 2:lcd_wcom(0x88);break;

case 3:lcd_wcom(0x98);break;

}

lcd_wdat(0x10);

}

void menu()//進(jìn)入菜單

{

static uchar sel=1;

do

{

lcd_clr();

lcd_wcom(0x82);lcd_wstr(" [菜單]");

lcd_wcom(0x91);lcd_wstr("燒烤");lcd_wcom(0x95);lcd_wstr("解凍");

lcd_wcom(0x89);lcd_wstr("湯類");lcd_wcom(0x8d);lcd_wstr("蒸菜");

lcd_wcom(0x99);lcd_wstr("自定義");

menu_mark(sel);

while(key_up==0)key_get();

while(key_up==1)key_get();

switch(key_x)

{

case 4:switch(sel)

{

case 1:

case 2:fast_heat(sel);break;

case 3:custom_heat();

}

break;

case 3:dis_author();break;

case 2:sel--;if(sel<1)sel=3;break;

case 1:sel++;if(sel>3)sel=1;

}

}

while(1);

}

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

//主程序

void main()

{

P0=0xFF;//開發(fā)板初始化(關(guān)數(shù)碼管)

DUAN_LE=1;

DUAN_LE=0;

P0=0x00;

WEI_LE=1;

WEI_LE=0;

PSB=1;

delay500us(1000);//芯片初始化

lcd_init();

lcd_wcom(0x91);lcd_wdat(0x02);lcd_wstr(" 歡迎使用 ");lcd_wdat(0x02);//開機(jī)畫面

lcd_wcom(0x89);lcd_wstr("智能 微波爐");

delay500us(2000);

menu();//顯示菜單

}

總結(jié)

以上是生活随笔為你收集整理的微波炉定时c语言程序,微波炉控制系统c语言编程.doc的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。