欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
簡易交通燈[c語言+仿真圖]完整注釋
[打印本頁]
作者:
森小胖
時間:
2017-5-2 23:58
標題:
簡易交通燈[c語言+仿真圖]完整注釋
簡易交通燈【c語言+仿真圖】完整注釋
0.png
(36.26 KB, 下載次數: 75)
下載附件
2017-5-3 03:02 上傳
0.png
(64.4 KB, 下載次數: 99)
下載附件
2017-5-3 03:02 上傳
單片機源程序:
#include<reg51.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
#define PA XBYTE[0xf8ff] //定義A口
#define PB XBYTE[0xf9ff] //定義B口
#define PC XBYTE[0xfaff] //定義C口
#define CTRL XBYTE[0xfbff] //ctrol簡寫為CTRL 定義控制口
uint i = 0, cnt = 120, flag=0;
uchar table[]={ //共陰極
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
void display(int x, int y, int m, int n, int a, int b, int c, int d);
void delay(int);
void main()
{
CTRL = 0x80; //1000 0000B 方式選擇控制字: A口方式0 A口位輸出 C口高4位輸出 B口方式0 B口輸出 C口低4位輸出
IP = 0x05;
TMOD = 0x01; //方式寄存器TMOD 0000 0001B 定時器0,方式1
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256; //定時50ms
EA = 1; //開總中斷
ET0 = 1; //允許定時器0中斷
TR0 = 1; //開啟定時器0
while(1)
{
if(cnt > 65) //120-cnt 小于55
{
XBYTE[PA] = 0x33; //0011 0011B PA2綠燈亮 PA3紅燈亮
display(0xfe ,0xfd, 0xfb, 0xf7, (cnt-65)/10, (cnt-65)%10, (cnt-60)/10, (cnt-60)%10);
} //1111 1110B,(P1.0) 1111 1101B,(P1.1) 1111 1011B,(P1.2) 1111 0111B,(p1.3)假設cnt=70即計數50次此時南北綠燈顯示05 東西紅燈顯示10;
else if(cnt > 60 && cnt <= 65) //120-cnt介于 55與60之間
{
if(flag == 0)
{
XBYTE[PA] = 0x35;//0011 0101B PA1黃燈亮 PA3紅燈亮
display(0xff ,0xff, 0xfb, 0xf7, (cnt-60)/10,(cnt-60)%10, (cnt-60)/10,(cnt-60)%10);
} //1111 1111B,1111 1111B 1111 1011B 1111 0111B 假設cnt=62 即計數120-62=58次,此時南北黃燈顯示數字02 東西顯示紅燈02;
if(flag == 1)
{
XBYTE[PA] = 0x35;//0011 0101B PA1黃燈亮 PA3紅燈亮
display(0xfe ,0xfd, 0xfb, 0xf7, (cnt-60)/10,(cnt-60)%10, (cnt-60)/10,(cnt-60)%10);
}//1111 1110B,1111 1101B,1111 1011B,1111 0111B 假設cnt=62 即計數120-62=58次,此時南北紅燈顯示數字02,東西顯示綠燈02;
}
else if(cnt <= 60 && cnt > 5) //120-cnt介于 60與115之間
{
XBYTE[PA] = 0x1e; //0001 1110B PA0紅燈亮 PA5綠燈亮
display(0xfe ,0xfd, 0xfb, 0xf7, (cnt)/10,(cnt)%10, (cnt-5)/10,(cnt-5)%10);
}//1111 1110B,1111 1101B,1111 1011B,1111 0111B 假設cnt=40 即計數120-40=80次,此時南北紅燈顯示數字40,東西綠燈顯示35;
else if(cnt > 0 && cnt <= 5) //120-cnt 介于 115與120之間
{
if(flag == 0)
{
XBYTE[PA] = 0x2e;//0010 1110B PA0紅燈亮 PA4黃燈亮
display(0xfe ,0xfd, 0xff, 0xff, (cnt)/10,(cnt)%10, (cnt)/10,(cnt)%10);
}//1111 1110B,1111 1101B,1111 1111B,1111 1111B 假設cnt=3即計數120-3=117次,此時南北紅燈顯示數字03,東西黃燈顯示數字03
if(flag == 1)
{
XBYTE[PA] = 0x2e;//0010 1110B PA0紅燈亮 PA4黃燈亮
display(0xfe ,0xfd, 0xfb, 0xf7, (cnt)/10,(cnt)%10, (cnt)/10,(cnt)%10);
}//1111 1110B,1111 1101B,1111 1101B,1111 0111B 假設cnt=3即計數120-3=117次,此時南北紅燈顯示數字03,東西黃燈顯示數字03
}
}
}
void display(int x, int y, int m, int n, int a, int b, int c, int d) //數碼管
{
P1 = x; //P1.0
PB = table[a]; //南北方向高位數碼管顯示數字
delay(1); //調用延時函數
P1 = y; //P1.1
PB = table[b]; //南北方向低位數碼管顯示數字
delay(1); //調用延時函數
P1 = m; //P1.2
PC = table[c]; //東西方向高位數碼管顯示數字
delay(1); //調用延時函數
P1 = n; //P1.3
PC = table[d]; //東西方向低位數碼管顯示數字
delay(1); //調用延時函數
}
void delay(int z) //延時子程序
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void mytimer0() interrupt 1 //定時器中斷0
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256; //定時50ms
i++;
if(i >= 10) //T=50ms*10=500ms
{
flag ++; //flag每0.5秒加1
i = 0;
}
if(flag > 1)
{
flag=0;
cnt --; //cnt每秒減1
}
…………限于本文篇幅 余下代碼請從51hei下載附件…………
復制代碼
下載:
NO.3.rar
(60.16 KB, 下載次數: 80)
2017-5-2 23:57 上傳
點擊文件名下載附件
簡易交通燈【c語言+仿真圖】完整注釋
下載積分: 黑幣 -5
作者:
沒心沒肺挺好丶
時間:
2017-12-10 10:29
沒有黑幣啊
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1