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

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

QQ登錄

只需一步,快速開始

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

STC15F204EA單片機(jī)+NTC熱敏電阻+ds1302+數(shù)碼管顯示時(shí)鐘源碼

  [復(fù)制鏈接]
ID:55211 發(fā)表于 2018-10-19 11:57 | 顯示全部樓層 |閱讀模式
如有雷同請(qǐng)莫怪,高手請(qǐng)不要飄過(guò)本人就是懶蟲硬件很隨便
一個(gè)用單片機(jī)adc+ntc熱敏電阻構(gòu)成的時(shí)鐘電路分享

制作出來(lái)的實(shí)物圖如下:
23284771789745949.jpg 233451634026181101.jpg 489334760998475537.jpg 586061746574192568.jpg

電路原理圖如下:
0.png

單片機(jī)源程序如下:
  1. #include"reg52.h"
  2. #include"ds1302.h"
  3. #include"intrins.h"
  4. //#include"EEP.h"
  5. #define uchar unsigned char
  6. #define uint unsigned int
  7. #define on 1
  8. #define off 0                        
  9. #define NOP(N)  NOP##N()
  10. sfr ADC_CONTR   =   0xBC;           //ADC控制寄存器
  11. sfr ADC_RES     =   0xBD;           //ADC高8位結(jié)果
  12. sfr ADC_RESL    =   0xBE;           //ADC低2位結(jié)果
  13. sfr P1ASF       =   0x9D;           //P1口第2功能控制寄存器
  14. uint get_temperature(uint adc);
  15. void Get_Temp(void);

  16. //段碼位選
  17. sbit G1= P3^4;
  18. sbit G2= P3^5;
  19. sbit G3= P3^6;
  20. sbit G4= P3^7;
  21. //按鍵定義
  22. sbit set=P3^0;
  23. sbit jia=P3^1;
  24. sbit zh=P3^3;                                        // 顛倒開關(guān)
  25. #define N 8                                                        //ADC采樣使用遞推平均濾波算法,采樣次數(shù)

  26. unsigned int  Temp_Buf[N+1];                //采樣數(shù)組
  27. unsigned char ADCcount;                                //數(shù)碼管顯示計(jì)數(shù)變量,ADC采樣次數(shù)變量
  28. uchar tab[4]={0};                                        //顯示緩存
  29. unsigned int temp[3];
  30. #define FOSC 11059200L

  31. #define T1MS (65536-FOSC/12/33)                        //12T模式           30MS


  32. sfr AUXR = 0x8e;                                                //Auxiliary register
  33. sbit P10 = P1^0;          //調(diào)用鬧鐘用
  34. sfr P1M0        =   0x92;
  35. sfr P1M1        =   0x91;

  36. bit nf=0;                //鬧鐘開標(biāo)志:受水銀影響
  37. bit gk=0;                //光控開標(biāo)志
  38. bit nk=0;                //鬧鐘開標(biāo)志:受設(shè)置影響
  39. bit nx=1;                //鬧鐘響標(biāo)志:受時(shí)間影響
  40. bit ps=0;                //顛倒開關(guān)標(biāo)志
  41. bit flag1=1,
  42.         wflag1=0;
  43. int ld=1;
  44. char menu=0;
  45. char flag;


  46. //沒(méi)有小數(shù)點(diǎn)                 共陽(yáng)數(shù)碼管
  47. uchar table1[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
  48.                           0x80,0x90,0xff,0x88,0xc7};                          //c4
  49. //顯示小數(shù)點(diǎn)                                                           a   l
  50. uchar table2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,
  51.                           0x00,0x10,0xff,};
  52. //倒沒(méi)有小數(shù)點(diǎn)
  53. uchar table3[]={0xC0,0xCF,0xA4,0x86,0x8B,0x92,0x90,0xC7,
  54.                           0x80,0x82,0xff,};
  55. //倒顯示小數(shù)點(diǎn)
  56. uchar table4[]={0x40,0x4F,0x24,0x06,0x0B,0x12,0x10,0x47,
  57.                                                   0x00,0x02,0xff,0x70,};

  58. //延時(shí)ms
  59. void delay_ms(uchar ms){
  60.         uchar i;
  61.         while(ms--){
  62.                 for(i=0;i<123;i++);        
  63.         }
  64. }
  65. //溫度顯示
  66. void display_temperatue(){

  67.         G1 = off;
  68.         G2 = on;
  69.         G3 = on;
  70.         G4 = on;
  71.         P2 =  table1[tab[0]];
  72.         delay_ms(8);

  73.         G1 = on;
  74.         G2 = off;
  75.         G3 = on;
  76.         G4 = on;
  77.         P2 =  table1[tab[1]];
  78.         delay_ms(8);
  79.         
  80.         G1 = on;
  81.         G2 = on;
  82.         G3 = off;
  83.         G4 = on;
  84. //        P2 =  table3[tab[2]];
  85.         P2 =  table4[11];
  86.         delay_ms(8);

  87.         G1 = on;
  88.         G2 = on;
  89.         G3 = on;
  90.         G4 = on;
  91.         P2 =  table4[tab[3]];
  92. //        P2 =  table1[tab[3]];
  93.         delay_ms(5);
  94. }
  95. //時(shí)間顯示
  96. void display_time(){

  97.         G1 = off;
  98.         G2 = on;
  99.         G3 = on;
  100.         G4 = on;
  101.         P2 =  table1[tab[0]];
  102.         delay_ms(5);
  103.         if(flag>0){
  104.                 G1 = on;
  105.                 G2 = off;
  106.                 G3 = on;
  107.                 G4 = on;
  108.                 P2 =  table1[tab[1]];
  109.                 delay_ms(5);
  110.                
  111.                 G1 = on;
  112.                 G2 = on;
  113.                 G3 = off;
  114.                 G4 = on;
  115.                 P2 =  table3[tab[2]];
  116.                 delay_ms(5);        
  117.         
  118.         }else{
  119.                 G1 = on;
  120.                 G2 = off;
  121.                 G3 = on;
  122.                 G4 = on;
  123.                 P2 =  table2[tab[1]];
  124.                 delay_ms(5);        

  125.                 G1 = on;
  126.                 G2 = on;
  127.                 G3 = off;
  128.                 G4 = on;
  129.                 P2 =  table4[tab[2]];
  130.                 delay_ms(5);        
  131.         }
  132.         if(nx==0){
  133.                 if(flag>0){
  134.                         G1 = on;
  135.                         G2 = on;
  136.                         G3 = on;
  137.                         G4 = off;
  138.                         P2 =  table1[tab[3]];
  139.                         delay_ms(5);        
  140.                 }
  141.                 else{
  142.                         G1 = on;
  143.                         G2 = on;
  144.                         G3 = on;
  145.                         G4 = off;
  146.                         P2 =  table2[tab[3]];
  147.                         delay_ms(5);        
  148.                 }
  149.         }else{
  150.                         G1 = on;
  151.                         G2 = on;
  152.                         G3 = on;
  153.                         G4 = off;
  154.                         P2 =  table1[tab[3]];
  155.                         delay_ms(5);        
  156.         }


  157.         G1 = on;
  158.         G2 = on;
  159.         G3 = on;
  160.         G4 = on;         
  161. }
  162. //音頻調(diào)用
  163. void display_Audio(){

  164.         G1 = off;
  165.         G2 = on;
  166.         G3 = on;
  167.         G4 = on;
  168.         if(temp[1]>5){P2=0xcf;}else{P2=0xff;}
  169.         delay_ms(10);
  170.         if(temp[1]>30){P2=0xf9;}else{P2=0xff;}
  171.         delay_ms(10);
  172.         G1 = on;
  173.         G2 = off;
  174.         G3 = on;
  175.         G4 = on;
  176.         if(temp[1]>60){P2=0xcf;}else{P2=0xff;}
  177.         delay_ms(10);
  178.         if(temp[1]>90){P2=0xf9;}else{P2=0xff;}
  179.         delay_ms(10);

  180.         G1 = on;
  181.         G2 = on;
  182.         G3 = off;
  183.         G4 = on;
  184.         if(temp[1]>120){P2=0xf9;}else{P2=0xff;}
  185.         delay_ms(10);
  186.         if(temp[1]>150){P2=0xcf;}else{P2=0xff;}
  187.         delay_ms(10);

  188.         G1 = on;
  189.         G2 = on;
  190.         G3 = on;
  191.         G4 = off;
  192.         if(temp[1]>180){P2=0xcf;}else{P2=0xff;}
  193.         delay_ms(10);
  194.         if(temp[1]>210){P2=0xf9;}else{P2=0xff;}
  195.         delay_ms(10);
  196. }

  197. //鬧鐘用 ,光控用
  198. void display_alme(){
  199.         G1 = off;
  200.         G2 = on;
  201.         G3 = on;
  202.         G4 = on;
  203.         P2 =  table1[tab[0]];
  204.         delay_ms(8);

  205.         G1 = on;
  206.         G2 = off;
  207.         G3 = on;
  208.         G4 = on;
  209.         P2 =  table2[tab[1]];
  210.         delay_ms(8);
  211.         
  212.         G1 = on;
  213.         G2 = on;
  214.         G3 = off;
  215.         G4 = on;
  216.         P2 =  table4[tab[2]];
  217.         delay_ms(8);

  218.         G1 = on;
  219.         G2 = on;
  220.         G3 = on;
  221.         G4 = off;
  222.         P2 =  table2[tab[3]];
  223.         delay_ms(5);
  224.         G1 = on;
  225.         G2 = on;
  226.         G3 = on;
  227.         G4 = on;

  228. }
  229. /*
  230. //設(shè)計(jì)調(diào)用
  231. void display_set1(){

  232.         G1 = off;
  233.         G2 = on;
  234.         G3 = on;
  235.         G4 = on;
  236.         P2 =  table1[tab[0]];
  237.         delay_ms(8);

  238.         G1 = on;
  239.         G2 = off;
  240.         G3 = on;
  241.         G4 = on;
  242.         P2 =  table2[tab[1]];
  243.         delay_ms(8);
  244.         
  245.         G1 = on;
  246.         G2 = on;
  247.         G3 = off;
  248.         G4 = on;
  249.         P2 =  table4[tab[2]];
  250.         delay_ms(8);

  251.         G1 = on;
  252.         G2 = on;
  253.         G3 = on;
  254.         G4 = off;
  255.         P2 =  table1[tab[3]];
  256.         delay_ms(5);
  257.         G1 = on;
  258.         G2 = on;
  259.         G3 = on;
  260.         G4 = on;
  261. } */
  262. //設(shè)計(jì)調(diào)用
  263. void display_set(){

  264.         G1 = off;
  265.         G2 = on;
  266.         G3 = on;
  267.         G4 = on;
  268.         P2 =  table1[tab[0]];
  269.         delay_ms(8);

  270.         G1 = on;
  271.         G2 = off;
  272.         G3 = on;
  273.         G4 = on;
  274.         P2 =  table2[tab[1]];
  275.         delay_ms(8);
  276.         
  277.         G1 = on;
  278.         G2 = on;
  279.         G3 = off;
  280.         G4 = on;
  281.         P2 =  table4[tab[2]];
  282.         delay_ms(8);

  283.         G1 = on;
  284.         G2 = on;
  285.         G3 = on;
  286.         G4 = off;
  287.         P2 =  table1[tab[3]];
  288.         delay_ms(5);
  289.         G1 = on;
  290.         G2 = on;
  291.         G3 = on;
  292.         G4 = on;
  293. }
  294. //ADC初始化
  295. void ic_adc_init(){
  296.         ADC_CONTR = 0xE0;        //90T, ADC power on
  297.         delay_ms(5);

  298. }
  299. //讀ADC值
  300. uint get_adc_temp(uchar channel){

  301.         ADC_RES = 0;
  302.         ADC_RESL = 0;

  303.         ADC_CONTR = (ADC_CONTR & 0xe0) | 0x08 | channel;         //start the ADC

  304.         delay_ms(1);
  305.         while((ADC_CONTR & 0x10) == 0)        ;        //wait for ADC finish
  306.         ADC_CONTR &= ~0x10;                //清除ADC結(jié)束標(biāo)志
  307.         return        (((uint)ADC_RES << 2) | (ADC_RESL & 3));
  308. }
  309. void key(){

  310.         if(zh==0){ps=0;}else ps=1;
  311.         if(ps==0){
  312.                 if(set==0){
  313.                         delay_ms(10);
  314.                         if(set==0){
  315.                                 menu+=1;
  316.                                 if(menu==1)//        read_time();
  317.                                 if(menu==3){ read_nao();}
  318.                         //        if(menu==5)                        // IapProgramByte(IAP_ADDRESS+5,gk&0x01);           display_alme();//調(diào)顯示
  319.                         //        if(menu==6)                          //        IapProgramByte(IAP_ADDRESS+6,nk&0x01);  display_alme();//調(diào)顯示
  320.                                 if(menu==7)menu=0;         write_time();
  321.                                 while(set==0);
  322.                                 display_set();//調(diào)顯示               
  323.                         }
  324.                 }
  325.                 if(menu==1){ //調(diào)分鐘
  326.                         if(jia==0){
  327.                                 delay_ms(10);
  328.                                 if(jia==0){        
  329.                                 fen=fen+1;
  330.                                 if(fen == 0x5a)
  331.                                         fen = 0;
  332.                                 if((fen & 0x0f) >= 0x0a)
  333.                                         fen = (fen & 0xf0) + 0x10;        
  334.                                         while(jia==0);
  335.                                 }
  336.                         }        display_set();//調(diào)顯示
  337.                 }
  338.                 if(menu==2){   //小時(shí)
  339.                         if(jia==0){
  340.                                 delay_ms(10);
  341.                                 if(jia==0){
  342.                                         shi=shi+1;
  343.                                         if(shi == 0x24)
  344.                                                 shi = 0;
  345.                                         if((shi & 0x0f) >= 0x0a)
  346.                                                 shi = (shi & 0xf0) + 0x10;        
  347.                                                 while(jia==0);                                
  348.                                 }
  349.                         }display_set();//調(diào)顯示               
  350.                 }
  351.                 if(menu==3){        //分鐘
  352.                         if(jia==0){
  353.                                 delay_ms(10);
  354.                                 if(jia==0){        
  355.                                 nfen=nfen+1;
  356.                                 if(nfen == 0x5a)
  357.                                         nfen = 0;
  358.                                 if((nfen & 0x0f) >= 0x0a)
  359.                                         nfen = (nfen & 0xf0) + 0x10;        
  360.                                         while(jia==0);
  361.                                 }
  362.                         }        display_alme();//調(diào)顯示
  363.                 }
  364.                 if(menu==4){        //小時(shí)
  365.                         if(jia==0){
  366.                                 delay_ms(10);
  367.                                 if(jia==0){
  368.                                         nshi=nshi+1;
  369.                                         if(nshi == 0x24)
  370.                                                 nshi = 0;
  371.                                         if((nshi & 0x0f) >= 0x0a)
  372.                                                 nshi = (nshi & 0xf0) + 0x10;        
  373.                                                 while(jia==0);                                
  374.                                 }
  375.                         }display_alme();//調(diào)顯示               
  376.                 }
  377.                 if(menu==5){         //調(diào)光控
  378.                         if(jia==0){
  379.                                 delay_ms(10);
  380.                                 if(jia==0){
  381.                                        
  382.                                         while(jia==0);
  383.                                         gk=!gk;
  384.                                        
  385.                                 //   IapProgramByte(0x03,gk);
  386.                                 }
  387.                         } display_set();//調(diào)顯示
  388.                 }
  389.                 if(menu==6){         //調(diào)鬧鐘
  390.                         if(jia==0){
  391.                                 delay_ms(10);
  392.                                 if(jia==0){
  393.                                        
  394.                                         while(jia==0);
  395.                                         nk=!nk;
  396.                                 //        IapProgramByte(0x02,nk);
  397.                         
  398.                                 }
  399.                         }display_alme();//調(diào)顯示               
  400.                 }                                                                        
  401.         }
  402. }

  403. void main(){

  404. //        AUXR |= 0x80;                   //定時(shí)器0為1T模式
  405.         AUXR &= 0x7f;                   //定時(shí)器0為12T模式
  406.         TMOD = 0x00;                    //設(shè)置定時(shí)器為模式0(16位自動(dòng)重裝載)
  407.         TL0 = T1MS;                     //初始化計(jì)時(shí)值
  408.         TH0 = T1MS >> 8;

  409.     TR0 = 1;                        //定時(shí)器0開始計(jì)時(shí)
  410.     ET0 = 1;                        //使能定時(shí)器0中斷
  411.     EA = 1;

  412.         ic_adc_init();
  413.         init_ds1302_io();  
  414.         init_ds1302();
  415.         read_nao();

  416.         P1M0=0X00;
  417.         P1M1=0Xff;
  418.         while(1){
  419.         
  420.                 if(nk==1){if(shi==nshi && fen==nfen && nf==0){nx=0;}else{nx=1;}}  //開鬧鐘
  421.                 key();
  422.                 if(ps==0){
  423.                         if(menu==0){//主菜單
  424.                                 if(flag1==1){         //顯示時(shí)間
  425.                                         temp[2]=get_adc_temp(1);
  426.                                         if(gk==1){
  427.                                                                                        
  428.                                                 if(temp[2]<100) ld=5;
  429.                                                 if(temp[2]>100&&temp[2]<300)ld=10;
  430.                                                 if(temp[2]>300&&temp[2]<500)ld=50;
  431.                                                 if(temp[2]>500&&temp[2]<600)ld=80;
  432.                                                 if(temp[2]>600&&temp[2]<700)ld=100;
  433.                                                 if(temp[2]>700&&temp[2]<800)ld=120;
  434.                                                 if(temp[2]>900&&temp[2]<1000)ld=130;
  435.                                                 if(temp[2]>1000)ld=150;
  436.                                         }else ld=5;
  437.                                         read_time();
  438.                                         tab[0]=shi/16;
  439.                                         tab[1]=shi%16;
  440.                                         tab[2]=fen/16;
  441.                                         tab[3]=fen%16;
  442.                                         display_time();
  443.                                         delay_ms(ld);                                       
  444.                                 }
  445.                                 if(flag1==0)         //顯示溫度
  446.                                 {
  447.                                         if(wflag1==0){wflag1=1;}
  448.                                         Get_Temp();
  449.                                         display_temperatue();
  450.                                         delay_ms(ld);
  451.                                 }
  452.                         }else{          //設(shè)置菜單
  453.                
  454.                                 if(menu==1){ //調(diào)時(shí)間分
  455.                                                 tab[0]=shi/16;
  456.                                                 tab[1]=shi%16;
  457.                                         if(flag>0){
  458.                                                 tab[2]=fen/16;                                       
  459.                                                 tab[3]=fen%16;
  460.                                         }else{
  461.                                                 tab[2]=10;
  462.                                                 tab[3]=10;
  463.                                         }                        
  464.                                 }
  465.                                 if(menu==2){ //調(diào)時(shí)間時(shí)
  466.                                                 tab[2]=fen/16;
  467.                                                 tab[3]=fen%16;               
  468.                                         if(flag>0){
  469.                                                 tab[0]=shi/16;
  470.                                                 tab[1]=shi%16;

  471.                                         }else{
  472.                                                 tab[0]=10;
  473.                                                 tab[1]=10;
  474.                                         }        
  475.                                 }
  476.                                 if(menu==3){ //調(diào)鬧鐘分
  477.         
  478.                                                 tab[0]=nshi/16;
  479.                                                 tab[1]=nshi%16;
  480.                                         if(flag>0){
  481.                                                 tab[2]=nfen/16;                                       
  482.                                                 tab[3]=nfen%16;
  483.                                         }else{
  484.                                                 tab[2]=10;
  485.                                                 tab[3]=10;
  486.                                         }                        
  487.                                 }
  488.                                 if(menu==4){ //調(diào)鬧鐘時(shí)
  489.         
  490.                                         if(flag>0){
  491.                                                 tab[0]=nshi/16;
  492.                                                 tab[1]=nshi%16;
  493.                                         }else{
  494.                                                 tab[0]=10;
  495.                                                 tab[1]=10;
  496.                                         }        
  497.                                                 tab[2]=nfen/16;
  498.                                                 tab[3]=nfen%16;                        
  499.                                 }
  500.                                 if(menu==5){ //調(diào)光控
  501.                                                 tab[0]=11;
  502.                                                 tab[1]=gk;
  503.                                                 tab[2]=gk;
  504.                                                 tab[3]=gk;
  505.         
  506.                                 }
  507.                                 if(menu==6){ //調(diào)鬧鐘
  508.                                                 tab[0]=12;
  509.                                                 tab[1]=nk;
  510.                                                 tab[2]=nk;
  511.                                                 tab[3]=nk;                        
  512.                                 }
  513.                         }
  514.                 }
  515.                 if(ps==1){         //端口一定要設(shè)計(jì)置高阻輸入
  516.                         temp[1]=get_adc_temp(0);
  517.                         display_Audio();//
  518.                 }
  519.          }
  520. }
  521. char t;
  522. int t1;
  523. // Timer0 interrupt routine  定時(shí)0中斷
  524. void tm0_isr() interrupt 1 using 1
  525. {

  526.     P10 = ! P10;                    //將測(cè)試口取反
  527.         t++;
  528.         t1++;
  529.         if(t==20)
  530.         {
  531.                 t=0;
  532.                 wflag1=0;
  533.                 flag=!flag;
  534. //                if(nx==0)bell=!bell;
  535.         }
  536.         if(t1>0 && t1<350)flag1=1;
  537.         if(t1>350 && t1<430)flag1=0;
  538.         if(t1>430)t1=0;        
  539. }
  540. //NTC溫度
  541. void Get_Temp(void)
  542. {
  543.         unsigned char xx;
  544.         unsigned int sum,tempvalue;
  545.         sum = tempvalue =0;
  546.         Temp_Buf[N]=get_adc_temp(2);        //將ADC轉(zhuǎn)換結(jié)果放數(shù)組最高位
  547.         if( ++ADCcount < 8)                //采樣初期不使用濾波算法
  548.         {        
  549.                 for(xx=0;xx<N;xx++)        //準(zhǔn)備濾波算法的數(shù)據(jù)
  550.                 {
  551.                         Temp_Buf[xx]=Temp_Buf[xx+1];//所有數(shù)據(jù)循環(huán)左移
  552.                 }
  553.                 tempvalue=Temp_Buf[N];//采樣初期使用當(dāng)前采樣值
  554.         }
  555.         else         //只有采樣次數(shù)大于8次以后才使用濾波算法        
  556.         {
  557.                 ADCcount=8;        //采樣次數(shù)超過(guò)8次后,固定設(shè)置為8
  558.                 for(xx=0;xx<N;xx++)        //濾波算法
  559.                 {
  560.                         Temp_Buf[xx]=Temp_Buf[xx+1];//所有數(shù)據(jù)循環(huán)左移
  561.                         sum+=Temp_Buf[xx];        //求和
  562.                 }
  563.                 tempvalue=sum/N;                //求平均值               
  564.         }        //        
  565.         tempvalue=get_temperature(tempvalue);
  566. //        tab[0]=tempvalue/1000;               
  567.         tab[0]=tempvalue%1000/100;        //十位
  568.         tab[1]=tempvalue%100/10;//個(gè)位加小數(shù)點(diǎn)
  569. //        tab[3]=tempvalue%10;        //小數(shù)位
  570. }

  571. //        MF52E 10K at 25, B = 3534, ADC = 12 bits
  572. uint code temp_table[]={
  573.                 140,        //;-40        0
  574.                 149,        //;-39        1
  575.                 159,        //;-38        2
  576.                 168,        //;-37        3
  577.                 178,        //;-36        4
  578.                 188,        //;-35        5
  579.                 199,        //;-34        6
  580.                 210,        //;-33        7
  581.                 222,        //;-32        8
  582.                 233,        //;-31        9
  583.                 246,        //;-30        10
  584.                 259,        //;-29        11
  585.                 272,        //;-28        12
  586.                 286,        //;-27        13                        14
  587.                 301,        //;-26        14                        15
  588.                 317,        //;-25        15                        16
  589.                 334,
  590.                 351,
  591.                 369,
  592.                 387,
  593.                 406,
  594.                 425,
  595.                 445,
  596.                 466,
  597.                 487,
  598.                 509,
  599.                 528,   //
  600.                 555,
  601.                 579,
  602.                 603,
  603.                 628,
  604.                 654,
  605.                 681,
  606.                 709,
  607.                 738,
  608.                 768,
  609.                 799,
  610.                 824,        //;-4        36
  611.                 858,        //;-3        37                9
  612.                 893,        //;-2        38
  613.                 929,        //;-1        39
  614.                 965,        //;0        40
  615.                 1003,        //;1        41
  616.                 1041,        //;2        42
  617.                 1080,        //;3        43
  618.                 1119,        //;4        44
  619.                 1139,
  620.                 1160,        //;5        45
  621.                 1180,
  622.                 1201,        //;6        46
  623.         
  624.                 1243,        //;7        47
  625.                 1285,        //;8        48
  626.                 1328,        //;9        49
  627.                 1371,        //;10        50
  628.                 1414,        //;11        51
  629.                 1459,        //;12        52
  630.                 1503,        //;13        53
  631.                 1548,        //;14        54
  632.                 1593,        //;15        55
  633.                 1638,        //;16        56
  634.                 1684,        //;17        57
  635.                 1730,        //;18        58
  636.                 1775,        //;19        59
  637.                 1821,        //;20        60
  638.                 1867,        //;21        61
  639.                 1912,        //;22        62
  640.                 1958,        //;23        63
  641.                 2003,        //;24        64
  642.                 2048,        //;25        65
  643.                 2093,        //;26        66
  644.                 2137,        //;27        67
  645.                 2182,        //;28        68
  646.                 2225,        //;29        69
  647.                 2269,        //;30        70
  648.                 2312,        //;31        71
  649.                 2354,        //;32        72
  650.                 2397,        //;33        73
  651.                 2438,        //;34        74
  652.                 2479,        //;35        75
  653.                 2519,        //;36        76
  654.                 2559,        //;37        77
  655.                 2598,        //;38        78
  656.                 2637,        //;39        79
  657.                 2675,        //;40        80
  658.                 2712,        //;41        81
  659.                 2748,        //;42        82
  660.                 2784,        //;43        83
  661.                 2819,        //;44        84
  662.                 2853,        //;45        85
  663.                 2887,        //;46        86
  664.                 2920,        //;47        87
  665.                 2952,        //;48        88
  666.                 2984,        //;49        89
  667.                 3014,        //;50        90
  668.                 3044,        //;51        91
  669.                 3073,        //;52        92
  670.                 3102,        //;53        93
  671.                 3130,        //;54        94
  672.                 3157,        //;55        95
  673.                 3183,        //;56        96
  674.                 3209,        //;57        97
  675.                 3234,        //;58        98
  676.                 3259,        //;59        99
  677.                 3283,        //;60        100
  678.                 3306,        //;61        101
  679.                 3328,        //;62        102
  680.                 3351,        //;63        103
  681.                 3372,        //;64        104
  682.                 3393,        //;65        105
  683.                 3413,        //;66        106
  684.                 3432,        //;67        107
  685.          
  686. };
  687. /********************  計(jì)算溫度 ***********************************************/
  688. // 計(jì)算結(jié)果: 0對(duì)應(yīng)-40.0度, 400對(duì)應(yīng)0度, 625對(duì)應(yīng)25.0度, 最大1600對(duì)應(yīng)120.0度.
  689. // 為了通用, ADC輸入為12bit的ADC值.
  690. // 電路和軟件算法設(shè)計(jì): Coody
  691. /**********************************************/

  692. #define                D_SCALE                10                //結(jié)果放大倍數(shù), 放大10倍就是保留一位小數(shù)
  693. uint        get_temperature(uint adc)
  694. {
  695.         uint        code *p;
  696.         uint        i;
  697.         uchar        j,k,min,max;
  698.         
  699. //        adc = 1024 - adc;        //Rt接地
  700.         p = temp_table;
  701.         if(adc < p[0])                return (0xfffe);
  702.         if(adc > p[160])        return (0xffff);
  703.         
  704.         min = 0;                //-40度
  705.         max = 160;                //120度

  706.         for(j=0; j<5; j++)        //對(duì)分查表
  707.         {
  708.                 k = min / 2 + max / 2;
  709.                 if(adc <= p[k])        max = k;
  710.                 else                        min = k;
  711.         }
  712.                  if(adc == p[min])        i = min * D_SCALE;
  713.         else if(adc == p[max])        i = max * D_SCALE;
  714.         else        // min < temp < max
  715.         {
  716.                 while(min <= max)
  717.                 {
  718.                         min++;
  719.                         if(adc == p[min])        {i = min * D_SCALE;        break;}
  720.                         else if(adc < p[min])
  721.                         {
  722.                                 min--;
  723.                                 i = p[min];        //min
  724.                                 j = (adc - i) * D_SCALE / (p[min+1] - i);
  725.                                 i = min;
  726.                                 i *= D_SCALE;
  727.                                 i += j;
  728.                                 break;
  729.                         }
  730.                 }
  731.         }
  732.         return i;
  733. }
