OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3959|回复: 1

利用正点原子精英板实现蓝桥杯嵌入式校赛

[复制链接]

1

主题

1

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2020-11-26
在线时间
7 小时
发表于 2021-3-22 15:49:39 | 显示全部楼层 |阅读模式
任务如下:
3.1 基本功能1)测量竞赛板上电位器 R37 输出的模拟电压信号 VR37,并通过 LCD 实现数据的实时显示。2)通过按键完成显示界面切换、参数设置等功能。3)通过 LED 指示灯完成状态指示功能。4)设计要求 电压数据刷新时间:≤0.5 秒。 按键响应时间:≤0.1 秒。 根据试题要求设计合理的电压数据采样频率,并对 ADC 采样到的电压数据进行有效的数字滤波。
3.2 显示功能1)数据界面通过液晶屏显示三个数据项,包括:界面名称 Data、电位器 R37 输出的电压值 V 和计时结果 T,电压值保留小数点后 2 位有效数字。图 2 数据界面图示2)参数界面通过液晶屏显示三个数据项,包括界面名称 Para、电压参数 Vmax 和Vmin。电压参数保留小数点后 1 位有效数字。图 3 参数界面图示显示说明;显示背景色(BackColor):黑色。显示前景色(TextColor):白色。请严格按照图示要求设计各个信息项的名称(区分字母大小写)和行列位置。计时结果以秒为单位,计时条件下数据实时刷新。 计时说明1)当电位器 R37 的输出电压上升到 Vmin 时,开始计时,直到电压上升到 Vmax结束计时。2)满足开始计时条件,计时时间重置为 0 秒,并以秒为单位开始计时。图 4 计时条件说明 1如图 4 所示的电压变化曲线中,从 t1 时刻开始以秒为单位计时,直到 t2 时刻触发停止计时条件,停止计时;t3 时刻重新触发计时(计时时间重置为 0),直到 t4 时刻停止计时。图 5 计时条件说明 2如图 5 所示的电压变化曲线中,从 t1 时刻开始以秒为单位计时,t2 时刻再次触发计时条件,重置计时时间为 0,直至 t3 时刻结束计时。3.3 按键功能1)B1:界面切换按键,切换选择数据界面或参数界面。2)B2:每次按下 B2 按键,Vmax 参数加 0.1V,当参数加到 3.3V,再次按下B2 后返回 0.0V。3)B3:每次按下 B3 按键,Vmin 参数加 0.1V,当参数加到 3.3V,再次按下B3 后返回 0.0V。4)当设备从参数界面退出,返回数据界面时,自动判断当前设置的参数是否合理,如参数合理则使之生效,如不合理,则弃用本次设置的参数,使用进入参数界面前的原参数。备注: B2 和 B3 按键仅在参数设置界面有效。 要求 Vmax≥ Vmin + 1V。 要求 Vmax、Vmin 可设置范围为 0.0V-3.3V。3.4LED 指示灯功能1)LD1,若当前触发了计时功能,且计时尚未结束,LD1 点亮,否则 LD1 熄灭。2)LD2,若通过按键设置的参数不合理,LD2 点亮,直至下次设置了正确的参数后熄灭。3.5 初始状态说明1)上电后,默认处于数据界面。2)上电默认参数:Vmax: 3.0VVmin: 1.0
  1. int main(void){   u16 adcx;float max1=0,min1=0;float max2=0,min2=0;float temp;delay_init();                     //延时函数初始化          
  2.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
  3.         uart_init(115200);                 //串口初始化为115200
  4.         LED_Init();                             //LED端口初始化
  5.         LCD_Init();                                 Adc_Init();                                  //ADC初始化
  6.         KEY_Init();TIM3_Int_Init(4999,7199);
  7.         while(1)
  8.         {if(0==a){BACK_COLOR=BLACK;POINT_COLOR=RED;//设置字体为红色
  9.                         LCD_ShowString(80,1,200,16,16,"Data");        LCD_ShowString(17,33,200,16,16,"V: .   V");        LCD_ShowString(17,50,200,16,16,"T:     s");        POINT_COLOR=BLUE;//设置字体为蓝色
  10. while(a ==0){key_nm=KEY_Scan(0);if(key_nm ==1){a = 1;key_nm=0;}adcx=Get_Adc_Average(ADC_Channel_1,10);temp=(float)adcx*(3.3/4096);adcx=temp;LCD_ShowxNum(30,33,adcx,1,16,0);//显示电压值(整数)
  11. temp-=adcx;temp*=1000;
  12.                                 LCD_ShowxNum(46,33,temp,3,16,0X80);////显示电压值(小数)
  13.                                 LCD_ShowxNum(30,50,nn1,3,16,0);//时间
  14.                                 LCD_ShowxNum(75,80,a,1,16,0);
  15.                                 delay_ms(50);}LCD_Clear(WHITE);}else if(a == 1){BACK_COLOR=BLACK;POINT_COLOR=RED;//设置字体为红色
  16. LCD_ShowString(80,1,200,16,16,"Para");        LCD_ShowString(17,33,200,16,16,"Vmax:  .     V");        LCD_ShowString(17,50,200,16,16,"Vmin:  .     V");       
  17.                         //显示提示信息
  18.                         POINT_COLOR=BLUE;//设置字体为蓝色
  19.                         while(a ==1){key_nm=KEY_Scan(0);if(key_nm ==1){a = 0;}else if(key_nm == 2){max = max + num;if(max > 3.4) max=0.0;}else if(key_nm == 3){min = min + num;if(min > 3.4) min=0.0;}max1= max;min1= min;max2 = max1;
  20.                                 LCD_ShowxNum(60,33,max2,1,16,0);//显示电压值(整数)
  21.                                 max1-=max2;max2*=1000;
  22.                                 LCD_ShowxNum(82,33,max2,3,16,0X80);////显示电压值(小数)
  23.                                 min2 = min1;
  24.                                 LCD_ShowxNum(60,50,min2,1,16,0);//显示电压值(整数)
  25.                                 min1-= min2;min2*=1000;LCD_ShowxNum(82,50,min2,3,16,0X80);////显示电压值(小数)LCD_ShowxNum(75,80,a,1,16,0);delay_ms(50)key_nm=0;}LCD_Clear(WHITE);}}

复制代码

最后,文件附带完整代码,需要的可以下载
sy.zip (8.68 MB, 下载次数: 13)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

26

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2021-7-13
在线时间
6 小时
发表于 2021-7-14 08:44:37 | 显示全部楼层
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 04:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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