控制系統c語言,c語言控制plc

本文目錄一覽:

操作系統的課程設計~進程控制系統~用C語言編寫的

補充:

這個程序當然可以在WINDOWS下編輯了.

不過編譯就必須要UNIX了.

下面的程序假設你的當前目錄有一個helloworld程序,

這個你會寫吧?

:)

#include

stdio.h

#include

unistd.h

#include

sys/wait.h

int

main()

{

int

pid;

int

status;

pid

=

fork();

if

(pid

==

0)

{

/*

child

process

*/

execve(“./helloworld”,

NULL,

NULL);

}

else

if

(pid

0)

{

/*

failed

to

fork,

print

error

message

*/

printf(“fork

error,

errno

=

%d\n”,

errno);

}

else

{

waitpid(pid,status,0)

}

return

0;

}

基於單片機的作息時間控制系統C語言程序

#includereg52.h

#define uchar unsigned char

#define uintunsigned int

sbit E=P3^4;

sbit RS=P3^5;

sbit key1=P2^4;

sbit key2=P2^5;

sbit key3=P2^6;

sbit key4=P2^7;

sbit mbkey=P2^2;

sbit beep=P2^3;

uchar count,shi=1,fen=59,miao=58,key1num,flag,flag1,xqnum;//flag鬧鐘

uchar key2num,jinzhi=3,naonum=1,ms,mbmiao,mbfen,mbkeynum,num; //ms秒錶進數,mbmiao.mbfen秒錶的秒.分key2num是key5的計數jinzhi進制轉換參數

uint nian=2009,yue=11,ri=19,count2;

uchar code table[]=”2012-6-06 WED”;

uchar code table1[]=”24d 01:59:58 ON “;

uchar code table2[]=”MON,TUE,WED,THU,FRI,SAT,SUN”;

uchar code table3[]=”am ,pm ,24d”;

uchar code table4[]=”ON ,OFF”;

uchar code table5[]=”00:00:00 mb “;

void delay(uint z)

{

uint x,y;

for(x=z;x0;x–)

for(y=110;y0;y–);

}

void di(uint x)//蜂鳴器發聲函數

{

beep=0;

delay(x);

beep=1;

}

void write_com(uchar com)//給寫液晶命令

{

RS=0;

P0=com;

delay(5);

E=1;

delay(5);

E=0;

}

void write_date(uchar date)//給液晶寫數據

{

RS=1;

P0=date;

delay(5);

E=1;

delay(5);

E=0;

}

void init()//初始化函數

{

uchar num;

E=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);//清零

write_com(0x80);

for(num=0;num16;num++)

{

write_date(table[num]);

delay(20);

}

write_com(0x80+0x40);//第二行

for(num=0;num16;num++)

{

write_date(table1[num]);

delay(20);

}

TMOD=0X01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

TH1=(65536-10000)/256;

TL1=(65536-10000)%256;

ET1=0;

TR1=0;

}

void write_nian(uchar add , uint date)//年顯示函數

{

uchar qian,bai,shi,ge;

qian=date/1000;

bai=(date-1000*qian)/100;

shi=(date-qian*1000-bai*100)/10;

ge=date%10;

write_com(0x80+add);

write_date(0x30+qian);

write_date(0x30+bai);

write_date(0x30+shi);

write_date(0x30+ge);

}

void write_yue(uchar add , uchar date)//月顯示函數

{

uchar shi,ge;

shi=date/10;

ge=date%10;

write_com(0x80+add);

write_date(0x30+shi);

write_date(0x30+ge);

}

void write_ri(uchar add , uchar date)//日顯示函數

{

uchar shi,ge;

shi=date/10;

ge=date%10;

write_com(0x80+add);

write_date(0x30+shi);

write_date(0x30+ge);

}

void write_sfm(uchar add ,uchar date)//秒顯示函數

{

uchar shi,ge;

shi=date/10;

ge=date%10;

write_com(0x80+0x40+add);

write_date(0x30+shi);

write_date(0x30+ge);

}

void write_week(uchar week)//星期顯示函數

{

uchar week_num;

week_num=week;

switch(week_num)

{

case 1:write_com(0x80+13);

write_date(table2[0]);

write_date(table2[1]);

write_date(table2[2]);

write_com(0x80+13);

break;

case 2:write_com(0x80+13);

write_date(table2[4]);

write_date(table2[5]);

write_date(table2[6]);

write_com(0x80+13);

break;

case 3:write_com(0x80+13);

write_date(table2[8]);

write_date(table2[9]);

write_date(table2[10]);

write_com(0x80+13);

break;

case 4:write_com(0x80+13);

write_date(table2[12]);

write_date(table2[13]);

write_date(table2[14]);

write_com(0x80+13);

break;

case 5:write_com(0x80+13);

write_date(table2[16]);

write_date(table2[17]);

write_date(table2[18]);

write_com(0x80+13);

break;

case 6:write_com(0x80+13);

write_date(table2[20]);

write_date(table2[21]);

write_date(table2[22]);

write_com(0x80+13);

break;

case 7:write_com(0x80+13);

write_date(table2[24]);

write_date(table2[25]);

write_date(table2[26]);

write_com(0x80+13);

break;

}

}