復(fù)制代碼

所有資料51hei提供下載:
ds1302 4seg NTC 2K .zip (88.88 KB, 下載次數(shù): 285)
Sheet1.zip (25.58 KB, 下載次數(shù): 208)





評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:413700 發(fā)表于 2018-11-4 23:03 | 顯示全部樓層
怎么有這么多的警告?


錯(cuò)在哪里?
警告.png

回復(fù)

使用道具 舉報(bào)

ID:420962 發(fā)表于 2018-11-5 12:11 | 顯示全部樓層
我tb買了個(gè)類似的,想要源碼改個(gè)功能
回復(fù)

使用道具 舉報(bào)

ID:55211 發(fā)表于 2018-11-5 13:52 | 顯示全部樓層
新佳影 發(fā)表于 2018-11-4 23:03
怎么有這么多的警告?

我看少添加ds1302.c文件
回復(fù)

使用道具 舉報(bào)

ID:65956 發(fā)表于 2018-11-14 14:32 | 顯示全部樓層
學(xué)習(xí)一下,借鑒一下
回復(fù)

使用道具 舉報(bào)

ID:233051 發(fā)表于 2018-11-14 19:59 來(lái)自手機(jī) | 顯示全部樓層
stc15f204EA下載程序沒(méi)反應(yīng)什么問(wèn)題線路正常,換了三個(gè)單片機(jī)都沒(méi)反應(yīng),用別的單片機(jī)89c52rc下載能用,下載器340,軟件用的6.86
回復(fù)

