久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
紅綠燈系統 無線傳輸道路信息及交通擁堵情況 12864顯示
[打印本頁]
作者:
男人
時間:
2017-5-16 10:12
標題:
紅綠燈系統 無線傳輸道路信息及交通擁堵情況 12864顯示
這個是本人做的一個紅綠燈系統,由12864顯示,有無線傳輸兩個道路的信息以及交通擁堵情況。
0.png
(62.59 KB, 下載次數: 87)
下載附件
2017-5-16 16:26 上傳
單片機發送源程序如下:
//簡介:第一行顯示,距離時間
//
//第二行顯示,還剩
//
//第三行顯示,00時,00分,00秒
//
//第四行顯示, 周林
//
//
//
//按下旋鈕開關,開始設定秒,秒編輯位閃動。左右旋轉設定數值,
//
//在按下開關,秒確定,設定分,分編輯位閃動左右調數值,
//
//再按下,分確定,小時位閃動。左右轉調小時,再按一下。時間確定,開始倒計時。到達定
//
//時時間后停止,并閃動。
#include <reg52.h>
#include <intrins.h>
/********************* 定義 ********************************/
#define LCD_data P0 //數據口
sbit LCD_RS = P2 ^ 6; //寄存器選擇輸入
sbit LCD_RW = P2 ^ 5; //液晶讀/寫控制
sbit LCD_EN = P2 ^ 7; //液晶使能控制
sbit LCD_PSB = P3 ^ 2; //串/并方式控制
sbit LCD_RST = P3 ^ 4; //液晶復位端口
sbit bz = P1 ^ 0;
sbit hw1=P2^3;
sbit hw2=P2^4;
sbit sset=P3^0;//設置按鈕
sbit spk=P3^1;
sbit sadd=P3^3;
sbit sdel=P1^0; //按下開始計時
//sbit FW= RST;
sbit d1 = P2^0;
sbit d2 = P2^1;
sbit d3 = P2^2;
void TimerConfiguration();
unsigned int Time, g, y;
signed int second=0,minute=0,hour=0,count=0,keycount=0;
signed char key=0;
unsigned char code DIS1[] =
{
"距離綠燈時間"
};
unsigned char code DIS2[] =
{
"還剩:"
};
unsigned char code DIS31[] =
{
"堵車距離: 50m"
};
unsigned char code DIS32[] =
{
"不堵車"
}; unsigned char code DIS33[] =
{
"秒"
};
unsigned char code DIS4[] =
{
"堵車距離: 100m"
};
unsigned char code DIS5[] =
{
"楊振林余偉樊曉莉"
};
unsigned char code table2[]="0123456789";
char code reserve[3]_at_ 0x3b; //保留0x3b開始的3個字節
/*********************延時子函數**************************/
void delayNOP()//us延時子函數 (4.34us)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
void delayms(unsigned int ms)//ms延時子函數
{
unsigned char y;
while (ms--)
{
for (y = 0; y < 114; y++)
;
}
}
//******************檢查LCD忙狀態**************************
bit lcd_busy()//檢查LCD忙狀態 1忙,0閑
{
bit result;
LCD_RS = 0;
LCD_RW = 1;
LCD_EN = 1;
delayNOP();
result = (bit)(P0 &0x80);
LCD_EN = 0;
return (result); }
//***********************寫指令數據***********************
void lcd_wcmd(unsigned char cmd)//寫指令數據到LCD
{
while (lcd_busy())
{
;
}
LCD_RS = 0;
LCD_RW = 0;
LCD_EN = 1;
P0 = cmd;
delayNOP();
LCD_EN = 0;
}
void lcd_wdat(unsigned char dat)//寫顯示數據到LCD
{
while (lcd_busy())
;
LCD_RS = 1;
LCD_RW = 0;
LCD_EN = 1;
P0 = dat;
delayNOP();
LCD_EN = 0;
}
void writesmh(unsigned char add,unsigned char date)//顯示個位和十位數據
{
unsigned char shi,ge;
shi=date/10;
ge=date%10;
lcd_wcmd(0x96);
delayms(5);
lcd_wdat(table2[shi]);
delayms(5);
lcd_wdat(table2[ge]);
delayms(5);
}
//*********************初始化設定****************************
void lcd_init()
{
LCD_PSB = 1; //并口方式
LCD_RST = 0; //液晶復位
delayms(5); //液晶復位
LCD_RST = 1; //液晶復位
delayms(5); //液晶復位
lcd_wcmd(0x34); //擴充功能設定,擴充指令,選8位數據
delayms(5);
lcd_wcmd(0x30); //功能設定,基本指令操作,選8位數據
delayms(5);
lcd_wcmd(0x0C); //顯示開,關光標,關光標反白允許。
delayms(5);
lcd_wcmd(0x04); //光標的移動方向
delayms(5);
lcd_wcmd(0x01); //清除LCD的顯示內容
delayms(5);
TMOD=0x01;
TH0=0x3C;
TL0=0xB0;
EA=1;
ET0=1;
TR0=0;
EX0=0; //外部中斷0允許
IT0=1; //外部中斷0為邊沿觸發方式
}
//*********************設定顯示位置子函數**********************
void lcd_pos(unsigned char X, unsigned char Y)//設定顯示位置
{
unsigned char pos;
if (X == 1)
{
X = 0x80;
}
else if (X == 2)
{
X = 0x90; }
else if (X == 3)
{
X = 0x88;
}
else if (X == 4)
{
X = 0x98;
}
pos = X + Y; //確定顯示地址
lcd_wcmd(pos); //寫顯示地址
}
//*****************清屏子函數***************************
void clr_screen()//清屏子函數
{
lcd_wcmd(0x34); //擴充指令操作
delayms(5);
lcd_wcmd(0x30); //基本指令操作
delayms(5);
lcd_wcmd(0x01); //清屏
delayms(5);
}
//******************閃爍子函數**************************
void lcdflag()
{
lcd_wcmd(0x08); //關閉顯示
delayms(500);
lcd_wcmd(0x0c); //開啟顯示
delayms(500);
lcd_wcmd(0x08);
delayms(500);
lcd_wcmd(0x0c);
delayms(500);
lcd_wcmd(0x08);
delayms(500);
lcd_wcmd(0x0c);
delayms(500);
}
//******************寫字符串子函數*************************
void wr_string(unsigned char str[])//寫字符串子函數
{
unsigned char num = 0;
while (str[num])
{
lcd_wdat(str[num++]); //寫數據
}
}
//********************按鍵設置時間*************************
void keyscan()//按鍵設置時間
{
if(d1==0)
{
TR0=1; //開始計時
EX0=1;
bz=0;
}
if(d1==1)
{
TR0=0; //停止計時
EX0=0;
}
if(keycount!=0)
{
if(keycount==2)//編輯秒
{
if(sadd==0)//數值加1
{
delayms(100);
if(sadd==0)
{
second++;
if(second==60)
{
second=0;
}
sadd=1;
}
writesmh(0x0e,second);
lcd_wcmd(0x8e);
lcd_wcmd(0x0d);//秒位閃爍
}
if(sdel==0)//數值減1
{
delayms(10);
if(sdel==0)
{
if(second==0)
{
second=60;
}
second--;
sdel=1;
}
writesmh(0x0e,second);
lcd_wcmd(0x8e);
lcd_wcmd(0x0d);//秒位閃爍
}
}
}
}
//void gzhi()
//{
//if(hw1==0)
//{
// g = 1;
//}
////if(d1==1&&hw2==0&&hw1==0)
////{
//// g = 1;
////}
//if(d1==1&&hw2==0&&hw1==1)
//{
// g = 2;
//}
//if(d1==1&&hw2==1&&hw1==0)
//{
// g = 3;
//}
//if(d1==1&&hw2==1&&hw1==1)
//{
// g = 4;
//}
//if(d1==0&&hw2==0&&hw1==0)
//{
// g = 5;
//}
//if(d1==0&&hw2==0&&hw1==1)
//{
// g = 6;
//}
//if(d1==0&&hw2==1&&hw1==0)
//{
// g = 7;
//}
//if(d1==0&&hw2==1&&hw1==1)
//{
// g = 8;
//}
//}
void init()//初始化子程序
{
TMOD=0x20; //設置定時器T1為工作方式2
TH1=0xfd;
TL1=0xfd; //T1定時器裝初值
TR1=1; //啟動定時器T1
REN=1; //允許串口接收
SM0=0;
SM1=1; //設置串口工作方式1
EA=1; //開總中斷
ES=1; //開串口中斷
}
//主函數主函數主函數主函數主函數主函數主函數主函數主函數主函數主函數主函數主函
//數主函數
void main()
{
init();
delayms(100); //上電,等待穩定
lcd_init(); //初始化LCD
lcd_pos(1, 0); //設置“距離綠燈時間”顯示位置為第一行
wr_string(DIS1);
lcd_pos(2, 0); //設置“還剩”顯示位置為第二行
wr_string(DIS2);
lcd_pos(2, 7); //設置“秒”顯示位置為第四行
wr_string(DIS33);
if((Time==0&&hw2==0&&hw1==0)||(Time==0&&hw2==0&&hw1==1))
{ //********************************************************
lcd_pos(3, 0); //設置“距離綠燈時間”顯示位置為第一行
wr_string(DIS4); //堵車100m
}
if(Time==0&&hw1==0&&hw2==1)
{ //********************************************************
lcd_pos(3, 0); //設置“距離綠燈時間”顯示位置為第一行
wr_string(DIS31); //堵車50m的
}
if(Time==0&&hw1==1&&hw2==1)
{ //********************************************************
lcd_pos(3, 0); //設置“距離綠燈時間”顯示位置為第一行
wr_string(DIS32); //不堵車
}
lcd_pos(4, 0); //設置“距離綠燈時間”顯示位置為第一行
wr_string(DIS5);
writesmh(0x0e,second); //顯示動態時間 秒
delayms(5);
TimerConfiguration();
init();//調用初始化子程序
while (1)
{
keyscan();
// if(Time==0)
// {
// d1 = 0;
//
// }
//
// if(Time==1200) //********************************60 40
// {
// d1 = 1;
// d2 = 0;
// }
// if (Time ==1600)
// {
// d2 = 1;
// d3 = 0;
// }
// if (Time ==1660)
// {
// d3 = 1;
// Time = 0;
// }
if(Time==0&&hw1==1&&hw2==1) //11 // 60 30
{
d1 = 0;
}
if(Time==1200)
{
d1 = 1;
d2 = 0;
}
if (Time ==1800)
{
d2 = 1;
d3 = 0;
}
if (Time ==1860)
{
d3 = 1;
Time = 0;
}
if(Time==0&&hw1==0&&hw2==1) //01
{
d1 = 0;
}
if(Time==1000&&hw1==0&&hw2==1) //**************************50 50
{
d1 = 1;
d2 = 0;
}
if (Time ==2000&&hw1==0&&hw2==1 )
{
d2 = 1;
d3 = 0;
}
if (Time ==2060&&hw1==0&&hw2==1)
{
d3 = 1;
Time = 0;
}
if((Time==0&&hw2==0&&hw1==0)||(Time==0&&hw2==0&&hw1==1)) //***********************************40 50
{
d1 = 0;
}
if(Time==800&&hw2==0&&hw1==0)
{
d1 = 1;
d2 = 0;
}
if (Time ==1800&&hw2==0&&hw1==0)
{
d2 = 1;
d3 = 0;
}
if (Time ==1860&&hw2==0&&hw1==0)
{
d3 = 1;
Time = 0;
}
}
}
//**********************中斷***************************
void time0() interrupt 1 using 0//倒計時中斷
{
TH0=0x3C;
TL0=0xB0;
count++;
if(count==156&&hw1==1&&hw2==1)//11
{
count=0;
second--;
if(second<0)
{
second=60;
minute--;
if(minute<0)
{
minute=59;
hour--;
if(hour<0)
{
hour=24;
}
lcd_pos(3, 2); //設置顯示位置為第三行,第七列
writesmh(0x0a,hour);
} lcd_pos(3, 4); //設置顯示位置為第三行,第七列
writesmh(0x0c,minute);
}
lcd_pos(3, 6); //設置顯示位置為第三行,第七列
writesmh(0x0e,second);
}
if(count==155&&hw1==0&&hw2==1) // 01
{
count=0;
second--;
if(second<0)
{
second=50;
if(d1==1)
{
second=0;
bz=1;
}
}
lcd_pos(3, 6); //設置顯示位置為第三行,第七列
writesmh(0x0e,second);
}
if((count==155&&hw1==0&&hw2==0)||(count==155&&hw2==0&&hw1==1)) //00
{
count=0;
second--;
if(second<0)
{
second=40;
if(d1==1)
{
second=0;
bz=1;
}
}
lcd_pos(3, 6); //設置顯示位置為第三行,第七列
writesmh(0x0e,second);
}
}
void encoder(void) interrupt 0//外部中斷0 旋轉碼開關中斷程序
{
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
調皮的紅綠燈2.rar
(100.17 KB, 下載次數: 19)
2017-5-16 10:09 上傳
點擊文件名下載附件
紅綠燈系統
下載積分: 黑幣 -5
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
www中文字幕
|
国产成人一区二
|
国产成人免费在线
|
色婷婷影院
|
国内自拍视频在线观看
|
成人免费观看男女羞羞视频
|
国产精品国产三级国产a
|
尤物视频在线免费观看
|
精品视频国产
|
中文字幕视频在线看
|
欧美日韩亚洲一区
|
av在线一区二区三区
|
在线观看免费高清av
|
日韩欧美在线视频
|
欧美一级特黄aaa大片在线观看
|
av一区在线观看
|
日韩av在线一区二区三区
|
av在线一区二区
|
中文字幕一区在线观看视频
|
热99精品视频
|
久久精品色欧美aⅴ一区二区
|
国产美女黄色片
|
人人干在线
|
亚洲国产精品成人综合久久久
|
免费成年网站
|
午夜精品一区二区三区免费视频
|
亚洲午夜网
|
欧美日韩一
|
国产精品久久久久久久免费大片
|
国产精品久久久久久久午夜片
|
一级片在线观看
|
在线播放国产视频
|
亚洲视频一区在线观看
|
黄色免费网站在线看
|
2019精品手机国产品在线
|
黄色激情毛片
|
日本精品视频在线
|
国内精品久久影院
|
91视视频在线观看入口直接观看
|
91在线最新
|
久久精品亚洲一区二区三区浴池
|