void write_jinzhi(uchar jinzhi)//jinzhi進制顯示函數

{

uchar jznum;

jznum=jinzhi;

switch(jznum)

{

case 1:write_com(0x80+0x40+0);

write_date(table3[0]);

write_date(table3[1]);

write_date(table3[2]);

write_com(0x80+0x40+0);

break;

case 2:write_com(0x80+0x40+0);

write_date(table3[4]);

write_date(table3[5]);

write_date(table3[6]);

write_com(0x80+0x40+0);

break;

case 3:write_com(0x80+0x40+0);

write_date(table3[8]);

write_date(table3[9]);

write_date(table3[10]);

write_com(0x80+0x40+0);

break;

}

}

void write_nao(uchar nao)//鬧鐘開關顯示函數

{

uchar naonum;

naonum=nao;

switch(naonum)

{

case 1:write_com(0x80+0x40+13);

write_date(table4[0]);

write_date(table4[1]);

write_date(table4[2]);

write_com(0x80+0x40+13);

break;

case 2:write_com(0x80+0x40+13);

write_date(table4[4]);

write_date(table4[5]);

write_date(table4[6]);

write_com(0x80+0x40+13);

break;

}

}

void keyboard()//按鍵掃描函數

{

if(flag==1)

{

//鬧鐘暫停函數

if(key4==0)

{

delay(5);

if(key4==0)

{

while(!key4);

beep=1;

flag=0;

}

}

}

if(key1==0)

{

delay(5);//消斗

if(key1==0)

{

key1num++;

while(!key1);

//di(1);

if(key1num==1)

{

TR0=0;

write_com(0x80+0x40+10);

write_com(0x0f);//光標閃爍

}

if(key1num==2)

{

write_com(0x80+0x40+7);

}

if(key1num==3)

{

write_com(0x80+0x40+4);

}

if(key1num==4)

{

write_com(0x80+0x40);

}

if(key1num==5)

{

write_com(0x80+2);

}

if(key1num==6)

{

write_com(0x80+7);

}

if(key1num==7)

{

write_com(0x80+10);

}

if(key1num==8)

{

write_com(0x80+13);

}

if(key1num==9)

{

write_com(0x80+0x40+13);

}

if(key1num==10)

{

key1num=0;

write_com(0x0c);//光標停止閃爍

TR0=1;//打開定時器

}

}

}

if(key1num!=0)

{

if(key2==0)

{

delay(5);

if(key2==0)

{

while(!key2);//等待鬆手

di(100);

if(key1num==1)

{

miao++;

if(miao==60)

miao=0;

write_sfm(10,miao);

write_com(0x80+0x40+10);

}

if(key1num==2)

{

fen++;

if(fen==60)

fen=0;

write_sfm(7,fen);

write_com(0x80+0x40+7);

}

if(key1num==3)

{

shi++;

if(jinzhi==3)

{

if(shi==24)

shi=0;

}

else

{

if(shi12)

shi=shi-12;

}

write_sfm(4,shi);

write_com(0x80+0x40+4);

}

if(key1num==4)

{

jinzhi++;

if(jinzhi==4)

jinzhi=1;

write_jinzhi(jinzhi);

}

if(key1num==5)

{

nian++;

write_nian(2,nian);

write_com(0x80+2);

}

if(key1num==6)

{

yue++;

if(yue==13)

yue=1;

write_yue(7,yue);

write_com(0x80+7);

}

if(key1num==7)

{

ri++;

if(ri==32)

ri=1;

write_ri(10,ri);

write_com(0x80+10);

}

if(key1num==8)

{

xqnum++;

if(xqnum==8)

xqnum=1;

write_week(xqnum);

}

if(key1num==9)

{

naonum++;

if(naonum==3)

naonum=1;

write_nao(naonum);

}

if(key1num==10)

{

key1num=0;

write_com(0x0c);//光標停止閃爍

TR0=1;//打開定時器

}

}

}

if(key3==0)

{

delay(5);

if(key3==0)

{

while(!key3);

di(100);

if(key1num==1)

{

miao–;

if(miao==-1)

miao=59;

write_sfm(10,miao);

write_com(0x80+0x40+10);

}

if(key1num==2)

{

fen–;

if(fen==-1)

fen=59;

write_sfm(7,fen);

write_com(0x80+0x40+7);

}

if(key1num==3)

{

shi–;

/*if(shi==-1)

shi=23;*/

if(jinzhi==3)

{

if(shi==-1)

shi=23;

}

else

{

if(shi1)

shi=shi+12;

}

write_sfm(4,shi);

write_com(0x80+0x40+4);

}

if(key1num==4)

{

jinzhi–;

if(jinzhi==0)

jinzhi=3;

write_jinzhi(jinzhi);

}

if(key1num==5)

{

nian–;

write_nian(2,nian);

write_com(0x80+4);

}

if(key1num==6)

{

yue–;

if(yue==0)

yue=12;

write_yue(7,yue);

write_com(0x80+7);

}

if(key1num==7)

{

ri–;

if(ri==0)

ri=31;

write_ri(10,ri);

write_com(0x80+13);

/*if(key1num==8)

{

xqnum–;

if(xqnum==0)

xqnum=7;

write_week(xqnum);

write_com(0x80+10);

}

if(key1num==9)

{

naonum–;

if(naonum==0)

naonum=2;

write_nao(naonum);

write_com(0x80+0X40+13);

}

*/

}

}

}

}

}

