久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3135|回復: 16
打印 上一主題 下一主題
收起左側

STC單片機熱敏電阻溫度計程序編譯不能通過,附STC12C5A.H頭文件

[復制鏈接]
回帖獎勵 10 黑幣 回復本帖可獲得 10 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
ID:17109 發表于 2019-4-29 11:04 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
但是用   Keil uVision 4     編譯  不能  通過,STC12C5A.H頭文件加入    也不成功'勞煩各位師博看看那里 出錯謝謝


單片機源程序如下:
  1. //****************************************/
  2. //*     基于STC12C5A60S2的NTC溫度計      */
  3. //*       測溫范圍-40°~110°             */
  4. //****************************************/
  5. //4位共陽極數碼管段碼a-h接P27-P20,
  6. //位選端接P3高4位
  7. //NTC使用MF52-103/3435;10K±1%精度;B值:3435±1%
  8. //NTC溫度輸出端子接P1.0

  9. #include "STC12C5A.H"
  10. #include "intrins.h"
  11. #define u8 unsigned char
  12. #define u16 unsigned int
  13. #define u32 unsigned long int
  14. sbit GW=P2^1;                                     //數碼管位碼
  15. sbit SW=P2^4;                               
  16. sbit BW=P2^3;                                       
  17. sbit QW=P2^2;       
  18. u8 show[4];                         //顯示四位數數組
  19. u32  Temp_Buf[9];        //采樣數組
  20. u8 Ledcount,ADCcount;    //數碼管顯示計數變量,ADC采樣次數變量
  21. u8 code smg0[12]={0x0a,0xfa,0x4c,0x68,0xb8,0x29,0x09,0x7a,0x08,0x28,0xfd,0xff};           //數碼管段碼表,不帶小數點:0-9,-,滅
  22. u8 code smg1[11]={0x02,0xf2,0x44,0x60,0xb0,0x21,0x01,0x72,0x00,0x20,0xff};               //數碼管段碼表,帶小數點:0-9,滅      
  23. u8 i,j,m,n;
  24. u32 WD;               //溫度值
  25. /************************************************
  26.               NTC阻值與溫度關系表
  27. ************************************************/
  28. u32 code NTCcode[] = {
  29. /***電阻值(擴大萬倍)****溫度值*******序號*******/   
  30.                                 1905562,      // -40.00       0
  31.                                 1834132,      // -39.00       1
  32.                                 1756140,      // -38.00       2
  33.                                 1676467,      // -37.00       3
  34.                                 1595647,      // -36.00       4
  35.                                 1515975,      // -35.00       5
  36.                                 1438624,      // -34.00       6
  37.                                 1364361,      // -33.00       7
  38.                                 1293641,      // -32.00       8
  39.                                 1226678,      // -31.00       9
  40.                                 1163519,      // -30.00       10
  41.                                 1104098,      // -29.00       11
  42.                                 1048272,      // -28.00       12
  43.                                 995847,       // -27.00       13
  44.                                 946608,       // -26.00       14
  45.                                 900326,       // -25.00       15
  46.                                 856778,       // -24.00       16
  47.                                 815747,       // -23.00       17
  48.                                 777031,       // -22.00       18
  49.                                 740442,       // -21.00       19
  50.                                 705811,       // -20.00       20
  51.                                 672987,       // -19.00       21
  52.                                 641834,       // -18.00       22
  53.                                 612233,       // -17.00       23
  54.                                 584080,       // -16.00       24
  55.                                 557284,       // -15.00       25
  56.                                 531766,       // -14.00       26
  57.                                 507456,       // -13.00       27
  58.                                 484294,       // -12.00       28
  59.                                 462224,       // -11.00       29
  60.                                 441201,       // -10.00       30
  61.                                 421180,       // -9.00        31
  62.                                 402121,       // -8.00        32
  63.                                 383988,       // -7.00        33
  64.                                 366746,       // -6.00        34
  65.                                 350362,       // -5.00        35
  66.                                 334802,       // -4.00        36
  67.                                 320035,       // -3.00        37
  68.                                 306028,       // -2.00        38
  69.                                 292750,       // -1.00        39
  70.                                 280170,       // 0.00         40
  71.                                 268255,       // 1.00         41
  72.                                 256972,       // 2.00         42
  73.                                 246290,       // 3.00         43
  74.                                 236176,       // 4.00         44
  75.                                 226597,       // 5.00         45
  76.                                 217522,       // 6.00         46
  77.                                 208916,       // 7.00         47
  78.                                 200749,       // 8.00         48
  79.                                 192988,       // 9.00         49
  80.                                 185600,       // 10.00        50
  81.                                 184818,       // 11.00        51
  82.                                 181489,       // 12.00        52
  83.                                 176316,       // 13.00        53
  84.                                 169917,       // 14.00        54
  85.                                 162797,       // 15.00        55
  86.                                 155350,       // 16.00        56
  87.                                 147867,       // 17.00        57
  88.                                 140551,       // 18.00        58
  89.                                 133536,       // 19.00        59
  90.                                 126900,       // 20.00        60
  91.                                 120684,       // 21.00        61
  92.                                 114900,       // 22.00        62
  93.                                 109539,       // 23.00        63
  94.                                 104582,       // 24.00        64
  95.                                 100000,       // 25.00        65
  96.                                 95762,        // 26.00        66
  97.                                 91835,        // 27.00        67
  98.                                 88186,        // 28.00        68
  99.                                 84784,        // 29.00        69
  100.                                 81600,        // 30.00        70
  101.                                 78608,        // 31.00        71
  102.                                 75785,        // 32.00        72
  103.                                 73109,        // 33.00        73
  104.                                 70564,        // 34.00        74
  105.                                 68133,        // 35.00        75
  106.                                 65806,        // 36.00        76
  107.                                 63570,        // 37.00        77
  108.                                 61418,        // 38.00        78
  109.                                 59343,        // 39.00        79
  110.                                 57340,        // 40.00        80
  111.                                 55405,        // 41.00        81
  112.                                 53534,        // 42.00        82
  113.                                 51725,        // 43.00        83
  114.                                 49976,        // 44.00        84
  115.                                 48286,        // 45.00        85
  116.                                 46652,        // 46.00        86
  117.                                 45073,        // 47.00        87
  118.                                 43548,        // 48.00        88
  119.                                 42075,        // 49.00        89
  120.                                 40650,        // 50.00        90
  121.                                 39271,        // 51.00        91
  122.                                 37936,        // 52.00        92
  123.                                 36639,        // 53.00        93
  124.                                 35377,        // 54.00        94
  125.                                 34146,        // 55.00        95
  126.                                 32939,        // 56.00        96
  127.                                 31752,        // 57.00        97
  128.                                 30579,        // 58.00        98
  129.                                 29414,        // 59.00        99
  130.                                 28250,        // 60.00        100
  131.                                 27762,        // 61.00        101
  132.                                 27179,        // 62.00        102
  133.                                 26523,        // 63.00        103
  134.                                 25817,        // 64.00        104
  135.                                 25076,        // 65.00        105
  136.                                 24319,        // 66.00        106
  137.                                 23557,        // 67.00        107
  138.                                 22803,        // 68.00        108
  139.                                 22065,        // 69.00        109
  140.                                 21350,        // 70.00        110
  141.                                 20661,        // 71.00        111
  142.                                 20004,        // 72.00        112
  143.                                 19378,        // 73.00        113
  144.                                 18785,        // 74.00        114
  145.                                 18225,        // 75.00        115
  146.                                 17696,        // 76.00        116
  147.                                 17197,        // 77.00        117
  148.                                 16727,        // 78.00        118
  149.                                 16282,        // 79.00        119
  150.                                 15860,        // 80.00        120
  151.                                 15458,        // 81.00        121
  152.                                 15075,        // 82.00        122
  153.                                 14707,        // 83.00        123
  154.                                 14352,        // 84.00        124
  155.                                 14006,        // 85.00        125
  156.                                 13669,        // 86.00        126
  157.                                 13337,        // 87.00        127
  158.                                 13009,        // 88.00        128
  159.                                 12684,        // 89.00        129
  160.                                 12360,        // 90.00        130
  161.                                 12037,        // 91.00        131
  162.                                 11714,        // 92.00        132
  163.                                 11390,        // 93.00        133
  164.                                 11067,        // 94.00        134
  165.                                 10744,        // 95.00        135
  166.                                 10422,        // 96.00        136
  167.                                 10104,        // 97.00        137
  168.                                 9789,         // 98.00        138
  169.                                 9481,         // 99.00        139
  170.                                 9180,         // 100.00       140
  171.                                 8889,         // 101.00       141
  172.                                 8610,         // 102.00       142
  173.                                 8346,         // 103.00       143
  174.                                 8099,         // 104.00       144
  175.                                 7870,         // 105.00       145
  176.                                 7665,         // 106.00       146
  177.                                 7485,         // 107.00       147
  178.                                 7334,         // 108.00       148
  179.                                 7214,         // 109.00       149
  180.                                 7130,         // 110.00       150
  181. };

  182. void ys1ms(u16 z)               //zms延時函數
  183. {
  184.    u8 x,y;
  185.    for(x=z;x>0;x--)
  186.             for(y=125;y>0;y--);
  187. }          

  188. void XS()                                     //數碼管顯示函數
  189. {
  190.          for(i=0;i<4;i++)
  191.          {
  192.                   switch(i)                                       
  193.                   {
  194.                            case(0):
  195.                                           GW=0;SW=1;BW=1;QW=1; P0=smg0[show[0]]; break;        //小數位
  196.                            case(1):
  197.                                           GW=1;SW=0;BW=1;QW=1; P0=smg1[show[1]]; break;        //個位帶小數點
  198.                            case(2):
  199.                                           GW=1;SW=1;BW=0;QW=1; P0=smg0[show[2]]; break;        //十位
  200.                            case(3):                                                                  
  201.                                           GW=1;SW=1;BW=1;QW=0; P0=smg0[show[3]]; break;        //百位
  202.       }         
  203.                   ys1ms(10);                       
  204.                   GW=1;
  205.                   SW=1;
  206.                   BW=1;
  207.                   QW=1;       
  208.                   P0=0xff;                         
  209.                   ys1ms(10);
  210.    }               
  211. }

  212. void InitADC()                             //ADC初始化
  213. {
  214.          P1ASF=0x80;                             //1000 0000,設置P17作為AD使用
  215.          ADC_RES=0;                              //轉換結果寄存器高8位清零
  216.          ADC_RESL=0;                             //轉換結果寄存器低2位清零
  217.          ADC_CONTR=ADC_POWER | ADC_SPEEDLL;      //開啟AD電源,AD轉換速度
  218.          ys1ms(2);                               //延時1ms以上,等待電源穩定
  219. }

  220. u16 AD_GET(u8 ch)         //查詢方式AD轉換程序
  221. {
  222.          ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ch|ADC_START;
  223.          _nop_();
  224.          _nop_();
  225.          _nop_();
  226.          _nop_();
  227.          while(!(ADC_CONTR & ADC_FLAG));         //等待轉換結束
  228.          ADC_CONTR &= ~ADC_FLAG;                 //關閉ADC,AD_FLAG清零
  229.          return(ADC_RES*4+ADC_RESL);             //返回AD轉換得到的10位數據(16進制)
  230. }

  231. void Get_Temp()          //讀取電阻值
  232. {
  233.    u8 xx;
  234.    u32 sum,RT;
  235.          sum=0;
  236.          RT=0;
  237.          Temp_Buf[8]=(u32)102300000/AD_GET(7)-100000;  //將ADC轉換結果換算為電阻值并擴大10000倍
  238.          if( ++ADCcount < 8)                           //采樣初期不使用遞推濾波算法
  239.    {   
  240.       for(xx=0;xx<8;xx++)                        //準備遞推濾波算法的數據
  241.             {
  242.                Temp_Buf[xx]=Temp_Buf[xx+1];            //所有數據循環左移
  243.             }
  244.             RT=Temp_Buf[8];                            //采樣初期使用當前采樣值
  245.          }
  246.          else                                          //只有采樣次數大于8次以后才使用遞推濾波算法
  247.          {
  248.             ADCcount=8;                                //采樣次數超過8次后,固定設置為8
  249.             for(xx=0;xx<8;xx++)                        //遞推濾波算法
  250.             {
  251.                Temp_Buf[xx]=Temp_Buf[xx+1];            //所有數據循環左移
  252.                sum+=Temp_Buf[xx];                      //求和
  253.             }
  254.             RT=sum/8;                                  //求平均值      
  255.          }   
  256.          if (RT>=7130 && RT<=1905562)
  257.          {
  258.       xx=0;       
  259.       while( RT < NTCcode[xx] )                  //將當前電阻值與表對比,得到所在位置
  260.       {   
  261.                xx++;   
  262.             }
  263.             WD=xx*10-((RT+5-NTCcode[xx])*10/(NTCcode[xx-1]-NTCcode[xx])); //插值法計算,數據擴大10倍                                       
  264.       if (WD>400)                                //正溫度(大于0度)
  265.       {
  266.                      WD=WD-400;                              //取得0°以上溫度
  267.          if (WD>999)                             //大于100度顯示最高位
  268.          {   
  269.                                     show[3]=WD/1000;
  270.                                  }
  271.          else                                    //小于100度不顯示最高位
  272.          {
  273.                                     show[3]=11;                          //百位
  274.                   show[2]=WD%1000/100;                 //十位
  275.                   show[1]=WD%100/10;                   //個位加小數點
  276.                   show[0]=WD%10;                       //小數位
  277.                                  }
  278.       }
  279.       else                                       //負溫度(小于0度)
  280.       {
  281.          WD=400-WD;                              //取得0°以下溫度
  282.          show[3]=10;                             //顯示負號-
  283.          show[2]=WD/100;
  284.          show[1]=WD%100/10;                      //加小數點
  285.          show[0]=WD%10;
  286.                         }
  287.    }
  288.          else if (RT>1905562)                          //溫度低于-40℃,顯示-0,表示超出量程(欠量程)
  289.          {
  290.                   show[3]=10;                                //顯示負號-
  291.       show[2]=11;
  292.       show[1]=10;                                //加小數點
  293.       show[0]=0;
  294.          }
  295.          else if (RT<7130)                             //溫度高于110℃,顯示1,表示超量程
  296.          {
  297.                   show[3]=1;                                 //百位
  298.             show[2]=11;                                //十位
  299.             show[1]=10;                                //個位加小數點
  300.             show[0]=11;
  301.          }
  302. }

  303. void main()                                                                                          
  304. {                                      
  305.          InitADC();       
  306.          ADCcount=0;      //ADC采樣次數   
  307.          while(1)                                                       
  308.          {                                       
  309.                   Get_Temp();
  310.                         XS();       
  311.    }               
  312. }
