找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1774|回复: 0
收起左侧

单片机蓝桥杯13年初赛程序

[复制链接]
ID:265734 发表于 2018-7-12 22:30 | 显示全部楼层 |阅读模式
单片机蓝桥杯13年初赛程序

单片机源程序如下:
  1. #include <STC15F2K60S2.H>
  2. #include "iic.h"
  3. #include "ds1302.h"
  4. #include "sled.h"
  5. #include "key.h"
  6. unsigned char time[2]={8,30}, adc;
  7. unsigned char dat=50,datx,mark=0,PP=0,ex=0;
  8. unsigned char key1;

  9. void sled_da()
  10. {
  11.         sled_Show(time[0]/10,0);
  12.         sled_Show(time[0]%10,1);
  13.         sled_Show(17,2);
  14.         sled_Show(time[1]/10,3);
  15.         sled_Show(time[1]%10,4);
  16.         sled_Show(16,5);
  17.         sled_Show(adc/10,6);
  18.         sled_Show(adc%10,7);
  19. }

  20. void sled_da1()
  21. {
  22.         sled_Show(17,0);
  23.         sled_Show(17,1);
  24.         sled_Show(16,2);
  25.         sled_Show(16,3);
  26.         sled_Show(16,4);
  27.         sled_Show(16,5);
  28.         sled_Show(dat/10,6);
  29.         sled_Show(dat%10,7);
  30. }

  31. void automatic()
  32. {
  33.         P0 = 0xfe;
  34.         P2 = 0x80;
  35.         P2 = 0x00;
  36.         if(adc < dat)P0 = 0x10;
  37.         else P0 = 0x00;       
  38.         P2 = 0xa0;
  39.         P2 = 0x00;
  40.         mark = 0;
  41.         if(key1==6) mark=1;
  42.         while(mark)
  43.         {
  44.                 key1 = key_dat();
  45.                 sled_da1();
  46.                 if(key1==5)dat++;
  47.                 if(key1==4)dat--;
  48.                 if(dat>99) dat=1;
  49.                 if(dat<1) dat=99;       
  50.                 if(key1==6)
  51.                 {
  52.                         write_E2(0x00,dat);
  53.                         mark = 0;
  54.                 }       
  55.         }
  56. }

  57. void manual()
  58. {
  59.         P0 = 0xfd;
  60.         P2 = 0x80;
  61.         P2 = 0x00;
  62.         P0 = 0x00;
  63.         if(key1==5)PP=1;
  64.         else if(key1==4)PP=0;
  65.         P04 = PP;
  66.         P2 = 0xa0;
  67.         P2 = 0x00;
  68.         if(key1==6)mark=~mark;
  69.         if( mark)
  70.         {
  71.                 if(adc < dat)P06 = 1;
  72.                 else P06 = 0;       
  73.                 P2 = 0xa0;
  74.                 P2 = 0x00;
  75.         }
  76. }

  77. void rwE2()
  78. {
  79.         datx = red_E2(0x01);
  80.         if(datx==66)dat = red_E2(0x00);
  81.         if(datx!=66)write_E2(0x01,66);
  82. }

  83. void main()
  84. {
  85.         ds1302_init();
  86.         write_1302(time);
  87.         rwE2();
  88.         ADC_Init();
  89.         while(1)
  90.         {
  91.                 red_1302(time);       
  92.                 adc =  red_ADC()*99/255;
  93.                 sled_da();
  94.                 key1 = key_dat();
  95.                 if(key1==7)ex=~ex;
  96.                 if(ex) manual();
  97.                 else automatic();
  98.         }
  99. }
复制代码

所有资料51hei提供下载:
13年.rar (56.67 KB, 下载次数: 6)


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表