روھلان مۇنبىرى
كۆرۈش: 2102|ئىنكاس: 3
ئوڭ تەرىپنى يىغىش

C51 مەخپىي نومۇرلۇق قۇلۇپ تولۇق كودى

[ئۇلانما كۆچۈرۈش]
  1. 超级密码锁、备份
    1 J& |3 {( A3 l3 W. T# _, V
  2. 5 c; w: i) C, H1 J0 t5 ^$ qبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  3. /*=================================================================================
    6 \- M: x8 a- m, E: Z* [
  4.   z8 |3 t' a7 T! ?" g5 Nبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  5.            密码锁控制         
    : ?/ _: I3 X1 L# b/ J
  6. % X4 N( M; r0 g1 r- T( b! h9 Gبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  7. ==================================================================================/
    & C) |& Z2 V0 R# l
  8. /*连接线图:   توك يولىلىنىڭ ئۇلىنىش ئەھۋالى
    / B/ b0 ]9 _  T4 F6 G
  9. ---------------------------------------------------( a0 ]+ b' c6 Hبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  10. توك يولىلىنىڭ ئۇلىنىش ئەھۋالى/ B2 a- f" W( A- Cبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  11. | ----------------------------------------------- |1 l1 e- d: Q$ p$ Zبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  12. | DB0-----P0.0 | DB4-----P0.4 | RS-------P2.0     |2 a- m8 e2 G0 Y  O& gبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  13. | DB1-----P0.1 | DB5-----P0.5 | RW-------P2.1     |' B) H7 O0 b# p: Pبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  14. | DB2-----P0.2 | DB6-----P0.6 | E--------P2.2     |1 i  p! Z/ _2 N0 J8 @1 _بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  15. | DB3-----P0.3 | DB7-----P0.7 | VLCD接1K电阻到GND |
    ' b+ C' O5 d, M7 [# L1 i
  16. ---------------------------------------------------! o* T6 `* b  }1 A* I8 i" Tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  17. , d/ u. Y: g" n0 F  eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  18. 接口说明:1. P1口: 4x4矩阵键盘  N/ o" E( J( b) D/ vبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  19.           2. P2.4  工作指示灯
    ' b0 T3 c0 x. Q7 b# v
  20.           3. P2.5  继电器控制端4 C  H: X  t. G$ I, w/ @) X+ P: s- uبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  21.           4. P3.7  蜂鸣器控制端
    ! E7 x8 w' k! N) H0 k5 ~
  22.                   5. P3.3  24c02时钟端SCL  @  Y0 f# F) Q7 `بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  23.           6. P3.4  24c02数据端SDA
    1 ^. `4 O  ?7 L
  24. /*接盘按键说明:
    ! |+ ]2 Y) ?' U4 |4 l) d. K
  25. --------------------------------------------------
    . N1 h# c& ^- R6 J
  26.             |  1  |  2  |  3  |  A  |7 ^3 N2 C! F$ Oبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  27.             - - - - - - - - - - - - -
    8 ~+ v9 K6 j( F
  28.             |  4  |  5  |  6  |  B  |
    3 o; h: R6 }. t% n( c3 K
  29.             - - - - - - - - - - - - -
    5 N& i. {8 b0 t0 @& l' x. ?2 F
  30.             |  7  |  8  |  9  |  C  |
    4 \, R0 I8 {# O6 Y( s. I
  31.             - - - - - - - - - - - - -3 A2 M7 g+ D$ N6 hبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  32.             |  *  |  0  |  #  |  D  |/ F2 M2 h# e, tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  33. --------------------------------------------------7 b6 \2 n  r+ q7 kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()

  34.   O: n- Z  I: p  k& r/ K! F1 Y
  35. [注:AT89S51使用12M晶振]
    + w! }, R& _1 F  w2 J

  36. . c0 i& p2 K7 e% o
  37. ==========================定义与申明=============================================================*/
    ( x4 u. x* ]. q4 p& Z" C

  38. 0 X6 i- F7 g  B  t
  39. #include "regx52.h"
    ! D- I; {9 V! s: {/ _* w8 p# v
  40. #include "string.h"9 O4 Q" n3 P/ s- L4 z, N( c( Mبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  41. #include "intrins.h"
    % h/ m2 q; G5 L) O3 [" ]- k& a

  42. . K( X" i0 ?  x- ^1 Q1 [% Q
  43. #define uchar unsigned char: |. q' p0 N6 b  [بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  44. #define uint unsigned int, b; b' h- c4 B0 I  A1 k& |! }+ iبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  45. ! e1 Q8 F( j% f3 N2 Cبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  46. //*********** 引脚定义引脚   
    ; @  k) _8 W: @1 L: R+ W
  47. #define LCM_RS   P2_0        // 数据/命令选择信号
    1 }: ~! A* J. q! {/ b& ^9 h
  48. #define LCM_RW   P2_1        // 读/写选择信号; N2 v, R9 v& R$ d* E- I* ~3 vبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  49. #define LCM_E    P2_2        // 使能信号
    ; P4 A. I! I- G, t7 j
  50. + g8 N* T+ T2 v* gبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  51. #define WLED     P2_4        // 工作指示灯# z( l0 r( `& m6 b" k# Dبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  52. #define REL      P2_5        // 继电器+ b$ i0 e/ A4 S& `# Cبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  53. #define BELL     P3_7        // 蜂鸣器
    ) M& U  G4 H: R) a( J3 X- V
  54. 3 Z# Z3 R3 r$ n" o  Gبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  55. #define SCL      P3_3        // 模拟I2C串行时钟控制4 S: O% ?, T4 t# w& sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  56. #define SDA      P3_4        // 模拟I2C串行数据传输
    % g- M# |" r  b$ D+ }0 G
  57. 1 O# D% c3 w7 p6 j9 a, z( Fبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  58. #define LCM_Data P0          // 显示数据端口
    ' [3 o* j% k: b
  59. 4 g8 M# A' A5 Cبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  60. #define AddWr 0xa0           // "1010 0000B"器件地址选择及写标志* F) i1 r: z8 z. Aبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  61. #define AddRd 0xa1           // "1010 0001B"器件地址选择及读标志
    ( y, P! z* y7 |0 y8 d6 q
  62. //控制字格式:1 _4 ]8 o9 u) x2 @7 x1 aبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  63. /*- - - - - - - - - - -    / y7 n# L7 x! D' ^' Yبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  64.   1 0 1 0 A2 A1 A0 R/W
    7 N0 t( G( p0 S2 ]6 V, {  P7 X* G
  65.   - - - - - - - - - - - */$ v/ N' P$ n+ ^بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  66. /*注:1. 前4位为I2C总线特征编码:10104 q4 N" A% p, A/ o5 Z, k% Bبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  67.      2. A2 A1 A0为24c02的地址
    7 P. w7 Q! _) x' g# K' f
  68.          3. R/W=0:表示写入;R/W=1:表示读出 */
    0 f; Z3 T( J$ C8 `

  69. ( L7 m  m  q7 G8 V% Z* ?
  70. //*********** 变量定义
    ' K- O8 J( B/ ^4 Q8 e$ ?6 b( ^
  71. #define Busy     0x80        // 用于检测LCM状态字中的Busy标识
    / H8 t9 H( f( n" F
  72. uchar   Count,num;           // 计数器2 G$ t- y0 k8 k* \: `7 Sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  73. uint    con_30m;             // 30min计数器. `. i, |1 V) J/ i0 Uبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  74. uchar   con_20s;             // 10s计数器
    1 e8 k% N" q" A: s/ x3 `
  75. bIT     flag,mark,sign,mark0;// 常用标志位
    7 I/ a. K" ]. ~5 Q7 H% m9 C
  76. bit     flag1;               // Choice_menu()调用标志
    5 {; V3 z. w4 F5 {( v" h3 {' R6 o
  77. bit     signx;               // 循环标志- y7 i& W- H4 ~  z4 U5 t: rبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  78. bit     markx;
    2 ~5 X# ?: F9 t: L& S  G! H+ j  k
  79. + Q8 y) j) s8 b5 ]( u* @1 Nبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  80. //************ 数组定义
    ( H7 j& u, P4 s! A* }, `
  81. uchar  code O_PassWord[]={0x30,0x30,0x30,0x30,0x30,0x30};// 原始密码 "000000"
    ! \) S$ i3 n$ n, k! ^
  82. uchar  data N_Password[]={0x00,0x00,0x00,0x00,0x00,0x00};// 新密码1 N9 q2 v" Q4 n$ Q( m, {; Xبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  83. uchar  data T_Password[]={0x00,0x00,0x00,0x00,0x00,0x00};// 输入密码暂存
    0 }6 x9 s1 o- ~% u2 t; F
  84. # a# |( E3 t  k8 d% ~بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  85. //*********** 函数声明
    8 ~8 b& A0 P& y" ~, N4 d

  86. ! e  B/ v. c) x4 V) K, E  I4 ?+ ?
  87. void   Start(void); // 开始总线函数; t$ o0 G! o- U( r5 E" Tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  88. void   Stop(void);  // 结束总线函数. [- `8 a& g4 ?- t8 rبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  89. uchar  Read(void);  // 读一字节数据
    ) m. W9 D; f+ @" \& K1 R6 T. k- y
  90. bit    Send(uchar Data);// 发送一字节数据2 O1 Z6 H2 Z: bبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  91. uchar  ReadCurrent(uchar Address);// 从指定处读出一字节
    7 ]" x" o: J, j
  92. void   WriteCurrent(uchar Data,uchar Address);// 在指定地址处写入一字节8 H2 \7 I1 f; ?3 I9 eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  93. void   ReadFromROM(uchar Data[],uchar Address,uchar Num);// 从指定地址读出Num个数据( L9 ^6 Q# J. S9 mبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  94. void   WriteToROM(uchar Data[],uchar Address,uchar Num); // 从指定地址写入Num个数据
    & o% E. Z% F6 j

  95. - f9 A) N" g) ]% q5 @
  96. uchar  ReadStatusLCM(void);                 // 读状态
    % ]9 X  ]7 m0 y( B  |
  97. void   LCMInit(void);                       // LCM初始化
    ' X% ]' o* I+ c! i/ `6 Y/ k7 V
  98. void   WriteDataLCM(uchar WDLCM);           // 写数据
    8 E* [* P2 d# T) T
  99. void   WriteCommandLCM(uchar WCLCM,BuysC);  // 写指令
    , w2 N+ v3 [+ Z8 a; W/ k' ], @0 l% J
  100. void   DisplayOneChar(uchar X, uchar Y, uchar DData);        // 按指定位置显示一个字符
    % }, p+ {; U: d& c# u8 U9 C2 X
  101. void   DisplayListChar(uchar X, uchar Y, uchar code *DData); // 按指定位置显示一串字符2 u$ D3 k9 t1 K+ \; U. r5 dبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  102. 3 x' w6 X( s  y+ ], @" Q" ]بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  103. void   PasswordComparison(bit mark);//密码比较/ A9 M* I, }4 t3 U- \6 s* hبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  104. void   Scan_starnumber(void);
    0 s+ I0 y1 R: n9 Q$ f! g
  105. 6 i7 C: @5 f; U$ X6 ]' Eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  106. void   Delay5Ms(void);               // 5ms延时
    ' x% Y1 N2 T  g; i; e
  107. void   Delay400Ms(void);             // 400ms延时: [+ G" W$ ~: }" v' ?/ r3 r0 ^بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  108. void   Delay1s(void);                // 1s延时
    & v% P! w- e- L4 F5 t
  109. void   Delay_bell(void);             // 蜂鸣器发音延时
    # }' J% ]$ k- l* b9 @$ Q
  110. void   DelayMs(uchar ms);            // 延时                                                                         6 ]" R% v1 o# V8 U8 Z. Q8 Dبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  111. % D+ B5 @- W5 J# l' G" `& K' [بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  112. uchar  Key_scan(void);               // 按键扫描
    2 \( o$ N, }+ n+ I; A2 l
  113. uchar  Key_switch(void);             // 按键转换函数
    ) K$ w/ H* c2 |1 R, H

  114. ( L% |) N% X' Z/ z0 g, S
  115. void   Choice_menu(void);            // 选择菜单界面
    9 S1 i1 Z/ Q' e, Y* ^9 }7 R
  116. void   Reset_success(void);          // 复位成功提示+ K, b7 Z6 _# \8 mبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  117. void   Pass_face(void);              // 密码输入提示
    * k5 a3 l/ i! ^+ q
  118. void   Password_OK(void);            // 密码输入正确提示+ }: {' B( ^" Pبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  119. void   Welcome_face(void);           // 欢迎界面
    6 x# O0 p0 |" q# [* y7 a! Q
  120. void   Password_ERROR(void);         // 密码输入错误提示$ x; m1 Q# D% g9 l4 qبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  121. void   Password_importation(void);   // 密码输入
    ! i% }4 x1 G& X* w0 i) g- H+ l+ h

  122. 9 K9 O; E, c6 h8 `- n( {
  123. void   NewPassword_face(void);       // 输入新密码提示: o) G0 J/ D# \بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  124. void   NewPassword_again(void);      // 再次输入新密码提示
    - w8 K9 ~+ l- c3 O, E
  125. void   NewPassword_set(void);        // 新密码输入
    3 i0 O# r( R' j* Z- P0 x* x2 {
  126. void   NewPassword_set_again(void);  // 再次输入新密码9 C2 X) }& {9 P& ?( J. [: _7 }+ Pبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  127. void   Newpassword_OK(void);         // 新密码设置成功提示# I( a* F5 M' b1 [7 C% Xبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  128. void   Newpassword_ERROR(void);      // 新密码设置失败提示( T) W& b: U& Y; o1 iبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  129. void   Newpassword_comparison(void); // 新密码设置比较9 J  P( e/ w5 x1 x9 M0 \% `بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()

  130. " a0 T$ {2 `0 v7 ]0 m7 p( o
  131. void   Beep(void);                   // 蜂鸣器发音
    2 X7 {: Y. c; x- e2 p. q4 d+ d
  132. void   Led_hint(void);               // LED工作指示+ N/ p) ^; H; q) @7 C& F, h8 P) yبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()

  133. 3 g/ G4 P8 J) K

  134. . @/ }/ `! u" s1 Q9 x# \. H
  135. //========================================== 主函数部分 ==================================================
    1 E7 M" l" |1 T0 S- M$ f
  136. 3 W8 W9 |- i% ~3 y* n* ]8 o6 Eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  137. /*****************************************************
    ( g0 A, X; m: E* a6 B1 L8 b8 m0 i
  138. 函 数 名:void clearmen(void)* _/ M3 a8 _4 A2 H* R$ ?7 R( lبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  139. 功    能:系统初始化
    $ B! \" I' O4 U7 R, f
  140. 说    明:对系统用的标志位和定时器进行初始化" o& X4 H; D% Q* ?8 e! k& hبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  141. 入口参数:无5 L1 e/ ?0 O' d+ N" Qبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  142. 返 回 值:无 % k2 _+ s  |5 Tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  143. *****************************************************/: e: d' d( L: G3 s- o2 \# tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  144. void clearmen(void)7 t5 o) o# D9 |) @بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  145. {
    - o3 |( k+ s: i5 T, L9 w
  146.   flag1= 1;            // Choice_menu()调用标志
    ; K  ^' m9 M+ K5 ^1 r
  147.   signx= 1;            // 循环标志3 T+ B0 N1 f4 T* c2 n0 J+ V4 eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  148.   flag = 1;            // 调用输入新密码提示标志位            , Z( P& B* T8 z1 ^3 _$ u/ pبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  149.   mark = 1;            // 循环标志位
    ( A. n+ C: t! d: x& Z9 D- U
  150.   markx= 1;
    + B* K" g9 e. g( M/ Z  V6 F, _
  151.   num  = 0;            // 按键错误计数器
    ' I" D$ {4 u4 G
  152.   WriteToROM(O_Password,0,6);' Q; N/ t) a$ g& tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  153.   TH0=0x3C;TL0=0xB0;   // 50ms定时初值
    + b" c* v6 L+ @9 W. M+ r
  154.   TH1=0x3C;TL1=0xB0;   // 50ms定时初值9 m) p. O5 S7 l9 t/ ]) I9 c8 Xبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  155.   TMOD=0x11;ET0=1;TR0=0;ET1=1;TR1=0;EA=1;2 D, h$ v0 Y& J! E- N: Rبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  156. }
    7 B+ o$ z2 g" }* ~

  157. & N, k* [) a2 |
  158. /*****************************************************
    9 F! `& N; h; n  h+ _* f* N7 M
  159. 函 数 名:main()) g- o  L7 O6 Iبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  160. 功    能:主函数
    ( J" e  t! d9 e, T
  161. 说    明:对按键和显示进行控制
    9 k+ `/ v& m2 |  a0 x( g
  162. 入口参数:无, |7 \- u7 g0 s9 \1 zبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  163. 返 回 值:无
    ( F+ Q, h' r) C  D0 ?/ Q( J% H
  164. *****************************************************/
    $ Q& d! D9 X  z* |5 S: V* v9 B
  165. void main(void)
    : @- q+ t+ q6 t
  166. {  $ z! @7 Z, Y1 r5 Lبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  167. # t: [; O; D7 w7 ~5 n* a% `بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  168.   uchar Key_value;( k; S' S" u, P3 N+ g1 e, fبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  169.   Delay400Ms();                                                    // 启动等待,等LCM讲入工作状态
    # l0 `0 S% Y+ Z
  170.   LCMInit();                                                       // LCM初始化
    - g* D$ i& J  Z' O" B( V. a/ k
  171.   Delay400Ms();   
    4 o  q) g$ J- m1 ?' I" o% c  H
  172.   clearmen();                                                      // 系统初始化5 R0 g- v0 b" k+ @. _! E# Jبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  173.   while(1)9 q4 u' |9 ~) b3 u. S; Oبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  174.   {* j, w( a5 _$ s3 S$ v+ b1 R4 b  l+ i/ Tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  175.      P1=0xf0;1 a( J5 j5 b  Q3 b  @% v- aبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  176.      if(((P1&0xf0)!=0xf0)&(flag1==1)&(num<3))                      // 有键按下
    2 `* A% Q( v: r8 i' w1 s
  177.            {
    $ `5 }  V2 z0 H/ K5 U  Z
  178.               Key_value=Key_switch();                                  // 按键扫描+ a. {2 H5 s/ A+ hبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  179.               if(Key_value!=0)                                         // 的确有键按下) h. L0 T. e1 Gبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  180.                 {* z" K% @" p9 @  n6 O& J* Qبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  181.                           Choice_menu();                                       // 调用选择程序' ?) {1 p/ S& w2 j4 [! U; eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  182.                           flag1=0;                                             // Choice_menu()调用标志" a7 N1 A1 A9 J' a# t* t: j8 fبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  183.                           signx=1;                                                   // 循环标志1 o4 D( |/ |6 F5 e1 l8 m& [بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  184.                         }, k: z; c( c4 kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  185.                    while(signx==1)
    & |% H) e% C; b% E  t
  186.                                 {; C( _- @) q' q+ rبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  187.                    TR0=0;                                          // 定时器0关,从先开始计时
    . M; ?( M8 V4 @8 x
  188.                                TR0=1;                                          // 定时器0开; a, e, j6 H- F7 }9 wبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  189.                                    P1=0xf0;                                        // P1口赋值,从而判断有无按键/ }& D7 y4 N' m  e* ]بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  190.                                    if((P1&0xf0)!=0xf0)
    / O& S$ u* A& w( w' L( z: X) @
  191.                                 {, }- M6 f) o/ \# X. t! _' kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  192.                                    Key_value=Key_switch();                     // 按键扫描
    3 U3 r; G8 r0 U) M. {8 [4 p( e
  193.                                    if(Key_value==65)                           // 如果按键是"A",则输入密码* N  }: S- b3 e3 z/ N1 ~بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  194.                                      {       
    & t1 w0 s% u$ T; H
  195.                                                   markx=1;                              // 显示密码输入正确或错误提示
    4 f! [6 H( Z! S6 ^
  196.                                                      while(mark==1)6 [. C0 g* u* }بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  197.                                                     {        ' E/ h9 e! l" }2 Rبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  198.                                                                    Password_importation();         // 密码输入* `: `3 n& v" O& o: A9 E: n* M% Gبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  199.                                                     }
    + E: Z+ @8 X0 I: }6 N* q
  200.                                                          flag1=1;                              // Choice_menu()调用标志
    2 ~- L. p2 f- @# |8 ~
  201.                                      signx=0;                              // 循环标志 * o7 x& W  M( N; E/ s- mبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  202.                                              }! s9 n/ x. ^2 g$ `2 F8 Z( Y8 o2 Vبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  203.                                if(Key_value==66)                           // 如果按键是"B",则输入新密码  
    # o5 J2 B$ B4 f6 A
  204.                                  {       
    + ~- Y6 e1 G" X. j% s& o
  205.                                                       markx=0;                                   // 不显示密码输入正确或错误提示                          
    ) N& I% f) i, v. P# |. N  q' b
  206.                                      while(mark==1)                        // 输入前比较秘密,密码正确进入新密码设置
    ) q1 g' `: z* T
  207.                                                     {                                  // 密码错误退出密码设置
    / F& X" M/ ?8 {& ?/ Y2 P
  208.                                                                    Password_importation();         // 密码输入7 a$ M0 \, C) k! V( Sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  209.                                                     }                                ) S8 W* g: n1 l; {بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  210.                                                  //-------------------------------                            ' H8 U4 R1 G8 Y( u' Z. ~  Yبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  211.                              if(mark0!=0)                          // mark0=1:密码比较正确可以输入新密码& i; K/ T$ h  @8 V8 Kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  212.                                 {                                  // mark0=0:密码比较错误不能输入新密码
    3 w7 b- r# O. O5 c- _, y3 P2 Y
  213.                                                                     mark=1;                        // 进入循环标志
    3 W9 I2 }1 o, R2 v4 N) T- w) A* k
  214.                                                          while(mark==1)
    & {& X! ]5 [" d7 k; q3 e0 E! {
  215.                                                             { ) j. v$ p- h6 K3 E( U, }& Gبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  216.                                                                NewPassword_set();          // 新密码设置函数$ E$ F+ \& q& Dبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  217.                                                             }# A& Y/ m8 A1 e2 [) {بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  218.                                                                         mark=1;                        // 进入循环标志  $ w$ K% F7 m- N3 G0 aبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  219.                                      while(mark==1)1 _% U6 o& v* K( i/ P7 D5 ^7 p& r) k" Sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  220.                                                                 {
    3 D& B* T; g  x: M! T/ T3 D7 }; Z
  221.                                                                            NewPassword_set_again();    // 再次输入密码
    6 d' R3 P$ x; z. |7 Y" f
  222.                                                                         }
    1 A( \- K$ x: g, Z3 f
  223.                                                                 }
    0 Q( Q4 B2 C3 |" J' X' P/ l; X
  224.                                                     flag1=1;                               // Choice_menu()调用标志
    & v5 {  c  \0 N( \6 m; N
  225.                                 signx=0;                               // 循环标志
    0 k8 i# h" g8 G6 V$ Z
  226.                             mark0=1;
    / }( Y' c0 L7 n% D1 j. |+ r/ J
  227.                                                         flag= 1;
    ' m) J. A3 M( o& @# W
  228.                                              }4 S4 j# i7 a& {2 g7 @( aبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  229.                        if(Key_value==67)                           // 如果按键是"C",则密码复位
      ]& V1 e# ]$ ?# O$ B
  230.                                              {# T- r) l' ^  rبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  231.                             markx=0;                                   // 不显示密码输入正确或错误提示
    % c  ?& \2 i8 J8 v+ s
  232.                                                     mark=1;                                // 进入循环标志6 C6 m" T2 l: n$ V1 \بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  233.                                                     while(mark==1)! V( O3 h& u" W' U7 v+ kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  234.                                {6 \3 X- }  Y) l8 n& C, Kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  235.                                   Password_importation();                  : x0 j7 g, {6 X0 o3 bبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  236.                                                            }; I. c$ K2 Z2 Y# E/ M: R/ ~9 f0 E" ~بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  237.                             if(mark0!=0) 1 j& O  ~1 P2 r# W& M0 {( b6 nبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  238.                                                            {+ w6 Q; T) \* T$ G5 Iبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  239.                                                               Reset_success();
    & v; G, z% }9 l: A2 _! F
  240.                                                                   Delay1s();
    ! E& _0 y2 y8 w0 t& ~
  241.                                                                   Delay1s();+ P# E8 ?# ?# W6 M* o2 @8 sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  242.                                   WriteToROM(O_Password,0,6);
    + Q! Q! |4 r, R2 ^% J/ X6 Z8 W8 f. ]
  243.                                                           sign=0;
    5 f: h3 c! S# m# I& P. S4 q9 m1 G
  244.                                                           WriteCurrent((uchar)sign,10);    // 存入标志位% N/ d9 B" l7 Pبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  245.                                                                   Reset_success();
    + G% O3 q( R; [0 J& f7 {- [4 F" c2 h; P0 N+ h
  246.                                                            }
    & N  ^) J; W1 U3 h/ k. c9 E
  247.                                                  }
    ! F/ f' b( ]* W0 T
  248.                                  }/ C! W/ I& H( ]8 B( V* @/ fبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  249.                          }: e( K6 B8 S% X  }بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  250.            }1 p5 o, \1 |9 ?/ Mبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  251.      else
    4 V/ O" b$ }5 l6 d' b+ A
  252.              {, O& v- y* }; [# `; jبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  253.                 Welcome_face();                                        // 欢迎界面  @1 v6 H; x; b( N4 kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  254.                         mark = 1;                                              // 循环标志
    . H+ J0 t5 G) z! u
  255.                         mark0= 0;                                              // 是否输入新密码标志位
      t& ^9 c. I! Z9 a. s, `
  256.             flag1=1;                                               // Choice_menu()调用标志
    ! m4 [; D& U% z" z
  257.                         WriteCommandLCM(0x0C,1);                               // 关光标显示4 Y0 d& x0 `8 v" D8 }! ~8 Qبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  258.                         sign=(bit)ReadCurrent(10);                             // 密码比较标志位; I, ~$ i+ `- c" L6 Aبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  259.                  }
    8 F$ T3 d! R, \8 S' Y# i& I( T9 d; k
  260.         if(num==3)                                                     // 3次输入错误密码,系统锁定30min  g5 W5 n+ [; o9 v6 O; i) |بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  261.           {
    : P/ B% p+ Y1 _. g4 J* w. e9 S
  262.          ET1=1;TR1=1;                                                   // 开定时器T1,定时30分钟  ' g; H$ w( J0 b3 Z% X( Eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  263.           }) I4 {3 v1 f9 C, Vبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  264.   }. x9 o9 @* a) }& c0 p3 j, Lبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  265. }
    ; H0 \& S" ^/ c- o

  266.   E5 @' X% A* m
  267. //================================================= 24c02部分函数 ========================================, _7 J; g9 h1 k6 v$ J; t1 |بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  268. & l. J, J* }- j" [4 l, P5 |1 kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  269. /*****************************************************
    * |/ W& F4 W- Q5 v
  270. 函 数 名:void Start(void)
    ; [+ @/ [0 W. c0 ?7 `8 O: e5 D  f
  271. 功    能:开始总线函数
    , E# |: C3 R* s0 n9 D
  272. 说    明:启动I2C总线,即发送I2C起始条件
    - W' h* X. o, E* W- y
  273. 入口参数:无
    ) j- H& c( K6 K9 M1 n/ N
  274. 返 回 值:无
    & d" z4 {, Z# Q6 q
  275. *****************************************************/; R7 _( A1 p1 k- h6 u) y5 }0 n$ mبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  276. void Start(void)2 f! C/ {! ]+ T% ]( k: e2 a8 G1 [بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  277. {
    . H8 b2 g* n, `3 |1 s
  278.         SDA = 1; // 发送起始条件的数据信号0 a: ]/ a! Z2 x. _" P6 rبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  279.         SCL = 1;
    # v; ?/ W2 x( [- r4 z
  280.         _nop_();
    ) N- N3 \2 O! ^7 w: t9 L
  281.         _nop_();- f  U2 _; I) l4 uبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  282.         SDA = 0; // 发送起始信号! x+ r; M* C  S1 q9 m$ p. \بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  283.         _nop_(); // 起始条件锁定时间大于4us
    / B5 S8 P/ R7 f
  284.         _nop_();( s  z& {2 w' |1 H* z/ l3 yبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  285.         _nop_();8 E' I( _) a. v# cبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  286.         _nop_();
    7 ?0 c9 Z) Q& G! Y
  287.         SCL = 0; // 钳住I2C总线准备发送或接受数据6 ]3 g- ?/ q0 s# Tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  288. }! ~9 p- Z3 d6 a5 C$ b& [4 {( gبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  289. - z" c2 w, z3 B  w1 C* k  `' Hبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  290. /*****************************************************
    3 V+ T- P1 M5 Q, d9 d
  291. 函 数 名:void Stop(void)
    ) f, b, L" M" r# n
  292. 功    能:结束总线函数- r, @( A) a+ \+ A: C1 ^( wبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  293. 说    明:结束I2C总线,即发送I2C结束条件
    6 ^4 l  E/ ]8 Q2 K4 s0 F
  294. 入口参数:无
    . A0 m- N2 ?, e9 o8 Z
  295. 返 回 值:无
    4 O; m1 U" R  t+ |8 b: Z( `& j
  296. *****************************************************/; J' {$ ~  C+ {بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  297. void Stop(void)  R! O6 ]9 e2 P# T. Wبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  298. {8 K* [+ P+ M1 \7 d0 l. lبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  299.         SDA = 0; // 发送结束条件的数据信号
    " N! U" h8 y# Y9 b
  300.         _nop_();: D! h6 t! |4 ?) Y  O, I: Hبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  301.         _nop_();
    ! ?) p  |3 O  O5 P  I8 k  q! e
  302.         SCL = 1; // 发送I2C总线结束信号, p# m! V$ u0 o0 Q" ?بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  303.         _nop_(); // 结束条件锁定时间大于4us
    3 [% a$ g/ |3 w- X. h5 y
  304.         _nop_();4 H$ G: S) G4 L+ e; w' ?بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  305.         _nop_();6 j* g1 n" p/ m/ K) D0 Gبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  306.         _nop_();" w$ _1 H/ X, v, `بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  307.         SDA = 1;* G/ C- K( S# G. X$ Yبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  308. }7 `4 n" v4 A2 s( Iبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  309. . }- p0 Y2 V( F  g" t" k( p  lبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  310. /***************************************************** ( a3 C/ J4 I* ^1 D" a& |1 Hبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  311. 函 数 名:bit Send(uchar Data)& p$ i: d: x$ \. l; jبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  312. 功    能:发送一字节数据7 z  Q1 B0 ?' Oبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  313. 说    明:向24c02中写入数据9 G3 u8 K7 o: W0 Rبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  314. 入口参数:Data
    . |& Y' z: d% b9 S; h/ j/ e/ n
  315. 返 回 值:无   C5 M% h5 W. c) kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  316. *****************************************************/6 N8 \: K5 p/ Vبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  317. bit Send(uchar Data)5 b* z+ w! R0 {بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  318. {- P, q  M+ s9 e9 C6 x5 E3 ^بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  319.         uchar i;/ L) T5 ]7 S! j+ u9 W  eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  320.         bit ack_bit;$ h: e8 v; w0 R  C+ v% h# ]بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  321.         for(i = 0; i < 8; i++)                // 循环移入8个位  T. n& ]1 N, ~. }6 X* fبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  322.         {7 K) {! M+ ~% U" vبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  323.                 SDA = (bit)(Data & 0x80);
    . d/ s; q7 }' q! f0 o; I
  324.                 _nop_();! b. S4 D. F) P" vبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  325.                 SCL = 1;
    & j% W" b! \2 `
  326.                 _nop_();
      _0 |% Y6 a, M
  327.                 _nop_();2 u% _; S# F* tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  328.                 SCL = 0;/ {2 _, C3 [& Xبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  329.                 Data <<= 1;
    # C$ V' r( N) s4 C9 Y4 ^$ a
  330.         }
    6 R- c2 t/ N7 F9 a  V7 D# t
  331.         SDA = 1;                           // 读取应答" J( g% w8 E7 ^6 E3 @بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  332.         _nop_();/ z9 _2 E& V6 q$ w$ p2 V& D, P  }5 ?- Nبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  333.         _nop_();( H1 N: r/ c! @6 k! O) d+ Kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  334.         SCL = 1;
    3 a2 R9 l+ U0 y$ y' ^
  335.         _nop_();
    2 w+ c! V5 c" A4 y# m" v
  336.         _nop_();
    - E* C6 i. E2 i6 O" H
  337.         _nop_();! o" D" N0 H1 q& s9 W" eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  338.         _nop_();
    5 A4 p5 {$ o4 M# e0 H) c
  339.         ack_bit = SDA;/ d6 e; e+ W7 Rبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  340.         SCL = 0;
    1 k6 F6 ]+ [: Y
  341.         return ack_bit;                        // 返回AT24Cxx应答位0 r: H* }# d4 l1 g, m1 M1 X# @  s1 yبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  342. }: t) M9 I2 f6 P  D& n) _& Bبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()

  343. / Q, A6 x' T3 [: ^
  344. /*****************************************************
    ( \" X5 z* ]/ I! y
  345. 函 数 名:void WriteCurrent(uchar Data,uchar Address)1 r4 Z, z9 U5 j5 y' }بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  346. 功    能:在指定地址Address处一个数据Data% l/ O7 w" m  ^0 i$ B, G3 G' ]بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  347. 说    明:在指定地址处写入一字节的数据/ p# S) F% Z# e, E5 p+ zبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  348. 入口参数:Data,Address
    . S, H7 T9 s/ k7 P% t
  349. 返 回 值:无 5 q+ D9 ]9 W3 {* N1 p; M0 \' Oبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  350. *****************************************************/
    1 I9 W1 K- J8 Z$ P1 X
  351. void WriteCurrent(uchar Data,uchar Address)* v7 i  u! l& E5 i, hبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  352. {2 ]9 I5 n1 t( C- Vبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  353.     Start();# k( m' |5 S$ V: Nبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  354.         Send(AddWr);& I+ _& d' Z2 z& J% s& ^- Z% Tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  355.         Send(Address);% C% o: z) f' @4 O& H: Wبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  356.         Send(Data);6 y  q9 f2 T- L& D8 Gبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  357.         Stop();7 ~4 S( P8 g3 g' I9 Pبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  358.         DelayMs(10);                // 写入周期
    ' V6 W% l: P, [" {
  359. }
    3 [9 Q6 A% R2 _; @7 T  e0 @0 M! ~% y
  360. 8 {6 H5 Z( t* G) @" Vبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  361. /*****************************************************
    7 O, [% h) V  y5 E! K. O8 W
  362. 函 数 名:void WriteToROM(uchar Data[],uchar Address,uchar Num)
    - j& W! V! m& o
  363. 功    能:在指定地址Address处写入Num个数据Data[]  j8 R; i. ]" Y# h5 Cبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  364. 说    明:在指定地址处写入一字节的数据! K0 t+ ]! M0 d% ^بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  365. 入口参数:Data[],Address,Num8 a4 b0 Q( H6 K. ^9 o1 L" rبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  366. 返 回 值:无
    % ?/ H8 s( A* @! s- W
  367. *****************************************************/% ]& K+ T/ z4 _3 Q- U/ Eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  368. void WriteToROM(uchar Data[],uchar Address,uchar Num)
    9 T9 d+ |- e. y
  369. {& y" @6 P$ Q, u9 J: w$ D/ u4 cبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  370.     uchar i;4 f% d' O0 s- |( cبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  371.         uchar *PData;
    5 w- k- f0 {% I4 Z  T
  372.     PData=Data;
    . k8 j- r7 G% q" P* ]/ ~3 I# d. q
  373.         for(i=0;i & g% K* O* ~# |$ g7 X* t. s. |& E7 \
  374.         {
    1 Y1 z" }9 {2 M# h* H9 v
  375.                 Start();$ @$ d' W! \2 \( e3 I7 o/ [بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  376.                 Send(AddWr);0 x# a0 O# E+ }1 s% Mبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  377.                 Send(Address+i);
    : y% p7 f) a6 {! c# b
  378.                 Send(*(PData+i));
    * S& ]! f+ i1 [6 I  ]5 Y' D0 Y
  379.                 Stop();
    . R& ?# B3 I3 q% H7 }0 ]$ o$ ^
  380.                 DelayMs(10);                // 写入周期8 Q$ ]& L# B- D: \' c: A: L# M) Yبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  381.         }
    : `2 i3 _0 w* ^/ v# t6 W! l
  382. }
    * B: V+ E2 n/ g! \) {/ Q
  383. . s5 w( A" n( e5 i; M! }بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  384. /*****************************************************
    / _' V( T/ f% V/ [* V0 w
  385. 函 数 名:uchar Read(void)
    8 {- }' d- O' U! C: B# w# Q9 d  u
  386. 功    能:读一字节数据
    9 M( |) \9 \- K: k# K9 m) m
  387. 说    明:从24c02中读出数据- v3 g  P, \2 x; q% E" D2 b! rبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  388. 入口参数:无3 f2 P6 K2 a# Y5 {بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  389. 返 回 值:Read_data  X7 ?. ?, R+ W+ C! Fبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  390. *****************************************************/* Q1 d! y0 L) D& h8 pبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  391. uchar Read(void)
    ( O: u6 r$ S+ R7 U# Q) r
  392. {7 u  X' H# ?- N# Q2 q; b+ qبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  393.         unsigned char i,Read_data;
    ) U& t! J( k& r$ \  v
  394.         Start();
    4 U5 B  z$ t4 I1 p5 ?3 l; s9 l
  395.         Send(AddRd);
    1 W! n5 ]5 F2 A4 h2 t3 o
  396.         for(i = 0; i < 8; i++)
    , o. h1 f6 b! N9 e" R% y
  397.         {" ^* z3 ~/ }/ K' |* {( qبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  398.                 SCL = 1;) J/ w" k$ e# @+ z8 ^2 Fبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  399.                 Read_data <<= 1;
    ( ]5 G- H2 v! H: b( X3 S. p6 o
  400.                 Read_data |= (uchar)SDA;
    1 `; o: i' O5 I4 z) ?: b
  401.                 SCL = 0;
    7 m3 _& ^# M) q- I
  402.         }! T) s$ ]0 g  {( L2 c! q( C4 cبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  403.     Stop();
    ( g. i& a3 q1 Z$ e' A, O9 O
  404.         return(Read_data);, l, A0 \& a. z# C! K" Q" ?; Kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  405. }
    3 @+ d% A) w& g' l. L; t: w' C

  406. ! |4 O& U8 A! y( ]& I& c; O, ?# S
  407. /*****************************************************
    , N" s  X( Z  K9 \9 c4 I
  408. 函 数 名:uchar ReadCurrent(uchar Address)$ r$ h! ?2 X6 X1 h2 G/ {9 a0 Sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  409. 功    能:从指定地址读一字节数据
    ) c0 v8 R$ d6 O( j
  410. 说    明:从24c02中读出数据
    : T; i0 K- n8 ]" k( ]+ Z
  411. 入口参数:Address
    9 e8 Z$ m) P* I; M5 l1 F, l
  412. 返 回 值:Read()
    ( v2 U+ a2 y! ]" X( V
  413. *****************************************************/
    ( K' J% U, q; g0 v% b
  414. uchar ReadCurrent(uchar Address)
    : u' X0 z7 D0 e# t
  415. {  J- @% r! r8 J9 w0 I' F0 cبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  416.         Start();
    1 X. U6 Y8 e" k/ U5 l
  417.         Send(AddWr);
    . N' e" o$ T' @' w$ D. H
  418.         Send(Address);
    ! z) a0 \  K  Z# q5 `' G
  419.         return Read();. i" Z& V4 }2 h3 q' T% |. F( bبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  420. }, z5 a, v) Q( {+ Yبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()

  421. ; g% p* ?( [6 P" |; p8 b2 f2 r
  422. /*****************************************************
    . ]7 L  @1 z, b* T3 @
  423. 函 数 名:void ReadFromROM(uchar Data[],uchar Address,uchar Num)  e- O" t+ @( C3 e+ s% `% |بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  424. 功    能:从24C02中读出一字节的数据
    . h2 I; V+ G% Q
  425. 说    明:在指定地址读取* F$ \8 l' w4 @# Aبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  426. 入口参数:Data[],Address,Num7 @2 T& Z& @! d. Nبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  427. 返 回 值:无
    * m6 K& Z" p  h: G' A0 @9 C
  428. *****************************************************/' r# t2 x  f9 H$ Lبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  429. void ReadFromROM(uchar Data[],uchar Address,uchar Num)
    , D: H$ [2 r1 T- h) j, S
  430. {
    $ A3 h  O# {  w
  431.     uchar i;
    ! }2 B8 v4 l  `! _# S
  432.         uchar *PData;7 E5 R" j" t9 ]7 g2 I1 Q2 g6 r1 bبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  433.     PData=Data;3 e# [. n' d# H# {5 sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  434.         for(i=0;i $ M$ u7 \  ~+ T1 c. V# k' V" {
  435.         {( v9 F+ @) b6 N6 l1 Zبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  436.                 Start();
    3 k8 s  s. D" u: J3 g
  437.                 Send(AddWr);: i. i% Q$ l* C1 G1 r; Oبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  438.                 Send(Address+i);" {- J; Z2 }6 W  t/ B/ n1 iبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  439.                 *(PData+i)=Read();
    " f# |4 g2 v) Y+ V
  440.         }
      a6 d! H2 _( q9 _! s
  441. }, A7 b$ K; |( W2 q1 s+ ^بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  442. & q7 R& I& y+ Z" ~بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  443. //========================================== 密码控制部分 ==================================================$ L0 w; W) s; c* E" N+ eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()

  444. % A5 W7 N2 Q! R2 C+ H5 p, _
  445. /***************************************************** 0 L7 V9 Y8 W: q, \, v4 B2 t# C0 zبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  446. 函 数 名:void Newpassword_comparison(void)( s! n2 p. O) b+ A. yبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  447. 功    能:第二次输入密码比较
      `, ]3 q& g! j6 B2 i) H
  448. 说    明:对第一次输入的密码与第二次输入的密码进行比较. I; F6 i$ q% _( r$ T% |/ d/ ]بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  449. 入口参数:无
    + t! m0 D( s' I
  450. 返 回 值:无
    * o; Y+ R+ u, U/ \' K
  451. *****************************************************/) v% ~/ V; l5 ]  C* [بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  452. void Newpassword_comparison(void)
    5 `8 U5 a' n/ |. k4 s, \
  453. {
    : n4 z: T  y6 c. w' _" c
  454.    uchar Number=0;  
    ( v4 k6 N1 j6 [* Q) e2 D( F, i
  455.    while((T_Password[Number]==N_Password[Number])&(Number<6))// 密码比较
    8 z5 [: L- D$ m% }% d
  456.           {7 l& P0 m, `( Bبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  457.              Number++;                       // 计数值加14 ]8 f" K' v' c8 L8 q# V5 uبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  458.           }
    ( }3 e& r! ^1 x2 I8 U
  459.    if(Number>=6)                         // 密码正确$ e5 P$ k) }0 a. O7 J7 Dبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  460.      {
    + O) s+ q0 u$ g" O& \. R
  461.         Newpassword_OK();                // 新密码设置成功提示
    3 m. T" _+ `1 b
  462.         WriteToROM(T_Password,0,6);      // 密码设置成功,则把密码存入24c02中
    . K( i$ E+ x) I  ^/ F
  463.                 sign =1;                         // 比较新密码标志
    0 |, |$ s5 B/ B* y2 F# [
  464.                 WriteCurrent((uchar)sign,10);    // 存入标志位" P* _+ C# D& u. r2 yبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  465.             Delay400Ms();; ?9 C! w$ O" Tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  466.             Beep();                          // 正确提示音6 I: K) v. U) f0 S7 U0 ?3 sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  467.             Delay400Ms();3 o. ]: \. Z' V! @3 n: m2 bبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  468.         Beep();
    " e, @& g9 {) G" C
  469.         mark=0;: P% R7 N4 u- _! M; N1 gبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  470.      }         ( x+ N- z# g& {- ^/ T4 j# G) Zبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  471.   else                                   // 密码错误,报警
    8 |2 \% ~3 V3 T6 `8 c
  472.      {: J9 g7 L1 I+ p! ?- c% Bبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  473.         Newpassword_ERROR();             // 新密码设置失败提示. f6 [& S2 Z8 d0 D! ]) Fبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  474.         num=0;
    : E' A- V2 s$ r6 j
  475.             sign =0;                         // 比较旧密码标志
    ( {: M2 M& A4 N- d6 G
  476.             Delay400Ms();
    6 _" k5 U4 K9 a
  477.         Beep();Beep();Beep();            // 错误提示音2 ^6 j" A* g! oبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  478.             Delay400Ms();! W( T4 o; y( |1 }2 iبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  479.             Beep();Beep();Beep();
      S8 V7 i, {/ X% i" P0 C! q- p+ F! x
  480.             Delay1s();                       // 延时1s
    ! [2 _: d, w5 x" f* M
  481.         mark=0;
    / C& V7 U% E% ?0 ~) c7 z& W; a( V
  482.     }
    - L5 j# M1 ~3 H  {9 Q3 D$ E# O
  483. }
    " R3 x/ A; K: e% O  x& }0 v9 u
  484. 9 a1 T/ n- W5 wبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  485. /***************************************************** + _2 `- [! Z" A( m2 z( ]بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  486. 函 数 名:void NewPassword_set_again(void)
    " x- M5 `! W8 a; j( B$ I
  487. 功    能:第二次输入密码6 w) \' \4 B' J4 _" L7 h$ Eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  488. 说    明:第二次输入密码并存入暂存器,再调用比较程序
    ' g6 ?7 |; g2 v. {6 r' i
  489. 入口参数:无/ n$ o" K$ P* }- ]بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  490. 返 回 值:无
    8 o" t: L  `" b5 c5 F
  491. *****************************************************/
    ' x& |' y& Y6 A; N* \
  492. void NewPassword_set_again(void)
    , D8 A4 H, a4 c/ l# J. Z0 C
  493. {
    ; w: w! }  j1 O9 C5 N4 ?
  494.   bit sign1;" |+ t' V$ w- k' I. w; Rبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  495.   uchar key_data;
    6 e7 D1 h5 r5 ^  @  H
  496.   P1=0xf0;                             // 判断是否有键按下                                                                                        4 U1 O) M1 q4 G- x  B. @بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  497.   if(flag==1)      
    # g8 m7 j1 l! Q
  498.     {
    ) a) r$ X0 o1 U& ~+ g5 b
  499.       NewPassword_again();             // 显示密码输入界面
    ( f* ~+ n2 A1 n
  500.       Delay400Ms();
    6 ]& ]. d4 b: C% A# T
  501.       flag=0;                          // 调用输入新密码提示标志位
    ! H6 p; J- g) h
  502.       Count=0;                         // 按键次数计数器置0 " K. p! _; `  F* [9 p0 o  S4 wبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  503.       Delay400Ms();6 [, b# X) }' ?9 a, wبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  504.     }# y* w( K0 I( tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  505.   if((P1&0xf0)!=0xf0)                  // 判断是否有键按下* o- ^7 o& Z# e6 s4 \% \9 t0 Q% v8 lبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  506.     {
    , k: s4 S6 j/ F% C! D
  507.       key_data=Key_switch();           // 调用按键转换程序
    . k7 V" a4 k  b+ E' X
  508.           if((key_data!=0)&(key_data!=65)&(key_data!=66)&(key_data!=67)&(key_data!=68)&(key_data!=35)&(key_data!=42))
    ( s5 |) S2 d4 ?, f; M9 P5 {4 p
  509.             {//按键不能为数字(0~9)以外.A             B               C              D              #              *
    & N# m7 a$ t3 G$ g
  510.               Count++;                     // 按键次数器加1  l- `6 x! ~! Y# Y8 h, r2 aبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  511.                   Led_hint();                  // 按键指示8 S! h8 B' q" ^; fبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  512.                   Beep();                      // 按一下键发一音1 s5 \" ^5 F& l, x: ^( qبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  513.               sign1=1;                     // 有键按下标志位" E( y/ v) f2 _8 K  h0 R6 e: \5 pبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  514.             } " {) k7 @1 c0 D$ R* {بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  515.     }
    ' r6 f0 O* B' Y) K1 d3 T
  516.   if((sign1==1)&(flag==0))             // 有键按下1 b# Z$ ?( H6 U6 ?8 l  Q! k/ u  vبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  517.     {3 V1 v# R  n9 h5 n; C( Kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  518.       Scan_starnumber();               // 在密码显示区显示" ****** "
    / x1 s1 Z* \. [% v  x
  519.           sign1=0;                         // 按键标志位清0- _. ^  g4 k  e) S7 Kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  520.       T_Password[Count-1]=key_data;           // 按键值放入密码暂存器                       
    " i+ y" ~4 F5 ]
  521.     }
    2 f+ z: T  D% T' V- x
  522.   if(Count==6)                         // 6次按键则进行密码比较% M7 r) g4 G6 a  k8 gبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  523.     {2 X% S8 A, j% V) ]4 d( yبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  524.       Count=0;                         // 计算清0,从先计数. k# h8 k& T/ O  O, [( a8 j! b$ A, Aبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  525.       flag =1;                         // 调用输入新密码提示标志位
    3 f# w3 L+ _! R' D5 X
  526.       mark =0;                         // 循环标志位5 i$ A- d" }: u/ f: I4 Y5 y9 [بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  527.       WriteCommandLCM(0x0C,1);         // 关光标显示
    ) \$ p7 l, a; U$ R2 ^5 J
  528.       Newpassword_comparison();        // 新密码设置比较
      I0 w& s3 w9 p" n4 d
  529.     }
    ; f/ t8 n8 {0 y! Z
  530. }. C2 N" E; E  Mبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  531. & g$ Z% c& o( M) Z1 f  \بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  532. /*****************************************************
    - X6 t9 [7 ?4 z2 D8 G( s
  533. 函 数 名:void NewPassword_set(void)1 _$ r" ~5 I' m1 p, Dبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  534. 功    能:新密码设置" {7 G. Y. K8 ^  r- C9 \. q, {بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  535. 说    明:修改密码
    3 x" s. x1 f, t0 H  o9 A) U
  536. 入口参数:无
    " I% v8 o& G8 q: h; H( N
  537. 返 回 值:无 + N. D0 M* T: b- L* h2 H0 gبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  538. *****************************************************/
    $ e6 A+ Y9 O& o
  539. void NewPassword_set(void)
    & H- I" H* t1 X9 b; V
  540. {* w( C) f! o7 }: v) A0 fبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  541.   bit sign1;) S! u# I, E& C9 S7 F4 |) Qبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  542.   uchar key_data;; |0 {! A. |9 [; S; a* A) Fبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  543.   P1=0xf0;                             // 判断是否有键按下                                                                                        ) e  A$ v$ @8 G' Tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  544.   if(flag==1)
    4 A( q# o, t5 A8 G5 I
  545.     {% Y- T2 D4 M4 \8 o- Vبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  546.            NewPassword_face();             // 显示密码输入界面. h& Z+ L- ^8 e( r& Uبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  547.            flag=0;                         // 调用输入新密码提示标志位
    5 G7 C6 v) z% L* x! M1 w8 p
  548.            Count=0;                        // 按键次数计数器置0 ! T' k9 Q# q+ u5 Z% d0 x5 fبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  549.            Delay400Ms();* N) C1 A; }$ d$ b7 bبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  550.     }. b) U- O- A4 w3 A8 v& oبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  551.   if((P1&0xf0)!=0xf0)                  // 判断是否有键按下* Z6 N, C# x2 {بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  552.     { # q. b( H9 T( S1 _. {5 ], _بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  553.       key_data=Key_switch();           // 调用按键转换程序2 A3 m4 `% a" z2 Pبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  554.           if((key_data!=0)&(key_data!=65)&(key_data!=66)&(key_data!=67)&(key_data!=68)&(key_data!=35)&(key_data!=42))
    ; u( ~3 i, T$ I
  555.             {//按键不能为数字(0~9)以外.A             B               C              D              #              *
    . T3 Y/ Y- t( a6 I# l) T
  556.               Count++;                     // 按键次数器加1
    4 P, H9 r: A5 K$ R4 [& g( q! X
  557.                   Led_hint();                  // 按键指示# U7 _5 ?0 L  Q7 w% pبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  558.                   Beep();                      // 按一下键发一音
    . B* S8 R+ x8 _: G; P! P3 B/ w
  559.               sign1=1;                     // 有键按下标志位
    3 C7 H' ~4 w* E6 `& ?: c7 Q
  560.             }
    $ k$ Q( e3 T/ Y! h" V: x! D
  561.     }0 ^; R- i3 r8 P% B; ]* M& A. R0 Jبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  562.   if((sign1==1)&(flag==0))             // 有键按下) q+ D7 o9 R. E6 K3 I2 l2 [بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  563.     {
    2 [  f! @# H# \5 V; L! M
  564.       Scan_starnumber();               // 在密码显示区显示" ****** "
    # }; T7 ]4 l$ `# T
  565.           sign1=0;                         // 按键标志位清0& {: E7 E/ i' I  E: j2 w' q; Yبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  566.       N_Password[Count-1]=key_data;           // 按键值放入密码暂存器                       
    ) `6 r4 `  J- ?; n2 l2 i7 c
  567.     }
    8 X5 W( Q$ q$ R% s/ g  f" \7 ]
  568.   if(Count==6)                         // 6次按键则进行密码比较
    ) r) z9 q4 ^0 x: h% q2 [( z
  569.     {
    # w, G" Z& d' o
  570.       Count=0;                         // 计算清0,从先计数2 L2 b, i. }4 Z" Hبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  571.       flag =1;                         // 调用输入新密码提示标志位
    * R2 k$ ?  h3 V' A/ W1 v7 Y) ~4 n
  572.       mark =0;                         // 循环标志位
    6 o1 m+ m2 l  }! y0 l7 T! X' J
  573.       WriteCommandLCM(0x0C,1);         // 关光标显示% I& ?. g# n2 uبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  574.     }
    ! m' ~5 f$ f) W+ {* D: G  q
  575. }        7 e9 v5 ?; N2 P1 w8 [بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  576. /*****************************************************
    * ^6 R# B/ G7 k' o* d3 u
  577. 函 数 名:void Password_importation(void)
    8 n! c0 `9 X: W! V8 I" ?) f
  578. 功    能:密码输入
    : R$ ^. z2 @* k/ P2 D9 _
  579. 说    明:输入密码并调用密码比较函数进行比较
    0 F" `6 m' H& u3 M6 X4 }" j! x+ j
  580. 入口参数:无
    3 ^6 C: ?' ?: m0 D1 _1 y& A! r. Z3 I
  581. 返 回 值:无 + x# g7 U1 g4 F3 s+ Z' vبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  582. *****************************************************/
    : E- Y# `2 s% [+ }$ M; K
  583. void Password_importation(void)
    ' n) e1 {% A/ c& a3 i  g9 U4 ]9 m
  584. {
    1 t# f  Z. y  m
  585.   bit sign1;, }) K% t4 Q, {+ p# tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  586.   uchar key_data;
    ' B& W# F5 w+ v+ R; V
  587.   P1=0xf0;                             // 判断是否有键按下                                                                                       
    ; I  W% N4 t' d3 E1 ~/ g
  588.   if(((P1&0xf0)!=0xf0)&(flag==1))      // 有键按下,且是第一次
      W+ V+ `4 _6 V; ]: k* d7 ^
  589.     {' y! X3 p  F2 |$ J' e1 w$ jبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  590.       key_data=Key_switch();
    ' w" x7 |/ I: R$ z
  591.           if(key_data!=0)+ q8 R; d* Z8 ]7 b" S& Qبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  592.         {
    # x" f1 S6 ?( J3 \* K# N
  593.               Pass_face();                 // 显示密码输入界面; x9 Y: g5 X- W. p- X4 x: W1 p$ dبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  594.               Delay400Ms();9 V3 l2 ?, p( \+ |9 @; v5 ?بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  595.               flag=0;                      // 调用密码输入提示标志位- w' T! h6 ^9 S- A: q# A7 Wبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  596.               Count=0;                     // 输入密码个数计数器置0! v9 I  t6 S/ b3 Zبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  597.               Delay400Ms();4 G- i: f2 y2 w% Sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  598.             }- @$ C% B0 s2 }2 Q  G8 N6 Sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  599.     }
    9 m4 H/ d! X* I" F% S' P
  600.   if((P1&0xf0)!=0xf0)                  // 判断是否有键按下2 g- U+ F- m2 u& I" H) O" Yبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  601.     { : Q9 R+ X& C& @$ c, [$ eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  602.       key_data=Key_switch();           // 调用按键转换程序' W: z, {# Q+ ^1 Y( c1 |; y  W% |; yبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  603.           if((key_data!=0)&(key_data!=65)&(key_data!=66)&(key_data!=67)&(key_data!=68)&(key_data!=35)&(key_data!=42))' G8 l3 X( M! i+ ?) P0 yبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  604.             {//按键不能为数字(0~9)以外.A             B               C              D              #              *
    2 l; O7 @$ d' ]% M7 b
  605.               Count++;                     // 按键次数器加15 D5 t2 i5 b7 H# eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  606.                   Led_hint();                  // 按键指示' C) v/ e$ K; k* W7 B9 S# M4 sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  607.                   Beep();                      // 按一下键发一音
    ) Y( X- a5 Q9 W1 a3 r9 Z1 v
  608.               sign1=1;                     // 有键按下标志位
    ! c& @+ @$ O0 c8 {* C
  609.             }
    " I: B; m) \8 o+ v0 q/ K
  610.     }
    2 J5 D- \& j4 D' l+ k- A
  611.   if((sign1==1)&(flag==0))             // 有键按下
    0 A7 e" `: V( c! s; m4 V- e' w( G
  612.     {+ U' F2 }& h. S/ Y( Vبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  613.       Scan_starnumber();               // 在密码显示区显示" ****** "
    # Z: y. m: Y! D) \. X+ k
  614.           sign1=0;                         // 按键标准位清0+ V& x) t7 R, X; U: oبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  615.       T_Password[Count-1]=key_data;           // 按键值放入密码暂存器                        ' N* V9 p: @% _! `- l9 @بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  616.     }% _0 r$ P7 a8 D0 G! |بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  617.   if(Count==6)                         // 6次按键则进行密码比较
    2 R/ n6 q1 ], E8 x$ B5 Z
  618.     {
    9 k: N# t7 ~* e* Y- _1 J
  619.       Count=0;                         // 计算清0,从先计数8 f7 i) |0 e" Mبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  620.       flag =1;                         // 调用密码输入提示标志位
    " A0 f0 C, M- v: {7 f0 h, b" u
  621.       mark =0;                         // 循环标志位0 y& p5 R4 w( c; nبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  622.       WriteCommandLCM(0x0C,1);         // 关光标显示  d) |+ _, M5 u2 [$ K8 Uبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()

  623. # f+ Z/ l8 M. @# N
  624.           if(sign==0)
    . J# S7 G5 F4 j( w* T( _
  625.            PasswordComparison(0);      // 输入按键与原始密码比较( F+ _( r. G. W6 @, Yبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  626.           else PasswordComparison(1);      // 输入按键与新密码比较
    5 Z; z' B  }. {, q
  627.     }, \6 ~* {. C9 l. oبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  628. }6 {  r; Y" |3 Q0 W' T" Y- iبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()

  629. % u2 o9 y* N# ?, b- Q
  630. /*****************************************************
    ) G# }  Q% ]+ f
  631. 函 数 名:void Scan_starnumber(void)
    1 E- E2 h" B! u; N
  632. 功    能:显示密码位为星号
    : [/ E. C6 z: y  p- w
  633. 说    明:在密码显示区显示 " ****** "- U0 A% ]% g: J+ Q) T1 Tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  634. 入口参数:无
    6 j1 ~+ H, C/ f& r) d
  635. 返 回 值:无
    * }& n- G  `! `" f; w5 Z* ]: U% W
  636. *****************************************************// {/ B+ T# m) ~4 u' Xبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  637. void Scan_starnumber(void)
    . ?1 {4 u& C8 C/ U& |: i# ?
  638. {
    + d5 R* m, q" _
  639.     switch(Count)                           // 在相应的地方显示"*"
    0 T0 d( o5 y- ^% x1 S
  640.         {
    . X9 J8 ~* n. P  i4 o
  641.       case 1:DisplayOneChar(5,1,42);break;  //-----*-----------//
    ; R" [  @  @9 l& b; X
  642.           case 2:DisplayOneChar(6,1,42);break;  //------*----------//
    : L7 [  F2 X% c9 G
  643.       case 3:DisplayOneChar(7,1,42);break;  //-------*---------//
      A& g8 D5 c3 b8 b- G
  644.           case 4:DisplayOneChar(8,1,42);break;  //--------*--------//
    & S  w% E; J) f# x, u" I
  645.           case 5:DisplayOneChar(9,1,42);break;  //---------*-------//! Z3 K; y4 f) s( m0 Jبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  646.           case 6:DisplayOneChar(10,1,42);break; //----------*------//' y0 I* }! t) p% }( R. R% S% \بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  647.     }                                       //-----*******-----//2 o. {3 R: t( Y3 T1 G( ~بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  648. }. ^" a" V+ L' tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()

  649. $ {+ t* _. l1 t
  650. /*****************************************************
    ' k; c- o2 c, e  i; k, {5 h; \6 l: K
  651. 函 数 名:void PasswordComparison(bit mark)
    " H& `" `# V  p3 X- Z
  652. 功    能:密码比较程序
    / k( J" X0 x" ^8 o- O% c4 E
  653. 说    明:对输入密码进行比较: M9 ]8 C' d8 o: lبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  654. 入口参数:mark:当mark=1时,对原始密码进行比较;当mark=0时,对原始密码进行比较
    % Q, b; F: q. a. C# `/ x; U/ O! K. Q
  655. 返 回 值:无
    3 v9 l; e& I7 A7 b$ E* p
  656. *****************************************************/
    " q. _* J: q7 P9 _
  657. void PasswordComparison(bit mark1)7 i, h! x3 x; U( N9 g" kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  658. {9 l' B  m6 E: }2 v) t1 Mبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  659.           uchar Number=0;
    ; L+ \" l' ?, _# `6 L
  660.       if(mark1==0)                    // 输入按键与原始密码比较/ e% R1 I7 J2 `9 s" i, t6 ~8 @" sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  661.           {% {- r) S  d6 ^6 y$ O) @  Iبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  662.                   while((T_Password[Number]==O_Password[Number])&(Number<6)) // 密码比较* F  Q3 O& a1 J: q- J4 P) \بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  663.                   {
    ; S+ T/ ^" i9 K4 Q5 y
  664.                     Number++;                 // 计数值加1
    & ^9 o: P& h1 k3 `+ a
  665.                   }0 a) j" I  h; w' u' L  |بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  666.           }) {5 A/ m% i- X5 |1 j$ a# V$ Z' T, eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  667.           else                            // 输入按键与新密码比较/ c5 O# ~/ l, }2 B& H, Dبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  668.       {
    " t4 x* T4 ~! v% j$ m
  669.                   ReadFromROM(N_Password,0,6);' u3 F+ f$ G; T9 N! Wبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  670.               while((T_Password[Number]==N_Password[Number])&(Number<6)) // 密码比较
    2 {, s6 c2 c3 [+ @
  671.                   {8 @7 ]' ~; K( m/ p6 ?3 l: cبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  672.                     Number++;                 // 计数值加1
    ! u5 s/ U/ ]' @0 [
  673.                   }" L3 T9 Z+ B" N  ?8 V9 u- }: tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  674.           }
    : G; Z9 T& G8 n- e& \! a6 m
  675.           if(Number>=6)                   // 密码正确5 i% M9 }# s' p6 D0 U) E6 f! |بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  676.           {
    # \) t1 p. E" @/ Y7 B
  677.              mark0=1;                     // 进入新密码设置4 S6 h* o4 q! `, p; Kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  678.                  mark=0;                      // 退出循环7 N1 n& G  t$ |' x, D4 _7 zبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  679.                  num=0;                       // 密码错误输入计数器置0; E6 K" [% L+ ?& m* ~بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  680.                  if(markx==1)
    + O: `# r* I( W5 h0 I0 p. N
  681.                  {: ], j+ z" M* c9 R0 Z# fبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  682.                          Password_OK();               // 调用密码输入正确提示函数/ Y# N0 V; }3 d# U! ]بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  683.                          REL=0;                       // 继电器开启,即密码锁开启 * f# S6 w, _, n6 }بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  684.                          Delay400Ms();
    ) R' y1 }6 X1 n% `; b
  685.                          Beep();Beep();               // 正确提示音6 a  I4 f; c* o' Q7 w& b3 ]4 oبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  686.                          Delay400Ms();
    3 F; W3 |! H- Q7 a5 i9 V6 {6 u2 m
  687.                  Beep();Beep();8 x  e& A& m. `4 [8 wبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  688.                  Delay1s();                   // 延时2s, k+ ?7 }$ m0 C1 |  s; Pبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  689.                          Delay1s();* W' ?1 z- @9 D# Wبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  690.                          REL=1;                       // 继电器关闭,即密码锁开启
    ! R" ~( b$ l0 ~3 K
  691.                  }
    5 x( k# y$ r  R; S4 R; W
  692.                  else6 K: t9 {% z5 Z3 F7 sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  693.                  {
    " ]( J/ ]& M& X9 F
  694.                          Delay400Ms();
    2 k) r; c: k9 @
  695.                          Beep();Beep();               // 正确提示音4 [; w; X2 h4 `( X) Jبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  696.                          Delay400Ms();9 W* c! b0 j4 Wبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  697.                  Beep();Beep();
    9 B% p1 d" ?/ t$ L
  698.                  Delay1s();                   // 延时2s# y7 `2 v( q5 vبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  699.                          Delay1s();
    3 Z" u; ?  N. Z) r/ q/ P
  700.                  }
    ) x4 D$ S0 Y/ n1 }5 t: r
  701.           }           P/ `* N! T! W+ R. @" b" l% M3 {: k) `بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  702.           else                            // 密码错误,报警
    : B% X. c  v+ q0 {- R7 Y
  703.           {6 m3 X' g5 s2 h6 H4 J, eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  704.                  mark0=0;                          // 新密码输入控制位
    8 L/ Y  \4 B" k. f( t
  705.              Password_ERROR();            // 调用密码输入错误提示函数
    ! a/ L# X# [% V* R0 A! K5 G
  706.                  Delay400Ms();! K& Z2 N+ Q) Rبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  707.              Beep();Beep();Beep();Beep(); // 错误提示音
    : F9 U: [4 m: \) b) l2 s
  708.                  Delay400Ms();
    , z8 v* s  J# |. z8 l
  709.                  Beep();Beep();Beep();Beep();" y* z" b+ f1 S8 D# oبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  710.                  Delay1s();                   // 延时1s
    , g' [5 {2 V8 O( k- A% k, d3 _/ b
  711.              mark=0;                      // 退出循环% h/ a5 T. M4 i! Iبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  712.                  num++;                       // 密码错误输入计数器
    / t) ?2 m' v- `9 X7 y  Z9 k
  713.           }
    * x; n# V$ u" U5 d0 a5 }
  714. }& x: `) c, w1 Eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  715. 3 R$ M7 |7 S+ a. Qبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  716. //======================================= 指示函数部分 ===============================================
    + R8 o4 m- A( p) @- \- ?& v) M

  717. * v; D  q6 ~0 O& a9 \
  718. /*****************************************************
    8 g% h8 t* O" c) C% w2 m
  719. 函 数 名:void Led_hint(void)
    ; M' D( Y" `( `0 h' r
  720. 功    能:LED工作指示程序
    8 e! e' w. N* K; n! n
  721. 说    明:对按键及密码的输入结果进行指示, Y6 C2 J( C2 o8 P4 ~0 Hبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  722. 入口参数:无
    & H9 k; E0 C. ]* U. ~5 v
  723. 返 回 值:无
    + q, b. Y% E* C; w
  724. *****************************************************/  P' @) ]% X' s$ ]% m0 uبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  725. void Led_hint(void)
    + H3 t. e% W/ w* T
  726. {6 L5 S% L) |3 q9 |; j7 D5 \$ N. b' v) [بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  727.    WLED=0;
      V) \! e1 |' J/ L& O
  728.    Delay400Ms();$ k3 h' a! J: r6 eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  729.    WLED=1;/ B' s8 ~9 d2 S1 t6 c$ x: [5 ^بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  730. }
    3 d& I' k9 @  Q7 E
  731. / y" d4 T% ]& dبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  732. /***************************************************** 1 T4 g' ]$ u0 ]/ _بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  733. 函 数 名:void Beep(void)/ ]4 g  Q+ F7 c: V) g+ Z! _" ~بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  734. 功    能:蜂鸣器发音程序- q! l" }0 R/ o3 X/ p& h  Pبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  735. 说    明:对密码输入正确与否、按键等的提示9 k( G! ^. b5 Xبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  736. 入口参数:无4 ]& F' z! @. Y+ M' D* Sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  737. 返 回 值:无
    8 {# P& |9 a) [4 k
  738. *****************************************************/& a; \9 }, |: ]/ z* Kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  739. void Beep(void)
    ' ?* M/ Q5 p! ~4 D- }7 ~
  740. {' J  u; a1 T  d* s! a' b- wبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  741.   BELL=0;                     // 灯亮
    ( z& Q! U4 e2 A* G
  742.   Delay_bell();               // 延时
    / o- C5 d7 m: @) L5 j# P: n
  743.   BELL=1;                     // 灯灭. [$ c+ k5 g# `; M7 D! jبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  744.   Delay_bell();               // 延时$ G  \" C; z: ^1 E# I8 mبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  745. }
    ! H% G+ S: A# F  C6 i9 h! N
  746. - D. d5 U* _! f/ uبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  747. //======================================= 按键函数部分 ===============================================0 f1 j& s( w: ]  f0 w& x# n3 ]2 \% c; _بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()

  748. 9 ]3 Z( m% _; L. c6 M0 R# m
  749. /*****************************************************
    / M2 H1 w& c& t! M& q& G
  750. 函 数 名:uchar Key_scan(void)1 |( `8 U* v* z$ Z8 bبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  751. 功    能:4x4按键,按键扫描* Q( @! {9 H0 D! l* M' Kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  752. 说    明:对按键进行扫描,从而得到键编码* c, ?- ]0 X5 Q' dبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  753. 入口参数:无, m, [! {+ g' l7 W1 X* Iبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  754. 返 回 值:有键按下返回:键编码=行扫描值+列扫描值;无按键返回0  : |4 Q; q( _  O9 _بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  755. *****************************************************/
    # r; @* u  k7 R# H, X
  756. uchar Key_scan(void)
    1 b$ S; U5 ?" ?# h8 a* ]
  757. {' v4 F0 t& K3 A" p8 O/ w& g2 lبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  758.   uchar key;         // 存放键编码! p! x, i' j9 ^- _9 gبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  759.   P1=0xf0;           // 取高 4 位值.即:列扫描值
    * l0 y2 v2 |8 ?5 j; T9 e
  760.   key=P1&0xf0;       // 存放键编码的高4位  Q3 L% o# v9 l: v3 h& R* D3 fبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  761.   P1=0x0f;           // 取低 4 位值.即:行扫描值# Z9 A# A5 M4 p7 ~3 b# k1 b" U7 vبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  762.   key=(P1&0x0f)|key; // 低4位与高4位进行合并
    : W! V) g! C& d. _4 O0 e. o
  763.   if(key!=0xff). I4 q" c6 H8 }. nبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  764.   {! X0 |8 J$ @0 h5 l3 B5 e3 j/ X7 Xبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  765.     return(key);     // 有键按下,返回键编码
    : \9 T- S4 z# T+ R' y( D
  766.   }
    7 `/ k) I* f) N
  767.     return(0);       // 无键按下,返回07 u. ?8 ^& Y0 D2 yبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  768. }7 w! T4 [$ H- m$ X8 U1 z0 zبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()

  769. ( J6 X* e. E9 y9 a( p
  770. /*****************************************************
    4 l# r  H- [6 ^+ J1 Q( i* o
  771. 函 数 名:uchar Key_switch(void)* ]- @- [; K* Q0 P) Q+ K+ k- _$ y$ lبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  772. 功    能:按键转换程序& w8 C: ]$ t8 T4 U/ @بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  773. 说    明:对按键码进行转换, l! Y: r# k2 l# W- [% Uبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  774. 入口参数:无7 Y* F( y! A4 E2 a& aبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  775. 返 回 值:ASCII码  
    0 T3 \! I* t/ Y6 S, G4 |5 F! j
  776. *****************************************************/
    # z* Y0 q4 k4 E. P3 X
  777. uchar Key_switch(void)8 K. u, M: w7 }3 ~8 zبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  778. {
    7 t5 F/ z" v' c2 D0 J7 \
  779.    uchar key;, B4 X- x1 S1 b+ d5 Xبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  780.    key=Key_scan();
    9 l$ h) w4 @' o% V: L
  781.    Delay5Ms();" Z9 k+ {& S# |/ c. k, t4 Z" sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  782.    switch(key)
    . w, I. s; j% X! H" C4 f
  783.    {
    0 A( k- o1 G/ C8 F) N& E! ?
  784.       case 0xee:return(49);break;   /* "1"键  */
    2 w0 p' Q$ {$ q9 {, [  k7 ?
  785.           case 0xed:return(50);break;   /* "2"键  */. I; M2 z. i8 W  r* Kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  786.           case 0xeb:return(51);break;   /* "3"键  */
    3 h2 L9 Q- q; x9 z' }- c. J( z6 [
  787.           case 0xe7:return(65);break;   /* "A"键  */
    5 F  s5 E8 S3 \0 H( R
  788.       case 0xde:return(52);break;   /* "4"键  */
    3 X. @, }& ?# x) ^9 i
  789.           case 0xdd:return(53);break;   /* "5"键  */9 T* u- r. n' Rبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  790.           case 0xdb:return(54);break;   /* "6"键  */
    ' P4 K) }/ w5 e
  791.           case 0xd7:return(66);break;   /* "B"键  */                                 * s, x; q! k( F: Zبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  792.           case 0xbe:return(55);break;   /* "7"键  */                             8 l( b0 E+ Z4 t9 eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  793.           case 0xbd:return(56);break;   /* "8"键  */
    $ [+ o: i. ?% f6 B% P+ Q2 W
  794.           case 0xbb:return(57);break;   /* "9"键  */. R- S! J) M. ^! Zبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  795.           case 0xb7:return(67);break;   /* "C"键  */
    ; F1 U0 G8 ~. N" |2 }+ R5 ?( L
  796.           case 0x7e:return(42);break;   /* "*"键  */
    & f9 }# O6 T, H6 F3 a
  797.           case 0x7d:return(48);break;   /* "0"键  */0 ^& S% {9 \* m% `  x2 i9 Vبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  798.           case 0x7b:return(35);break;   /* "#"键  */; s7 }7 l) N! D# g7 J1 d2 i- g$ Aبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  799.           case 0x77:return(68);break;   /* "D"键  */  p- t) \& A) N% w$ sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  800.           case 0x00:return(00);break;   /* "无"键  */& j  w2 C; O2 F6 sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  801.    }/ ~& `7 [2 Z5 s7 B( Hبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  802. }
    ! e( W7 c! t! d2 O) k8 e$ a% A

  803. ' E) v" N/ `- u& U) e
  804. //======================================= 显示界面函数部分 ===============================================" b+ D, E5 ^: l% C/ Aبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  805. 6 A; q2 K# d9 L5 W7 kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  806. /***************************************************** * V4 U  O' u1 U* B4 A8 ^بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  807. 函 数 名:void Reset_success(void)
    ) d  h5 V7 E: I0 X- t& p  n
  808. 功    能:密码复位成功
    $ G' x/ I: m7 E( Z. A( H, Y
  809. 说    明:密码复位成功提示" Y% C3 W2 t) ^3 d1 y3 q9 Sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  810. 入口参数:无' e! o5 p0 l1 ?% z2 @- @- wبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  811. 返 回 值:无
    ' I! N9 C4 m7 r- T  w- c
  812. *****************************************************/
    % h0 n& k" J9 }! A
  813. void Reset_success(void)
    ! x: j# Y" t  E) Y- w; Y
  814. {
    / F- {5 d' e4 A
  815.     DisplayListChar(0,0,"Password  Reset");. W* i* r( `$ h# X  m$ o) B1 Cبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  816.     DisplayListChar(0,1,"=== Success ===");
    / V0 N( A9 H* s& }
  817. }
    6 h9 y3 \* W& r5 i

  818. 0 `* }5 _+ p. F1 Y' k, |  }% i
  819. /***************************************************** : ~* O. e8 {& Q% f: Y0 L8 V; `7 lبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  820. 函 数 名:void NewPassword_again(void)8 ^0 v; X0 x1 c* z. yبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  821. 功    能:显示输入新密码界面
    + e" g3 v# n! i  X* t6 V
  822. 说    明:再次输入密码提示( X# G. h1 k, v7 {# q& v3 tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  823. 入口参数:无" Y( \7 ]" r5 S  u& Mبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  824. 返 回 值:无
    # M6 s# H2 v% x& Z# _9 L
  825. *****************************************************/
    3 F3 H( Q6 ]" d. Y" h
  826. void NewPassword_again(void)7 D- Q+ L% h& n$ U2 {: S# q( ~8 }$ lبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  827. {
    # O/ d( P# D3 [2 K$ T- M
  828.     DisplayListChar(0,0," New_pass again ");7 b, b9 W6 W3 \+ m; v& V  ]بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  829.     DisplayListChar(0,1,"                ");
    , f# d) |6 r! A
  830.     WriteCommandLCM(0xc6,1); // 光标显示地址
    7 E4 ]  O% V1 e
  831.     WriteCommandLCM(0x0f,1); // 显示开及光标设置* r, S$ \7 [/ e9 P- M1 b1 J; e6 Rبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  832.     WriteCommandLCM(0x10,1); // 移位控制,光标右移
    8 A+ @  c; m# W# L( ~
  833. }* P9 u( Q" a5 C) ^7 Iبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()

  834. 0 u3 }3 d7 T- v0 c2 S, f
  835. /***************************************************** + f1 ?7 S- a$ nبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  836. 函 数 名:void Newpassword_ERROR(void)& T& x% ?% N0 q/ [) P) M+ jبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  837. 功    能:新密码设置失败1 p( p8 S* {8 {; b9 U+ C7 K0 mبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  838. 说    明:对新密码设置失败进行提示
    " y9 R5 b0 ?5 ~7 W. k
  839. 入口参数:无1 M3 b2 s1 y1 Q+ f. cبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  840. 返 回 值:无
    6 S( f* K( G) E
  841. *****************************************************/
    7 g  E! l9 p( W3 F) x7 S
  842. void Newpassword_ERROR(void)
    # |$ H0 a; h3 i& q! G8 b
  843. {+ h7 k7 l3 C. F/ m7 bبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  844.     DisplayListChar(0,0,"_New  password_");
    9 f; G0 N; d* y. K, |4 O
  845.     DisplayListChar(0,1,"__Set failure__");
    3 \: l2 w/ M2 e/ o
  846. }
    8 `* a; u5 n) [5 i+ L' Z( J

  847. $ _; z0 J+ O- r2 Y/ t# H! i& }# }
  848. /***************************************************** $ D- a/ t2 ?& }9 Kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  849. 函 数 名:void Newpassword_OK(void)
    ) _% I8 _% k/ O  n
  850. 功    能:新密码设置成功' n% g7 \' H* Fبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  851. 说    明:对新密码设置成功进行提示8 E4 z0 S& |3 I7 V. G/ H' d9 mبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  852. 入口参数:无
    & N- X$ q. [5 w/ R/ {+ ~
  853. 返 回 值:无
    7 K$ T, Y8 T" a" v4 @
  854. *****************************************************/7 Y; X4 Y: t8 C$ C9 C1 W. D; Zبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  855. void Newpassword_OK(void)
    , a. K0 l; e  q: n
  856. {: I. m+ d2 N% u5 Y. Tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  857.     DisplayListChar(0,0,"_New  password_");
    / X' O. B, T2 o* X% G. c+ N
  858.     DisplayListChar(0,1,"__Set success__");" J& z# b5 s9 F; G$ J9 Iبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  859. }
    ( }- t2 ?% g0 c) v# ^) Y

  860. 5 f! _! i% r% C6 F
  861. /***************************************************** . s6 f2 \  M8 K# U+ bبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  862. 函 数 名:void Choice_menu(void)
    ( l4 N* H3 \6 G$ t, n2 @# |
  863. 功    能:选择菜单* V8 P( r, j+ S7 B+ rبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  864. 说    明:对选择功能进行提示
    9 ?% X% z  {7 C8 z& r
  865. 入口参数:无
    + a7 I$ ?0 d! \! [' h
  866. 返 回 值:无
    ; U8 w3 e8 N9 e% p2 H
  867. *****************************************************/
    : [/ w$ V! _3 @  r' _# I: Y
  868. void Choice_menu(void)6 |, `- L- _: A8 W" y! o+ B( Vبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  869. {! D& F6 l; d8 |# O* Iبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  870.     DisplayListChar(0,0," Please choose ");
    & |7 h' x* S" }/ y1 ]0 l# b
  871.     DisplayListChar(0,1,"A-PW B-CRT C-RT");
    ! v8 @( H; d/ p( s& Z
  872. }% u, ~2 b3 f% O, pبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  873. 2 u3 ?( U+ O/ S- Z/ D8 I! lبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  874. /***************************************************** 5 d1 T4 |. e& ]: O5 Xبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  875. 函 数 名:Welcome_face()
      S; j7 ]6 L9 W6 Y; \' j: _
  876. 功    能:显示欢迎界面, p# x) g6 F( }4 ^& C; Tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  877. 说    明:开机进入欢迎界面
    , W; l/ m( S9 ]. b
  878. 入口参数:无; R+ ^5 R' R: v: tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  879. 返 回 值:无 , O7 a; U* H: J) |2 G! T9 bبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  880. *****************************************************/( b+ c8 K/ f7 ~بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  881. void Welcome_face(void)
    0 F: k* x, L4 Z+ u( f
  882. {! T$ K( M! I' u5 j  B, @$ I# Qبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  883.     DisplayListChar(0,0,"  welcome home  ");2 ?. r% o, x9 g  v0 L5 [% Iبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  884.     DisplayListChar(0,1,"please password ");
    - w2 q9 \- s/ `
  885. }' {) d( g* d0 L  I& J1 Z) @بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()

  886. 5 d' G/ f- ~6 ?
  887. /*****************************************************
    6 }/ \: }. }. n) y
  888. 函 数 名:viod Pass_face(void)
    8 G7 s3 G  {9 c  j+ h# _' G
  889. 功    能:密码输入界面; o8 Z" L; s) q# p, f" dبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  890. 说    明:对密码输入进行提示
    % H* h% w/ m7 G. V* }
  891. 入口参数:无
    . v3 X% T4 V/ n" V, e( q
  892. 返 回 值:无 3 Z' n2 N1 I' f" c1 T- U0 H( r* [بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  893. *****************************************************/" |4 `2 u" B7 G2 v2 {2 Q; t1 _% Tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  894. void Pass_face(void)
    , Z8 _+ A  c9 I$ }" G$ g% T
  895. {) G6 y7 f# F- d% t. wبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  896.    DisplayListChar(0,0," Input password ");
    0 r4 Y: a& G- i6 e0 [
  897.    DisplayListChar(0,1,"                ");
    4 h5 E. t( S" `4 W
  898.    WriteCommandLCM(0xc6,1);                 // 光标显示地址" K5 z7 Q& S& @  A, q6 ~! sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  899.    WriteCommandLCM(0x0f,1);                 // 显示开及光标显示
    + P! R, }4 N+ i: x4 k6 U: u
  900.    WriteCommandLCM(0x10,1);                 // 移位控制,光标右移8 ]+ o/ @( U: `4 Zبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  901. }
    . r+ s& j! Y* f5 ]

  902. ) I. _1 @* s+ u- v4 N8 Q) W  O
  903. /***************************************************** ' \% J9 W+ f) V/ b' q* mبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  904. 函 数 名:void NewPassword_face(void)
    0 O2 u" Q! _' Q( h3 e% a* A% h
  905. 功    能:显示输入新密码界面% q# c4 d8 Z) E) y0 y8 rبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  906. 说    明:对输入新密码提示9 V- f* N- r  r$ Q( jبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  907. 入口参数:无8 [) T+ F; J* E( {7 |3 ]بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  908. 返 回 值:无 3 N+ _8 B! j. x% c) Y  M2 S8 nبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  909. *****************************************************/: l. a+ }) |8 W0 A& U3 oبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  910. void NewPassword_face(void)  k& p. A2 b4 yبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  911. {
    , l" _2 @% }' c% T
  912.     DisplayListChar(0,0," Input New_pass ");. y2 O! `' b: s& W4 x; x" Aبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  913.     DisplayListChar(0,1,"                ");  Z& L9 M7 t7 R  K' i3 rبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  914.     WriteCommandLCM(0xc6,1); // 光标显示地址
    ( p  ?! v# v. q! J
  915.     WriteCommandLCM(0x0f,1); // 显示开及光标设置4 _% \2 e( Q2 F% s3 n, w( jبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  916.     WriteCommandLCM(0x10,1); // 移位控制,光标右移: k8 [8 Z$ j# l4 ?بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  917. }0 E0 [- P9 d' S9 p  ?بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  918. ) H1 k$ ~* P4 P& hبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  919. /*****************************************************
    : Z1 e) b7 ^+ N" ^
  920. 函 数 名:void Password_OK(void)1 d) _/ R$ W+ K! `% t4 d  Dبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  921. 功    能:显示密码输入正确界面6 |* N# M9 ?& Z5 K( Pبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  922. 说    明:对密码输入正确进行提示
    & b0 J: |) J6 L
  923. 入口参数:无
    $ q7 P: ?- m9 W/ O; M
  924. 返 回 值:无
    / a! U6 r1 V  a3 T+ h& O
  925. *****************************************************/
    ! L) p* X3 N" q% X8 F/ x/ _! v
  926. void Password_OK(void)# ~$ w! g% d! B0 ]0 sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  927. {" D9 F- @+ X; x5 C! Q/ x( B$ mبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  928.     DisplayListChar(0,0,"- Password OK! -");( |0 t: r$ H2 X( C6 I) Z8 uبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  929.     DisplayListChar(0,1,"- Welcome you! -");
    ! ?+ i) v+ c4 p5 p" h# j7 ^
  930. }
    / j$ [' e& b3 e

  931. % c" ^; R8 n8 `. G0 y  N
  932. /***************************************************** $ ]0 u+ p! X. S  x" Cبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  933. 函 数 名:void Password_ERROR(void)* U; _; ]! j4 ^; yبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  934. 功    能:显示密码输入错误界面3 e  _! c) H1 h# k3 u2 g( mبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  935. 说    明:对密码错误输入进行提示
    " Q0 u8 s& h% X) x9 ^
  936. 入口参数:无2 J5 H' V" D1 ?2 |; x' }بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  937. 返 回 值:无 6 `7 Z$ F  p7 c( D" U/ ^+ w( e8 @بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  938. *****************************************************// T  }( I) D% h2 Wبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  939. void Password_ERROR(void)
    ( `7 c( L. R- n% S: O' w& p- `
  940. {" E7 h+ J4 Y4 d  kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  941.     DisplayListChar(0,0,"==== Sorry! ====");
    ) p( F5 a; R5 \8 v: Z/ x
  942.     DisplayListChar(0,1,"=Password ERROR=");9 _% [: H- X# ^( Uبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  943. }
    ' u7 k  X" o. R4 L
  944. 2 t0 R4 [7 ~9 ?. H8 \" `بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  945. //================================ LCM1602控制部分 =========================================================& d3 ]) p0 M. ?! n& W# ^بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  946. 5 n! T; j# f4 C. C2 q; e$ zبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  947. /*****************************************************
    . G- t+ a+ H! k% @
  948. 函 数 名:void WriteDataLCM()
    2 H* C9 H9 d6 h7 K& s) S
  949. 功    能:向LCM1602中写入数据
    0 Y6 Y- |' p6 y0 a+ r: p( R
  950. 说    明:将形参WDLCM中的数据写入LCM中0 S5 n! S; I1 l) J7 f3 rبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  951. 入口参数:WDLCM ' k+ \- c" |. Xبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  952. 返 回 值:无  
    7 V: q; {4 P3 t' c0 j" ]
  953. *****************************************************/% N8 y* f) H: J9 m" F- h/ Z+ Wبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  954. //写数据
      \; X6 f1 A6 J9 P+ E/ T
  955. void WriteDataLCM(uchar WDLCM)* I% Z* n$ X1 \$ ~. \  Hبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  956. {
    8 g" a0 P& ~9 D1 D1 ^9 Z
  957.   ReadStatusLCM();  // 检测忙
    . b. e2 s4 b4 n* I' e- R( `
  958.   LCM_Data = WDLCM; // 写入数据到LCM- N6 o- Z5 o) X  Hبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  959.   LCM_RS = 1;
    % q+ A/ L6 ?0 u; H. P
  960.   LCM_RW = 0;
    5 I3 f: X7 @/ }
  961.   LCM_E = 0;        // 若晶振速度太高可以在这后加小的延时* b% u, z4 |# d1 Z1 Nبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  962.   LCM_E = 0;        // 延时
    0 X: f* _1 _' ^5 k* N6 i
  963.   LCM_E = 1;
    " R: I# Q! q7 n$ ~8 I7 ?' K! B
  964. }
    , a' G& u3 t" ^( ]. C* m
  965. 3 ^) C$ b% P2 H7 l0 L8 mبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  966. /***************************************************** + \* p, x- C3 r! @بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  967. 函 数 名:void WriteCommandLCM()
    1 B- W% K! r3 b# T* t" H) H
  968. 功    能:向LCM1602中写入指令9 }8 W; Q! x9 |( B- Oبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  969. 说    明:向LCM中写入指令;如果BuysC=0时,忽略忙检测,如果BuysC=1时,不忽略忙检测" \& ]7 h0 R9 d, q8 fبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  970. 入口参数:WCLCM,BuysC 5 s& ^( k6 \6 ?: Y. H2 f; Tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  971. 返 回 值:无  & c# D: [3 |9 D, q$ u- c+ j: ~5 kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  972. *****************************************************/
    6 q8 t7 i) `! v, G! h' T
  973. //写指令
    " `# k! p. S3 |7 `0 M8 W
  974. void WriteCommandLCM(uchar WCLCM,BuysC) // BuysC为0时忽略忙检测+ T3 M7 B9 p* o9 lبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  975. {
    : v5 n- _9 u6 B0 p7 B& G4 g
  976.   if (BuysC) ReadStatusLCM();           // 根据需要检测忙
    / O  A) N! _5 U, T1 {
  977.   LCM_Data = WCLCM;                     // 写入指令# e4 R# @) x! o6 N2 oبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  978.   LCM_RS = 0;# l/ G4 j1 i. o; L) g0 `! n+ oبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  979.   LCM_RW = 0; % @1 s9 H% F4 T; W7 H  w- t" xبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  980.   LCM_E = 0;( X6 X" n) S9 i. \: n: lبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  981.   LCM_E = 0;
    6 B% ~  v5 }8 {( ?$ P7 n1 v) T/ p( T
  982.   LCM_E = 1; % R: M  q, `1 c$ g4 Z& m7 Zبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  983. }
    6 {. r1 L# L' F3 q1 L
  984. ' s4 J& ?% P) X+ |9 s5 t% uبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  985. /***************************************************** 1 ]2 a+ r' g6 w( L! \بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  986. 函 数 名:uchar ReadStatusLCM()
    ) M3 g5 c# r/ C6 P* Y
  987. 功    能:读忙状态* V3 q, M# h8 l" r( Lبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  988. 说    明:判断LCM的工作状态;也可以不用此函数,用一段延时程序代替
    * b6 F  T; h4 Q6 @9 U3 w1 O$ f
  989. 入口参数:无
    % j, j( N: s' v9 }( [
  990. 返 回 值:LCM_Data  1 \* b1 _+ X4 Fبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  991. *****************************************************/
    4 a' }. n5 C+ l, R1 W
  992. //读状态) y) h! b( d' H- p; x' tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  993. uchar ReadStatusLCM(void)
    + M4 q/ R! i$ k! g
  994. {
    5 s. b6 m6 _# i9 b4 I- u+ g/ F
  995.   LCM_Data = 0xFF;         // LCM数据口先置12 r2 E6 e! r. V% Zبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  996.   LCM_RS = 0;
    4 e, }4 S4 x9 Q# A1 [
  997.   LCM_RW = 1;
    4 ~: ]) Q8 \3 g# P7 p6 p
  998.   LCM_E = 0;* {% `9 e3 H3 Y0 D2 a& W3 \بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  999.   LCM_E = 0;" l1 j/ X6 x" f7 p5 Gبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1000.   LCM_E = 1;+ q' `' t5 c- y  h- Pبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1001.   while (LCM_Data & Busy); // 检测忙信号.如果忙,则不执行+ j; o5 F8 c/ v' Y7 a8 nبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1002.   return(LCM_Data);        // 不忙返回读取数据
    7 a" p7 i4 S* s
  1003. }6 J6 w8 ~" @/ A# v' |بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()

  1004. ; p0 X& |1 Y) P* ^( S
  1005. /***************************************************** & o- C0 @. \0 q; ]9 M; L" q4 A( zبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1006. 函 数 名:void LCMInit() : r. ~7 W* e4 Pبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1007. 功    能:初始化LCM1602
    ' z7 V- Y9 j8 f6 C
  1008. 说    明:LCM在工作前先要对显示屏初始化,否则模块无法正常工作. ~/ G+ z8 g7 h7 `4 `' w* Lبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1009. 入口参数:无
    ; J( b9 J: L: R' \' r/ W* L
  1010. 返 回 值:无  
    " N$ v+ ]/ N7 M+ I1 H
  1011. *****************************************************/
    % S& z1 M& z3 F* h3 h
  1012. //LCM初始化" v- i7 A" i" oبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1013. void LCMInit(void)
    5 z/ Q1 Y$ T9 d8 o2 W$ v
  1014. {& g' B! h. [8 f' z& H3 m: a7 x6 ^بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1015.   LCM_Data = 0;8 w% M' l  N0 t  uبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1016.   WriteCommandLCM(0x38,0); // 三次显示模式设置,不检测忙信号. t& d* ^% m* y4 F4 Gبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1017.   Delay5Ms(); 1 t3 h; E% u% }" eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1018.   WriteCommandLCM(0x38,0); // 0x38指令表示:8位数据显示模式,俩行多显示3 @0 B& e8 |/ Y0 g# n" w7 Q; I( Wبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1019.   Delay5Ms(); ( ^( ?3 Y" d. N$ F" e  o0 Nبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1020.   WriteCommandLCM(0x38,0);" D! V2 _" A3 s2 g: S& ]بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1021.   Delay5Ms();
    4 |* {  j: ]2 u: K
  1022.   WriteCommandLCM(0x38,1); // 显示模式设置,开始要求每次检测忙信号
    : n1 f  U. o' [; B# t
  1023.   WriteCommandLCM(0x08,1); // 关闭显示
    0 g' s: ], I  M' C; v( k/ ]" A3 ?
  1024.   WriteCommandLCM(0x01,1); // 显示清屏9 B& a8 e$ a6 p0 R" x$ Yبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1025.   WriteCommandLCM(0x06,1); // 显示光标移动设置
    $ j1 ~8 W1 M% w1 K. r  s  i
  1026.   WriteCommandLCM(0x0C,1); // 显示开及光标设置
    9 R( s+ V+ D* y/ m- R6 Z
  1027. }, Z$ e' b& q" E+ F. F# xبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1028. & {( k2 Q9 T: n% e$ Y  ]بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1029. /***************************************************** ' r5 W& q. g$ Q0 u: Xبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1030. 函 数 名:void DisplayOneChar()
    * G' `- [. H4 e: N
  1031. 功    能:按指定坐标中写入数据
    ; f! D- n1 [/ J5 N: O- [
  1032. 说    明:X-横坐标,Y-纵坐标,DData为ASCII值
    , \$ Y+ C- H* j1 w9 C- i3 i
  1033. 入口参数:X,Y,DData
    0 W2 @; \3 f- I( R
  1034. 返 回 值:无  
    + V7 |2 q+ ]: a6 i$ b8 j% D
  1035. *****************************************************/
    - f" b3 v: Y+ J+ y
  1036. //按指定位置显示一个字符2 p) w: R+ e! @% J! m, Zبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1037. void DisplayOneChar(uchar X, uchar Y, uchar DData)$ `* D* E: [6 t. h. x5 e6 Lبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1038. {
    + O! }( X- s* K" p# A' \
  1039.   Y &= 0x01;. ]/ ?1 z0 p# U# `بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1040.   X &= 0x0F;              // 限制X不能大于15,Y不能大于1
    5 I' p& T$ j" ?2 K- z9 s
  1041.   if (Y) X |= 0x40;       // 当要显示第二行时地址码+0x40;# w) k; L) ?! o4 W( }8 i0 V7 ]$ U; pبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1042.   X |= 0x80;              // 算出指令码
    ! S6 P6 n$ H' }* P
  1043.   WriteCommandLCM(X, 0);  // 这里不检测忙信号,发送地址码
    . R" o+ T; L& I" W. x) {9 r
  1044.   WriteDataLCM(DData);9 S6 Q1 O$ r( p/ l- ^( K8 {6 tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1045. }" [, b8 B! i! x, f1 X, n( f( Xبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1046. / y! K+ v; g$ L: L0 R; j, e* K' H. Uبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1047. /***************************************************** ) F9 E: ?2 M0 l3 F4 o& w1 p: nبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1048. 函 数 名:void DisplayListChar(), |0 T7 C$ G1 @3 `7 R3 ^بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1049. 功    能:向指定坐标中写入字符串4 y* _0 h1 Q; Tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1050. 说    明:X-横坐标,Y-纵坐标
    - s1 }. r) T) c+ j" `+ ~7 f+ U
  1051. 入口参数:X,Y,*DData   i5 V9 m8 t0 E  c- J; H5 Hبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1052. 返 回 值:无  3 U, L( i: e4 ?بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1053. *****************************************************/; ?9 k: V0 {% _1 v: @! r7 K0 Eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1054. //按指定位置显示一串字符  ***原来的遇到空格0x20就不显示***. X' E% z9 c: B/ Z. O( Iبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1055. void DisplayListChar(uchar X, uchar Y, uchar code *DData)% L; j; S' P( B1 Hبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1056. {' E0 Q) Z! `9 K+ nبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1057.   uchar ListLength,j;' @( t$ H/ h2 y+ I/ ^' A) Qبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1058.   ListLength = strlen(DData);              // strlen:读取字符串的长度
    9 b2 j' b3 U& P. G
  1059.   Y &= 0x1;
    8 S% J: K  I, }; y
  1060.   X &= 0xF;                                // 限制X不能大于15,Y不能大于1: B, x- C/ c9 \" ^$ S/ eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1061.   if (X <= 0xF)                            // X坐标应小于0xF" I% V  c4 N- |% i, x3 iبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1062.     {
    4 g$ @4 E6 ?# S* `
  1063.       for(j=0;j  w3 [5 h0 M6 J; ~بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1064.          {8 z6 r4 l' N2 g( {2 wبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1065.            DisplayOneChar(X, Y, DData[j]); // 显示单个字符
    6 _$ K. T2 ~6 _6 p; P
  1066.            X++;                            // 横坐标加1,纵坐标不变: Q& k  ]  Z( h" Uبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1067.          }% g2 i4 y& Z' L; L! _8 Gبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1068.     }
    6 k- Y* P  F. K) N- h) U
  1069. }8 u: q' G; H3 b+ ^  D- [1 ^0 kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()

  1070. ( u/ e  I& w+ B3 _( U
  1071. //======================================= 延时函数部分 ===============================================
    7 C( A& Z4 n( v  G! p3 i
  1072. + u8 @% }9 t; J4 m* o! i; D" F  fبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1073. /*****************************************************
    0 k3 X8 E2 Z) t% O7 T/ R* R8 Y) h
  1074. 函 数 名:void DelayMs(uchar number)
    , m' e5 \# L3 z6 I. U! r  c
  1075. 功    能:延时函数
    ' K! Y+ V% k+ d. T
  1076. 说    明:完成24c02的延时
    $ O0 N- C5 S5 a* g* d
  1077. 入口参数:number' y5 N" f  A3 r9 z4 G8 Sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1078. 返 回 值:无 1 G9 W, H% c( ^# q* Sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1079. *****************************************************/
    & Z2 A7 G# ?' V8 ]. J7 T+ i# N
  1080. //定时函数; O$ x2 _& h7 N) V# z/ lبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1081. void DelayMs(uchar number)
    6 ~+ U% ], H2 M! w6 n0 l# \) ^* o
  1082. {
      o8 ~6 C3 b, L5 {/ t
  1083.    uchar i;
    . i, |! Z) n% X" L
  1084.    while(number--)# K" i1 |* l4 m1 y0 aبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1085.       {
    ! `# ?1 O0 y# h5 [
  1086.             for(i=0;i<120;i++)
    ( S9 E+ e& z3 E+ z6 A7 c% Q
  1087.                    {;} 0 W$ l- l& [# _# U7 l2 I- r2 kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1088.           }
    2 z) r. ?' }! P6 e# ?
  1089. }
    # Y" S# [. t2 G4 Y  i6 X

  1090. 6 o: u% P0 T& T. k
  1091. /*****************************************************
    ) p9 {7 g% b- Q1 o) Z$ _
  1092. 函 数 名:void Delay5Ms(). A8 X/ F/ o( c* C! e1 fبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1093. 功    能:5ms延时0 s6 B- N1 f! y% ]- oبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1094. 说    明:软件消除按键抖动和适当的延时3 s- I% e0 E. K% @) d/ }بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1095. 入口参数:无7 l/ P5 L  z# ~بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1096. 返 回 值:无  
    : }. n* P+ ^/ k, [
  1097. *****************************************************/
    & K6 A6 Z, a7 F' L4 ^2 @1 F
  1098. //5ms延时% D: p6 p. l5 Z3 P( d" l7 B; S2 Q$ Vبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1099. void Delay5Ms(void)9 ~3 V( [; X3 X% V/ yبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1100. {9 ?! L, G  n5 e+ ^1 s, eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1101.   uint TempCyc = 5552; // 放入延时数据) D9 J# Q1 j' }" T2 m+ \4 Qبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1102.   while(TempCyc--);  y% o" ^, p2 \0 [7 Tبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1103. }9 B# N* Y4 W$ u  c: f$ mبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()

  1104. $ ]  k! Y3 z- l4 V2 I( S' r4 J' \& H
  1105. /*****************************************************
    ' K; \3 p7 l* z  }% q/ `. q
  1106. 函 数 名:void Delay400Ms(); g8 e) G. N% g7 e0 Aبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1107. 功    能:400ms延时
    1 b! g3 U5 N3 l" L: O" i+ Y
  1108. 说    明:对显示进行延时) Z" H: i7 F0 P# |1 W' A( J# @بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1109. 入口参数:无
    ' g/ v) x& K1 d5 E1 C7 B2 C' q
  1110. 返 回 值:无  2 Q! O2 k7 H( P5 e8 Dبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1111. *****************************************************/
      y; E! t" y- S) I
  1112. //400ms延时
    2 U1 Y, Q7 K/ v" E- d8 ]4 l2 Y
  1113. void Delay400Ms(void)( A, v8 w5 v" Bبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1114. {
    ! P9 y; J$ ]) \, q
  1115.   uchar TempCycA = 5;& j4 r- Y5 {7 o. O: S9 T/ lبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1116.   uint TempCycB;, v) m( X" p& Y5 T. Z6 f+ nبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1117.   while(TempCycA--). v- U0 ~, g7 R) Mبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1118.    {# H0 T# r8 U  L( X9 I8 Rبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1119.      TempCycB=7269;* K% B1 V0 j, }$ `6 S- `بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1120.      while(TempCycB--);
    ! A( \. r; I1 D
  1121.    };4 s0 @6 M7 q* A! g" vبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1122. }
    $ V& v. u/ t, r
  1123. 0 @4 F0 A+ P7 u7 `بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1124. /***************************************************** ' W" V3 q5 G  y  ?2 X3 k+ s. eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1125. 函 数 名:void Delay1s(void)/ k( o! h( K, c6 a/ Oبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1126. 功    能:1s延时
    ' H4 l' d$ g* ]( i0 j6 i$ L
  1127. 说    明:用来控制继电器开启时间2 Z) q( r9 U8 Fبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1128. 入口参数:无
    ' }% Q" q7 n3 C7 v) t& }' ~
  1129. 返 回 值:无  
    6 S2 k- y$ k1 D" ?$ l* r6 d' S$ s
  1130. *****************************************************/
    2 Y! d2 s, ~/ {
  1131. void Delay1s(void) // 1s延时子程序/ k5 w9 V# S% X3 o; s7 s/ }بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1132. {
    ( Q! l3 j) L. j: ~2 C+ M
  1133.   uchar h,i,j,k;
    3 \$ t. [. w8 Y% {* P
  1134.   for(h=5;h>0;h--)
    ! E2 J6 i( S/ S/ x" L" E3 q
  1135.      for(i=4;i>0;i--)
    5 r$ t$ X% {9 B& R( ]1 Q$ v* h
  1136.         for(j=116;j>0;j--)
    6 }/ u- \1 x/ I# J) d9 s
  1137.            for(k=214;k>0;k--)8 v( w3 r$ C5 M2 C; oبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1138.                    ;
    3 b+ }* t& E) r4 r' |3 l
  1139. }
    3 h4 J* [; e  j& V+ N" u  Q
  1140. % j" k7 Y* @$ h( Dبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1141. /*****************************************************
    ' Q5 m# n% t% n" P( s' d! ]) K' S
  1142. 函 数 名:void Delay_bell(void)
    . V  p6 k+ v7 Q. V5 p3 M8 t
  1143. 功    能:蜂鸣器延时程序
    8 b) w! M5 G* X. T. w3 ?
  1144. 说    明:对蜂鸣器发音延时
    : o3 t( A# T, E
  1145. 入口参数:无
    ) V3 X! h. L0 N$ z7 ^5 A
  1146. 返 回 值:无
    ! C4 R' i2 c5 o+ E7 @( ~* J
  1147. *****************************************************/
    , T4 m% i  {6 w1 |. g
  1148. void Delay_bell(void)
    ( G  |3 N7 R9 p; O: A- c: Q( l. E& s
  1149. {
    % h: u% D# ]3 y; ?( S: l: h( `
  1150.   uint i;
    ) n6 c! O! N8 i/ |- v- |  U; g9 a& U" t
  1151.   for(i=0;i<30000;i++)
    4 U) J6 l2 X' i  d3 r; h' E
  1152.     ;
    ( F# [4 o# A: c3 |8 }8 J
  1153. }7 R5 j3 T4 k8 g2 e. A* {/ Xبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()

  1154. 1 G& i6 a3 y6 y5 E- C! g
  1155. //===================================== 定时器中断部分 ====================================================
    % d5 N7 p& M3 ?8 j

  1156. 1 K3 K: ]5 v. \' |8 V% P" |% z
  1157. /***************************************************** : t2 a; Z" G, _& S% x& sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1158. 函 数 名:void time_intt0(void) interrupt 1( @2 }* r7 [$ S. Q. hبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1159. 功    能:T0中断函数
    : N* S* U' K' ^# c" A. Y
  1160. 说    明:按键时间超过10s时,退出按键输入% E1 O+ s# o. nبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1161. 入口参数:无9 G( y) P9 I( Z9 ]بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1162. 返 回 值:无 + G3 s4 t& r2 Fبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1163. *****************************************************/; J+ R& Y6 I6 O& A( Kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1164. void time_intt0(void) interrupt 1; K# w& A6 s) q7 O" \+ J! A3 eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1165. {
    / }7 }# T1 W4 A( {+ N
  1166.   EA=0; TR0=0;         // 关闭定时器& C' B% K9 \6 h' |: |. C: H3 Pبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1167.   TH0=0x3C;  TL0=0xB0; // 定时器1赋初值& E7 L. A8 u7 b. C5 Iبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1168.   TR0=1;               // 开定时器03 _, q, D, E7 a& o9 Aبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1169.   con_20s++;           // 20s计数器计数
    ! l" Y) U! A0 i: B& ~2 G) V7 n
  1170.   if(con_20s==200)     // 到20s% F) R8 [4 H  N9 Y* O% A3 G# dبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1171.   {& S0 Q6 {9 q" W+ P) {0 dبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1172.    con_20s= 0;         // 10s计数器值0
    # \+ u5 b2 K( g# z9 u& R6 K- J
  1173.    signx= 0;           // 10s没键按下跳出循环
    ! K+ a' `9 F4 s8 x
  1174.    flag1= 1;           // 从先进入选择菜单
    ' x! C9 s0 J# I3 B
  1175.    flag=1;             // ; a  y. C$ o$ Q; sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1176.    TR0 = 0;            // 关定时器1 v% G9 s* R- }$ t2 a9 Cبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1177.    mark=0;             // 跳出循环# z: r: F# I7 x8 m% u+ c$ \بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1178.   }
    * f" X* e, O* d8 q! w. f! V2 k. {& s
  1179.   EA=1;# T+ R& H, l0 t/ M& |+ F' Eبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1180. }
    - }) z" m2 h! e" n4 L  m
  1181. ; G6 s9 u) B5 a2 n: ~+ A. Oبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1182. /***************************************************** / h  b" V3 ]7 ^6 P5 Z6 b6 ~بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1183. 函 数 名:void time_intt1(void) interrupt 3# p; l; V5 a% Kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1184. 功    能:T1中断函数" \  f! L/ _1 |. P9 Q* G; O" g/ E" Bبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1185. 说    明:3次输入密码错误,系统自动锁定,30min后系统开启& l+ u: O. P8 n, r% @, m. sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1186. 入口参数:无* v9 ?0 L- ]' u8 \1 V8 E+ wبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1187. 返 回 值:无 ; |2 r: d6 Y5 b* i4 lبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1188. *****************************************************/
    ' W- d4 A0 J. R( [/ n5 V
  1189. void time_intt1(void) interrupt 3; K5 n+ c$ x/ h- c5 z' h% Dبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1190. {
    , E+ W- |/ c  N
  1191.   EA=0; TR1=0;         // 关闭定时器- e2 l! n" d7 B$ g& |& Aبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1192.   TH1=0x3C;  TL1=0xB0; // 定时器1赋初值" e6 c2 ~1 d* |0 {9 I, l* R1 ~بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1193.   TR1=1;               // 开定时器1" S( H) K+ M7 Zبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1194.   con_30m++;           // 30min计数器计数$ P4 e2 _2 |) C/ E9 w7 M# ?بۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1195.   if(con_30m==36000)   // 到30min
    5 Q( _( n' \7 F) p
  1196.   {
    9 t2 V! o3 E5 J; L: p
  1197.    con_30m=0;          // 30min计数器值0
    : F# D  z4 o8 c1 S3 e
  1198.    num=0;              // 输入错误密码计数器置02 o3 e* e5 F+ v+ T0 L. Z% f1 {6 oبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1199.    TR1=0;              // 关定时器
    + R/ K9 A7 R" {% b2 r: W
  1200.   }
    # V3 s2 @+ W  q' n/ @
  1201.   EA = 1;              // 开总中断7 C- d; r% s2 m8 A, h3 Sبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
  1202. }
      v. w; X0 r% v% F8 C' z
  1203. //=======================================  程序结束  ==================================================
    2 i/ p& E) A8 E

  1204. : _2 V0 k9 f3 i! A
  1205. ! X/ G5 u5 U& X# i2 Kبۇ مەزمۇنلار روھلان مۇنبىرىدىن كۆچۈرۈلگەن()
مەزمۇننى كۆچۈرۈۋېلىش
ياقتۇرىشىڭىز مۇمكىن؟

مۇناسىۋەتلىك تېمىلار

 ئىگىسى| ۋاقتى: 2016-3-29 14:09:56 | ھەممە قەۋەتنى كۆرۈش
بۇ ئەسلى ئېلىكتىرون ھەۋەسكارلىرى(خەنزۇچە بىكەت) تورىغا يوللىغان يازمىدىكى مەزمۇن ئىدى، تورداشلارنىڭ باھاسى ناھايىتى ياخشى بولۇپتىكەن، شۇڭا روھلان تورىغىمۇ يوللاپ قويدۇم( كۆرۈلىشى 20000 قېتىمدىن ئاشقان).

باھا سۆز

راس گەپنى قىلسام مەن پەقەتلا چۈشەنمدىم .  تەپسىلاتى ئىنكاس ۋاقتى: 2016-3-30 16:28
ۋاقتى: 2016-3-30 16:28:25 | ھەممە قەۋەتنى كۆرۈش
tayirjan.aji يوللىغان ۋاقتى  2016-3-29 14:09
( Q. M  F+ M  y) _; ^$ o% cبۇ ئەسلى ئېلىكتىرون ھەۋەسكارلىرى(خەنزۇچە بىكەت) تورىغ ...

- B/ N$ f8 k" ]5 Yراس گەپنى قىلسام مەن پەقەتلا چۈشەنمدىم .
ۋاقتى: 2016-4-1 01:09:49 | ھەممە قەۋەتنى كۆرۈش
نىم نەرسىلىكىنى ئېنىق چۈشەندۈرۋەتكەن بولسىڭىز تېخىمۇ ياخشى بولاتتىكەن .

ئېنگىلىزچە كىرگۈزۈش ھالىتىگە ئالماشتۇرماقچى بولسىڭىز Ctrl بىلەن K كۇنۇپكىسىنى بىرلەشتۈرۈپ بېسىڭ، يەنە بىر قېتىم مۇشۇنداق باسسىڭىز ئۇيغۇرچىغا ئالمىشىدۇ .

كىرگەندىن كېيىن ئىنكاس يازالايسىز كىرىش | ئەزا بولۇڭ

سەھىپە جۇغلانما قائىدىسى

archiver|يانفۇن نۇسخا|قاماقخانا|ئېلان بېرىڭ|بىز كىم؟|ئۈندىدار|روھلان مۇنبىرى

GMT+8, 2016-8-22 10:50

Powered by Discuz! X3.2(NurQut Team)

© 2001-2013 Comsenz Inc.

تېز ئىنكاس چوققىغا قايتىش سەھىپىگە قايتىش