復制代碼

所有資料51hei提供下載:
STC熱敏電阻溫度計程序.rar (26.33 KB, 下載次數: 42)



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

使用道具 舉報

沙發
ID:155507 發表于 2019-4-29 19:07 | 只看該作者
STC單片機熱敏電阻溫度計程序編譯能通過

linking...
Program Size: data=68.0 xdata=0 code=1943
creating hex file from "STC熱敏電阻溫度計"...
"STC熱敏電阻溫度計" - 0 Error(s), 0 Warning(s).


  1. //STC熱敏電阻溫度計程序  <----------錯

  2. //****************************************/
  3. //*     基于STC12C5A60S2的NTC溫度計      */
  4. //*       測溫范圍-40°~110°             */
  5. //****************************************/
  6. //4位共陽極數碼管段碼a-h接P27-P20,
  7. //位選端接P3高4位
  8. //NTC使用MF52-103/3435;10K±1%精度;B值:3435±1%
  9. //NTC溫度輸出端子接P1.0
復制代碼
回復

使用道具 舉報

板凳
ID:357633 發表于 2019-4-29 23:26 | 只看該作者
//STC熱敏電阻溫度計程序
回復

使用道具 舉報

地板
ID:164602 發表于 2019-4-30 08:58 | 只看該作者
編譯沒問題啊,沒錯誤,沒警告。
回復

