单片机开发板的c语言设计,求助大神,c语言没学好,单片机课程设计根本做不到啊...
/************************************************************************
/**单片机单词测试程序
/**设计一个以单片机为核心的单词记忆测试器;
/** 实现单词的录入(为使程序具有可演示性,单词不少于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语言没学好,单片机课程设计根本做不到啊...相关推荐
- android归属地显示错误,Android开发【07-18疑问贴】求助大神 来电归属地拖移动问题...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是一个点击触摸移动的代码 toast_view = View.inflate(getApplicationContext(), R.layout.toa ...
- DIY自制STC单片机开发板
提示:本文属于技术的交流,如有抄袭请联系删除. 文章目录 开始之前 一.单片机硬件选择以及原理图绘制 1.MCU 2.LED点阵 3.蜂鸣器 4.光强度.烟雾浓度 5.温湿度 6.超声波 7.MP3 ...
- 巫妖王51单片机开发板配套视频课程-朱有鹏-专题视频课程
巫妖王51单片机开发板配套视频课程-8368人已学习 课程介绍 本课程是巫妖王51单片机开发板的配套视频课程,本课程的目标是用少的时间带大家初级入门51单片机.配合巫妖王51单片机开发 ...
- 基于普中51单片机开发板的温控风扇
自学单片机也不算很久,刚好遇上了这一门的课程设计,查找了好多的资料发现都不算合适,合适的又要收费,那么最后呢才找到了一个有关我使用的开发板的温控风扇程序,也就是普中单片机开发板,该程序来自--黑51论 ...
- 再搞75块单片机开发板!
大家好,我是张巧龙,还记得当初自己用51开发板点亮了第一颗LED灯吗? 51单片机,yyds!不多说,直接抽奖送75块! 兴趣爱好 如果你对一件事失去了兴趣,我觉得你把这件事坚持做下去的概率很低. 反 ...
- 智能锁方案PCBA原理图PCB单片机开发板源码wifi远程开锁。 提供全套技术资料,包括原理图,PCB图,程序源码,bom清单,说明书等
智能锁方案PCBA原理图PCB单片机开发板源码wifi远程开锁. 提供全套技术资料,包括原理图,PCB图,程序源码,bom清单,说明书等. 该指纹密码锁具有如下功能: 一.指纹开门 二.触摸密码开门 ...
- 51单片机开发板资料270G | 免费下载
目录 <手把手教你学51单片机> <郭天祥51单片机TX-1C 51-视频教程征服你> <单片机视频教程(汇编)> <给力者51单片机视频教程> < ...
- qt开发的有界面的简易对战游戏——斗罗大PK(可用作c,c++课程设计)
[开发简介] 用QtCreator开发环境和c++ 语言来编写一个游戏,名字为<斗罗大PK>. [游戏规则] <斗罗大PK>有 6 位英雄,每位英雄拥有数量不同的 3 种招数, ...
- vs 2017 建立 php,程序在VS 2017中输出的结果为什么是这样的?求助大神!谢谢!...
编程论坛 → C语言论坛 程序在VS 2017中输出的结果为什么是这样的?求助大神!谢谢! 菜鸟100学C 发布于 2018-09-29 08:06, 1405 次点击 #include int fu ...
最新文章
- Rabin-Karp算法 java_第 2 章 字符串
- 销售订单定价-客户取值
- [LeetCode] Interleaving String
- AspNetCore 中使用 InentityServer4(2)
- 【转载】#323 - A Generic Class is a Template for a Class
- ubuntu nginx添加站点配置失效处理
- python3的文件读写模式
- 蓝桥杯 ADV-95 算法提高 字符串比较
- 【Linux】基于Openfile的multipath测试
- Windows Azure 系列-- Azure Queue的操作
- C++求复数的角度_单词复数规则:tomato的复数究竟是加s还是es?
- 互联网平台黑产解密(上)
- Eastfax使用技巧
- iphone 4 到iphone 6s plus的屏幕尺寸
- 自然语言处理课程作业 中文文本情感分类
- ChatGPT飙升苹果商店榜首,每周订阅需7.99美元,结果是个假的???
- 空间点过程与随机测度(一):从数星星说起
- 量子计算计算机简史pdf,量子计算与量子信息简介.pdf
- python 获取一年中所有工作日列表来辅助计算工作时间内的时间差
- https访问http接口处理