找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4474|回復(fù): 0
收起左側(cè)

基于BASCOM主干道的八狀態(tài)十字路口交通燈

[復(fù)制鏈接]
ID:71259 發(fā)表于 2014-12-29 02:07 | 顯示全部樓層 |閱讀模式
哈哈,發(fā)一個BASCOM交通燈程序~~
   昨晚編寫的簡單十字路口交通燈,以學(xué)校東門的十字路口的交通燈為模板,以實(shí)地調(diào)查(昨晚)獲得的狀態(tài)轉(zhuǎn)換機(jī)制設(shè)計。模塊化編寫,使用LED與LCD雙重顯示,有倒計時,設(shè)東西方向(橫向)為主干道。不使用中斷,暫時還沒有添加掉電保存~~~

添加了版本與版權(quán)信息顯得正式些~~


$regfile = "m16def.dat"
$crystal = 4000000


'--------------------------------------------------------

'        項目名稱:基于主干道的八狀態(tài)十字路口交通燈

'        版本序列:V1.0

'        創(chuàng) 建 者:白 羽

'        單位信息:物電學(xué)院07物本班

'        Q Q聯(lián)系    白羽

'        創(chuàng)鍵時間:2010.7.14

'        版權(quán)信息:任意共享
'--------------------------------------------------------


Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
Config Lcd = 16 * 2
Cls
Cursor Off


'************* IO口初始化 **************
Config Portb = Output
Config Portd = Output
Portb = &HFF
Portd = &HFF
'************* IO口初始化 **************


Declare Sub Show_time(byval Longth As Byte)                 '函數(shù)聲明



'******************************************************************
'(
                                   北

                    |                                     /\       |
                    |                                      ||       |
                    |              <=紅黃綠 紅黃綠 |
                    |                    0 1 2      3 4 5   |
       ----------                                                 ---------
            綠 B
      <= 黃 A
            紅 9

            綠 8
  西      黃 7                                                                東
            紅 6
             ||                                                         
             \/



       ----------                                                 ---------
                    |                                               |
                    |                                               |
                    |                                               |


                                    南

  燈0 -7 : Pd0 -pd7
  燈8 -b : Pb0 -pb3

')
'******************************************************************


'********************* 自 定 義 字 符 (箭 頭) *************************
Deflcdchar 0 , 4 , 10 , 17 , 10 , 10 , 10 , 14 , 32                            ' 上
Deflcdchar 1 , 32 , 14 , 10 , 10 , 10 , 17 , 10 , 4                            ' 下
Deflcdchar 2 , 32 , 4 , 11 , 16 , 11 , 4 , 32 , 32                              ' 左
Deflcdchar 3 , 32 , 4 , 26 , 1 , 26 , 4 , 32 , 32                                ' 右
Deflcdchar 4 , 32 , 15 , 8 , 11 , 10 , 17 , 10 , 4                              ' 左上
Deflcdchar 5 , 4 , 10 , 17 , 10 , 26 , 2 , 30 , 32                              ' 左下
Deflcdchar 6 , 16 , 16 , 20 , 26 , 17 , 26 , 4 , 32                            ' 右上
Deflcdchar 7 , 32 , 4 , 11 , 16 , 11 , 5 , 1 , 1                                  ' 右下
'******************************************************************


'################## 以 下 是 主 程 序 ########################
Main:

   Do
      Gosub Line_straight                                   '橫向直行
      Show_time 10
      Gosub Clean_sign
      Gosub Line_temp                                       '緩沖(黃燈)
      Show_time 2


      Gosub Line_turn_left                                  '橫向左拐
      Show_time 5
      Gosub Clean_sign
      Gosub Line_left_temp                                  '緩沖(黃燈)
      Show_time 2


      Gosub Row_straight                                    '縱向直行
      Show_time 5
      Gosub Clean_sign
      Gosub Row_temp                                        '緩沖(黃燈)                                        '
      Show_time 2

      Gosub Row_turn_left                                   '縱向左拐
      Show_time 5
      Gosub Clean_sign
      Gosub Row_left_temp                                  '緩沖(黃燈)
      Show_time 2

   Loop

End
'#####################################################




'################### 以 下 是 子 程 序 #######################




'~~~~~~~~~~~~~~~~~~~ 橫 向 直 行 子 程 序 ~~~~~~~~~~~~~~~~~~~~~
Line_straight:                                              '東西方向(橫向),直走

   Portb = &HFF                                             '初始化LED:全滅
   Portd = &HFF

   Portd.0 = 0
   Portd.3 = 0
   Portd.6 = 0
   Portb.3 = 0

   Locate 1 , 1
   Lcd "Going  "
   Locate 1 , 9
   Lcd Chr(2) ; Spc(1)
   Locate 2 , 9
   Lcd Spc(1) ; Chr(3)

