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

標(biāo)題: 單片機單詞記憶測試器Proteus仿真程序 [打印本頁]

作者: 1234567892    時間: 2020-5-30 00:37
標(biāo)題: 單片機單詞記憶測試器Proteus仿真程序
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #define uchar unsigned char
  2. #define uint  unsigned int

  3. #include <reg52.h>
  4. #include "asc.h"                   //ASCII字模表
  5. #include "12864.h"                //12864液晶屏底層驅(qū)動程序

  6. bit ERROR=1;                        //輸入字符錯誤標(biāo)志位
  7. bit result=0;                          //輸入結(jié)果對錯的標(biāo)志位,為0是正確
  8. bit verify=1;                        //已按了確認鍵后清零
  9. sbit ERR=P2^7;
  10. uchar correctNUM;                 //統(tǒng)計測試正確的單詞數(shù),即得分


  11. /*****************************************
  12. /** 存儲要測試的單詞,放在ROM中
  13. /****************************************/

  14. uchar code S[10][5]={                "tree ",    //樹
  15.                                      "rain ",    //雨
  16.                                      "water",  //水
  17.                                      "fly  ",     //飛
  18.                                      "go   ",   //去
  19.                                      "fish ",    //魚
  20.                                      "snow ",  //雪
  21.                                      "eat  ",    //吃
  22.                                      "rice ",    //米
  23.                                      "ice  ",    //冰
  24.                                     } ;

  25. uchar code         SL[10]={4,4,5,3,2,4,4,3,4,3};//存儲各測試單詞的長度

  26. uchar KeyNum[8];                       //儲存輸入的單詞

  27. /*****************************************
  28. /** 存儲鍵盤的字母值 ,放在ROM中
  29. /****************************************/

  30. uchar code tab1[6][5]={{'a','b','c','d','e'},
  31.                             {'f','g','h','i','j'},
  32.                             {'k','l','m','n','o'},
  33.                             {'p','q','r','s','t'},
  34.                                           {'u','v','w','x','y'},
  35.                                           {'z',1,2,3,4}};            
  36. //最后的 1234 鍵盤值為功能鍵, 1表示確定鍵,2表示不認識,3表示上一個,4表示下一個                                                         
  37. /*************************************************
  38. ** 鍵盤掃描程序

  39. *************************************************/

  40. unsigned char kbscan()          //鍵盤掃描
  41.         {
  42.         uchar hang,lie,key;                    //P1連行,P3連列
  43.         if(P1!=0xFF||P3!=0)
  44.         {
  45.                 switch(P1&0xFF)                //P1 掃行
  46.                         {
  47.                        
  48.                             case 0xFE:hang=5;break;//P1.0為第6行
  49.                                 case 0xFD:hang=4;break;//P1.1為第5行
  50.                                 case 0xFB:hang=3;break;//P1.2為第4行
  51.                                 case 0xF7:hang=2;break;//P1.3為第3行
  52.                                 case 0xEF:hang=1;break;//P1.4為第2行
  53.                                 case 0xDF:hang=0;break;//P1.5為第1行
  54.                         }
  55.                         P1=0;   //P1全低電平
  56.                     P3=0xFF;//P3全高電平
  57.                 switch(P3&0xFF)
  58.                         {
  59.                                 case 0xFE:lie=4;break; //P1.0為第5列
  60.                                 case 0xFD:lie=3;break; //P0.5為第4列
  61.                                 case 0xFB:lie=2;break; //P0.6為第3列
  62.                                 case 0xF7:lie=1;break; //P0.7為第2列
  63.                                    case 0xEF:lie=0;break; //P0.7為第1列
  64.                         }
  65.                 P1=0xFF; //P1全高電平
  66.                 P3=0;         //P3全低電平
  67.                 while(P1!=0xFF||P3!=0);                  //按鍵松開后才返回值
  68.                 key=tab1[hang][lie];
  69.         }
  70.         else
  71.                 key='_';
  72.         return (key);
  73.         }

  74. /************************************************************************
  75. /**    主函數(shù)
  76. /**   
  77. /**   
  78. /*************************************************************************/
  79. void main(void)
  80. {   
  81.   uchar hz_Num;                                        //用于計當(dāng)前測試的是第幾個詞,第一個為0
  82.         uchar temp[8];                                  //用于送液晶屏顯示的臨時變量
  83.         uchar iword=0,Nword=0;                  //輸入單詞字母下一個計數(shù)
  84.   LCD12864_init();                           //LCD12864初始化
  85.         ClearLCD();                                //清屏
  86.         en_disp(2,1,11,Asc,"INPUT WORD:",1); //在第2行 第1列
  87.   en_disp(4,1,1,Asc,">",1);                  //在第5行,第2列開始顯示
  88.         en_disp(6,0,8,Asc,"correct:",1);         //在第7行,第1列開始顯示
  89.         en_disp(6,80,5,Asc,"00/10",1);           //在第7行 第81列
  90.         P1=0xFF; //P1全高電平
  91.         P3=0;           //P3全低電平

  92.         while(1)
  93.         {
  94.                  KeyNum[iword]=kbscan();                   //掃描鍵盤的輸入值,沒按下時返回下橫線
  95.                  hz_disp(0,48,1,hz1+hz_Num*32,1);           //在第1行,第49列開始顯示測試的漢字
  96.                  temp[0]=(hz_Num+1)/10+0x30;           //將十進制數(shù)轉(zhuǎn)換為ASCII字符
  97.                  temp[1]=(hz_Num+1)%10+0x30;           //算出測試漢字的序號的第一位和第二位
  98.                  en_disp(0,20,1,Asc,":",1);        //在第1行 第21列         
  99.                  en_disp(0,4,2,Asc,temp,1);        //在第1行 第5列        顯示測試序號



  100.         if(KeyNum[iword]!='_')                      //鍵盤有按鍵按下
  101.         {
  102.          if(KeyNum[iword]==1)             //如果按下了確定鍵
  103.          {
  104.                 if(SL[hz_Num]==iword&&verify)   //輸入長度等于測試單詞的長度,則正確 ,verify表示按下了確認后有效一次
  105.                 {
  106.                 correctNUM+=1;
  107.                 if(correctNUM>10)
  108.                  {
  109.                  correctNUM=10; //最多10個正確的
  110.                  }
  111.                 verify=0;                                           //標(biāo)志位清零
  112.                 hz_Num++;                                     //測試下一個單詞
  113.                 if(hz_Num==10) hz_Num=0;                   //最多設(shè)10個單詞
  114.                 temp[0]=(correctNUM)/10+0x30;           //將十進制數(shù)轉(zhuǎn)換為ASCII字符
  115.                 temp[1]=(correctNUM)%10+0x30;       
  116.          //算出測試漢字的序號的第一位和第二位
  117.                 en_disp(6,80,2,Asc,temp,1);               //在第7行 第81列
  118.                 iword=0;
  119.                 Nword=0;
  120.                 en_disp(4,16,8,Asc,"        ",1);            //在第5行,第17列開始顯示
  121.                 }
  122.          }
  123.         else if(KeyNum[iword]==2||KeyNum[iword]==4)//如果按下了“不認識”或“下一個”鍵 ,直接跳到下一個單詞
  124.         {
  125.                 result=0;                                  //跳下一個時錯誤燈滅
  126.                 ERROR=0;
  127.                 hz_Num++;                                       //測試下一個單詞
  128.                 if(hz_Num==10) hz_Num=0;                   //最多設(shè)10個單詞
  129.                  iword=0;
  130.                 Nword=0;
  131.                 en_disp(4,16,8,Asc,"        ",1);           //在第5行,第17列開始顯示
  132.         }
  133.         else if(KeyNum[iword]==3)                  //如果按下了“上一個”鍵 ,直接跳到上一個單詞
  134.         {
  135.                 result=0;                                        //跳下一個時錯誤燈滅
  136.                 ERROR=0;
  137.                                                                                                                                                          //測試下一個單詞
  138.                 if(hz_Num==0) hz_Num=10;                           //最多設(shè)10個單詞
  139.                          hz_Num--;   
  140.                  iword=0;
  141.                  Nword=0;
  142.                  en_disp(4,16,8,Asc,"        ",1);                   //在第4行,第16列開始顯示
  143.         }
  144.         else  if(S[hz_Num][iword]==KeyNum[iword])  //輸入的字符與測試的標(biāo)準(zhǔn)字符比較
  145.          { temp[0]=KeyNum[iword];
  146.                 ERROR=0;                                            //正確就標(biāo)志位置0
  147.                 en_disp(4,Nword+16,1,Asc,temp,1);             //在第5行,第17列開始顯示
  148.                 iword++;
  149.          if(iword==8) iword=0;
  150.          Nword=iword*8;       
  151.                 verify=1;                               
  152.          }
  153.          else  
  154.          { temp[0]=KeyNum[iword];
  155.                 ERROR=1;                                        //錯誤就置1
  156.                 en_disp(4,Nword+16,1,Asc,temp,1);            //在第5行,第17列開始顯示
  157.                 iword++;
  158.          if(iword==8) iword=0;
  159.          Nword=iword*8;       
  160.          }
  161.          result=ERROR|result;                                //0表示結(jié)果正確
  162.          }         
  163.                 ERR=!result;                                          //錯誤指示燈
  164.         }
  165. }
