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

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

QQ登錄

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

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

2015屆藍(lán)橋杯答案

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:244223 發(fā)表于 2018-6-4 22:37 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
2015屆藍(lán)橋杯答案
單片機(jī)源程序如下:
  1. #include<stc15f2k60s2.h>
  2. #include "ds18b20.h"
  3. #include <ds1302.h>
  4. #define uchar unsigned char
  5. #define  uint unsigned int
  6.        
  7. uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};//小數(shù)點(diǎn) &0x7f

  8. extern uchar shijian[];
  9. /**********************定義的變量*******************************/
  10. uchar ten=0;
  11. bit led_shan=0;
  12. bit fla=0;
  13. bit S6=0;
  14. uchar cai=0;  // 0 時(shí)為按下  ;1時(shí)為常規(guī)

  15. uint num=0;
  16. uchar i;
  17. uchar jiange=1;
  18. uchar wendu;
  19. uchar save[10];
  20. uchar yi,er,san,si,wu,liu,qi,ba;
  21. /*************************定義的變量****************************/

  22. /******************函數(shù)聲明********************/
  23. void init();
  24. void keyscan();
  25. void Timer0Init();
  26. void delayms(int ms);
  27. void display1(uchar yi,uchar er);
  28. void display2(uchar san,uchar si);
  29. void display3(uchar wu,uchar liu);
  30. void display4(uchar qi,uchar ba);
  31. /******************函數(shù)聲明********************/
  32. void main()
  33. {
  34.         init();
  35.         ds1302_init();
  36.         Timer0Init();
  37.         yi=11;er=11;san=11;si=11;wu=11;liu=10;qi=0;ba=1;
  38.         while(1)
  39.         {
  40.                 if(cai==0)   //******** 常 態(tài) ***********
  41.                 {
  42.                         yi=11;er=11;san=11;si=11;wu=11;liu=10;
  43.                         qi=jiange/10;ba=jiange%10;
  44.                 }       
  45.                 else if(cai==1)  //S5  被按下  ,采集溫度
  46.                 {
  47.                         ds1302_get();  //顯示時(shí)鐘;
  48.                         yi=shijian[2]/10;er=shijian[2]%10;san=10;
  49.                         si=shijian[1]/10;wu=shijian[1]%10;liu=10;
  50.                         qi=shijian[0]/10;ba=shijian[0]%10;
  51.                        
  52.                                 if(shijian[0]%2==0)  //提示符閃爍
  53.                                 {
  54.                                         san=10;liu=10;
  55.                                 }
  56.                                 else
  57.                                 {
  58.                                         san=11;liu=11;
  59.                                 }                               
  60.                 }

  61.                 wendu=ds18b20_get();
  62.                 keyscan();
  63.                 display1(yi,er);
  64.                 display2(san,si);
  65.                 display3(wu,liu);
  66.                 display4(qi,ba);
  67.         }
  68. }
  69. void init()
  70. {
  71.         P2=0XA0;
  72.         P0=0X00;
  73.        
  74.         P2=0X80;  
  75.         P0=0XFF;
  76.        
  77.         P2=0XC0;  
  78.         P0=0XFF;               
  79.         P2=0XFF;                  
  80.         P0=0XFF;                  
  81. }
  82. void delayms(int ms)  
  83. {
  84.         int i,j;
  85.         for(i=ms;i>0;i--)
  86.                 for(j=845;j>0;j--);  
  87. }

  88. void Timer0Init(void)                //5毫秒@11.0592MHz
  89. {
  90.         AUXR |= 0x80;                //定時(shí)器時(shí)鐘1T模式
  91.         TMOD &= 0xF0;                //設(shè)置定時(shí)器模式
  92.         TL0 = 0x00;                //設(shè)置定時(shí)初值
  93.         TH0 = 0x28;                //設(shè)置定時(shí)初值
  94.         TF0 = 0;                //清除TF0標(biāo)志
  95.         TR0 = 1;                //定時(shí)器0開(kāi)始計(jì)時(shí)
  96.         ET0=1;EA=1;
  97. }
  98. void timer0() interrupt 1  //定時(shí)器0中斷
  99. {
  100.         num        ++;
  101.         if(cai==1)  //采集溫度開(kāi)始
  102.         {
  103.                 if(num==jiange*200)  //控制采集間隔
  104.                 {
  105.                         num=0;
  106.                   save[ten]=wendu;   //保存 溫度值
  107.                         ten++;
  108.                         if(ten==10)        //10個(gè)溫度讀完  令cai=2  led閃開(kāi)始  num此時(shí)為0
  109.                         {                  //顯示 溫度值  save[0]
  110.                                 cai=2;led_shan=1;ten=0;
  111.                                 yi=10;er=0;san=0;si=11;wu=11;liu=10;qi=save[0]/10;ba=save[0]%10;
  112.                         }
  113.                 }
  114.         }
  115.         if((cai==2)&&(num==200))  //led燈閃爍;
  116.         {
  117.                 num=0;                  //賦0
  118.                 if(led_shan==1)              
  119.                 {
  120.                         if(fla==0)
  121.                                 {fla=1;P2=0X80;P0=0XFE;}
  122.                         else if(fla==1)
  123.                                 {fla=0;P2=0X80;P0=0XFF;}
  124.                 }
  125.                 else if(led_shan==0)    //led 不閃時(shí)    依次顯示十個(gè)溫度值
  126.                 {
  127.                         yi=10;er=ten/10;san=ten%10;si=11;wu=11;liu=10;qi=save[ten]/10;ba=save[ten]%10;
  128.                         ten++;
  129.                         if(ten==10)  //顯示完成后歸0  以便S7按下
  130.                         {
  131.                                 ten=0;
  132.                                 cai=3;
  133.                         }
  134.                 }
  135.         }
  136. }
  137. void keyscan() //獨(dú)立按鍵
  138. {
  139.         if(P30==0)  //S7
  140.         {
  141.                 delayms(5);
  142.                 if(P30==0)  
  143.                 {
  144.                         if(cai==3)  //返回初值
  145.                          cai=0;
  146.                 }
  147.                 while(!P30);
  148.         }
  149.         else if(P31==0) //S6
  150.         {
  151.                 delayms(5);
  152.                 if(P31==0)
  153.                 {
  154.                         if(cai==2)
  155.                         {
  156.                           led_shan=0;    //關(guān)led
  157.                                 P2=0X80;
  158.                                 P0=0XFF;
  159.                         }
  160.                 }
  161.                 while(!P31);
  162.         }
  163.         else if(P32==0)//S5
  164.         {
  165.                 delayms(5);
  166.                 if(P32==0)
  167.                 {
  168.                         if(cai==0)
  169.                         {
  170.                         cai=1;num=0;
  171.                         }
  172.                 }
  173.                 while(!P32);
  174.         }
  175.         else if(P33==0) //S4
  176.         {
  177.                 delayms(5);
  178.                 if(P33==0)
  179.                 {       
  180.                         if(cai==0)
  181.                         {
  182.                                 if(jiange==1)
  183.                                         jiange=5;
  184.                                 else if(jiange==5)
  185.                                         jiange=30;
  186.                                 else if(jiange==30)
  187.                                         jiange=60;
  188.                                 else if(jiange==60)
  189.                                         jiange=1;
  190.                   }
  191.                 }
  192.                 while(!P33);
  193.         }
  194. }

  195. void display1(uchar yi,uchar er)
  196. {
  197.         P2=0XC0;
  198.         P0=0X01;
  199.         P2=0XFF;
  200.         P0=tab[yi];
  201.         delayms(1);
  202.        
  203.         P2=0XC0;
  204.         P0=0X02;
  205.         P2=0XFF;
  206.         P0=tab[er];
  207.         delayms(1);
  208. }
  209. void display2(uchar san,uchar si)
  210. {
  211.         P2=0XC0;
  212.         P0=0X04;
  213.         P2=0XFF;
  214.         P0=tab[san];
  215.         delayms(1);
  216.        
  217.         P2=0XC0;
  218.         P0=0X08;
  219.         P2=0XFF;
  220.         P0=tab[si];
  221.         delayms(1);
  222. }
  223. void display3(uchar wu,uchar liu)
  224. {
  225.         P2=0XC0;
  226.         P0=0X10;
  227.         P2=0XFF;
  228.         P0=tab[wu];
  229.         delayms(1);
  230.        
  231.         P2=0XC0;
  232.         P0=0X20;
  233.         P2=0XFF;
  234.         P0=tab[liu];
  235.         delayms(1);
  236. }
  237. void display4(uchar qi,uchar ba)
  238. ……………………

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