使用道具 舉報

5#
ID:17109 發表于 2019-4-30 23:20 來自手機 | 只看該作者
HC6800-ES-V2.0 發表于 2019-4-30 08:58
編譯沒問題啊,沒錯誤,沒警告。

師博你好,把編譯好的代碼打包上傳看看
回復

使用道具 舉報

6#
ID:17109 發表于 2019-4-30 23:28 來自手機 | 只看該作者
angmall 發表于 2019-4-29 19:07
STC單片機熱敏電阻溫度計程序編譯能通過

linking...

師博程序有問題嗎,打包上傳看看
回復

使用道具 舉報

7#
ID:155507 發表于 2019-5-1 08:09 | 只看該作者
ll13536121668 發表于 2019-4-30 23:28
師博程序有問題嗎,打包上傳看看

打包上傳, 編譯通過

STC熱敏電阻溫度計程序.zip

56.29 KB, 下載次數: 32

STC熱敏電阻溫度計程序

回復

使用道具 舉報

8#
ID:17109 發表于 2019-5-1 09:50 來自手機 | 只看該作者
ll13536121668 發表于 2019-4-30 23:28
師博程序有問題嗎,打包上傳看看

能通過,有看過程序還有其他問題嗎?
回復

使用道具 舉報

9#
ID:155507 發表于 2019-5-1 14:05 | 只看該作者
ll13536121668 發表于 2019-5-1 09:50
能通過,有看過程序還有其他問題嗎?

