欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5524|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

用STC系列單片機(jī)制作四位可預(yù)置計(jì)時(shí)器

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主





  用STC系列單片機(jī)制作四位可預(yù)置計(jì)時(shí)器_用UM5140X計(jì)時(shí)器電路改裝
#:當(dāng)使用的EEPROM起始地址不是C2~C7的IC時(shí)請(qǐng)到STC_EEPROM.h文件中注釋#define EEPROM_C2_C7這行宏定義
功能: 具有二個(gè)按鍵,四位紅色共陽(yáng)極數(shù)碼顯示
  P3.6長(zhǎng)按 = 模式鍵、短按 = 移位、保存
  P3.7長(zhǎng)按 = 開(kāi)始鍵、短按 = 加數(shù)、停止計(jì)時(shí)
  具有正、倒;計(jì)分或計(jì)秒預(yù)設(shè)選擇
  具有預(yù)約、倒計(jì)時(shí);開(kāi)機(jī)功能分別輸出一個(gè)1S低電平信號(hào)和一個(gè)長(zhǎng)通低電平信號(hào)

使用說(shuō)明:
A: 上電前若P1.0對(duì)地則為倒計(jì)秒//P1.1對(duì)地則為倒計(jì)分//其它狀態(tài)組合未定義,建議不使用。
1: 長(zhǎng)按P3.6口開(kāi)關(guān)則先重新調(diào)出存在eeprom在的計(jì)時(shí)停止計(jì)時(shí)顯示P***且第一個(gè)*以125ms閃爍
此時(shí)若依次短按P3.6口開(kāi)關(guān)則移向下一位閃爍,在該位閃爍若短按P3.7口的開(kāi)關(guān)則此位加1。
當(dāng)?shù)谌齻(gè)*閃爍時(shí)如果再短按一次P3.6口開(kāi)關(guān)則保存此次設(shè)定值并退出設(shè)置狀態(tài),顯示***。若
在閃爍10s內(nèi)沒(méi)有新鍵按下則自動(dòng)退出設(shè)置狀態(tài)并不保存此次設(shè)定值,顯示***。
2: 長(zhǎng)按P3.7口開(kāi)關(guān)則開(kāi)始計(jì)時(shí)顯示***且最后一個(gè)dp點(diǎn)閃爍,在計(jì)時(shí)器運(yùn)行中若短按P3.7口開(kāi)關(guān)則
停止計(jì)時(shí),10s內(nèi)沒(méi)有新鍵按下則自動(dòng)重載預(yù)設(shè)值,顯示***。
3: 當(dāng)時(shí)間從預(yù)設(shè)值倒計(jì)到 000 時(shí)停止倒計(jì)時(shí)且P1^2口輸出1S低電平信號(hào)(后自動(dòng)變高)、P1.3口長(zhǎng)通
低電平信號(hào)(短按P3.7口開(kāi)關(guān)可關(guān)閉),10s后自動(dòng)重載預(yù)設(shè)值。
程序設(shè)計(jì):LBQ691477940  2018-03-10
升級(jí)記錄:
增加上電自動(dòng)選擇設(shè)置正計(jì)時(shí)與倒計(jì)時(shí)的初步程序編寫(xiě)。  2018-3-11 23:08
P1.0 & P1.1 對(duì)地時(shí)為倒計(jì)秒
P1.0        對(duì)地時(shí)為倒計(jì)分
P1.1  對(duì)地時(shí)為正計(jì)秒
P1.0 & P1.1 不接時(shí)為正計(jì)分       2018-3-11 09:33
  1. /*********************************************************************/
  2. #include
  3. #include
  4. #include
  5. #define nop _nop_()
  6. #define uint unsigned int
  7. #define uchar unsigned char
  8. #define ulong unsigned long
  9. #define SBI(Y,X) Y |= (1 << X) //讓Y的X位置1
  10. #define CBI(Y,X) Y &= ~(1 << X) //讓Y的X位清0
  11. #define set_key  P1  //定義鍵盤(pán)口
  12. #define KEY  P3   //定義鍵盤(pán)口
  13. #define set_djm  0x00 //P1.0 & P1.1 對(duì)地時(shí)為倒計(jì)秒
  14. #define set_zjm  0x01 //P1.0        對(duì)地時(shí)為倒計(jì)分
  15. #define set_djf  0x02 //P1.1    對(duì)地時(shí)為正計(jì)秒
  16. //#define set_zjf  0x03 //P1.0 & P1.1 不接時(shí)為正計(jì)分
  17. sbit    P1_4 = P1^4; //位驅(qū)動(dòng)
  18. sbit    P1_5 = P1^5; //位驅(qū)動(dòng)
  19. sbit P1_6 = P1^6; //位驅(qū)動(dòng)
  20. sbit P1_7 = P1^7; //位驅(qū)動(dòng)
  21. sbit OUT1S = P1^2; //到時(shí)間后輸出約1S低電平
  22. sbit OUTL = P1^3; //到時(shí)間后輸出低電平,直到短按P3^7口開(kāi)關(guān)鍵后才變高
  23. sbit DP   = P2^2;
  24. sbit sw_mode = P3^6;  //長(zhǎng)按為模式鍵、短按移位
  25. sbit sw_strat = P3^7; //長(zhǎng)按為開(kāi)始鍵、短按加數(shù)
  26. bit  DPP = 0, g_shi = 0,up_dn; //閃爍標(biāo)志位、千位是否顯示標(biāo)志位、正計(jì)時(shí)與倒計(jì)時(shí)標(biāo)志位為1時(shí)倒計(jì)。
  27. static uchar yiwei = 4;   //用于設(shè)置時(shí)間值時(shí)移位
  28. static uint count = 0;    //定時(shí)器0內(nèi)的計(jì)數(shù)器
  29. uint  set_count,set_time,time1 = 0; //倒計(jì)數(shù)次數(shù)、設(shè)置的時(shí)間值(倒計(jì)時(shí)計(jì)數(shù)器)、正計(jì)時(shí)計(jì)數(shù)器
  30. uchar  shi,ge,sf,bf,xflash,flash1;  //千位、百位、十位、個(gè)位、10s后自動(dòng)退出設(shè)置、到時(shí)間后輸出1s
  31. uchar  Ttotal[4];  //前面三個(gè)字節(jié)為設(shè)置好的時(shí)間,最后一個(gè)字節(jié)用來(lái)判斷eeprom是否寫(xiě)過(guò)
  32. /*********************  函數(shù)聲明  *****************************************/
  33. uchar key_function(void);   //獨(dú)立按鍵檢測(cè)函數(shù)聲明
  34. void delay_ms(uint n);  //12MHZ晶振時(shí)毫秒級(jí)CPU延時(shí)函數(shù)
  35. void write_time(void);  //轉(zhuǎn)換時(shí)間值并寫(xiě)入
  36. void abc_cba(unsigned int time);   //轉(zhuǎn)換時(shí)間值供顯示
  37. void Read_time(void);  //讀出存在eeprom內(nèi)的時(shí)間值
  38. /*********************** 共陽(yáng)極數(shù)字編碼  ********************************/
  39. uchar code table[]={
  40. //P2.0=E / P2.1=D / P2.2=DP / P2.3=C / P2.4=G / P2.5=B / P2.6=F / P2.7=A
  41. //   0   1  2 3  4   5    6 7  8   9
  42. 0x14,0xd7,0x4c,0x45,0x87,0x25,0x24,0x17,0x04,0x05,0x0e,0xff};//0~9 P共陽(yáng)極數(shù)字編碼
  43. /***************************************************************************/

  44. /*********************************************************************
  45. 功能:12MHZ晶振時(shí)毫秒級(jí)CPU延時(shí)函數(shù)
  46. 參數(shù): 1~65535(不可以為0)
  47. 結(jié)果:占用CPU方式延時(shí)與參數(shù)值相同的毫秒時(shí)間
  48. 備注:應(yīng)用于1T單片機(jī)時(shí)i<600 ;12T單片機(jī)時(shí)i<125
  49. XX: LBQ691477940   2011-02-19
  50. /**************************************************************************/
  51. void delay_ms(uint n)
  52. {
  53. uint i;
  54. while(--n !=0)
  55. {
  56. #ifdef EEPROM_C2_C7
  57.   for(i = 0;i < 600;i++);
  58. #else
  59.   for(i = 0;i < 125;i++);
  60. #endif
  61. }
  62. }
  63. /****************************************************************************
  64. /*********************************************************************
  65. 函數(shù)名:獨(dú)立按鍵檢測(cè)函數(shù)(帶參數(shù)返回)
  66. 全局變量:無(wú)
  67. 參數(shù)說(shuō)明:無(wú)
  68. 返回說(shuō)明:返回按鍵值
  69. 說(shuō)明:延時(shí)消抖,返回值為0xff表示無(wú)按鍵按下或按鍵不正常
  70. /**********************************************************************************/
  71. uchar key_function(void)
  72. {
  73. uchar data keytemp = 0;  //按鍵值局部變量
  74. if ((set_key & 0x03) != 0x03) //如果有按鍵按下 0000 0011 03h
  75.          //        0000 0001 01h
  76. {        //        0000 0010 02h
  77.   keytemp = set_key & 0x03; //取鍵值
  78.   delay_ms(50);    //延時(shí)消抖
  79.   if ((set_key & 0x03) == keytemp)
  80.   {
  81.    return (keytemp); //返回按鍵值
  82.   }
  83.   else
  84.   {
  85.    return (0xff);  //無(wú)正常按鍵
  86.   }
  87. }
  88. return (0xff);      //無(wú)按鍵按下
  89. }
  90. /************************************************************************/
  91. /*********************  轉(zhuǎn)換時(shí)間值并寫(xiě)入 ***************************/
  92. void write_time(void)
  93. {
  94. Ttotal[0] = time1 / 100;
  95. Ttotal[1] = time1 % 100 / 10;
  96. Ttotal[2] = time1 % 10;
  97. Ttotal[3] = 0x00;
  98. Sector_Erase(EEPROM_ADD);   //擦除扇區(qū)
  99. String_write(EEPROM_ADD,4,Ttotal);  //重新寫(xiě)入數(shù)據(jù)
  100. String_Read(EEPROM_ADD,4); //重新設(shè)置后讀出來(lái)備用,目的是更新Read_buf[]數(shù)組方便定時(shí)器0
  101. }       //中斷后time = Read_buf[0] * 100 + Read_buf[1] * 10 + Read_buf[2];的取值
  102. /*************************************************************************************/
  103. /***************************** 轉(zhuǎn)換時(shí)間值供顯示 *************************************/
  104. void abc_cba(unsigned int time)
  105. {
  106. ge = time / 100;
  107. sf = time % 100 / 10;
  108. bf = time % 10;
  109. }
  110. /**********************************************************************************/
  111. /************************** 讀出存在eeprom內(nèi)的時(shí)間值 *********************/
  112. void Read_time(void)
  113. {   
  114. String_Read(EEPROM_ADD,4);  //讀出來(lái)備用
  115.          //EEPROM_ADD 要寫(xiě)讀內(nèi)部EEPROM的始起地扯
  116.          //  4    共要讀出4個(gè)數(shù)據(jù)
  117. if(Read_buf[3] != 0)//不為0表示eeprom內(nèi)容未寫(xiě)過(guò)
  118. {
  119.   time1 = 138;//給一個(gè)為138的初值
  120.   write_time();//寫(xiě)入eeprom
  121. }
  122. set_time = Read_buf[0] * 100 + Read_buf[1] * 10 + Read_buf[2];
  123. if(up_dn)time1 = set_time;  //如果為倒計(jì)送設(shè)置的值
  124. else time1 = 0;     //如果為正計(jì)送0
  125. }
  126. /******************************************************************************/

  127. //*******************************主程序******************************************
  128. void main()
  129. {
  130. uint keynum;  //長(zhǎng)按計(jì)數(shù)緩存區(qū)
  131. bit key = 0 ;  //sw_mode鍵長(zhǎng)按標(biāo)志位/正計(jì)、倒計(jì)
  132. SP = 0x60; //堆棧指針

  133. /******** 注意STC89系列沒(méi)有此時(shí)鐘頻率分頻功能故只能有 12M晶振  ******************/

  134. //CLK_DIV = 0x00; //系統(tǒng)時(shí)鐘
  135. CLK_DIV = 0x01;  //系統(tǒng)時(shí)鐘/2
  136. //CLK_DIV = 0x02; //系統(tǒng)時(shí)鐘/4
  137. //CLK_DIV = 0x03; //系統(tǒng)時(shí)鐘/8
  138. //CLK_DIV = 0x04; //系統(tǒng)時(shí)鐘/16
  139. //CLK_DIV = 0x06; //系統(tǒng)時(shí)鐘/32
  140. //CLK_DIV = 0x06; //系統(tǒng)時(shí)鐘/64
  141. //CLK_DIV = 0x07; //系統(tǒng)時(shí)鐘/128

  142. /*********************************************************************************/
  143. set_key = 0xff;
  144. switch (key_function())
  145. {
  146.   case set_djm:
  147.   {
  148.    up_dn = 1;  //正計(jì)時(shí)與倒計(jì)時(shí)標(biāo)志位、為1時(shí)倒計(jì)。
  149.    set_count = 20;  //P1.6對(duì)地倒計(jì)秒
  150.    break;
  151.   }  
  152.   case set_djf:
  153.   {
  154.    up_dn = 1;  //正計(jì)時(shí)與倒計(jì)時(shí)標(biāo)志位、為1時(shí)倒計(jì)。
  155.    set_count = 1200; //P1.7對(duì)地倒計(jì)分
  156.    break;
  157.   }
  158.   case set_zjm:
  159.   {
  160.    up_dn = 0;  //正計(jì)時(shí)與倒計(jì)時(shí)標(biāo)志位、為1時(shí)倒計(jì)。
  161.    set_count = 20;  //P1.6對(duì)地倒計(jì)秒
  162.    break;
  163.   }  
  164.   /* case set_zjf:
  165.   {  
  166.    break;
  167.   } */
  168.   default:
  169.   {
  170.    up_dn = 0;  //正計(jì)時(shí)與倒計(jì)時(shí)標(biāo)志位、為1時(shí)倒計(jì)。
  171.    set_count = 1200; //P1.7對(duì)地倒計(jì)分
  172.    break;
  173.   }
  174. }
  175. /***************************************************************************/
  176. TMOD = 0x11;   //設(shè)置定時(shí)器0/1為工作方式1(0001 0001)
  177. //write_time();//寫(xiě)入eeprom
  178. TH0 = (65536 - 50000) / 256;
  179. TL0 = (65536 - 50000) % 256;
  180. TH1 = (65536 - 2500) / 256;
  181. TL1 = (65536 - 2500) % 256;
  182. ET1 = 1;
  183. TR1 = 1;
  184. ET0 = 1;
  185. EA = 1;   //開(kāi)定時(shí)器0中斷、啟動(dòng)定時(shí)器0、開(kāi)總中斷
  186. OUT1S = 1; //到時(shí)間后輸出約1S低電平,上電后置1
  187. OUTL = 1; //到時(shí)間后輸出約低電平,上電后置1
  188. Read_time(); //讀出存在eeprom內(nèi)的時(shí)間值
  189. if(up_dn) time1 = set_time;
  190. abc_cba(time1);  //轉(zhuǎn)換時(shí)間值供顯示

  191. /*********************  長(zhǎng)按為模式鍵、短按移位  **************************************/
  192. while(1)
  193. {  
  194.   if ((KEY & 0xc0) == 0x80) //如果有按鍵按下 1100 0000 C0h
  195.          //        1011 1111 80h
  196.   {
  197.    delay_ms(20); //延時(shí)消抖
  198.    while ((KEY & 0xc0) == 0x80) //長(zhǎng)按為模式鍵、短按移位
  199.    {
  200.     keynum++;
  201.     delay_ms(10);  //防止干擾
  202.     if (keynum > 200) //如果是長(zhǎng)按sw_mode模式鍵則
  203.     {
  204.      TR0 = 0;  //停止計(jì)時(shí)器0
  205.      DPP = 0;  //關(guān)閉小數(shù)點(diǎn)閃爍標(biāo)志位
  206.      key = 1;  //置sw_mode鍵有長(zhǎng)按標(biāo)志位
  207.      g_shi = 1;  //千位是否顯示標(biāo)志位置位
  208.      yiwei = 0;
  209.      xflash = 0;   //每按一次清0一次讓其永遠(yuǎn)達(dá)不到10s的退出值
  210.      time1 = Read_buf[0] * 100 + Read_buf[1] * 10 + Read_buf[2];//重調(diào)回之前值
  211.      if(up_dn) abc_cba(set_time);//如果為倒計(jì)時(shí)轉(zhuǎn)換set_time時(shí)間值供顯示
  212.      else abc_cba(time1); //如果為正計(jì)時(shí)轉(zhuǎn)換time1時(shí)間值供顯示
  213.     }
  214.    }
  215.    if (keynum > 200)
  216.    {
  217.     keynum = 0;
  218.    }  
  219.    else if(keynum >= 10) //防止干擾
  220.    {
  221.     keynum = 0;   
  222.     if(key)  //如果sw_mode鍵有長(zhǎng)按標(biāo)志位
  223.     {
  224.      TR0 = 0;
  225.      DPP = 0;   //關(guān)閉小數(shù)點(diǎn)閃爍標(biāo)志位
  226.      xflash = 0;   //每按一次清0一次讓其永遠(yuǎn)達(dá)不到10s的退出值
  227.      yiwei++;
  228.      if(yiwei >= 3)
  229.      {
  230.       yiwei = 4;  //讓移位功能失效
  231.       key = 0;  //關(guān)閃sw_mode鍵有長(zhǎng)按標(biāo)志位
  232.       g_shi = 0;  //關(guān)閉千位是否顯示標(biāo)志位
  233.       write_time(); //轉(zhuǎn)換時(shí)間值并寫(xiě)入
  234.       if(!up_dn)time1 = 0; //如果為正計(jì)時(shí)則保存完后恢復(fù)time1為 000
  235.      }
  236.     }
  237.    }
  238.   }
  239. /**************** 長(zhǎng)按為開(kāi)始鍵、短按加數(shù)、停止計(jì)時(shí)  ************************************/
  240.   if ((KEY & 0xc0) == 0x40) //如果有按鍵按下 1100 0000 C0h
  241.   {       //        0111 1111 40h
  242.    delay_ms(20); //延時(shí)消抖
  243.    while ((KEY & 0xc0) == 0x40) //長(zhǎng)按為開(kāi)始鍵、短按加數(shù)、停止計(jì)時(shí)
  244.    {         
  245.     keynum++;
  246.     delay_ms(10);  //防止干擾
  247.     if (keynum > 200) //如果長(zhǎng)按sw_strat開(kāi)始鍵則
  248.     {
  249.      if((set_time !=0)||(up_dn == 0))//set_time=0未重置數(shù)時(shí)不能啟動(dòng)倒計(jì)時(shí)或?yàn)檎?jì)時(shí)模式時(shí)啟動(dòng)計(jì)時(shí)器
  250.      {
  251.       Read_time(); //啟動(dòng)前先更新set_time的值供定時(shí)器0中斷程序參考
  252.       count = 0;  //定時(shí)器0內(nèi)的計(jì)數(shù)器清0保持每次時(shí)間一樣
  253.       TR0 = 1;  //開(kāi)啟計(jì)時(shí)器0
  254.      }  
  255.     }
  256.    }
  257.    if (keynum > 200)
  258.    {
  259.     keynum = 0;
  260.    }  
  261.    else if(keynum >= 10) //防止干擾
  262.    {
  263.     keynum = 0;
  264.     TR0 = 0; //關(guān)閃計(jì)時(shí)器0
  265.     DPP = 0; //關(guān)閉小數(shù)點(diǎn)閃爍標(biāo)志位
  266.     xflash = 0; //每按一次清0一次讓其永遠(yuǎn)達(dá)不到10s的退出值
  267.     OUTL = 1; //短按P3^7口開(kāi)關(guān)鍵后才變高   
  268.     switch(yiwei)
  269.     {
  270.      case 0:
  271.      {
  272.       ge++;
  273.       if(ge >= 10) //如果大于10清0
  274.       ge = 0;
  275.       break;
  276.      }
  277.     case 1:
  278.      {
  279.       sf++;
  280.       if(sf >= 10) //如果大于10清0
  281.       sf = 0;
  282.       break;
  283.      }
  284.     case 2:
  285.      {
  286.       bf++;
  287.       if(bf >= 10) //如果大于10清0
  288.       bf = 0;
  289.       break;
  290.      }
  291.      default:
  292.      {      
  293.       break;
  294.      }      
  295.     }
  296.     set_time = time1 = ge * 100 + sf * 10 + bf; //將調(diào)節(jié)后的值轉(zhuǎn)換為time值
  297.    }
  298.   }
  299.   if(up_dn) abc_cba(set_time);//如果為倒計(jì)時(shí)轉(zhuǎn)換set_time時(shí)間值供顯示
  300.   else abc_cba(time1); //如果為正計(jì)時(shí)轉(zhuǎn)換time1時(shí)間值供顯示   
  301. }
  302. }
  303. /**************************************************************************/
  304. /*****************************************************************************
  305. 函數(shù)功能:定時(shí)器中斷
  306. 入口參數(shù):
  307. 出口參數(shù):
  308. /****************************************************************************/
  309. void timer0(void) interrupt 1
  310. {  
  311. CY = 0;
  312. TL0 +=(65536 - 50007) % 256;//中斷響應(yīng)時(shí)間同步修正/重裝初值(低8位修正值)
  313. TH0 = (65536 - 50000) / 256 +(unsigned char)CY;//高8位初值修正/重裝初值(高8位修正值)
  314. count++;
  315. if (count == set_count) //50ms x 20 = 1秒鐘
  316. {      //50ms x 1200 = 1分鐘
  317.   count = 0x00;
  318.   time1++;
  319.   set_time--;
  320.   if(!set_time)   //如果已倒計(jì)為0則重讀eeprom內(nèi)的值
  321.   {
  322.    TR0 = 0;
  323.    flash1 = 0;   //到時(shí)間后先將其清0保證1s輸出的時(shí)間
  324.    DPP = 1;   //這里置1經(jīng)下面取反后則為0關(guān)閉小數(shù)點(diǎn)閃爍標(biāo)志位
  325.    OUT1S = OUTL = 0; //輸出低電平直到短按P3^7口開(kāi)關(guān)鍵后才變高
  326.   }      //到時(shí)間后輸出約1S低電平
  327. }
  328. DPP = ~DPP;  //爍標(biāo)志位取反一次
  329. xflash = 0;  //讓其永遠(yuǎn)達(dá)不到10s的退出值
  330. }  
  331. /******************************************************************/
  332. /******************************************************************/
  333. void timer1(void) interrupt 3
  334. {
  335. static uchar led;
  336. uchar flash;
  337. bit flas;
  338. TH1 = (65536 - 2500) / 256;
  339. TL1 = (65536 - 2500) % 256;
  340. flash++;
  341. if(flash == 50)  //2.5ms x 50 = 125ms
  342. {
  343.   flash = 0;
  344.   flas = !flas; //跟據(jù)移位值來(lái)使某位閃煥
  345.   xflash++;
  346.   if(!OUT1S)  //從OUT1S輸出為低時(shí)才++
  347.   flash1++;
  348. }
  349. if(flash1 == 8)  //125ms x 8 = 1s 后自動(dòng)變?yōu)楦唠娖?br />
  350. {
  351.   OUT1S = 1;  //到時(shí)間后輸出約1S低電平
  352. }
  353. if(xflash == 80) //125ms x 80 = 10s 后自動(dòng)退出設(shè)置狀態(tài)
  354. {
  355.   xflash = 0;  //清0
  356.   yiwei = 4;  //讓跟據(jù)移位值來(lái)使某位閃煥功能失效
  357.   if(up_dn)
  358.   set_time = Read_buf[0] * 100 + Read_buf[1] * 10 + Read_buf[2];//如果為倒計(jì)時(shí)重調(diào)回之前值
  359.   else
  360.   time1 = 0;  //如果為倒計(jì)時(shí)則清0
  361.   DPP = 0;  //關(guān)閉小數(shù)點(diǎn)閃爍標(biāo)志位
  362.   g_shi = 0;  //關(guān)閉千位是否顯示標(biāo)志位
  363. }
  364. switch(led)
  365. {
  366.   case 0:
  367.   {
  368.    P1_7 = 0;
  369.    if(g_shi)
  370.    P2 = table[10]; //不顯示千位
  371.    else
  372.    P2 = table[11]; //顯示千位
  373.    P1_4 = 1;
  374.    led = 1;
  375.    break;
  376.   }
  377.   case 1:
  378.   {
  379.    if((flas)&&(yiwei == 0))//跟據(jù)移位值來(lái)使某位閃煥
  380.    P2 = table[11]; //不顯示
  381.    else
  382.    P2 = table[ge]; //顯示個(gè)位
  383.    P1_4 = 0;
  384.    P1_5 = 1;
  385.    led = 2;
  386.    break;
  387.   }
  388.   case 2:
  389.   {
  390.    if((flas)&&(yiwei == 1))//跟據(jù)移位值來(lái)使某位閃煥
  391.    P2 = table[11]; //不顯示
  392.    else
  393.    P2 = table[sf]; //顯示十分位
  394.    P1_5 = 0;
  395.    P1_6 = 1;
  396.    led = 3;
  397.    break;
  398.   }
  399.   case 3:
  400.   {
  401.    if((flas)&&(yiwei == 2))//跟據(jù)移位值來(lái)使某位閃煥
  402.    P2 = table[11]; //不顯示
  403.    else
  404.    P2 = table[bf]; //顯示百分位
  405.    if(DPP)
  406.     DP = 0;  //直接打開(kāi)小數(shù)點(diǎn)
  407.    else
  408.     DP = 1;  //直接關(guān)閉小數(shù)點(diǎn)
  409.    P1_6 = 0;
  410.    P1_7 = 1;
  411.    led = 0;
  412.    break;
  413.   }
  414.   default:break;
  415. }
  416. }
  417. /******************************************** END  ********************************/
復(fù)制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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