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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2715|回復: 0
收起左側

2019電賽f題獲獎代碼,stm32戰艦開發板編寫

[復制鏈接]
ID:588307 發表于 2020-3-24 16:31 | 顯示全部樓層 |閱讀模式
單片機源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"                           
  5. #include "lcd.h"  
  6. #include "key.h"  
  7. #include "beep.h"
  8. #include "w25qxx.h"   
  9. #include "ff.h"  
  10. #include "exfuns.h"   
  11. #include "text.h"
  12. #include "2214.h"
  13. #include "myiic.h"
  14. #define count_t 35                       //紙張上限

  15. u8 w=0,K;
  16. int main(void)
  17. {        
  18.         delay_init();                     //延時函數初始化         
  19.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級
  20.         uart_init(115200);                 //串口初始化為115200        
  21.          LED_Init();                                          //LED初始化
  22.         KEY_Init();                                        //初始化按鍵
  23.         LCD_Init();                                           //初始化LCD   
  24.         font_init();        //漢字初始化
  25.         LCD_Clear(WHITE);           //屏幕清空
  26.         BEEP_Init();         //蜂鳴器初始化
  27.         IIC_Init();          //IIC通訊
  28.         InitMultiFDC2214(); //多通道設置
  29.         POINT_COLOR=BLUE;
  30.         Show_Str(120,30,240,24,"2019年 電子設計大賽",24,0);
  31.         Show_Str(140,98,200,24,"紙張計數顯示裝置",24,0);
  32.         POINT_COLOR=BLACK;
  33.         LCD_DrawRectangle(20,70,460,150);     //畫表格
  34.         LCD_DrawRectangle(20,70,460,350);         
  35.         LCD_DrawRectangle(20,150,240,350);        
  36.         Show_Str(30,180,200,24,"通道1:",24,0);
  37.         Show_Str(30,240,200,24,"通道2:",24,0);
  38.         Show_Str(30,300,200,24,"當前模式為:",24,0);        
  39.         
  40.         Show_Str(250,180,200,24,"極板狀態:",24,0);
  41.         Show_Str(250,240,200,24,"紙張數:",24,0);
  42.         Show_Str(250,300,200,24,"總重:",24,0);
  43.         
  44.         POINT_COLOR=RED;
  45.         LCD_ShowxNum(355,300,0,1,24,0);          //默認紙重
  46.         Show_Str(170,300,200,24,"待機",24,0);
  47.         
  48.         POINT_COLOR=BLACK;
  49.         Show_Str(90,380,300,24,"學習+檢測",24,0);     //KEY0
  50.         Show_Str(315,380,300,24,"紙重檢測",24,0); //KEY1
  51.         Show_Str(90,430,300,24,"進入學習",24,0);     //KEY2
  52.         Show_Str(315,430,300,24,"紙張規格",24,0); //KEY2
  53.         POINT_COLOR=RED;  
  54.         Show_Str(30,380,300,24,"KEY0:",24,0);            //學習模式
  55.         Show_Str(250,380,300,24,"KEY1:",24,0);            //重量檢測模式
  56.         Show_Str(30,430,300,24,"KEY2:",24,0);           
  57.         Show_Str(250,430,300,24,"KEY3:",24,0);
  58.         POINT_COLOR=BLACK;
  59.         Show_Str(30,480,300,24,"紙張規格",24,0);        //紙張規格
  60.         Show_Str(30,530,300,24,"重量",24,0);
  61.         Show_Str(30,580,300,24,"厚度",24,0);
  62.         while(1)
  63.         {
  64.                 u8 key;
  65.                 FDC2214Check();                  //檢測系統工作狀態
  66.                 just_test();        //顯示通道值                                       
  67.                 delay_ms(10);               
  68.                 key = KEY_Scan(0);     //獲得鍵值
  69.                
  70.                 if(key == KEY0_PRES)                //進入學習模式
  71.                 {
  72.                         StudyMode();//學習模式
  73.                         K++;
  74.                 POINT_COLOR=BLACK;
  75.                 Show_Str(30,680,300,24,"K 按下次數:",24,0);
  76.                 POINT_COLOR=RED;
  77.                 LCD_ShowxNum(170,680,K,1,24,0);
  78.                 }
  79.          }
  80. }

  81. /***********************學習模式***********************/

  82. u16 StudyMode()//獲取數據,計算
  83. {
  84.                 u8 keyd,Count;
  85.                 double Ch1,Ch2;
  86.                 int i,j;                                                           //獲取數據,計算
  87.                 static        double ab[4][count_t]                                         /*分別對應一通道左值右值二通道左值右值*/;
  88.                 long double sum1 = 0,sum2 = 0,a[2][count_t] = {0};
  89.                 double adf[2][(count_t-1)]                                            /*對應臨時差值*/;
  90.                 keyd=KEY_Scan(1);
  91.                 POINT_COLOR=BLACK;
  92.                 for(i = 0;i<count_t;)
  93.                 {
  94.                         keyd=KEY_Scan(0);
  95.                         if(keyd==KEY0_PRES)                  //按鍵KEY0按下錄入數據
  96.                         {  
  97.                                 K++;        
  98.                                 POINT_COLOR=BLACK;
  99.                                 Show_Str(30,680,300,24,"K 按下次數:",24,0);
  100.                                 POINT_COLOR=RED;
  101.                                 LCD_ShowxNum(170,680,K,1,24,0);                                
  102.                                 for(j=0;j<100;j++)                 //取平均值
  103.                                 {
  104.                                         sum1= sum1+ReadRegfdc2214(0x02);//讀取的通道1的值
  105.                                         sum2= sum2+ReadRegfdc2214(0x04);//讀取的通道2的值
  106.                                 }
  107.                                 a[0][i]=sum1/100;
  108.                                 a[1][i]=sum2/100;
  109.                                 
  110.                                 POINT_COLOR=BLACK;  
  111.                                 Show_Str(170,300,200,24,"學習",24,0);
  112.                                 Show_Str(160,500,200,24,"正在學習",24,0);
  113.                                 Show_Str(30,530,200,24,"學習次數:",24,0);
  114.                                 Show_Str(30,500,300,24,"學習狀態:",24,0);
  115.                                 POINT_COLOR=RED;
  116.                                 LCD_ShowxNum(100,180,a[0][i],8,24,0);               //通道一學習參數               
  117.                                 LCD_ShowxNum(100,240,a[1][i],8,24,0);               //通道二學習參數
  118.                                 LCD_ShowxNum(160,530,i+1,2,24,0);                     //學習次數
  119.                                 sum1 = 0;
  120.                                 sum2 = 0;
  121.                                 i++;
  122.                                 keyd = 0;                        
  123.                         }               
  124.                         delay_ms(1);
  125.                 }
  126.                 for(i=1;i<count_t;i++)
  127.                 {
  128.                         adf[0][i-1] = (a[0][i] - a[0][i-1])/2;
  129.                         adf[1][i-1] = (a[1][i] - a[1][i-1])/2;
  130.                 }
  131.                 ab[0][0] = a[0][0] - adf[0][0];
  132.                 ab[2][0] = a[1][0] - adf[1][0];
  133.                 for(i=1;i<count_t;i++)
  134.                 {
  135.                         ab[0][i] = a[0][i] - adf[0][i-1];
  136.                         ab[1][i-1] = a[0][i-1]+adf[0][i-1];
  137.                         ab[2][i]=a[1][i]-adf[1][i-1];
  138.                         ab[3][i-1]=a[1][i-1]+adf[1][i-1];
  139.                 }
  140.                 ab[1][count_t-1] = a[0][count_t-1]+adf[0][count_t-2];
  141.                 ab[3][count_t-1] = a[1][count_t-1]+adf[1][count_t-2];
  142.                 //上下限
  143. /******************************************************************************************************************************
  144. **********************************************分割線***************************************************************************
  145. ******************************************************************************************************************************/
  146.         Show_Str(150,500,300,24,"正在學習",24,0);
  147.                 while(1)                             //學習模式
  148.                         {
  149.                                 POINT_COLOR=RED;
  150.                                 Show_Str(150,500,300,24,"已完成學習",24,0);
  151.                                 keyd=KEY_Scan(0);
  152.                                 
  153.                                 
  154.                                 
  155.                                 if(keyd == KEY0_PRES)          // 錄入數值
  156.                                 {
  157.                                         K++;
  158.                                         POINT_COLOR=BLACK;
  159.                                         Show_Str(30,680,300,24,"K 按下次數:",24,0);
  160.                                         POINT_COLOR=RED;
  161.                                         LCD_ShowxNum(170,680,K,1,24,0);
  162.                                         Ch2 = ReadRegfdc2214(0x04);  //通道二
  163.                                         Ch1 = ReadRegfdc2214(0x02);  //通道一        
  164.                                         Count=0;
  165.                                         if((Ch1<1873) || (Ch2<1792))Count=0;                  //零張
  166.                                         for(i=0;i<count_t;i++)
  167.                                         {
  168.                                                 if(((ab[0][i]<Ch1)&&(Ch1<ab[1][i])) ||        ((ab[2][i]<Ch2)&&(Ch2<ab[3][i])))          //i張紙
  169.                                                 {
  170.                                                         Count = i+1;
  171.                                                         break;
  172.                                                 }
  173.                                         }
  174.                                         LCD_ShowxNum(350,240,Count,4,24,0);                          //顯示被測紙張數
  175.                                         delay_ms(500);
  176.                                         BEEP=1;                                         //發出蜂鳴聲
  177.                                         LED0=0;                                         //伴隨紅燈閃爍
  178.                                         delay_ms(500);
  179.                                         BEEP=0;
  180.                                         LED0=1;
  181.                                 }
  182.                                 
  183.                                 
  184.                                 
  185.                                 if(keyd == KEY2_PRES) //按下KEY2進行紙張標準重量調節 一共分為4擋
  186.                                 {        
  187.                                         u8 z;
  188.                                                 w++;                                       
  189.                                                 if(w==5)  w=0;
  190.                                         z=Count*PaperWeight(w); //計算后的紙張重
  191.                                         POINT_COLOR=BLACK;
  192.                                         LCD_ShowxNum(355,300,z,5,24,0);                     //紙重
  193.                                         LCD_ShowxNum(286,600,PaperWeight(w),3,24,0);        //顯示規格
  194.                                 }        
  195.                                 
  196.                                 
  197.                                 
  198.                 }
  199. }
