|
南北交通燈
#include<reg51.h>
#define unint unsigned int
#define unchar unsigned char
sbit NS_G=P1^0;
sbit NS_Y=P1^1;
sbit NS_R=P1^2;
sbit EW_G=P0^0;
sbit EW_Y=P0^1;
sbit EW_R=P0^2;
//管腳定義
sbit DIN=P3^0;
//MAX7219 串行數據 1 腳
sbit LOAD=P3^1;
//MAX7219 片選 12
sbit CLK=P3^2;
//MAX7219 串行時鐘 13 腳
sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sbit P15=P1^5;
sbit P16=P1^6;
sbit P17=P1^7;
//寄存器宏定義
#define DECODE_MODE 0x09
//譯碼控制寄存器
#define INTENSITY 0x0A
//亮度控制寄存器
#define SCAN_LIMIT 0x0B
//掃描界限寄存器
#define SHUT_DOWN 0x0C
//關斷模式寄存器
#define DISPLAY_TEST 0x0F
//測試控制寄存器
//定義全局變量
unchar t,dte,dts;
//t為1ms脈沖產生標志,dte、dts分別為東西方向、南北方向數字變化標志
unchar Easw,Soun;
//東西、南北方數碼管數字變量
//函數聲明
void Write7219(unchar address,unchar dat);
//MAX7219控制處理函數聲明
void Display();
//數碼管數字顯示處理函數聲明
void Initial(void);
//MAX7219初始化函數聲明
void Init(void);
//定時器初始化函數聲明
/*主函數:交通等控制器,東西通行時間為80s,南北通行時間為60s,緩沖時間為3s。*/
void main(void)
{
Initial();
//MAX7219 初始化
Init();
//變量初始化
while(1)
{
Display(); //調用顯示函數
}
}
/*MAX7219初始化函數:MAX7219 初始化,設置MAX7219 內部的控制寄存器*/
void Initial(void)
{
Write7219(SHUT_DOWN,0x01);
//開啟正常工作模式(0xX1)
Write7219(DISPLAY_TEST,0x00);
//選擇工作模式(0xX0)
Write7219(DECODE_MODE,0xff);
//選用全譯碼模式
Write7219(SCAN_LIMIT,0x03);
//選用前4只LED
Write7219(INTENSITY,0x04);
//設置初始亮度
}
/*初始化函數:設置定時/計數器0工作方式1,設置50ms定時時間,并進行初始化。開總中斷、定時/計數器0,初始化所需全局變量 */
void init()
{
TMOD = 0X01;
//設置定時器0工作方式1
TH0 = 0X4C;
//定時器0高八位初始化
TL0 = 0X00;
//定時器0低八位初始化
ET0 = 1;
//定時器0中斷允許
TR0 = 1;
//開定時器0
EA = 1;
//開總中斷
t = 0;
dte = 0;
dts = 0;
Easw = 79;
//東西方向數碼管初值79
Soun = 82;
//南北方向數碼管初值82
//P0 = 0x21;
//初始化東西方向亮綠燈
EW_G=0;EW_Y=1,EW_R=1;
//P1 = 0X24;
//初始化南北方向亮紅燈
NS_G=1;NS_Y=1;NS_R=0;
}
/*數碼管數字顯示處理函數:通過定時器精確定時,動態地顯示交通燈時間的變化 */
void Display()
{
unchar i;
unchar Ewsn[4]={0};
//定義一個只含四個元素的一位數組
void Digit_deal();
//數字變化處理函數聲明
if(t >= 20)
//t=20時,定時1秒,Easw、Soun做自減
{
t= 0;
Easw--;
Soun--;
}
Digit_deal();
//數字變化處理函數
Ewsn[0] = Easw/10;
//東西顯示數字十位
Ewsn[1] = Easw%10;
//東西顯示數字個位
Ewsn[2] = Soun/10;
//南北顯示數字十位
Ewsn[3] = Soun%10;
//南北顯示數字個位
for(i=1;i<5;i++)
{
Write7219(i,Ewsn[i-1]);
//4位共陰數碼管顯示
}
}
剩余部分附件查看
|
-
圖片1.png
(502 KB, 下載次數: 26)
下載附件
2019-10-11 17:02 上傳
-
0.png
(14.08 KB, 下載次數: 31)
下載附件
2019-10-11 18:18 上傳
-
-
紅綠燈3.zip
2019-10-11 17:03 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
91.59 KB, 下載次數: 13, 下載積分: 黑幣 -5
|