使用道具 舉報(bào)

ID:55211 發(fā)表于 2018-11-19 07:20 | 顯示全部樓層
CDCQQ 發(fā)表于 2018-11-14 19:59
stc15f204EA下載程序沒(méi)反應(yīng)什么問(wèn)題線路正常,換了三個(gè)單片機(jī)都沒(méi)反應(yīng),用別的單片機(jī)89c52rc下載能用,下載器3 ...

這個(gè)簡(jiǎn)單,你先寫個(gè)簡(jiǎn)單的代碼,試試 STC15F204EA單片機(jī),能不能正常工作,再試試顯示,一步一步來(lái)
回復(fù)

使用道具 舉報(bào)

ID:364937 發(fā)表于 2018-11-22 16:30 | 顯示全部樓層
感謝樓主分享,正式我需要的
回復(fù)

使用道具 舉報(bào)

ID:62973 發(fā)表于 2019-5-1 16:36 | 顯示全部樓層
下載學(xué)習(xí)一下;謝謝樓主分享!
回復(fù)

使用道具 舉報(bào)

ID:171746 發(fā)表于 2019-5-14 11:49 | 顯示全部樓層
下來(lái)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

ID:725316 發(fā)表于 2020-5-3 20:09 | 顯示全部樓層
樓主你好!擬照做一個(gè)電子鐘,下載了源程序但uV3編譯不通過(guò),請(qǐng)問(wèn)是什么問(wèn)題?
回復(fù)

