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

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

QQ登錄

只需一步,快速開始

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

單片機(jī)迷你時(shí)鐘電路與程序

[復(fù)制鏈接]
ID:169534 發(fā)表于 2020-7-3 09:57 | 顯示全部樓層 |閱讀模式
51hei圖片20200703095713.png

單片機(jī)源程序如下:
  1. #include "STC15F2K.h"
  2. #include "intrins.h"
  3. #include <math.h>

  4. #define uchar unsigned char
  5. #define uint unsigned int

  6. sfr ADC_LOW2    =   0xBE;           //ADC低2位結(jié)果

  7. #define ADC_POWER   0x80            //ADC電源控制位
  8. #define ADC_FLAG    0x10            //ADC完成標(biāo)志
  9. #define ADC_START   0x08            //ADC起始控制位
  10. #define ADC_SPEEDLL 0x00            //540個(gè)時(shí)鐘
  11. #define ADC_SPEEDL  0x20            //360個(gè)時(shí)鐘
  12. #define ADC_SPEEDH  0x40            //180個(gè)時(shí)鐘
  13. #define ADC_SPEEDHH 0x60            //90個(gè)時(shí)鐘

  14. sbit S1=P3^3;
  15. sbit S2=P3^4;
  16. sbit S3=P3^5;
  17. sbit S4=P3^6;

  18. sbit bell=P3^0;

  19. sbit set=P1^0;
  20. sbit jia=P1^1;

  21. uchar dat1[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xf8,0X80,0X90,0xff,0xc6};
  22. uchar dat2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0X00,0X10,0xff};//有小數(shù)點(diǎn)

  23. uchar table[4]={1,2,3,4};
  24. uchar xg=0;
  25. char t=0;
  26. int t1;
  27. char ps=0;
  28. char flag=1;
  29. int sudu1=0,sudu2=0;

  30. unsigned int temp[2];
  31. int ld;
  32. extern void init_ds1302_io();
  33. extern void init_ds1302();
  34. extern void read_time();
  35. extern void write_time();
  36. extern void read_nao();

  37. extern uchar miao;
  38. extern uchar fen;
  39. extern uchar shi;

  40. extern uchar nfen;
  41. extern uchar nshi;

  42. void Delayms(uint t)
  43. {
  44.         uchar i;
  45.         while(t--)
  46.            for(i=0;i<100;i++);
  47. }

  48. void display()
  49. {
  50.         S1=1;
  51.         P2=dat1[table[0]];
  52.         Delayms(2);       

  53.         S1=0;S2=1;
  54.         if(flag==0)P2=dat2[table[1]];
  55.         if(flag==1)P2=dat1[table[1]];
  56.         Delayms(2);
  57.        
  58.         S2=0;S3=1;
  59.         P2=dat1[table[2]];       
  60.         Delayms(2);
  61.        
  62.         S3=0;S4=1;
  63.         P2=dat1[table[3]];
  64.         Delayms(2);       

  65.         S1=S2=S3=S4=1;
  66.         P2=0xff;
  67.         S1=S2=S3=S4=0;
  68.         Delayms(2);                                                       
  69. }

  70. void init()
  71. {
  72.     TMOD= 0x01;                                  
  73.     TL0 = (65536-20000)/256;        //設(shè)置定時(shí)初值
  74.     TH0 = (65536-20000)%256;        //設(shè)置定時(shí)初值
  75.     ET0 = 1;
  76.     TR0 = 1;
  77.     EA = 1;
  78. }
  79. char menu=0;
  80. bit nf=0;
  81. bit gk=0;
  82. void key()
  83. {
  84.         if(set==0)
  85.         {
  86.                 bell=0;
  87.                 menu++;
  88.                 if(menu==3){read_nao();}
  89.                 if(menu==7){menu=0;ET1 = 1;write_time();}
  90.                 while(set==0);       
  91.                 bell=1;                       
  92.         }

  93.         if(menu==1)
  94.         {
  95.                 if(jia==0)
  96.                 {
  97.                         bell=0;
  98.                         if(fen >= 0x60)
  99.                                 fen = 0;

  100.                         fen=fen+0x01;
  101.                         if((fen & 0x0f) >= 0x0a)
  102.                                 fen = (fen & 0xf0) + 0x10;
  103.                         while(jia==0);
  104.                         bell=1;
  105.                 }                       
  106.         }
  107.         if(menu==2)
  108.         {
  109.                 if(jia==0)
  110.                 {
  111.                         bell=0;
  112.                         shi+=0x01;
  113.                         if((shi & 0x0f) >= 0x0a)
  114.                                 shi = (shi & 0xf0) + 0x10;

  115.                         if(shi >= 0x24)
  116.                                 shi = 0;
  117.                         while(jia==0);
  118.                         bell=1;
  119.                 }               
  120.         }
  121.        
  122.         if(menu==3)        //鬧鐘
  123.         {
  124.                 if(jia==0)
  125.                 {
  126.                         bell=0;
  127.                         if(nfen >= 0x60)
  128.                                 nfen = 0;

  129.                         nfen=nfen+0x01;
  130.                         if((nfen & 0x0f) >= 0x0a)
  131.                                 nfen = (nfen & 0xf0) + 0x10;
  132.                         while(jia==0);
  133.                         bell=1;       
  134.                 }
  135.         }
  136.         if(menu==4)
  137.         {
  138.                 if(jia==0)
  139.                 {
  140.                         bell=0;
  141.                         nshi+=0x01;
  142.                         if((nshi & 0x0f) >= 0x0a)
  143.                                 nshi = (nshi & 0xf0) + 0x10;

  144.                         if(nshi >= 0x24)
  145.                                 nshi = 0;
  146.                         while(jia==0);
  147.                         bell=1;
  148.                 }       
  149.         }
  150.         if(menu==5)
  151.         {
  152.                 if(jia==0)
  153.                 {
  154.                         while(jia==0);
  155.                         nf=!nf;
  156.                 }       
  157.         }
  158.         if(menu==6)
  159.         {
  160.                 if(jia==0)
  161.                 {
  162.                         while(jia==0);
  163.                         gk=!gk;
  164.                 }       
  165.         }       
  166. }
  167. void InitADC()
  168. {
  169.           P1ASF = 0x03;                        //Open channels ADC function 0100 0000 p1.6使用AD功能
  170.         ADC_RES  = 0;                                    //Clear previous result
  171.         ADC_LOW2 = 0;
  172.           ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
  173. }
  174. void GetADCResult(unsigned char ch,unsigned int *value)
  175. {
  176.         ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
  177.     _nop_();                        //Must wait before inquiry
  178.     _nop_();
  179.     _nop_();
  180.     _nop_();
  181.     _nop_();                        //Must wait before inquiry
  182.     _nop_();
  183.     while(!(ADC_CONTR & ADC_FLAG));//Wait complete flag
  184.     ADC_CONTR &= ~ADC_FLAG;         //Close ADC

  185.         *value = 0;
  186.         *value = ADC_RES;
  187.         *value = ((*value)*4 + ADC_LOW2);                //Return ADC result.×¢êíμ?′????ò·μ??8??ADC?á1?
  188. }

  189. void ADC_convert(void)
  190. {
  191.         GetADCResult(0,&temp[0]);
  192.         temp[0] = (unsigned int) ( ( 3950.0 / ( 11.33657 + log( 6.04 * (float)temp[0] / ( 1024.0 - (float)temp[0] ) ) ) - 278.15) * 100 );
  193. }
  194. void main()
  195. {
  196.     init();       
  197.         InitADC();
  198.         init_ds1302_io();
  199.         init_ds1302();

  200.         read_nao();

  201.         P3M0=0xf8;P3M1=0x00;

  202.         P2M0=0xff;P2M1=0x00;

  203.         P1M0=0xff;P1M1=0x00;

  204.         P5M0=0x10;P5M1=0x00;
  205.         while(1)
  206.         {
  207.                 P1ASF = 0x00;
  208.                 key();
  209.                 P1ASF = 0x03;
  210.                 if(menu==0)
  211.                 {
  212.                         read_time();
  213.                         if(t1>20 && t1<25)
  214.                         {
  215.                                 ADC_convert();
  216.                                 flag=1;
  217.                                 table[0]=10;
  218.                                 table[1]=temp[0]/1000;
  219.                                 table[2]=temp[0]%1000/100;
  220.                                 table[3]=11;
  221.                         }
  222.                         if(t1>0 && t1<20)
  223.                         {
  224.                                 table[0]=shi/16;
  225.                                 table[1]=shi%16;
  226.                                 table[2]=fen/16;
  227.                                 table[3]=fen%16;
  228.                         }
  229.                         if(t1>25)t1=0;       
  230.                 }

  231.                 if(menu==1)
  232.                 {       
  233.                         if(flag>0)
  234.                         {
  235.                                 table[2]=fen/16;
  236.                                 table[3]=fen%16;
  237.                         }
  238.                         else
  239.                         {
  240.                                 table[2]=10;
  241.                                 table[3]=10;                               
  242.                         }
  243.                         table[0]=shi/16;
  244.                         table[1]=shi%16;                       
  245.                 }
  246.                 if(menu==2)
  247.                 {
  248.                         table[2]=fen/16;
  249.                         table[3]=fen%16;
  250.                         if(flag>0)
  251.                         {
  252.                                 table[0]=shi/16;
  253.                                 table[1]=shi%16;                               
  254.                         }
  255.                         else
  256.                         {
  257.                                 table[0]=10;
  258.                                 table[1]=10;       
  259.                         }
  260.                 }
  261.                 if(menu==3)
  262.                 {       
  263.                         if(flag>0)
  264.                         {
  265.                                 table[2]=nfen/16;
  266.                                 table[3]=nfen%16;
  267.                         }
  268.                         else
  269.                         {
  270.                                 table[2]=10;
  271.                                 table[3]=10;                               
  272.                         }
  273.                         table[0]=nshi/16;
  274.                         table[1]=nshi%16;                       
  275.                 }
  276.                 if(menu==4)
  277.                 {
  278.                         table[2]=nfen/16;
  279.                         table[3]=nfen%16;
  280.                         if(flag>0)
  281.                         {
  282.                                 table[0]=nshi/16;
  283.                                 table[1]=nshi%16;                               
  284.                         }
  285.                         else
  286.                         {
  287.                                 table[0]=10;
  288.                                 table[1]=10;       
  289.                         }
  290.                 }
  291.                 if(menu==5)
  292.                 {
  293.                         table[0]=nf;
  294.                         table[1]=nf;
  295.                         table[2]=nf;
  296.                         table[3]=nf;       
  297.                 }
  298.                 if(menu==6)
  299.                 {
  300.                         table[0]=gk;
  301. ……………………

  302. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
程序.rar (52.64 KB, 下載次數(shù): 8)
回復(fù)

使用道具 舉報(bào)

ID:737771 發(fā)表于 2021-6-20 11:56 | 顯示全部樓層
第215行 temp[0] = (unsigned int) ( ( 3950.0 / ( 11.33657 + log( 6.04 * (float)temp[0] / ( 1024.0 - (float)temp[0] ) ) ) - 278.15) * 100 ) 公式怎么來(lái)的
回復(fù)

使用道具 舉報(bào)

ID:737771 發(fā)表于 2021-6-20 11:57 | 顯示全部樓層
第215行 temp[0] = (unsigned int) ( ( 3950.0 / ( 11.33657 + log( 6.04 * (float)temp[0] / ( 1024.0 - (float)temp[0] ) ) ) - 278.15) * 100 )公式怎么來(lái)的
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区在线播放 | 国产成人精品午夜视频免费 | 久久成人免费视频 | 国产精品一区二区av | 成人在线观看免费 | 久久一视频 | 色网站入口 | 国产精品福利网站 | 欧美黄 片免费观看 | 亚洲黄色在线免费观看 | 国产在线一| 欧美国产一区二区 | 久久精品国产一区二区电影 | v亚洲| 日韩精品久久久 | 看a级黄色毛片 | 成人亚洲| 大学生a级毛片免费视频 | 亚洲一区二区中文字幕在线观看 | 中文字幕 视频一区 | 成人av一区| 久久精品免费看 | 亚洲视频一区二区三区 | 国产精品久久久久久av公交车 | 日韩一区二区免费视频 | 又爽又黄axxx片免费观看 | 国产清纯白嫩初高生在线播放视频 | 精品亚洲一区二区三区四区五区高 | 亚洲精品片 | 亚洲欧美在线一区 | 亚洲a网| 中文字幕日韩三级 | 久久久久久免费毛片精品 | 欧美日韩高清一区 | 国产精品日韩欧美一区二区三区 | 久久国产视频一区 | 在线亚洲免费视频 | 人人看人人射 | 国产精品久久久久久久午夜 | 天天拍天天操 | 欧美一区二区在线 |