復制代碼

所有資料51hei提供下載:
2019F紙張檢測程序.7z (1.26 MB, 下載次數: 42)
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久精品视频一区二区三区 | www.887色视频免费 | 精品欧美色视频网站在线观看 | 日本电影一区二区 | 中文字幕一区二区三区乱码图片 | 久久中文字幕一区 | sese视频在线观看 | 国产精品91视频 | 人人擦人人 | 成人在线精品视频 | 91视频免费 | 国产一区二区中文字幕 | 国产成人一区二区三区 | 日韩视频国产 | 欧美视频成人 | 国产在线高清 | 欧美久久久网站 | 亚洲精品久久 | 99精品免费视频 | 免费成人高清在线视频 | 欧美日韩综合精品 | 在线一区二区三区 | 中文字幕一区二区三区在线乱码 | 欧美一区二区三区在线视频 | 欧美一区二区三区日韩 | 婷婷综合在线 | 国产片侵犯亲女视频播放 | 在线看日韩| а_天堂中文最新版地址 | 欧美一区二区在线播放 | 日韩伦理一区二区三区 | 亚洲一区二区三区四区五区午夜 | 在线视频中文字幕 | 国产精品久久久久久久久久不蜜臀 | 国产高清免费 | 日本三级全黄三级三级三级口周 | 成人精品毛片国产亚洲av十九禁 | 一级片网站视频 | 国产在线97 | 欧美视频一区 | 国产精品国产三级国产播12软件 |