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

/**单片机单词测试程序

/**设计一个以单片机为核心的单词记忆测试器;

/** 实现单词的录入(为使程序具有可演示性,单词不少于10个);

/**单词用按键控制依次在屏幕上显示,按键选择认识还是不认识,

/**也可以直接进入下一个或者上一个;

/**单词背完后给出正确率。

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

#define uchar unsigned char

#define uint  unsigned int

#include

#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;                                          //错误指示灯

}

}

出现下面的错误怎么调试

360截图20151031001044319.jpg (14.14 KB, 下载次数: 150)

2015-10-31 00:08 上传

单片机开发板的c语言设计,求助大神,c语言没学好,单片机课程设计根本做不到啊...相关推荐

  1. android归属地显示错误,Android开发【07-18疑问贴】求助大神 来电归属地拖移动问题...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是一个点击触摸移动的代码 toast_view = View.inflate(getApplicationContext(), R.layout.toa ...

  2. DIY自制STC单片机开发板

    提示:本文属于技术的交流,如有抄袭请联系删除. 文章目录 开始之前 一.单片机硬件选择以及原理图绘制 1.MCU 2.LED点阵 3.蜂鸣器 4.光强度.烟雾浓度 5.温湿度 6.超声波 7.MP3 ...

  3. 巫妖王51单片机开发板配套视频课程-朱有鹏-专题视频课程

    巫妖王51单片机开发板配套视频课程-8368人已学习 课程介绍         本课程是巫妖王51单片机开发板的配套视频课程,本课程的目标是用少的时间带大家初级入门51单片机.配合巫妖王51单片机开发 ...

  4. 基于普中51单片机开发板的温控风扇

    自学单片机也不算很久,刚好遇上了这一门的课程设计,查找了好多的资料发现都不算合适,合适的又要收费,那么最后呢才找到了一个有关我使用的开发板的温控风扇程序,也就是普中单片机开发板,该程序来自--黑51论 ...

  5. 再搞75块单片机开发板!

    大家好,我是张巧龙,还记得当初自己用51开发板点亮了第一颗LED灯吗? 51单片机,yyds!不多说,直接抽奖送75块! 兴趣爱好 如果你对一件事失去了兴趣,我觉得你把这件事坚持做下去的概率很低. 反 ...

  6. 智能锁方案PCBA原理图PCB单片机开发板源码wifi远程开锁。 提供全套技术资料,包括原理图,PCB图,程序源码,bom清单,说明书等

    智能锁方案PCBA原理图PCB单片机开发板源码wifi远程开锁. 提供全套技术资料,包括原理图,PCB图,程序源码,bom清单,说明书等. 该指纹密码锁具有如下功能: 一.指纹开门 二.触摸密码开门 ...

  7. 51单片机开发板资料270G | 免费下载

    目录 <手把手教你学51单片机> <郭天祥51单片机TX-1C 51-视频教程征服你> <单片机视频教程(汇编)> <给力者51单片机视频教程> < ...

  8. qt开发的有界面的简易对战游戏——斗罗大PK(可用作c,c++课程设计)

    [开发简介] 用QtCreator开发环境和c++ 语言来编写一个游戏,名字为<斗罗大PK>. [游戏规则] <斗罗大PK>有 6 位英雄,每位英雄拥有数量不同的 3 种招数, ...

  9. vs 2017 建立 php,程序在VS 2017中输出的结果为什么是这样的?求助大神!谢谢!...

    编程论坛 → C语言论坛 程序在VS 2017中输出的结果为什么是这样的?求助大神!谢谢! 菜鸟100学C 发布于 2018-09-29 08:06, 1405 次点击 #include int fu ...

最新文章

  1. Rabin-Karp算法 java_第 2 章 字符串
  2. 销售订单定价-客户取值
  3. [LeetCode] Interleaving String
  4. AspNetCore 中使用 InentityServer4(2)
  5. 【转载】#323 - A Generic Class is a Template for a Class
  6. ubuntu nginx添加站点配置失效处理
  7. python3的文件读写模式
  8. 蓝桥杯 ADV-95 算法提高 字符串比较
  9. 【Linux】基于Openfile的multipath测试
  10. Windows Azure 系列-- Azure Queue的操作
  11. C++求复数的角度_单词复数规则:tomato的复数究竟是加s还是es?
  12. 互联网平台黑产解密(上)
  13. Eastfax使用技巧
  14. iphone 4 到iphone 6s plus的屏幕尺寸
  15. 自然语言处理课程作业 中文文本情感分类
  16. ChatGPT飙升苹果商店榜首,每周订阅需7.99美元,结果是个假的???
  17. 空间点过程与随机测度(一):从数星星说起
  18. 量子计算计算机简史pdf,量子计算与量子信息简介.pdf
  19. python 获取一年中所有工作日列表来辅助计算工作时间内的时间差
  20. https访问http接口处理

热门文章

  1. 安卓和ios移动端实现H5页面进行强制刷新
  2. 石大师重装系统无限重启怎么办?
  3. PCA-手写字体图片识别
  4. 计算机方法欧拉,欧拉方法详解
  5. 对不起, 老师 我把知识还给您了 呜呜呜 ......面试杀手-double精度问题深入剖析 进制转换
  6. 深度学习笔记 —— 数据增广
  7. python学习(第四节课)
  8. PAT (Basic Level) Practice学到的东西C语言篇
  9. 两个div并列一行显示的多种方法
  10. jsp和js区别 一