Return
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



'~~~~~~~~~~~~~~~~~~~ 橫 向 左 拐 子 程 序 ~~~~~~~~~~~~~~~~~~~~~
Line_turn_left:                                             '東西方向(橫向),左拐

   Portb = &HFF                                             '初始化LED:全滅
   Portd = &HFF

   Portd.0 = 0
   Portd.3 = 0
   Portb.0 = 0
   Portb.1 = 0

   Locate 1 , 1
   Lcd "Going  "
   Locate 1 , 9
   Lcd Spc(1) ; Chr(4)
   Locate 2 , 9
   Lcd Chr(5) ; Spc(1)

Return



'~~~~~~~~~~~~~~~~~~~~ 縱 向 直 行 子 程 序 ~~~~~~~~~~~~~~~~~~~~
Row_straight:                                               '南北方向(橫向),直走

   Portb = &HFF                                             '初始化LED:全滅
   Portd = &HFF

   Portd.0 = 0
   Portd.5 = 0
   Portd.6 = 0
   Portb.1 = 0

   Locate 1 , 1
   Lcd "Going  "
   Locate 1 , 9
   Lcd Spc(1) ; Chr(0)
   Locate 2 , 9
   Lcd Chr(1) ; Spc(1)

Return



'~~~~~~~~~~~~~~~~~~~ 縱 向 左 拐 子 程 序 ~~~~~~~~~~~~~~~~~~~~~
Row_turn_left:                                              '南北方向(橫向),左拐

   Portb = &HFF                                             '初始化LED:全滅
   Portd = &HFF

   Portd.2 = 0
   Portd.3 = 0
   Portd.6 = 0
   Portb.1 = 0

   Locate 1 , 1
   Lcd "Going  "
   Locate 1 , 9
   Lcd Chr(6) ; Spc(1)
   Locate 2 , 9
   Lcd Spc(1) ; Chr(7)

Return
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~





'~~~~~~~~~~~~~~~~~~ 橫 向 緩 沖 子 程 序 ~~~~~~~~~~~~~~~~~~~~~
Line_temp:
   Portb = &HFF                                             '初始化LED:全滅
   Portd = &HFF

   Portd.0 = 0
   Portd.3 = 0
   Portd.7 = 0
   Portb.9 = 0

Return
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~




'~~~~~~~~~~~~~~~~~ 橫 向 左 拐 緩 沖 子 程 序 ~~~~~~~~~~~~~~~~~~~
Line_left_temp:
   Portb = &HFF                                             '初始化LED:全滅
   Portd = &HFF

   Portd.0 = 0
   Portd.4 = 0
   Portd.6 = 0
   Portb.1 = 0
Return
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~





'~~~~~~~~~~~~~~~~~~~ 縱 向 緩 沖 子 程 序 ~~~~~~~~~~~~~~~~~~~~~
Row_temp:

   Portb = &HFF                                             '初始化LED:全滅
   Portd = &HFF

   Portd.1 = 0
   Portd.3 = 0
   Portd.6 = 0
   Portb.1 = 0

Return
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~




'~~~~~~~~~~~~~~~~ 縱 向 左 拐 緩 沖 子 程 序 ~~~~~~~~~~~~~~~~~~~~
Row_left_temp:

   Portb = &HFF                                             '初始化LED:全滅
   Portd = &HFF

   Portd.0 = 0
   Portd.3 = 0
   Portd.6 = 0
   Portb.2 = 0

Return
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



'~~~~~~~~~~~~~~~~~~~~~~ 倒 計 時 顯 示 ~~~~~~~~~~~~~~~~~~~~~~
Sub Show_time(longth As Byte)
   While Longth <> 0
      Locate 1 , 14
      Lcd Longth ; Spc(2)
      Wait 1
      Decr Longth
   Wend
   Locate 1 , 14
   Lcd Spc(3)
End Sub
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~




'~~~~~~~~~~~~~~~~~~~~ 清 除 方 向 標(biāo) 志~~~~~~~~~~~~~~~~~~~~~~
Clean_sign:
   Locate 1 , 1
   Lcd "Waiting"
   Locate 1 , 9
   Lcd "**"
   Locate 2 , 9
   Lcd "**"
Return
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表