void mbiao( )//秒錶函數

{

if(mbkey==0)

{

mbkeynum++;

while(!mbkey);

if(mbkeynum==1)//關閉時鐘定時器

{

TR0=0;

ET0=0;

write_com(0x80+0x40);

for(num=0;num16;num++)

write_date(table5[num]);

ms=0;

mbmiao=0;

mbfen=0;

TR1=0;

ET1=0;

}

if(mbkeynum==2)//打開秒錶定時器關閉時鐘定時器

{

TR1=1;

ET1=1;

TR0=0;

ET0=0;

}

if(mbkeynum==3)//關閉秒錶定時器

{

TR1=0;

ET1=0;

TR0=0;

ET0=0;

}

if(mbkeynum==4)//顯示時鐘狀態打開時鐘定時器

{

TR0=1;

ET0=1;

TR1=0;

ET1=0;

write_sfm(10,miao);

write_sfm(7,fen);

write_sfm(4,shi);

write_jinzhi(jinzhi);

write_com(0x80+0x40+13);

write_date(‘ ‘);

write_date(‘O’);

write_date(‘N’);

mbkeynum=0;

}

}

}

void main()

{

init();

while(1)

{

keyboard();

mbiao();

if(count==20)//液晶變化

{

count=0;

miao++;

if(miao==60)

{

miao=0;

fen++;

if(fen==60)

{

fen=0;

shi++;

if(jinzhi==3)//24進制時鐘

{

if(shi==24)

shi=0;

}

else

{

if(shi12)//12進制時鐘

{

shi=shi-12;

jinzhi++;

if(jinzhi==3)

jinzhi=1;

}

}

write_sfm(4,shi);

write_jinzhi(jinzhi);

}

write_sfm(7,fen);

}

write_sfm(10,miao);

if(miao==0fen==0shi==0||(jinzhi==2shi==12fen==0miao==0))//日期和星期遞變

{

write_com(0x80+9);

ri++;

if(ri==32)

{

ri=1;

yue++;

if(yue==13)

{

yue=1;

nian++;

write_nian(2,nian);

}

write_yue(7,yue);

}

write_ri(10,ri);

xqnum++;

write_week(xqnum);

}

if(fen==0miao=0miao=5)//整點報時

{

flag=1;

beep=~beep;

}

if(naonum==1shi==07fen==15miao=0miao=5)//鬧鐘

{

flag=1;

beep=~beep;

}

}

}

}

void timer0() interrupt 1//時鐘定時器

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

count++;

}

void timer1() interrupt 3//秒錶定時器

{

TH1=(65536100000)/256;

TL1=(65536100000)%256;

ms++;

write_sfm(10,ms);

if(ms==1*30)

{

mbmiao++;

write_sfm(7,mbmiao);

ms=0;

if(mbmiao==60)

{

mbmiao=0;

mbfen++;

write_sfm(4,mbfen);

}

}

}

關於單片機溫度控制系統C語言程序中的按鍵設置程序,請求詳細的介紹下按鍵的輸入過程。while(1) { if(KeyFl

keyflag應該是判斷某個按鍵按了幾次,不安的時候為0

if(KeyFlag == 0)

{

}

按一次時執行

else if(KeyFlag == 1)

{

if(BUTTON_add == 0 KeyLock ==0)

{

}

if(BUTTON_reduce == 0 KeyLock ==0)

{

}

按二次時執行

else if(KeyFlag == 2){

if(BUTTON_add == 0 KeyLock ==0)

{

}

if(BUTTON_reduce == 0 KeyLock ==0)

{

}

一樓正解,主要按鍵擴展標誌是用來節省資源的,用最少的按鍵實現最多的功能!

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/257809.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:46
下一篇 2024-12-15 12:47

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28
  • Python基礎語言

    Python作為一種高級編程語言擁有簡潔優雅的語法。在本文中,我們將從多個方面探究Python基礎語言的特點以及使用技巧。 一、數據類型 Python基礎數據類型包括整數、浮點數、…

    編程 2025-04-28

發表回復

登錄後才能評論