標題: 求助51單片機寫的交通燈。有程序和仿真 [打印本頁]
作者: 天行九歌 時間: 2016-6-28 11:45
標題: 求助51單片機寫的交通燈。有程序和仿真
為什么數碼管不能正常顯示倒數?求大神指點
-
-
交通燈.zip
2016-6-28 11:45 上傳
點擊文件名下載附件
86.03 KB, 下載次數: 46
作者: zl2168 時間: 2016-6-28 15:41
本帖最后由 zl2168 于 2016-6-28 15:42 編輯
實例29 模擬交通燈
先Proteus仿真一下,確認有效。
模擬交通燈.jpg (117.88 KB, 下載次數: 93)
下載附件
2016-6-28 15:42 上傳
以上摘自張志良編著《單片機實驗實訓100例》 ISBN 978-7-5124-1603-1,北航社出版
書中電路和程序設計有詳細說明,程序語句條條有注解。
作者: zl2168 時間: 2016-6-28 15:42
本帖最后由 zl2168 于 2016-6-28 15:44 編輯
帶限行時間顯示模擬交通燈.jpg (120.42 KB, 下載次數: 124)
下載附件
2016-6-28 15:43 上傳
實例30 帶限行時間顯示的模擬交通燈
先Proteus仿真一下,確認有效。
以上摘自張志良編著《單片機實驗實訓100例》 ISBN 978-7-5124-1603-1,北航社出版
書中電路和程序設計有詳細說明,程序語句條條有注解。
作者: 王杰 時間: 2016-6-28 16:03
// /******************************************************************************* * 實驗名 : 動態顯示數碼管實驗 * 使用的IO : * 實驗效果 : 數碼管顯示76543210。 * 注意 :當位選用P1口的時候注意可能會有一位不亮,那么調整J21 *******************************************************************************/ #include<reg51.h> //--定義使用的IO口--// #define GPIO_DIG P0 #define GPIO_PLACE P1 #define GPIO_TRAFFIC P2 sbit RED10 = P2^0; //上人行道紅燈 sbit GREEN10 = P2^1; //上人行道綠燈 sbit RED11 = P2^2; sbit YELLOW11= P2^3; sbit GREEN11 = P2^4; sbit RED00 = P3^0; //右人行道紅燈 sbit GREEN00 = P3^1; //右人行道綠燈 sbit RED01 = P2^5; sbit YELLOW01= P2^6; sbit GREEN01 = P2^7; //--定義全局變量--// unsigned char code DIG_PLACE[8] = { 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位選控制 查表的方法控制 unsigned char code DIG_CODE[17] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼 unsigned char DisplayData[8]; //用來存放要顯示的8位數的值 unsigned char Time, Second; //用來存放定時時間 //--聲明全局函數--// void DigDisplay(); //動態顯示函數 void Timer0Cofig(void); /******************************************************************************* * 函 數 名 : main * 函數功能 : 主函數 * 輸 入 : 無 * 輸 出 : 無 *******************************************************************************/ void main(void) { Second = 1; Timer0Cofig(); while(1) { if(Second == 70) { Second = 1; } //--寶田路通行,30秒--// if(Second < 31) { DisplayData[0] = 0x00; DisplayData[1] = 0x00; DisplayData[2] = DIG_CODE[(30 - Second) % 100 / 10]; DisplayData[3] = DIG_CODE[(30 - Second) %10]; DisplayData[4] = 0x00; DisplayData[5] = 0x00; DisplayData[6] = DisplayData[2]; DisplayData[7] = DisplayData[3]; DigDisplay(); //--寶田路通行--// GPIO_TRAFFIC = 0xFF; //將所有的燈熄滅 RED00 = 1; GREEN00 = 1; GREEN11 = 0; //寶田路綠燈亮 GREEN10 = 0; //寶田路人行道綠燈亮 RED01 = 0; //前進路紅燈亮 RED00 = 0; //前進路人行道紅燈亮 } //--黃燈等待切換狀態,5秒--// else if(Second < 36) { DisplayData[0] = 0x00; DisplayData[1] = 0x00; DisplayData[2] = DIG_CODE[(35 - Second) % 100 / 10]; DisplayData[3] = DIG_CODE[(35 - Second) %10]; DisplayData[4] = 0x00; DisplayData[5] = 0x00; DisplayData[6] = DisplayData[2]; DisplayData[7] = DisplayData[3]; DigDisplay(); //--黃燈階段--// GPIO_TRAFFIC = 0xFF; //將所有的燈熄滅 RED00 = 1; GREEN00 = 1; YELLOW11 = 0; //寶田路黃燈亮 RED10 = 0; //寶田路人行道紅燈亮 YELLOW01 = 0; //前進路紅燈亮 RED00 = 0; //前進路人行道紅燈亮 } //--前進路通行--// else if(Second < 66) { DisplayData[0] = 0x00; DisplayData[1] = 0x00; DisplayData[2] = DIG_CODE[(65 - Second) % 100 / 10]; DisplayData[3] = DIG_CODE[(65 - Second) %10]; DisplayData[4] = 0x00; DisplayData[5] = 0x00; DisplayData[6] = DisplayData[2]; DisplayData[7] = DisplayData[3]; DigDisplay(); //--黃燈階段--// GPIO_TRAFFIC = 0xFF; //將所有的燈熄滅 RED00 = 1; GREEN00 = 1; RED11 = 0; //寶田路紅燈亮 RED10 = 0; //寶田路人行道紅燈亮 GREEN01 = 0; //前進路綠燈亮 GREEN00 = 0; //前進路人行道綠燈亮 } //--黃燈等待切換狀態,5秒--// else { DisplayData[0] = 0x00; DisplayData[1] = 0x00; DisplayData[2] = DIG_CODE[(70 - Second) % 100 / 10]; DisplayData[3] = DIG_CODE[(70 - Second) %10]; DisplayData[4] = 0x00; DisplayData[5] = 0x00; DisplayData[6] = DisplayData[2]; DisplayData[7] = DisplayData[3]; DigDisplay(); //--黃燈階段--// GPIO_TRAFFIC = 0xFF; //將所有的燈熄滅 RED00 = 1; GREEN00 = 1; YELLOW11 = 0; //寶田路黃燈亮 RED10 = 0; //寶田路人行道紅燈亮 YELLOW01 = 0; //前進路紅燈亮 RED00 = 0; //前進路人行道紅燈亮 } } } /******************************************************************************* * 函 數 名 : DigDisplay * 函數功能 : 使用數碼管顯示 * 輸 入 : 無 * 輸 出 : 無 *******************************************************************************/ void DigDisplay() { unsigned char i; unsigned int j; for(i=0; i<8; i++) { GPIO_PLACE = DIG_PLACE[i]; //發送位選 GPIO_DIG = DisplayData[i]; //發送段碼 j = 10; //掃描間隔時間設定 while(j--); GPIO_DIG = 0x00; //消隱 } } /******************************************************************************* * 函 數 名 : Timer0Cofig * 函數功能 : 配置定時器 * 輸 入 : 無 * 輸 出 : 無 *******************************************************************************/ void Timer0Cofig(void) { TMOD = 0x01; //定時器0選擇工作方式1 TH0 = 0x3C; //設置初始值,定時50MS TL0 = 0xB0; EA = 1; //打開總中斷 ET0 = 1; //打開定時器0中斷 TR0 = 1; //啟動定時器0 } /******************************************************************************* * 函 數 名 : Timer0 * 函數功能 : 定時器0中斷函數 * 輸 入 : 無 * 輸 出 : 無 *******************************************************************************/ void Timer0() interrupt 1 { TH0 = 0x3C; //設置初始值 TL0 = 0xB0; Time++; if(Time == 20) { Second ++; Time = 0; } }
作者: 安德森撒 時間: 2018-6-21 22:52
有電路和程序設計嗎
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
精品亚洲一区二区
|
日韩福利片
|
国产一卡二卡三卡
|
精产国产伦理一二三区
|
韩日在线视频
|
国产精品永久免费视频
|
伊人伊成久久人综合网站
|
91中文字幕在线观看
|
国产视频导航
|
亚洲成av
|
日韩午夜激情
|
欧美日韩久久久
|
亚洲日本视频
|
亚洲激情综合
|
9191av|
亚洲在线|
亚洲精品一区二区在线观看
|
91在线电影|
欧美精选一区二区
|
国产精品一区二区久久
|
色婷婷国产精品综合在线观看
|
久草新在线
|
久久国产精品99久久久久
|
精品国产一区二区国模嫣然
|
91丨九色丨国产在线
|
亚洲国产精品成人
|
一区二区三区四区在线视频
|
精品国产乱码久久久久久牛牛
|
黄一区二区三区
|
久久精品小视频
|
欧美一级精品片在线看
|
国产成人免费在线观看
|
久久av一区二区
|
国产精品久久久久久中文字
|
欧美性生活一区二区三区
|
中文字幕亚洲欧美
|
国产乱码精品一区二区三区中文
|
日韩 欧美 综合
|
韩日av在线
|
国产成人精品一区二区三区
|
精品国产一区二区三区久久久四川
|