77范文网 - 专业文章范例文档资料分享平台

基于单片机的单词记忆测试器毕业设计(3)

来源:网络收集 时间:2018-12-22 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

1.3 软件程序设计 1.3.1 程序设计思路

因本系统为模块化设计,为方便软件编写和移植,程序设计采用C语言,程序流程图如下:

1.3.2矩阵键盘的程序设计 单片机初始化 矩阵键盘采用5×6 列与行扫描法,P1口依次接键盘的每一行,而P3口依次接键盘的每一列,程序开始先令P1全为高电平,P3口全为低电平,这样一LCD12864初始化 旦矩阵键盘中有一个键按下时,就会在某一行中出现低电平,而某一列中出现高电平,程序先读P1口,以检测到有低电平来确定行。再使P1全为低电平,P3口全为高电平,再读P3口,以检测到低电平来确定列。 键盘扫描输入 这里还要考虑按键的机械抖动问题,因为按键的机械特性,可能在按下瞬N 间会有一组抖动的脉冲,一般程序中采用延时方法来去抖动。 实现的C程序函数如下:

有按键命令? Y /************************************************* 执行按键命令 ** 键盘扫描程序 *************************************************/ unsigned char kbscan() //键盘扫描 {

确 显 定 uchar hang,lie,key; //P1连行,P3连列示 键 if(P1!=0xFF||P3!=0) //按键去抖动下 一 delayms(5); //延时5ms 个 if(P1!=0xFF||P3!=0) 字 { 符比 switch(P1&0xFF) //P1 扫行 较 {

N case 0xFE:hang=5;break; //P1.0为第6行 case 0xFD:hang=4;break; //P1.1为第5行 输入正确 case 0xFB:hang=3;break; //P1.2Y 为第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) } else }

1.3.3 LCD12864显示模块的驱动程序

LCD12864显示模块的程序作为显示部分的底层程序,用户可直接调用其函数来达到驱动和显示功能。

主要显示命令和显示的函数说明如下:

清显示屏:void ClearLCD() ,将LCD上的显示字符清空

汉字的显示函数:void hz_disp(unsigned char x,unsigned char y,unsigned char n,unsigned char code * hz,bit flag) ;

其中X Y为汉字的起始坐标,n为字数,hz为存储汉字字模码(后述)的地址,flag为显示为黑还是白。

英文的显示函数为:void en_disp(unsigned char x,unsigned char y,unsigned char n,unsigned char code *asc,unsigned char *string,bit flag) ;

其中其中X Y为字母的起始坐标,n为字数,asc为存储字形码(后述)的地址,flag为显示为黑还是白。

LCD12864显示一个单词的示例代码如下:

{

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];

//按键松开后才返回值

key='_'; //没键按下返回空

return (key);

en_disp(6,0,8,Asc,\在第7行,第1列开始显示correct;

LCD12864显示一个汉字的示例代码如下:

hz_disp(0,48,1,hz1+hz_Num*32,1); //在第1行,第49列开始显示测试的汉字

1.3.4 显示字模码的提取

为了使LCD12864能够显示用户存储的中文汉字和英文单词,用户必须将要显示的汉字字模及英文字母字模码存入单片机存储器中,因LCD12864只能显示点阵图形,因此存储入单片机的字模码必须是通过点阵码转换而成,为了软换更方便,设计使用了字模转换软件实现汉字和英文码的取模。

图12 中英文取字模软件界面

例如汉字“中国”,取得的字模码为:

/*-- 文字: 中 --*/

0x00,0x00,0xFC,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0xFC,0x08,0x00,0x00,

0x00,0x00,0x07,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x02,0x02,0x07,0x00,0x00,0x00,

/*-- 文字: 国 --*/

0x00,0xFE,0x02,0x0A,0x8A,0x8A,0x8A,0xFA,0x8A,0x8A,0x8A,0x0A,0x02,0xFE,0x00,0x00,

0x00,0xFF,0x40,0x48,0x48,0x48,0x48,0x4F,0x48,0x49,0x4E,0x48,0x40,0xFF,0x00,0x00,

将此码存入单片机程序存储器里,使用液晶显示的函数就可方便地显示汉字或英文字形。

本单片机记忆测试系统的程序中将英文字符的字模码表以asc.h文件形式保存,为节约单片机的RAM,生成的二进制文件以只读形式储在单片机的FLASH ROM中。

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于单片机的单词记忆测试器毕业设计(3)在线全文阅读。

基于单片机的单词记忆测试器毕业设计(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/383290.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: