单片机蓝桥杯13年初赛程序
单片机源程序如下:
- #include <STC15F2K60S2.H>
- #include "iic.h"
- #include "ds1302.h"
- #include "sled.h"
- #include "key.h"
- unsigned char time[2]={8,30}, adc;
- unsigned char dat=50,datx,mark=0,PP=0,ex=0;
- unsigned char key1;
- void sled_da()
- {
- sled_Show(time[0]/10,0);
- sled_Show(time[0]%10,1);
- sled_Show(17,2);
- sled_Show(time[1]/10,3);
- sled_Show(time[1]%10,4);
- sled_Show(16,5);
- sled_Show(adc/10,6);
- sled_Show(adc%10,7);
- }
- void sled_da1()
- {
- sled_Show(17,0);
- sled_Show(17,1);
- sled_Show(16,2);
- sled_Show(16,3);
- sled_Show(16,4);
- sled_Show(16,5);
- sled_Show(dat/10,6);
- sled_Show(dat%10,7);
- }
- void automatic()
- {
- P0 = 0xfe;
- P2 = 0x80;
- P2 = 0x00;
- if(adc < dat)P0 = 0x10;
- else P0 = 0x00;
- P2 = 0xa0;
- P2 = 0x00;
- mark = 0;
- if(key1==6) mark=1;
- while(mark)
- {
- key1 = key_dat();
- sled_da1();
- if(key1==5)dat++;
- if(key1==4)dat--;
- if(dat>99) dat=1;
- if(dat<1) dat=99;
- if(key1==6)
- {
- write_E2(0x00,dat);
- mark = 0;
- }
- }
- }
- void manual()
- {
- P0 = 0xfd;
- P2 = 0x80;
- P2 = 0x00;
- P0 = 0x00;
- if(key1==5)PP=1;
- else if(key1==4)PP=0;
- P04 = PP;
- P2 = 0xa0;
- P2 = 0x00;
- if(key1==6)mark=~mark;
- if( mark)
- {
- if(adc < dat)P06 = 1;
- else P06 = 0;
- P2 = 0xa0;
- P2 = 0x00;
- }
- }
- void rwE2()
- {
- datx = red_E2(0x01);
- if(datx==66)dat = red_E2(0x00);
- if(datx!=66)write_E2(0x01,66);
- }
- void main()
- {
- ds1302_init();
- write_1302(time);
- rwE2();
- ADC_Init();
- while(1)
- {
- red_1302(time);
- adc = red_ADC()*99/255;
- sled_da();
- key1 = key_dat();
- if(key1==7)ex=~ex;
- if(ex) manual();
- else automatic();
- }
- }
复制代码
所有资料51hei提供下载:
13年.rar
(56.67 KB, 下载次数: 6)
|