你好!這個要看你的硬件電路了,每種電路程序完全不一樣
回復

使用道具 舉報

10#
ID:17109 發表于 2019-5-3 16:32 | 只看該作者
angmall 發表于 2019-5-1 14:05
你好!這個要看你的硬件電路了,每種電路程序完全不一樣

我還有一個程序須要師博看看,別人能用Keil uVision 4生成帶有可用的代碼,   自己都是編譯 失敗,看看這個程序你能編譯通過嗎?
回復

使用道具 舉報

11#
ID:17109 發表于 2019-5-3 16:36 | 只看該作者
我試過這個是編譯不通過的,

12864計算器仿真 代碼.rar

61.12 KB, 下載次數: 10

回復

使用道具 舉報

12#
ID:213173 發表于 2019-5-3 21:07 | 只看該作者
ll13536121668 發表于 2019-5-3 16:36
我試過這個是編譯不通過的,

把<zm.h>內ASCII字模的數據表復制到computer.c文件中,在computer.c文件中注釋掉//#include<zm.h>即可

  1. #include<reg52.h>
  2. #include<intrins.h>
  3. //#include<zm.h>
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. sbit en=P3^0;
  7. sbit rw=P3^1;
  8. sbit rs=P3^2;
  9. sbit cs2=P3^3;
  10. sbit cs1=P3^4;
  11. sbit rst=P3^5;
  12. // ------------------  ASCII字模的數據表 ------------------------ //
  13. // 碼表從0x20~0x7e                                                //
  14. // 字庫: F:\BaiduNetdiskDownload\常用輔助開發工具\lcd漢字取模軟   //
  15. // 件\Asc5x8E.dot 縱向取模下高位                                  //
  16. // -------------------------------------------------------------- //
  17. uchar code nAsciiDot[] =              // ASCII
  18. {
  19.         0x3E,0x51,0x49,0x45,0x3E,0x00, // -0-
  20.         0x00,0x42,0x7F,0x40,0x00,0x00, // -1-
  21.         0x62,0x51,0x49,0x49,0x46,0x00, // -2-
  22.         0x21,0x41,0x49,0x4D,0x33,0x00, // -3-
  23.         0x18,0x14,0x12,0x7F,0x10,0x00, // -4-
  24.         0x27,0x45,0x45,0x45,0x39,0x00, // -5-
  25.         0x3C,0x4A,0x49,0x49,0x31,0x00, // -6-
  26.         0x01,0x71,0x09,0x05,0x03,0x00, // -7-
  27.         0x36,0x49,0x49,0x49,0x36,0x00, // -8-
  28.         0x46,0x49,0x49,0x29,0x1E,0x00, // -9-
  29.         0x22,0x14,0x08,0x14,0x22,0x00, // -*-
  30.         0x08,0x08,0x7F,0x08,0x08,0x00, // -+-
  31.         0x08,0x08,0x08,0x08,0x08,0x00, // ---
  32.         0x08,0x08,0x2a,0x08,0x08,0x00, // -/-
  33.         0x14,0x14,0x14,0x14,0x14,0x00, // -=-
  34.         0x02,0x01,0x59,0x05,0x02,0x00, // -?-
  35. };
  36. uchar key,wei=4,hang=0,k=0;
  37. unsigned long a1=0,a2=0,count=0;
  38. void wc(uchar cmd)
  39. {
  40.         _nop_();
  41.         rs=0;
  42.         rw=0;
  43.         en=1;
  44.         P2=cmd;
  45.         _nop_();
  46.         en=0;
  47. }
  48. void wd(uchar dat)
  49. {
  50.         _nop_();
  51.         rs=1;
  52.         rw=0;
  53.         en=1;
  54.         P2=dat;
  55.         _nop_();
  56.         en=0;
  57. }
  58. void delay(uchar ms)
  59. {
  60.         uchar i,j;
  61.         for(i=ms;i>0;i--)
  62.                 for(j=113;j>0;j--);
  63. }
  64. void set(uchar line,uchar col)
  65. {
  66.         line=line|0xb8;
  67.         col=col|0x40;
  68.         wc(col);
  69.         wc(line);
  70. }
  71. void clean()
  72. {
  73.         uchar i,j,k=0;
  74.         rst=0;
  75.         delay(10);
  76.         rst=1;
  77.         wc(0xc0);//設置顯示起始行11xxxxxx
  78.         wc(0x3f);//00111111顯示開,00111110顯示關
  79.         cs1=0,cs2=0;
  80.         set(0,0);
  81.         for(i=0;i<8;i++)
  82.                 {for(j=0;j<64;j++)
  83.                         wd(0x00);
  84.                         k++;
  85.                         set(k,0);
  86.                         }
  87.         a1=0;a2=0;count=0;k=0;
  88.         wei=4;
  89.         hang=0;
  90. }
  91. void write(uchar zi)
  92. {
  93.         uchar i;
  94.         if(wei<63)
  95.         {
  96.         cs1=0,cs2=1;
  97.         set(hang,wei);
  98.         for(i=0;i<6;i++)
  99.                 wd(nAsciiDot[zi++]);
  100.         wei=wei+6;
  101.         if(wei>59)
  102.         {cs1=1;
  103.         cs2=0;}
  104.         if(hang>7)
  105.         hang=0;
  106.         }
  107.         else
  108.         {
  109.         set(hang,wei-64);
  110.         for(i=0;i<6;i++)
  111.                 wd(nAsciiDot[zi++]);
  112.         wei=wei+6;
  113.         if(wei>123)
  114.         {wei=4;
  115.         hang++;
  116.         cs1=0;
  117.         cs2=1;}
  118.         if(hang>7)
  119.         hang=0;
  120.         }
  121. }
  122. void jis()
  123. {
  124.         switch(k)
  125.         {
  126.                 case 0:
  127.                         break;
  128.                 case 1:
  129.                         count=a2*a1;a1=count;break;
  130.                 case 2:
  131.                         count=a2+a1;a1=count;break;       
  132.                 case 3:
  133.                         count=a2-a1;a1=count;break;
  134.                 case 4:
  135.                         count=a2/a1;a1=count;break;
  136.                 default:
  137.                         break;
  138.         }
  139. }
  140.                        
  141. void rel()
  142. {       
  143.         uchar a=P1;
  144.         write(key);
  145.         while((a&0x0f)!=0x0f)
  146.         {
  147.                 a=P1;
  148.         }       
  149.         switch(key/6)
  150.         {
  151.                 case 0:
  152.                 case 1:
  153.                 case 2:
  154.                 case 3:
  155.                 case 4:
  156.                 case 5:
  157.                 case 6:
  158.                 case 7:
  159.                 case 8:
  160.                 case 9:
  161.                         a1=a1*10+key/6;break;
  162.                 case 10:
  163.                         jis();a2=a1;a1=0;k=1;break;
  164.                 case 11:
  165.                         jis();a2=a1;a1=0;k=2;break;
  166.                 case 12:
  167.                         jis();a2=a1;a1=0;k=3;break;
  168.                 case 13:
  169.                         jis();                                                                                                                        a2=a1;a1=0;k=4;break;
  170.                 case 14:
  171.                         {
  172.                                 switch(k)
  173.                                 {
  174.                                         case 1:
  175.                                                 count=a2*a1;break;
  176.                                         case 2:
  177.                                                 count=a2+a1;break;       
  178.                                         case 3:
  179.                                                 count=a2-a1;break;
  180.                                         case 4:
  181.                                                 count=a2/a1;break;
  182.                                         default:
  183.                                                 break;
  184.                                 }
  185.                                 if(count>999999999)
  186.                                         write(90);
  187.                                 else
  188.                                         if(count>99999999)
  189.                                                 {
  190.                                                  write(count/100000000*6);
  191.                                                  write(count%100000000/10000000*6);
  192.                                                  write(count%10000000/1000000*6);
  193.                                                  write(count%1000000/100000*6);
  194.                                                  write(count%100000/10000*6);
  195.                                                  write(count%10000/1000*6);
  196.                                                  write(count%1000/100*6);
  197.                                                  write(count%100/10*6);
  198.                                                  write(count%10*6);
  199.                                                  }
  200.                                         else
  201.                                         if(count>9999999)
  202.                                                 {
  203.                                                  write(count%100000000/10000000*6);
  204.                                                  write(count%10000000/1000000*6);
  205.                                                  write(count%1000000/100000*6);
  206.                                                  write(count%100000/10000*6);
  207.                                                  write(count%10000/1000*6);
  208.                                                  write(count%1000/100*6);
  209.                                                  write(count%100/10*6);
  210.                                                  write(count%10*6);
  211.                                                  }
  212.                                                  else
  213.                                         if(count>999999)
  214.                                                 {
  215.                                                  write(count%10000000/1000000*6);
  216.                                                  write(count%1000000/100000*6);
  217.                                                  write(count%100000/10000*6);
  218.                                                  write(count%10000/1000*6);
  219.                                                  write(count%1000/100*6);
  220.                                                  write(count%100/10*6);
  221.                                                  write(count%10*6);
  222.                                                  }
  223.                                                  else
  224.                                         if(count>99999)
  225.                                                 {
  226.                                                  write(count%1000000/100000*6);
  227.                                                  write(count%100000/10000*6);
  228.                                                  write(count%10000/1000*6);
  229.                                                  write(count%1000/100*6);
  230.                                                  write(count%100/10*6);
  231.                                                  write(count%10*6);
  232.                                                  }
  233.                                                  else
  234.                                         if(count>9999)
  235.                                                 {

  236.                                                  write(count%100000/10000*6);
  237.                                                  write(count%10000/1000*6);
  238.                                                  write(count%1000/100*6);
  239.                                                  write(count%100/10*6);
  240.                                                  write(count%10*6);
  241.                                                  }
  242.                                                  else
  243.                                         if(count>999)
  244.                                                 {
  245.                                                  write(count%10000/1000*6);
  246.                                                  write(count%1000/100*6);
  247.                                                  write(count%100/10*6);
  248.                                                  write(count%10*6);
  249.                                                  }
  250.                                                  else
  251.                                         if(count>99)
  252.                                                 {
  253.                                                  write(count%1000/100*6);
  254.                                                  write(count%100/10*6);
  255.                                                  write(count%10*6);
  256.                                                  }
  257.                                                  else
  258.                                         if(count>9)
  259.                                                 {
  260.                                                  write(count%100/10*6);
  261.                                                  write(count%10*6);
  262.                                                  }
  263.                                                  else
  264.                                                 {
  265.                                                  write(count%10*6);
  266.                                                  }
  267.                                         a1=count;k=0;
  268.                         }break;                       
  269.                 default:
  270.                         break;
  271.         }
  272. }

  273. void keyscan()
  274. {
  275.         uchar a;
  276.         P1=0xef;
  277.         a=P1;
  278.         a=a&0x0f;
  279.         switch(a)
  280.         {case 7:
  281.                 key=90;clean();break;
  282.         case 11:
  283.                 key=0;rel();break;
  284.         case 13:
  285.                 key=84;rel();break;
  286.         case 14:
  287.                 key=66;rel();break;
  288.         default:
  289.                 break;}
  290.        
  291.         P1=0xdf;
  292.         a=P1;
  293.         a=a&0x0f;
  294.         switch(a)
  295.         {case 7:
  296.                 key=6;rel();break;
  297.         case 11:
  298.                 key=12;rel();break;
  299.         case 13:
  300.                 key=18;rel();break;
  301.         case 14:
  302.                 key=72;rel();break;
  303.         default:
  304.                 break;}
  305.        
  306.         P1=0xbf;
  307.         a=P1;
  308.         a=a&0x0f;
  309.         switch(a)
  310.         {case 7:
  311.                 key=24;rel();break;
  312.         case 11:
  313.                 key=30;rel();break;
  314.         case 13:
  315.                 key=36;rel();break;
  316.         case 14:
  317.                 key=60;rel();break;
  318.         default:
  319.                 break;}
  320.        
  321.         P1=0x7f;
  322.         a=P1;
  323.         a=a&0x0f;
  324.         switch(a)
  325.         {case 7:
  326.                 key=42;rel();break;
  327.         case 11:
  328.                 key=48;rel();break;
  329.         case 13:
  330.                 key=54;rel();break;
  331.         case 14:
  332.                 key=78;rel();break;
  333.         default:
  334.                 break;}
  335. }
  336. void main()
  337. {
  338.         cs1=0;
  339.         cs2=0;
  340.         clean();
  341.         cs1=0;
  342.         while(1)
  343.         {keyscan();
  344.         delay(2);
  345.         }
  346.         }
  347.        