復(fù)制代碼

所有資料51hei提供下載:
單詞記憶測試器.rar (81.15 KB, 下載次數(shù): 112)



作者: 51hei團團    時間: 2020-5-31 15:54
好資料,51黑有你更精彩!!!
作者: swustlx86    時間: 2020-6-1 01:40
好資料,51黑有你更精彩!!!
作者: wswq    時間: 2020-6-13 17:11

好資料,51黑有你更精彩!!!
作者: shdn    時間: 2020-11-2 19:00
仿真文件dsn在哪

作者: lushuo    時間: 2021-5-9 20:26


好資料,51黑有你更精彩
作者: 吾生也有涯    時間: 2021-8-30 08:17
好資料,51黑有你更精彩!!!
作者: 2047636538    時間: 2021-12-4 16:18
好資料,51黑有你更精彩!!!




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 91精品国产综合久久久久久丝袜 | 干干干操操操 | 欧美久久久久久 | 精品视频久久久久久 | 伊人亚洲 | 国产99久久精品一区二区永久免费 | 国产一区二区激情视频 | 日日日视频 | 国产综合在线视频 | 欧美无乱码久久久免费午夜一区 | 久久精品一区二区三区四区 | 久久国产精品99久久久大便 | 午夜影院在线观看 | 国产精品精品久久久 | 精品粉嫩超白一线天av | 日韩欧美综合在线视频 | 综合色在线 | 91中文字幕在线观看 | www.伊人.com| 久久精品国产久精国产 | 亚洲三级av | 午夜男人天堂 | av在线播放网 | 最近日韩中文字幕 | 99在线视频观看 | 人人亚洲 | 国产一区视频在线 | 国产第一区二区 | 精品欧美一区二区三区久久久小说 | 一区二区三区亚洲 | 人人干人人干人人干 | 国产一区二区精品 | 亚洲精品自在在线观看 | 国产精品视频一区二区三区 | 日本免费在线 | 黄色片免费在线观看 | 偷拍第一页 | 亚洲精品第一 | 伊色综合久久之综合久久 | 99色综合 | 中文字幕高清av |