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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4190|回復: 1
打印 上一主題 下一主題
收起左側

求助大神,c語言沒學好,單片機課程設計根本做不到啊

[復制鏈接]
跳轉到指定樓層
樓主
/************************************************************************
/**單片機單詞測試程序
/**設計一個以單片機為核心的單詞記憶測試器;
/** 實現單詞的錄入(為使程序具有可演示性,單詞不少于10個);
/**單詞用按鍵控制依次在屏幕上顯示,按鍵選擇認識還是不認識,
/**也可以直接進入下一個或者上一個;
/**單詞背完后給出正確率。
/*************************************************************************/

#define uchar unsigned char
#define uint  unsigned int

#include <reg52.h>
#include "asc.h"                   //ASCII字模表
#include "12864.h"                //12864液晶屏底層驅動程序

bit ERROR=1;                        //輸入字符錯誤標志位
bit result=0;                          //輸入結果對錯的標志位,為0是正確
bit verify=1;                        //已按了確認鍵后清零
sbit ERR=P2^7;
uchar correctNUM;                 //統計測試正確的單詞數,即得分
/*****************************************
/** 存儲要測試的單詞,放在ROM中
/****************************************/

uchar code S[10][5]={                "tree ",    //樹
                                     "rain ",    //雨
                                     "water",  //水
                                     "fly  ",     //飛
                                     "go   ",   //去
                                     "fish ",    //魚
                                     "snow ",  //雪
                                     "eat  ",    //吃
                                     "rice ",    //米
                                     "ice  ",    //冰
                                    } ;

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

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

/*****************************************
/** 存儲鍵盤的字母值 ,放在ROM中
/****************************************/

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

*************************************************/

unsigned char kbscan()          //鍵盤掃描
        {
        uchar hang,lie,key;                    //P1連行,P3連列
        if(P1!=0xFF||P3!=0)
        {
                switch(P1&0xFF)                //P1 掃行
                        {
                       
                            case 0xFE:hang=5;break;//P1.0為第6行
                                case 0xFD:hang=4;break;//P1.1為第5行
                                case 0xFB:hang=3;break;//P1.2為第4行
                                case 0xF7:hang=2;break;//P1.3為第3行
                                case 0xEF:hang=1;break;//P1.4為第2行
                                case 0xDF:hang=0;break;//P1.5為第1行
                        }
                        P1=0;   //P1全低電平
                    P3=0xFF;//P3全高電平
                switch(P3&0xFF)
                        {
                                case 0xFE:lie=4;break; //P1.0為第5列
                                case 0xFD:lie=3;break; //P0.5為第4列
                                case 0xFB:lie=2;break; //P0.6為第3列
                                case 0xF7:lie=1;break; //P0.7為第2列
                                   case 0xEF:lie=0;break; //P0.7為第1列
                        }
                P1=0xFF; //P1全高電平
                P3=0;         //P3全低電平
                while(P1!=0xFF||P3!=0);                  //按鍵松開后才返回值
                key=tab1[hang][lie];
        }
        else
                key='_';
        return (key);
        }

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

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



  if(KeyNum[iword]!='_')                      //鍵盤有按鍵按下
  {
         if(KeyNum[iword]==1)             //如果按下了確定鍵
         {
          if(SL[hz_Num]==iword&&verify)   //輸入長度等于測試單詞的長度,則正確 ,verify表示按下了確認后有效一次
          {
          correctNUM+=1;
          if(correctNUM>10)
           {
           correctNUM=10; //最多10個正確的
           }
          verify=0;                                           //標志位清零
          hz_Num++;                                     //測試下一個單詞
          if(hz_Num==10) hz_Num=0;                   //最多設10個單詞
          temp[0]=(correctNUM)/10+0x30;           //將十進制數轉換為ASCII字符
          temp[1]=(correctNUM)%10+0x30;           //算出測試漢字的序號的第一位和第二位
          en_disp(6,80,2,Asc,temp,1);               //在第7行 第81列
          iword=0;
          Nword=0;
          en_disp(4,16,8,Asc,"        ",1);            //在第5行,第17列開始顯示
          }
         }
        else if(KeyNum[iword]==2||KeyNum[iword]==4)//如果按下了“不認識”或“下一個”鍵 ,直接跳到下一個單詞
        {
          result=0;                                  //跳下一個時錯誤燈滅
          ERROR=0;
          hz_Num++;                                       //測試下一個單詞
          if(hz_Num==10) hz_Num=0;                   //最多設10個單詞
           iword=0;
          Nword=0;
          en_disp(4,16,8,Asc,"        ",1);           //在第5行,第17列開始顯示
        }
        else if(KeyNum[iword]==3)                  //如果按下了“上一個”鍵 ,直接跳到上一個單詞
        {
          result=0;                                        //跳下一個時錯誤燈滅
          ERROR=0;
                                       //測試下一個單詞
          if(hz_Num==0) hz_Num=10;                           //最多設10個單詞
                   hz_Num--;   
           iword=0;
           Nword=0;
           en_disp(4,16,8,Asc,"        ",1);                   //在第4行,第16列開始顯示
        }
        else  if(S[hz_Num][iword]==KeyNum[iword])  //輸入的字符與測試的標準字符比較
         { temp[0]=KeyNum[iword];
          ERROR=0;                                            //正確就標志位置0
          en_disp(4,Nword+16,1,Asc,temp,1);             //在第5行,第17列開始顯示
          iword++;
         if(iword==8) iword=0;
         Nword=iword*8;       
          verify=1;                               
         }
         else  
         { temp[0]=KeyNum[iword];
          ERROR=1;                                        //錯誤就置1
          en_disp(4,Nword+16,1,Asc,temp,1);            //在第5行,第17列開始顯示
          iword++;
         if(iword==8) iword=0;
         Nword=iword*8;       
         }
         result=ERROR|result;                                //0表示結果正確
   }
         
          ERR=!result;                                          //錯誤指示燈
    }
}
出現下面的錯誤怎么調試



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:84495 發表于 2015-11-1 09:53 | 只看該作者
本文件內沒有en-disp函數吧,需要把包含en-disp的頭文件調用一下,里面應該有這么一句 void en-disp (),修改別人的程序經常會遇到這問題,
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩不卡合集视频 | 亚洲精品中文字幕在线 | 亚洲精品久久久久久久久久久 | 在线观看国产 | 二区在线观看 | 亚洲一区二区三区在线 | 黑人精品欧美一区二区蜜桃 | 区一区二在线观看 | 在线免费看黄 | 在线不卡av | 超碰超碰 | 91视频官网 | 亚洲激情一区二区 | 伊人春色在线观看 | 国产精品不卡一区 | 欧美日韩在线播放 | 干出白浆视频 | 91视频在线观看 | 日本公妇乱淫xxxⅹ 国产在线不卡 | 亚洲第一成年免费网站 | 欧美三区 | 亚洲精品乱码久久久久久按摩观 | 亚洲三区在线观看 | jvid精品资源在线观看 | 久久99国产精品 | 欧美午夜精品理论片a级按摩 | 97成人在线| 亚洲精品一区二区在线观看 | 二区三区视频 | 天天干天天操天天爽 | 亚洲精品福利在线 | 91性高湖久久久久久久久_久久99 | 亚洲欧美网站 | 久久a久久| 国产视频一视频二 | 欧美八区 | 亚洲日本欧美日韩高观看 | 手机在线一区二区三区 | 精品伊人久久 | 亚洲v区 | 综合久久综合久久 |