復制代碼

回復

使用道具 舉報

13#
ID:17109 發表于 2019-5-3 23:01 來自手機 | 只看該作者
wulin 發表于 2019-5-3 21:07
把內ASCII字模的數據表復制到computer.c文件中,在computer.c文件中注釋掉//#include即可

師傅修改好用壓縮包上傳好嗎,謝謝
回復

使用道具 舉報

14#
ID:213173 發表于 2019-5-4 08:42 | 只看該作者
ll13536121668 發表于 2019-5-3 23:01
師傅修改好用壓縮包上傳好嗎,謝謝

12864計算器.zip (20.09 KB, 下載次數: 17)
回復

使用道具 舉報

15#
ID:526827 發表于 2019-5-4 11:07 | 只看該作者
你好!這個要看你的硬件電路了,每種電路程序完全不一樣
回復

使用道具 舉報

16#
ID:17109 發表于 2019-5-5 10:34 | 只看該作者

#include<AT89X51.H>   //裝入AT89X51頭文件
#include<ir.h>                        //裝入紅外解碼程序
#include<24c02.H>                //裝入24c02讀寫程序
sbit key=P1^0;                        //定義按鍵IO
sbit led=P0^0;       //定義指示led
sbit rel=P0^1;                        //定義輸出控制腳

