收藏 分销(赏)

键盘显示电路驱动程序设计.doc

上传人:pc****0 文档编号:7498515 上传时间:2025-01-06 格式:DOC 页数:8 大小:346.50KB 下载积分:10 金币
下载 相关 举报
键盘显示电路驱动程序设计.doc_第1页
第1页 / 共8页
键盘显示电路驱动程序设计.doc_第2页
第2页 / 共8页


点击查看更多>>
资源描述
实验四 键盘显示电路驱动程序设计 班级:09电信一班 姓名:叶晓伟 学号:20094081007 实验目的 1、了解ARMC语言程序的结构特点 2、了解ARMC语言程序的编写方法 3、掌握用ARM编写HD7279控制程序方法 实验仪器设备及软件 ARM实验箱,计算机,ADS程序开发软件 实验原理 HD7279A 专用键盘显示电路,真正的单片LED数码管显示和键盘接口芯片,无需外围电路,只需要外接少量的电阻等,即可构成完善的显示、键盘接口电路。而与CPU的接口采用SPI串行接口方式,使用方便。可方便的构成64按键,8位数码显示电路(共阴极结构) HD7279A内部含有译码器,可直接受BCD码或16进制数据或七段显示码数据。此外,还具有多种控制指令,如消隐,闪烁,左移,右移,段寻址等。具有片选信号,可方便地实现多于8位的显示或多于64键的键盘接口。 HD7279的纯指令: 1、复位指令(A4H) 当HD7279A收到该指令后,将所有显示清除,所有设置的字符消隐、闪烁等属性也被一起清除。执行后,芯片的状态与上电时一样。 2、测试指令(BFH) 该指令使所有的LED全部点亮,并处于闪烁状态,主要用于测试(检查LED是否坏) 3、左移指令(A1H) 使所有显示左移一位,消隐及闪烁属性不移位,最右边一位为空(暗)。如: 4、右移指令(A0H) 使所有显示右移一位,消隐及闪烁属性不移位,最左边一位为空(暗)。如: 5、循环左移指令(A3H) 使所有显示右移一位,消隐及闪烁属性不移位,最左边一位移到最右边。如: 6、循环右移指令(A2H) 使所有显示右移一位,消隐及闪烁属性不移位,最右边一位移到最左边。如: HD7279带数据的指令: 1、下载数据按方式0译码 命令由两字节构成,前半部为指令。a2,a1,a0为位地址,D3-D0为数据,译码值如图所示。 当前位小数点由DP控制,DP=1,小数点亮,DP=0,小数点暗。 2、下载数据按方式1译码 指令格式与指令1相同,译码表如下所示。 3、下载数据但不译码 指令格式如上图所示。当指令第二字节的位为1时,相应段点亮。 4、闪烁控制88H 此命令控制各数码管的闪烁情况。D8-D1中的位为1时,对应位闪烁。上电默认不闪烁。 5、消隐控制98H D8-D1控制数码管的消隐状态。为1时,数码管消隐,为0时,正常显示。输入的数据至少有一位为0。输入全为0时,命令将被忽略。 6、读键盘命令 该指令从HD7279中读出当前按键编码。编码范围是0-3FH。当HD7279收到读指令时,此时按键无效,将返回0FFH。 实验内容 1、编写程序控制HD7279显示学号 HD7279驱动程序包含接口读写程序、HD7279发命令、收数据程序、初始化程序等,在ARM7279.C文件中给出。 在HD7279显示学号功能,只要往7279数据存储器中写入数据即可。程序如下: write7279(decode1+p,i & 0x0f); //i为显示的内容, p为显示的位置 0-7 2、编写程序控制HD7279芯片,根据当前按键情况,改变显示内容 按键信息在中断服务程序读取,主程序根据到的数据,向7279发送命令或数据,改变显示内容。 keylast=key_number; //从键值缓冲中读取键值 key_number=0xff; //键缓冲重置 switch(keylast) //根据键值,执行不同功能 { case 1: send_byte(disp_lsl); //左移一位 break; case 2: send_byte(disp_lsr); //右移一位 break; 。。。 default: break; } 实验步骤 1、 连接实验箱与计算机的串口线,打开计算机超级终端,并设定为com1,115200,8,1,0N 2、 连接仿真调试电缆(并口JTAG) 3、 实验箱上电,并在vivi的指示下,按任意键,进入调试程序状态 4、 打开ARM集成开发环境ADS,按要求编写或打开实验程序。 5、 按内容要求编写,调试程序,并记录调试过程和数据。 6、 调试完毕,整理实验箱,并切断实验箱电源。 实验思考题 1、编写程序,在数码管上显示输入的键值。 /* ;************************************************************************************************************ ;* 北京精仪达盛科技有限责任公司 ;* 研 发 部 ;* ;* ;* ;*--------------------------------------------- 文件信息 ---------------------------------------------------- ;* ;* 文件名称 : MAIN.c ;* 文件功能 : 所有应用程序的头文件均加在此文件中 ;* 补充说明 : ;*-------------------------------------------- 最新版本信息 ------------------------------------------------- ;* 修改作者 : ARM7开发小组 ;* 修改日期 : 2004/04/25 ;* 版本声明 : V1.0.1 ;*-------------------------------------------- 历史版本信息 ------------------------------------------------- ;* 文件作者 : ARM7开发小组 ;* 创建日期 : 2004/04/20 ;* 版本声明 : v1.0.0 ;*----------------------------------------------------------------------------------------------------------- ;*----------------------------------------------------------------------------------------------------------- ;************************************************************************************************************ ;*/ #include "..\INC\config.h" //显示学号函数 void dispstu_number(void) {//请在这里编写显示学号程? write7279(disp_f,0xff); //no flash write7279(disp_hide,0xff);//no hide write7279(decode1+0,8 & 0x0f); write7279(decode1+1,0 & 0x0f); write7279(decode1+2,4 & 0x0f); write7279(decode1+3,9 & 0x0f); write7279(decode1+4,9 & 0x0f); write7279(decode1+5,0 & 0x0f); write7279(decode1+6,0 & 0x0f); write7279(decode1+7,1 & 0x0f); } void Main() { unsigned char p,keylast; Target_Init(); //目标初始化 dispstu_number();//显示学号 //while(1); //程序运行到这行时 ,停止运行。 while(1) { keylast=key_number; //取出按键值 key_number=0xff; //按键值重置为无按键 switch(keylast) { case 0: write7279(cmd_test,cmd_test); //测试键 write7279(disp_f,0xff); //no flash write7279(disp_hide,0xff);//no hide dispstu_number(); p=0; break; case 1: write7279(disp_lsl,disp_lsl); //logic shift left 1 data break; case 2: write7279(disp_lsr,disp_lsr); //logic shift right 1 data break; case 3: write7279(disp_rol,disp_rol); //循环左移 break; case 4: write7279(disp_ror,disp_ror); //循环右移 break; case 5: if (p>7) p=0; write7279(disp_hide,~(1<<p));//hide data according p p++; break; case 6: if (p>7) p=0; write7279(disp_f,~(1<<(p))); p++; break; case 7: if (p>0x40) p=0; write7279(disp_bit,p); p++; break; case 8: if (p>0x40) p=0; write7279(disp_offb,p); p++; break; case 9: if (p>0x7) p=0; write7279(decode1+p,keylast); p++; break; case 10: if (p>0x7) p=0; write7279(decode1+p,keylast); p++; break; case 11: if (p>0x7) p=0; write7279(decode1+p,keylast); p++; break; case 12: if (p>0x7) p=0; write7279(decode1+p,keylast); p++; break; case 13: if (p>0x7) p=0; write7279(decode1+p,keylast); p++; break; case 14: if (p>0x7) p=0; write7279(decode1+p,keylast); p++; break; case 15: if (p>0x7) p=0; write7279(decode1+p,keylast); p++; break; default: break; } keylast=0xff; Delay(50); } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服