#include "main.h"
uchar LED[] = {0,0,0,0,0,0,0,0};
uchar SMG[] = {16,16,16,16,16,16,16,16};
uchar dot[] = {0,0,0,0,0,0,0,0};
uchar key;
uint flag;
uint V_adc_old = 0;
uint V_adc = 0;
uint V_parameter = 0;
uchar count_num = 0;
uchar display_state = 0;
uchar led_flag1 = 0;
uchar led_flag2 = 0;
uint led_count = 0;
void data_pro()
{
if(display_state != 1)
at24c02_write(V_parameter/10,0x00);
if(V_adc < V_parameter)
{
flag++;
if(flag == 1)
led_count = count;
}
else
{
led_flag1 = 0;
flag = 0;
}
if(flag != 0 && count - led_count >= 5000)
led_flag1 = 1;
V_adc_old = V_adc;
V_adc = pcf8591_read(0x03);
V_adc = (int)(V_adc/51.0*100);
if(V_adc < V_adc_old)
{
if(V_adc == V_parameter)
count_num++;
}
}
void data_display()
{
SMG[0] = 18;
SMG[1] = 16;
SMG[2] = 16;
SMG[3] = 16;
SMG[4] = 16;
SMG[5] = V_adc/100;
SMG[6] = V_adc%100/10;
SMG[7] = V_adc%10;
dot[5] = 1;
}
void parameter_display()
{
SMG[0] = 19;
SMG[1] = 16;
SMG[2] = 16;
SMG[3] = 16;
SMG[4] = 16;
SMG[5] = V_parameter/100;
SMG[6] = V_parameter%100/10;
SMG[7] = V_parameter%10;
dot[5] = 1;
}
void count_display()
{
SMG[0] = 20;
SMG[1] = 16;
SMG[2] = 16;
SMG[3] = 16;
SMG[4] = 16;
SMG[5] = 16;
SMG[6] = count_num/10;
SMG[7] = count_num%10;
dot[5] = 0;
}
void led_pro()
{
(led_flag1)?(LED[0] = 1):(LED[0] = 0);
(count_num%2 == 1)?(LED[1] = 1):(LED[1] = 0);
(led_flag2 >=3)?(LED[2] = 1):(LED[2] = 0);
led(LED);
}
void smg_pro()
{
switch(display_state)
{
case 0:data_display();
break;
case 1:parameter_display();
break;
case 2:count_display();
break;
}
display(SMG,dot);
}
void key_pro()
{
key = key_scan();
if((key == 2 || key == 4) && display_state != 1)
led_flag2++;
if(key == 1 && display_state != 2)
led_flag2++;
switch(key)
{
case 1:
{
if(display_state == 2)
{
count_num = 0;
led_flag2 = 0;
}
}
break;
case 2:
{
if(display_state == 1)
{
led_flag2 = 0;
V_parameter = V_parameter - 50;
if(V_parameter > 500)
V_parameter = 500;
}
}
break;
case 3:display_state = (++display_state)%3;led_flag2 = 0;
break;
case 4:
{
if(display_state == 1)
{
led_flag2 = 0;
V_parameter = V_parameter + 50;
if(V_parameter > 500)
V_parameter = 0;
}
}
break;
}
}
void main()
{
init_all();
//at24c02_write(30,0x00);
V_parameter = at24c02_read(0x00)*10;
Timer0Init();
EA = 1;
while(1)
{
led_pro();
smg_pro();
key_pro();
data_pro();
}
}
第十一届蓝桥杯单片机程序(完整工程文件)
需积分: 5 140 浏览量
2024-03-17
19:25:23
上传
评论
收藏 74KB ZIP 举报
symzap
- 粉丝: 0
- 资源: 6
最新资源
- STC12C5A60S2单片机+LCD12864液晶显示手机菜单实例源码KEIL C51工程文件.zip
- !!!CSDN上唯一能拿得出手的ASP.NET MVC程序 ASP.NET MVC鞋类销售商城系统
- Screenshot_2024-06-01-10-11-15-96_a935a6faaffa07c582f2c3acde62ae6b.jpg
- STC12C5A60S2单片机+LCD12864液晶图片动画显示实例源码KEIL C51工程文件.zip
- Transmission是一种BitTorrent客户端,他支持了多种操作系统,并且支持多种Nas设备
- 单家独院式农房户型设计水电图.dwg
- STC12C5A60S2单片机+LCD12864俄罗斯方块源码程序实例源码KEIL C51工程文件.zip
- 编程IDE等宽字体,不错的
- FlowGeek FlowGeek是基于MVP架构的、遵循Material Design设计规范的开源中国社区客户端
- 单家独院式图纸农房户型设计90平09.20-t3.dwg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