unsigned char kaver;  //定義kaver為輸出口狀態緩存
unsigned char iccdate,irdate;  //定義24c02數據和解碼數據

//延時10ms函數,用于開關消抖等
delay10ms()   
{
        unsigned char i,j;        
        for(i=20;i>0;i--)        
        for(j=248;j>0;j--);        
}

//學習紅外解碼并寫入24c02的函數
study()
{
    IR_IN();
        irdate=IRCOM[3];
    iccdate=ReadIIC(W_cmd,0x00,R_cmd);
        if(irdate!=iccdate)        //只在解碼結果與讀取結果不同時寫入24C02
        {
                if(irdate!=0)                        //防止沒有接收到紅外信號,IRCOM[3]置零時,誤寫入0
                {
                WP=0;
                WriIIC(W_cmd,0x00,irdate);
                delay10ms();
                WP=1;
                led=0;
                while(key==0);                //學習成功等待按鍵釋放,led停止閃動作為指示
                }
         }
}
//進入學習狀態時的led閃動函數
flash()
{
    unsigned char i;
          while(key==0)
          {
             led=~led;
                  for(i=50;i>0;i--)
                                  study();                 
          }
}
//按鍵模式識別函數
keymod()
{
        unsigned char m=0;
        while(key==0)                          //如果按鍵按下,開始對按鍵時間進行計數
        {               
                        delay10ms();                        //計數時間延時
                        m++;
                        delay10ms();                        //計數時間延時
                        if(m>=90)                                //如果計數次數大于90次,等于按鍵按下時間大于約5秒后,進入led閃動學習模式
                        {
                                m=0;
                                flash();
                        }
        }

         if(m<90)              //如果計數次數小于90,則按鍵作為開關使用
         {
                 m=0;
                kaver=~kaver;
         }

}
////////////////////主函數////////////////////////////////////
main()
{
        WP=1;                        //24c02寫保護
        while(1)
        {
                IRCOM[3]=0;
            IR_IN();                                // 讀4字節32位按鍵編碼 ,前16位用戶碼為IRCOM[1]+IRCOM[2],8位鍵值碼為IRCOM[3]
                irdate=IRCOM[3];                                        //8位鍵值反碼為IRCOM[4] 這里只調用 IRCOM[3]鍵值碼作為數據碼
                iccdate=ReadIIC(W_cmd,0x00,R_cmd);
                if(irdate==iccdate)                                                //如果解碼結果與24C讀取碼相同,kaver翻轉一次
                {
                        irdate=0;
                        kaver=~kaver;
                }

      if(key==0)        
                        keymod();
                rel=~kaver;
                led=kaver;
        }
}

