|
00000000.png (24.87 KB, 下載次數(shù): 715)
下載附件
2015-6-12 00:39 上傳
程序預(yù)覽:
1.main.c 文件:
2. key.c文件:
- #include "use.h"
- #include "time.h"
- sbit KEY1=P3^4;
- sbit KEY2=P3^5;
- sbit KEY3=P3^6;
- sbit KEY4=P3^7;
- uchar keystr[]={1,1,1,1},backup[]={1,1,1,1};
- void KeyScan() //鍵盤掃描
- {
- static uchar keybuf[4]={0XFF,0XFF,0XFF,0XFF};
- uchar i;
- keybuf[0]=(keybuf[0]<<1)|KEY1;
- keybuf[1]=(keybuf[1]<<1)|KEY2;
- keybuf[2]=(keybuf[2]<<1)|KEY3;
- keybuf[3]=(keybuf[3]<<1)|KEY4;
- for(i=0;i<4;i++)
- {
- if(keybuf[i]==0X00) keystr[i]=0;
- else if(keybuf[i]==0XFF) keystr[i]=1;
- }
- }
- void KeyAction(uchar key) //鍵盤執(zhí)行
- {
- switch(key)
- {
- case 0: SetModel(); break;
- case 1: ADDTime(); break;
- case 2: SUBTime(); break;
- case 3: UrgentModel(); break;
- default:break;
- }
- }
- void KeyDriver() //鍵盤驅(qū)動(dòng)
- {
- uchar i;
- for(i=0;i<4;i++)
- {
- if(keystr[i]!=backup[i])
- {
- if(keystr[i]==0)
- KeyAction(i);//這里適當(dāng)修改程序可以實(shí)現(xiàn)組合按鍵的效果
- }
- backup[i]=keystr[i];
- }
- }
復(fù)制代碼
3. time.c文件:
- #include "use.h"
- #include "main.h"
- uchar code seg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- uchar code seg_we[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
- uchar BackupGreen,BackupRed,CopyLight;
- void Seg_Display(uchar number,uchar wei) //數(shù)碼管動(dòng)態(tài)顯示程序
- {
- P0=0XFF;
- we=1;
- we=0;
- P0=seg_du[number];
- du=1;
- du=0;
- P0=seg_we[wei];
- we=1;
- we=0;
- }
- void UrgentScan() //緊急情況運(yùn)行掃描
- {
- Seg_Display(BackupGreen/10,0);
- Seg_Display(BackupGreen%10,1);
- Seg_Display(BackupRed/10,2);
- Seg_Display(BackupRed%10,3);
- }
- void SetModel() //紅綠燈設(shè)置模式
- {
- if(StaSysterm==NormalRun)
- {
- StaSysterm=ResetGreen; //狀態(tài)機(jī)
- BackupGreen=GreenTime;
- BackupRed=RedTime;
- CopyLight=P2; //對數(shù)據(jù)進(jìn)行備份
- P2=0X09;
- }
- else if(StaSysterm==ResetGreen)
- {
- StaSysterm=ResetRed;
- }
- else if(StaSysterm==ResetRed)
- {
- StaSysterm=NormalRun;
- P2=CopyLight; //恢復(fù)數(shù)據(jù)
- }
- }
- void ADDTime() //紅綠燈時(shí)間加
- {
- if(StaSysterm==ResetGreen)
- {
- BackupGreen++;
- if(BackupGreen>=BackupRed) BackupGreen=BackupRed;
- }
- else if(StaSysterm==ResetRed)
- {
- BackupRed++;
- }
- }
- void SUBTime() //紅綠燈時(shí)間減
- {
- if(StaSysterm==ResetGreen)
- {
- BackupGreen--;
-
- }
- else if(StaSysterm==ResetRed)
- {
- BackupRed--;
- if(BackupGreen>=BackupRed) BackupRed=BackupGreen;
- }
- }
- /****************
- void Confirm() //備用函數(shù)
- {
- if(StaSysterm!=NormalRun && StaSysterm!=UrgentRun)
- {
- GreenTime=BackupGreen;
- RedTime=BackupRed;
- StaSysterm=NormalRun;
- }
- }
- **************/
- void UrgentModel() //緊急模式
- {
- if(StaSysterm==NormalRun)
- {
- StaSysterm=UrgentRun;
- CopyLight=P2; //對數(shù)據(jù)進(jìn)行備份
- P0=0XFF;
- we=1;
- we=0;
- }
- else if(StaSysterm==UrgentRun)
- {
- StaSysterm=NormalRun;
- P2=CopyLight; //恢復(fù)數(shù)據(jù)
- }
- else if(StaSysterm==ResetGreen || StaSysterm==ResetRed)
- {
- StaSysterm=NormalRun;
- GreenTime=BackupGreen;
- RedTime=BackupRed; //重新設(shè)置紅綠燈時(shí)間
- }
- }
復(fù)制代碼
完整程序代碼,及其電路圖和仿真文件下載:
加強(qiáng)版紅綠燈.rar
(70.65 KB, 下載次數(shù): 1710)
2015-6-12 00:42 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|