使用道具 舉報(bào)

ID:725316 發(fā)表于 2020-5-3 20:32 | 顯示全部樓層
樓主您好,我是學(xué)習(xí)單片機(jī)和C語(yǔ)言的新手,我用uV3編譯您的源代碼總有錯(cuò)誤或警告,請(qǐng)問(wèn)有什么辦法嗎?
回復(fù)

使用道具 舉報(bào)

ID:231936 發(fā)表于 2020-5-27 13:29 | 顯示全部樓層
下載試試。
回復(fù)

使用道具 舉報(bào)

ID:767459 發(fā)表于 2020-7-9 15:18 | 顯示全部樓層
不錯(cuò),正是我想要的。
回復(fù)

使用道具 舉報(bào)

ID:669228 發(fā)表于 2020-9-22 11:56 | 顯示全部樓層
幫助很大,謝謝
回復(fù)

使用道具 舉報(bào)

ID:517951 發(fā)表于 2020-11-15 17:47 | 顯示全部樓層
不錯(cuò),值得學(xué)習(xí)。51hei有你更精彩!!
回復(fù)

使用道具 舉報(bào)

ID:232619 發(fā)表于 2021-9-5 10:04 | 顯示全部樓層
不錯(cuò),值得學(xué)習(xí)。51hei有你更精彩
回復(fù)