回復

使用道具 舉報

17#
ID:17109 發表于 2019-5-5 10:36 | 只看該作者
師博你好看看這個學習型紅外遙控開關是一個c程序,少了<ir.h> <24c02.H>   看看能用Keil uVision 4編譯   通過生成代碼嗎?    修改好用壓縮包上傳,謝謝

學習型紅外遙控開關.rar

1.14 KB, 下載次數: 8

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久综合久色欧美综合狠狠 | 在线免费观看黄色av | 色一情一乱一伦一区二区三区 | 亚洲精品第一页 | 中文字字幕一区二区三区四区五区 | 国产无套一区二区三区久久 | 永久av| 精品九九 | 日本在线观看视频 | 日本福利在线观看 | 色姑娘综合网 | 天天射色综合 | 欧美成人影院在线 | 欧美精品一区二区三区在线 | 中文字幕在线看第二 | jizz在线免费观看 | 在线 丝袜 欧美 日韩 制服 | 国产视频福利一区 | 国产精品中文在线 | 亚洲高清视频一区二区 | 日韩成人在线免费观看 | 亚洲精品久久久久久久久久久久久 | 国产精品成人一区二区三区夜夜夜 | 午夜免费网站 | 成人欧美一区二区三区白人 | 国产一区高清 | 一区二区三区网站 | 日本不卡一区二区三区在线观看 | 欧美乱操| 国产91综合 | pacopacomama在线 | 99久久精品免费 | 毛片站 | 狠狠操婷婷 | 久久久久久国产精品mv | 日本天天操| 精品国产欧美一区二区 | 皇色视频在线 | 99热视| 免费成人高清在线视频 | 九九热精品视频 |