所有資料51hei提供下載:
2015.rar (41.98 KB, 下載次數(shù): 11)


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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩一区二区视频在线观看 | 中文字幕影院 | 色接久久 | 伊人网国产 | 免费av一区二区三区 | 在线欧美亚洲 | 亚洲精品久久 | 一区二区三区视频在线免费观看 | 黄色一级毛片 | 欧美视频一级 | 黄色一级片视频 | 91亚洲国产成人精品一区二三 | 欧美综合在线视频 | 九九99精品| 久久久国产一区二区三区 | 女同久久另类99精品国产 | 欧美福利专区 | 91久久久久久久久久久久久 | 香蕉视频久久久 | 国产欧美精品一区二区色综合朱莉 | 亚洲欧美中文日韩在线v日本 | 精品成人在线视频 | 久久久久久国产精品 | 国产精品久久久久久一区二区三区 | 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | 天堂网av在线 | 国产一区不卡 | 久久国产精品久久久久久久久久 | 欧美在线高清 | av先锋资源| 国产日韩中文字幕 | 亚洲第一av | 欧美成人a∨高清免费观看 老司机午夜性大片 | 在线亚洲一区 | 99视频免费播放 | 国产精品区二区三区日本 | 五月婷婷视频 | 一区二区视屏 | 天天躁日日躁狠狠躁白人 | 午夜理伦三级理论三级在线观看 | 美女爽到呻吟久久久久 |