找回密碼
         注冊會員
        搜索附件  

        樓宇對講.rar

         

        51單片機聯網小區樓宇對講的管理機程序:
        程序概述:
            這是個具體產品程序,是聯網小區樓宇對講的管理機程序,它可以管理
            成千上萬個用戶。
        給這個程序的目的:
            1、讓大家了解更復雜的數據結構等
            2、告戒大家光學習完開發板上的例子是不夠的,那些只是練基本功
            3、鼓勵大家要好好學習,要不斷的更新自己的知識
        你需要做到的:
            不要求你要和我一樣去寫這個程序,搞懂管理機的所有功能。你只要能
            搞明白里面的一些數據類型、數據結構、函數模塊等你能看到的東西就
            行,還有里面隱含的一些嵌入系統程序設計的要點。

        2006年06月02日:
          修改了串口接收總線數據時候有可能導致數據沖突的問題,現在從串口接收到的數據是先
        放到緩沖區中,然后在主函數中對緩沖區中的數據進行處理的,而不是對接收緩沖區進行操作。
        2006年06月04日:
            修改了一些小問題,在通話和振鈴時候分機報警會先將當前連接斷開,然后再發出報警信號。
        2006年06月05日:
            修改收到報警之后按"取消",之后的顯示狀態。現在按"取消"之后會回到報警之前的顯示狀態。
        2006年06月06日:
            繼續修改了一些管理機LCD屏的顯示上的小問題。
        2006年08月15日:
            修改管理機啟動部分代碼,在燒寫管理機程序的時候,選擇“只有停電關看門狗”燒寫方式,
        這樣可以提高管理機在啟動時候的穩定性,防止靜電導致單片機復位之后在啟動過程中再次死機。

        以下是部分程序,全部程序見附件

        1. // Copyright (c)2005 - 2006 by Laser Electronics, All Rights Reserved.
        2. /*----------------------------------------------------------------------------+
        3. | File Name: Main.c, v1.0.1 |
        4. | Author: |
        5. | Date: |
        6. +-----------------------------------------------------------------------------+
        7. | Description: 聯網型智能樓宇對講系統 -- 管理中心機主程序文件 |
        8. | 器件選擇 -- STC89C58RD+, PQFP-44 |
        9. | 時鐘頻率 -- 24.000 MHz |
        10. +-----------------------------------------------------------------------------+
        11. | Release Notes: |
        12. | | |
        13. +----------------------------------------------------------------------------*/

        14. /*----------------------------------------------------------------------------+
        15. | Include files |
        16. +----------------------------------------------------------------------------*/
        17. #include "Main.h"
        18. #include "LCD.h"
        19. #include "UART.h"
        20. #include "Timer.h"
        21. #include "KeyProcess.h"
        22. #include "RouteTable.h"

        23. /*----------------------------------------------------------------------------+
        24. | Type Definition & Macro |
        25. +----------------------------------------------------------------------------*/
        26. // I2C存儲器的配置:使用24C512,64K字節空間, 0x0000 ~ 0xFFFF, 這里只用到16K字節
        27. /*----------------------------------------------------------------------------+
        28. | 0x0000(2字節): 系統標志
        29. | 0x0002(1字節): 雙擊間隔時間
        30. | 0x0003(1字節): 管理機輪檢門口機的時間間隔
        31. | 0x0004(2字節): 小區的路由信息I2C起始地址
        32. | 0x0006(2字節): 小區的路由信息長度
        33. | 0x0008(2字節): 射頻卡信息起始地址
        34. | 0x000A(2字節): 射頻卡信息長度
        35. | 0x000C(2字節): 報警信息起始地址
        36. | 0x000E(2字節): 報警信息長度
        37. | 0x0010(2字節): 報警記錄第一條記錄的地址
        38. | 0x0012(2字節): 報警記錄最后一條記錄的地址
        39. | 0x0020 - 0x002F (16字節): 系統密碼+密碼長度
        40. | 0x0030 - 0x003F (16字節): 管理機LOGO,在管理機空閑模式下LCD屏的第一行顯示的字符
        41. | 0x0400 - 0x07FF (1K字節):
        42. | 0x0800 - 0x0FFF (2K字節): 存放小區的路由信息,每個單元占用8個字節,所以可以存放256個單元的路由信息
        43. | 0x1000 - 0x1FFF (4K字節): 存放卡號,每張卡號占用16個字節,所以可以存放256張卡號
        44. | 0x2000 - 0x3FFF (8K字節): 存放報警記錄,每條報警記錄占用16個字節,所以可以存放512條報警記錄
        45. +----------------------------------------------------------------------------*/
        46. #define DEFAULT_ROUTE_INFO_START_ADDR 0x0800 // 從0x0800地址處開始
        47. #define DEFAULT_ROUTE_INFO_LENGTH 0x0800 // 用2K字節來存放小區路由信息,每個單元需要8字節,可以存放256個單元的路由信息
        48. #define DEFAULT_RFCARDTAB_START_ADDR 0x1000 // 從0x1000地址處開始
        49. #define DEFAULT_RFCARDTAB_LENGTH 0x1000 // 用4K字節來存放臨時射頻卡號,每張卡需16字節,可以存放256張臨時卡
        50. #define DEFAULT_ALARM_RECORD_START_ADDR 0x2000 // 從0x2000地址處開始
        51. #define DEFAULT_ALARM_RECORD_LENGTH 0x2000 // 用8K字節來存放分機報警記錄,每條記錄需16字節,可以存放512條報警記錄

        52. /*----------------------------------------------------------------------------+
        53. | Extern Variables |
        54. +----------------------------------------------------------------------------*/
        55. /*----------------------------------------------------------------------------+
        56. | Global Variables |
        57. +----------------------------------------------------------------------------*/

        58. bit bHandleUp; // 指示手柄是否提起,TRUE為提起狀態,FALSE為壓下狀態
        59. bit LineIdle; // 當前線路上是否有數據,如果沒有才可以發數據
        60. bit TxOK; // 當前字節是否已經發送完成

        61. data t_SystemStatus SystemStatus; // 當前選擇的命令,是監視、查詢還是呼叫等等

        62. data UINT RS485SendWaitTimer; // RS485總線超時重發計數器,當這個數減計數到MAX_RS485_WAIT_TIMES的倍數的時候重發,減到0的時候表示放棄這一次發送

        63. data UINT MessageShowTimer; // 消息顯示的時間長短計數器,當這個數減到0的時候清除顯示的消息并回到之前的狀態

        64. data UINT BeepTimer; // 蜂鳴器發聲定時器

        65. idata BYTE WDT_Counter; // 看門狗狗糧

        66. idata UINT LineIdleWaitTime; // 等待485總線空閑需要等待的時間, 根據地址而各不相同

        67. idata UINT RingTimeCounter; // 振鈴信號持續時間,超過這個時間就會停止振鈴

        68. idata UINT AlarmTimeCounter; // 報警持續時間,超過這個時間就會停止報警

        69. idata UINT ViewTimeCounter; // 監視定時器,當這個計數器減計數到0的時候向門口機發送取消監視請求的命令

        70. xdata BYTE ConnectingAddr[4]; // 管理機正在監視的門口機地址

        71. xdata BYTE KeyBuffer[KEY_BUF_LENGTH+1]; // 按鍵緩沖

        72. xdata BYTE CardBuffer[Card_BUF_LENGTH+1]; // 卡號緩沖

        73. xdata t_RouteInfo RouteInfo; // 路由信息緩沖區

        74. idata BYTE DoubleKeyPressTimer; // 設定雙擊按鍵的時間間隔,以10ms為單位
        75. idata BYTE CheckDoorIntervalTimer; // 設定管理機輪檢門口機的時間間隔

        76. idata UINT RouteInfoStartAddr; // 用于存放各個用戶的路由信息的表格在I2C存儲器中的起始地址
        77. idata UINT RouteInfoLength; // 用于存放各個用戶的路由信息的表格的長度

        78. idata UINT RFCardTabStartAddr; // 用于存放各個單元所有卡號對應的I2C地址的表格的頭地址,即表格的地址
        79. idata UINT RFCardTabLength; // 用于存放各個單元所有卡號對應的I2C地址的表格的長度的地址

        80. idata UINT AlarmRecordStartAddr; // 存放的報警記錄的首地址
        81. idata UINT AlarmRecordLength; // 存放的報警記錄的長度

        82. xdata BYTE SystemPassword[MAX_SYSTEM_PASSWORD_LENGTH+1]; // 存放系統管理員密碼,第一個字節為密碼長度

        83. xdata t_AlarmRecord AlarmRecord; // 報警記錄緩沖區
        84. idata t_AlarmRecord *pAlarmRecord; // 指向報警記錄的指針

        85. xdata t_RFCardUser RFCardUser; // 定義記錄刷卡用戶的結構體,包括卡號,用戶名
        86. idata t_RFCardUser *p_RFCardUser;

        87. xdata BYTE I2CBuffer[I2C_PAGE_SIZE] _at_ 0x0000; // 讀寫I2C存儲器的內存緩沖

        88. xdata BYTE CheckDoorIntervalArray[MAX_DOOR_NUM] _at_ I2C_PAGE_SIZE;// 管理機輪檢各個門口機所用到的數據緩存,每一個門口機對應一個字節
        89. data UINT DoorNumber; // 在I2C存儲器中設置的單元的數量,根據這個數量管理機決定需要對多少個門口機進行輪檢

        90. code UINT SystemPasswordAddress = 0x20; // 用于存放系統管理員密碼的I2C地址,長度為16個字節,用一頁來存放

        91. code BYTE NullString[NULL_STRING_LENGTH] = {0x00}; // 常量空字符串

        92. code BYTE Logo[DISP_BUF_LENGTH] = " 雷森電子 ";

        93. /*----------------------------------------------------------------------------+
        94. | Internal Variables |
        95. +----------------------------------------------------------------------------*/
        96. /*----------------------------------------------------------------------------+
        97. | Type Definition & Macro |
        98. +----------------------------------------------------------------------------*/

        99. /*----------------------------------------------------------------------------+
        100. | System Initialization Routines |
        101. +----------------------------------------------------------------------------*/
        102. //
        復制代碼


        非常感謝分享,想找一個完整的程序不容易,轉了很多網站,終于在這里找到了,再次感謝!
        不知道硬件電路有沒有。
        非常感謝分享,想找一個完整的程序不容易,轉了很多網站,終于在這里找到了,再次感謝!

        QQ|手機版|MCU資訊論壇 ( 京ICP備18035221號-2 )|網站地圖

        GMT+8, 2025-3-18 12:46 , Processed in 0.038961 second(s), 8 queries , Redis On.

        Powered by Discuz! X3.5

        © 2001-2024 Discuz! Team.

        返回頂部
        在线亚洲精品自拍| 91国内揄拍国内精品情侣对白| **性色生活毛片| 国产丝袜一区二区| 久久国产精品99国产精| 五月花精品视频在线观看| 国产精品成人无码久久久久久 | 91精品无码久久久久久五月天| 精品无码三级在线观看视频| 2018影音先锋男人资源中文字幕 | 久久91这里精品国产2020| 深夜福利视频网站| www国产精品| 久久久精品视频免费观看| 亚洲国产精品国自产拍AV| 欧美精品一区二区精品久久| 亚洲国产精品一区二区三区久久| 久久精品麻豆日日躁夜夜躁| 国产精品成人观看视频| 337p中文字幕| 国产成人精品日本亚洲专区| 91精品一区国产高清在线gif| 亚洲精品小视频| 就去吻亚洲精品国产欧美| 久久国产乱子精品免费女| 日韩精品无码免费视频| 97久久久精品综合88久久| 乱人伦人妻精品一区二区| 精品无码人妻夜人多侵犯18| 韩国三级中文字幕hd久久精品| 午夜在线a亚洲v天堂网2018| 精品午夜久久福利大片| 在线观看国产精品普通话对白精品 | chinese国产hdfree中文| 99久久精品国产毛片| 亚洲国产精品成人久久| 国产高清在线精品一区二区| 午夜精品久久久久久99热| MM1313亚洲精品无码| 人人妻人人澡人人爽人人精品 | 久久99精品国产麻豆|