




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机系统开发与应用工程实习报告单片机系统开发与应用工程实习报告 选题名称选题名称: 基于 at89s52 单片机的 4*4 矩阵键盘设 计 系(院)系(院): 专专 业业: 计算机科学与技术(嵌入式方向) 班班 级级: 姓姓 名名: 学学 号号: 指导教师指导教师: 学年学期学年学期: 2009 2010 学年 第 2 学期 2010年 5 月 30 日 摘要: 嵌入式系统已经在现代生活中伴演着越来越重要的角色,单片机就是一个最典 型的嵌入式系统,单片机的应用也越来越广泛。目前单片机功能正日渐完善:单片机 集成越来越多资源,内部存储资源日益丰富,用户不需要扩充资源就可以完成项目开 发,不仅是
2、开发简单,产品小巧美观,同时抗干扰能力加强,系统也更加稳定,使得 它更加适合工业控制领域,具有更加广阔的市场前景;提供在线编程能力,加速了产 品的开发进程,为企业产品上市赢得宝贵时间。此外单片机具有性能高、速度快、体 积小、价格低、稳定可靠、应用广泛、通用性强等突出优点。单片机的设计目标主要 是增强“控制”能力,满足实时控制(就是快速反应) 的需要。因此,掌握单片机的 基础和实际应用来说意义重大。键盘作为一种最为普通的输入工具在单片机项目应用 上显得尤为重要。 关键词:键盘;单片机;数码管;扫描 目录目录 1 设计目的 .1 2 设计原理 .1 2.1 设计电路图.1 2.2 程序流程图.1
3、2.3 硬件说明.2 3 程序设计 .6 3.1 按键过程分析.6 3.2 源程序(c 语言).7 4 程序调试 .12 5 仿真测试 .12 6 实物实现 .13 总 结 .14 参考文献 .15 1 1 设计目的设计目的 在数码管上显示每个按键的 0f.对应按键的序号如图 1-1,要实现按哪个键就 在数码管上显示哪个数字或字母。 图 1-1 键盘正面图 2 2 设计原理设计原理 2.12.1 设计电路图设计电路图 图 2-1 电路原理图 如图 2-1 所示,把系统中单片机的 p3.0-p3.7 端口连接到 4*4 行列式键盘端口上; 具体为:p3.0-p3.3 接行线,p3.4-p3.7
4、接列线;把系统中单片机的 p0.0/ad0- p0.6/ad6 端口连接到共阳数码管的 a-g 端口,并一一对映。p0.0/ad 对应 a,依次对应。 整个电路由复位电路,晶振电路,主控制块,键盘扫描模块,led 显示模块,电源电 路组成。 2.22.2 程序流程图程序流程图 图 2-2 程序流程图 如图 2-2 所示,每个按键都有他的行值和列值,行值和列值的组合就是识别这个 按键的编码。矩阵的行线和列线通过两个并行接口和单片机通信。每个案件的状态同 样需要变成数字量 0 和 1,开关的一端(列线)通过电阻接+5v,而接地时通过程序输 出数字 0 实现的。键盘处理程序的任务是:确定有无键按下,
5、判断哪一个键按下,键 的功能是什么;还要消除按键在闭合或断开时的抖动。在两个并行口中,一个输出扫 描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共 同行成键编码而识别按键,通过软件查表,查出该键的功能。 2.32.3 硬件说明硬件说明 图 2-3 共阳数码管 共阳数码管就是把每个 led 灯的阳极接在共同接点 com,而每个 led 灯的阴极 分别为 a,b,c,d,e,f,g,dp;通过控制 led 灯的亮灭来显示数字。数码管跟据接收到 的字形码显示数字。 图 2-4 74ls245 芯片 74ls245 是我们常用的芯片,用来驱动 led 或者其他的设备,它是 8
6、 路同相三态 双向总线收发器,可双向传输数据。74ls245 还具有双向三态功能,既可以输出,也 可以输入数据。当 8051 单片机的 p0 口总线负载达到或超过 p0 最大负载能力时,必 须接入 74ls245 等总线驱动器。 图 2-5 at89s52 单片机实物图 at89s52 是一种低功耗、高性能 cmos8 位微控制器,具有 8k 在系统可编程 flash 存储器。使用 atmel 公司高密度非 易失性存储器技术制造,与工业 80c51 产 品指令和引脚完 全兼容。片上 flash 允许程序存储器在系统可编程,亦适于 常规编 程器。在单芯片上,拥有灵巧的 8 位 cpu 和在系统
7、可编程 flash,使得 at89s52 为 众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。 at89s52 具有以下标准 功能: 8k 字节 flash,256 字节 ram, 32 位 i/o 口线,看门狗定时器,2 个数据指 针,三个 16 位 定时器/计数器,一个 6 向量 2 级中断结构,全双工串行口, 片内晶 振及时钟电路。另外,at89s52 可降至 0hz 静态逻 辑操作,支持 2 种软件可选择节 电模式。空闲模式下,cpu 停止工作,允许 ram、定时器/计数器、串口、中断继续工 作。掉电保护方式下,ram 内容被保存,振荡器被冻结, 单片机一切工作停止,直到 下一个
8、中断或硬件复位为止。8 位微控制器 8k 字节在系统可编程 flash at89s52 图 2-6at89s52 单片机引脚图 p0 口:p0 口是一个 8 位漏极开路的双向 i/o 口。作为输出口,每位能驱动 8 个 ttl 逻 辑电平。对 p0 端口写“1”时,引脚用作高阻抗输入。 当访问外部程序和数据存储器时,p0 口也被作为低 8 位地址/数据复用。在这种 模式下, p0 具有内部上拉电阻。 在 flash 编程时,p0 口也用来接收指令字节;在程序校验时,输出指令字节。程 序校验 时,需要外部上拉电阻。 p1 口:p1 口是一个具有内部上拉电阻的 8 位双向 i/o 口,p1 输出缓
9、冲器能驱 动 4 个 ttl 逻辑电平。对 p1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为 输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流 (iil) 。 此外,p1.0 和 p1.2 分别作定时器/计数器 2 的外部计数输入(p1.0/t2)和时器/ 计数器 2 的触发输入(p1.1/t2ex) ,具体如下表所示。 在 flash 编程和校验时,p1 口接收低 8 位地址字节。 引脚号第二功能 p1.0 t2(定时器/计数器 t2 的外部计数输入) ,时钟输出 p1.1 t2ex(定时器/计数器 t2 的捕捉/重载触发信号和方向控制) p1.5 mo
10、si(在系统编程用) p1.6 miso(在系统编程用) p1.7 sck(在系统编程用) p2 口:p2 口是一个具有内部上拉电阻的 8 位双向 i/o 口,p2 输出缓冲器能驱 动 4 个 ttl 逻辑电平。对 p2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为 输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流 (iil) 。 在访问外部程序存储器或用 16 位地址读取外部数据存储器(例如执行 movx dptr) 时,p2 口送出高八位地址。在这种应用中,p2 口使用很强的内部上拉发送 1。 在使用 8 位地址(如 movx ri)访问外部数据存储器时
11、,p2 口输出 p2 锁存器的内容。 在 flash 编程和校验时,p2 口也接收高 8 位地址字节和一些控制信号。 p3 口:p3 口是一个具有内部上拉电阻的 8 位双向 i/o 口,p3 输出缓冲器能驱 动 4 个 ttl 逻辑电平。对 p3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为 输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流 (iil) 。 p3 口亦作为 at89s52 特殊功能(第二功能)使用,如下表所示。 在 flash 编程和校验时,p3 口也接收一些控制信号。 端口引脚 第二功能 p3.0 rxd(串行输入口) p3.1 txd(串
12、行输出口) p3.2 into(外中断 0) p3.3 int1(外中断 1) p3.4 to(定时/计数器 0) p3.5 t1(定时/计数器 1) p3.6 wr(外部数据存储器写选通) p3.7 rd(外部数据存储器读选通) 此外,p3 口还接收一些用于 flash 闪存编程和程序校验的控制信号。 rst复位输入。当振荡器工作时,rst 引脚出现两个机器周期以上高电平将是 单片机复位。 ale/prog当访问外部程序存储器或数据存储器时,ale(地址锁存允许)输 出脉冲用于锁存地址的低 8 位字节。一般情况下,ale 仍以时钟振荡频率的 1/6 输出 固定的脉冲信号,因此它可对外输出时钟
13、或用于定时目的。要注意的是:每当访问外 部数据存储器时将跳过一个 ale 脉冲。 对 flash 存储器编程期间,该引脚还用于输入编程脉冲(prog) 。 如有必要,可通过对特殊功能寄存器(sfr)区中的 8eh 单元的 d0 位置位,可禁 止 ale 操作。该位置位后,只有一条 movx 和 movc 指令才能将 ale 激活。此外,该引 脚会被微弱拉高,单片机执行外部程序时,应设置 ale 禁止位无效。 psen程序储存允许(psen)输出是外部程序存储器的读选通信号,当 at89c52 由外部程序存储器取指令(或数据)时,每个机器周期两次 psen 有效,即输 出两个脉冲,在此期间,当访
14、问外部数据存储器,将跳过两次 psen 信号。 ea/vpp外部访问允许,欲使 cpu 仅访问外部程序存储器(地址为 0000h- ffffh) ,ea 端必须保持低电平(接地) 。需注意的是:如果加密位 lb1 被编程,复位 时内部会锁存 ea 端状态。 如 ea 端为高电平(接 vcc 端) ,cpu 则执行内部程序存储器的指令。 flash 存储器编程时,该引脚加上+12v 的编程允许电源 vpp,当然这必须是该器 件是使用 12v 编程电压 vpp。 3 3 程序设计程序设计 3.13.1 按键过程分析按键过程分析 行信号(key)接到高电平,当没有键按时,行线与列线(keyscan)
15、是断开的, 且行线都是高电平(1111) ,行信号作为 fpga 的输入端、列信号作为 fpga 的输出 端。可以设置列线初始状态为低电平(0000) 。信号为从上到下的顺序 当有键按下时,假如是 k1 按下,行信号与列信号接通,这时相应的行线(key0) 变为低电平(01111) ,可以肯定第一行(k1,5,9,13)有键按下。 运用扫描的原理: 1、因为只知道第一行有键按下,不知道是那个,可以设置列信号为 0111,这时行 信号变为(1111) (注:假设时钟周期很短,手还没松开,即键还在按下的状态) 2、设置列信号为 1011,行信号也变成(1111) 3、设置列信号为 1101,行信号
16、也变成(1111) 4、设置列信号为 1110,行信号也变成(0111) ,这时就可以肯定是第一个键按下。 3.23.2 源程序(源程序(c c 语言)语言) #include unsigned char code table=0 xc0,0 xf9,0 xa4,0 xb0, 0 x99,0 x92,0 x82,0 xf8, 0 x80,0 x90,0 x88,0 x83, 0 xc6,0 xa1,0 x86,0 x8e; unsigned char temp; unsigned char key; unsigned char i,j; void main(void) while(1) p3=
17、0 xff; /给 p3 口置 1 p3_4=0; /给 p3.4 这条线送入 0 temp=p3; temp=temp /屏蔽低四位 if (temp!=0 x0f) /看是否有按键按下 for(i=50;i0;i-) for(j=200;j0;j-); /延时,消除抖动 temp=p3; temp=temp if (temp!=0 x0f) /再次判断按键是否按下 temp=p3; temp=temp switch(temp) /判断与 p3.4 相连的哪个键按下了 case 0 x0e: key=7; break; case 0 x0d: key=8; break; case 0 x0b
18、: key=9; break; case 0 x07: key=10; break; temp=p3; p0=tablekey; /送数到 p0 口显示 temp=temp while(temp!=0 x0f) /松手检测,否则跳不出循环 temp=p3; temp=temp p3=0 xff; p3_5=0; / /读 p3.5 这条线 temp=p3; temp=temp /屏蔽低四位 if (temp!=0 x0f) /判断 p3.5 这条线上是否有按键按下 for(i=50;i0;i-) for(j=200;j0;j-); /延时,消除抖动 temp=p3; temp=temp if
19、(temp!=0 x0f) /判断是否真有按键 temp=p3; temp=temp switch(temp) /判断与 p3.5 相连的哪个键按下了 case 0 x0e: key=4; break; case 0 x0d: key=5; break; case 0 x0b: key=6; break; case 0 x07: key=11; break; temp=p3; p0=tablekey; /送入 p0 口显示 temp=temp while(temp!=0 x0f) /松手检测,否则跳不出循环 temp=p3; temp=temp p3=0 xff; p3_6=0; / /读 p
20、3.6 这条线 temp=p3; temp=temp /屏蔽的低四位 if (temp!=0 x0f) /判断是否有按键按下 for(i=50;i0;i-) for(j=200;j0;j-); /延时,消除抖动 temp=p3; temp=temp if (temp!=0 x0f) /判断是否真有按键按下 temp=p3; temp=temp switch(temp) /判断与 p3.6 相连的哪个键按下了 case 0 x0e: key=1; break; case 0 x0d: key=2; break; case 0 x0b: key=3; break; case 0 x07: key=
21、12; break; temp=p3; p0=tablekey; /送入 p0 口显示 temp=temp while(temp!=0 x0f) /松手检测,否则跳不出循环 temp=p3; temp=temp p3=0 xff; p3_7=0; / /读 p3.7 这条线 temp=p3; temp=temp /屏蔽的低四位 if (temp!=0 x0f) /判断是否有键按下 for(i=50;i0;i-) for(j=200;j0;j-); /延时,消除抖动 temp=p3; temp=temp if (temp!=0 x0f) /判断是否真有键按下 temp=p3; temp=temp
22、 switch(temp) /判断与 p3.7 相连的哪个键按下了 case 0 x0e: key=0; break; case 0 x0d: key=13; break; case 0 x0b: key=14; break; case 0 x07: key=15; break; temp=p3; p0=tablekey; /送入 p0 口显示 temp=temp while(temp!=0 x0f) /松手检测,否则跳不出循环 temp=p3; temp=temp 4 4 程序调试程序调试 程序刚完成调试后发现并不能在数码管上正常显示数字和字母。经排查发现是程 序当中的字型码表不对,经上网查
23、资料后改正,最终能正常显示数字和字母。 5 5 仿真测试仿真测试 本次课程设计在 proteus,keils 上仿真测试通过。仿真结果如图 4-1,达到设 计要求,能在数码管上正常显示 0-9,a-f。 图 5-1 仿真结果图 6 6 实物实现实物实现 本次课程设计做出了 4*4 矩阵键盘实物,并实现了预期功能,答辩完后已交给答 老师 总 结 本次课程设计,这是我第一次去作硬件实体。和以往单纯作软件不同,做硬件有 其特有的考虑问题的方式。比如,在焊接电路板时,如何布局合理,对最终作出实物 来有很重要的影响。我就是开始时布局没布好,导致后面要多接好多导线,增加了犯 错和短路的可能性。于是我重头再
24、来,再第二次作的时候,充分考虑到这些问题,结 果只用了一个下午的时间就把实物作了出来,但是数码管上 a 线那却不亮,经排查发 现可能是排针接触不好,于是用一根导线代替了改排针,最终,数码管得以正常显示, 看到自己做出的键盘能实现预期功能,着实让自己兴奋了一把。单片机功能正日渐完 善:单片机集成越来越多资源,内部存储资源日益丰富,用户不需要扩充资源就可以 完成项目开发,不仅是开发简单,产品小巧美观,同时抗干扰能力加强,系统也更加 稳定,使得它更加适合工业控制领域,具有更加广阔的市场前景;通过这次课程设计, 我总算对入何作硬件以及以些单片机的知识有了更接近于实际的认识,知道了怎么烧 录程序,怎么插芯片,杜邦线的使用等。同时还温习了 protel 软件,画出了无错的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年食品安全员考试注意事项试题及答案
- 构建计算机基础考试试题及答案的知识体系
- 2025仓库租赁安全协议书合同范本
- 2025餐饮连锁加盟合同书
- 2025yy建筑改造合同样本模板
- 优化普惠托育服务的策略与实施路径
- 客户服务与沟通技巧试题及答案
- 扬州环境资源职业技术学院《腾讯名师导学》2023-2024学年第二学期期末试卷
- 重庆化工职业学院《硬笔书法》2023-2024学年第二学期期末试卷
- 2025年北京市10区高三4月阶段性检测试题(模拟)语文试题试卷含解析
- 2025年从大模型、智能体到复杂AI应用系统的构建报告-以产业大脑为例-浙江大学(肖俊)
- 厂房电费收租合同范例
- 2024年南京市事业单位专项招聘退役大学生士兵笔试真题
- 增资扩股方案模板
- 鹅产业绿色循环发展-深度研究
- “三新”背景下高中文言文教学难点突破策略
- (完整版)Camtasia-Studio使用教程
- 监理月报(水利工程)
- 外研版(2025新版)七年级下册英语期中复习:Unit 1~3+期中共4套学情调研测试卷(含答案)
- 2025年军队文职考试《公共科目》试题与参考答案
- 2020年综合应急预案专项应急预案现场处置方案
评论
0/150
提交评论