使用道具 舉報(bào)

ID:232619 發(fā)表于 2022-1-18 14:41 | 顯示全部樓層
感謝樓主分享,正式我需要的
回復(fù)

使用道具 舉報(bào)

ID:97678 發(fā)表于 2022-1-19 18:48 | 顯示全部樓層
不錯(cuò),好的。51hei有你更精彩!!
回復(fù)

使用道具 舉報(bào)

ID:1003243 發(fā)表于 2022-2-11 20:47 來(lái)自手機(jī) | 顯示全部樓層
要是能把星期幾也加上去循環(huán)顯示在溫度后面就好了
回復(fù)

使用道具 舉報(bào)

ID:703640 發(fā)表于 2022-9-11 16:58 | 顯示全部樓層
CK45NI)M3VKW3SZ%Z[~M`XR.png 請(qǐng)教一下STC15F204EA燒寫時(shí),IRC頻率如何選擇
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩一 | 久久久久国产精品一区二区 | 国产成人精品免费视频大全最热 | 午夜精品久久 | 91麻豆产精品久久久久久夏晴子 | 国产一伦一伦一伦 | 久久久久久综合 | 精品国产一区二区三区成人影院 | 亚洲欧美v | av永久| 久久久这里都是精品 | 国产日韩久久 | 国产精品日韩欧美一区二区 | 天天干天天色 | 91麻豆精品国产91久久久更新资源速度超快 | 久久综合久久自在自线精品自 | 中文字幕在线三区 | 99视频在线免费观看 | 亚洲一区二区三区桃乃木香奈 | 国产精品免费高清 | 久久精品国产一区二区三区不卡 | 国产乱码精品一区二三赶尸艳谈 | 九九免费| 黑人中文字幕一区二区三区 | 国产精品免费播放 | 欧美三级视频 | 久久久久久久久淑女av国产精品 | 免费一级毛片 | 午夜三区| 亚洲一区 中文字幕 | 亚洲一区二区久久 | 亚洲资源站 | 999精品视频 | 日韩精品一区二区三区久久 | 午夜成人免费视频 | 日韩欧美在线观看一区 | 久久乐国产精品 | 麻豆久久 | 91精品国产综合久久婷婷香蕉 | 亚洲综合视频 | 超碰美女在线 |