版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机系统开发与应用工程实习报告单片机系统开发与应用工程实习报告选题名称选题名称: 基于 at89s52 单片机的 4*4 矩阵键盘设计 系(院)系(院): 专专 业业: 计算机科学与技术(嵌入式方向) 班班 级级: 姓姓 名名: 学学 号号: 指导教师指导教师: 学年学期学年学期: 2009 2010 学年 第 2 学期2010年 5 月 30 日摘要: 嵌入式系统已经在现代生活中伴演着越来越重要的角色,单片机就是一个最典型的嵌入式系统,单片机的应用也越来越广泛。目前单片机功能正日渐完善:单片机集成越来越多资源,内部存储资源日益丰富,用户不需要扩充资源就可以完成项目开发,不仅是开发简单,产品
2、小巧美观,同时抗干扰能力加强,系统也更加稳定,使得它更加适合工业控制领域,具有更加广阔的市场前景;提供在线编程能力,加速了产品的开发进程,为企业产品上市赢得宝贵时间。此外单片机具有性能高、速度快、体积小、价格低、稳定可靠、应用广泛、通用性强等突出优点。单片机的设计目标主要是增强“控制”能力,满足实时控制(就是快速反应) 的需要。因此,掌握单片机的基础和实际应用来说意义重大。键盘作为一种最为普通的输入工具在单片机项目应用上显得尤为重要。关键词:键盘;单片机;数码管;扫描目录目录1 设计目的 .12 设计原理 .12.1 设计电路图.12.2 程序流程图.12.3 硬件说明.23 程序设计 .63
3、.1 按键过程分析.63.2 源程序(c 语言).74 程序调试 .125 仿真测试 .126 实物实现 .13总 结 .14参考文献 .15单片机系统开发与应用工程实习计报告11 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 接列线;把系统中单片机的 p0.
4、0/ad0-p0.6/ad6 端口连接到共阳数码管的 a-g 端口,并一一对映。p0.0/ad 对应 a,依次对应。整个电路由复位电路,晶振电路,主控制块,键盘扫描模块,led 显示模块,电源电路组成。单片机系统开发与应用工程实习计报告22.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 灯的亮灭来显示数字。数码管跟据接收到的字形码显示数字。单片机系统开发与应用工程实习计报告3图 2-4 74ls245 芯片74ls245 是我们常用的芯片,用来驱动 led 或者其他的设备,它
6、是 8 路同相三态双向总线收发器,可双向传输数据。74ls245 还具有双向三态功能,既可以输出,也可以输入数据。当 8051 单片机的 p0 口总线负载达到或超过 p0 最大负载能力时,必须接入 74ls245 等总线驱动器。图 2-5 at89s52 单片机实物图at89s52 是一种低功耗、高性能 cmos8 位微控制器,具有 8k 在系统可编程flash 存储器。使用 atmel 公司高密度非 易失性存储器技术制造,与工业 80c51 产品指令和引脚完 全兼容。片上 flash 允许程序存储器在系统可编程,亦适于 常规编程器。在单芯片上,拥有灵巧的 8 位 cpu 和在系统 可编程 f
7、lash,使得 at89s52 为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。 at89s52 具有以下标准功能: 8k 字节 flash,256 字节 ram, 32 位 i/o 口线,看门狗定时器,2 个数据指针,三个 16 位 定时器/计数器,一个 6 向量 2 级中断结构,全双工串行口, 片内晶振及时钟电路。另外,at89s52 可降至 0hz 静态逻 辑操作,支持 2 种软件可选择节电模式。空闲模式下,cpu 停止工作,允许 ram、定时器/计数器、串口、中断继续工 作。掉电保护方式下,ram 内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。8
8、 位微控制器 8k 字节在系统可编程 flash at89s52 单片机系统开发与应用工程实习计报告4图 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 mos
10、i(在系统编程用) 单片机系统开发与应用工程实习计报告5p1.6 miso(在系统编程用) p1.7 sck(在系统编程用) p2 口:p2 口是一个具有内部上拉电阻的 8 位双向 i/o 口,p2 输出缓冲器能驱动 4 个 ttl 逻辑电平。对 p2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil) 。 在访问外部程序存储器或用 16 位地址读取外部数据存储器(例如执行 movx dptr) 时,p2 口送出高八位地址。在这种应用中,p2 口使用很强的内部上拉发送 1。在使用 8 位地址(如 movx
11、ri)访问外部数据存储器时,p2 口输出 p2 锁存器的内容。 在 flash 编程和校验时,p2 口也接收高 8 位地址字节和一些控制信号。 p3 口:p3 口是一个具有内部上拉电阻的 8 位双向 i/o 口,p3 输出缓冲器能驱动 4 个 ttl 逻辑电平。对 p3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil) 。 p3 口亦作为 at89s52 特殊功能(第二功能)使用,如下表所示。 在 flash 编程和校验时,p3 口也接收一些控制信号。 端口引脚 第二功能 p3.0 rxd(串行输入口)
12、p3.1 txd(串行输出口) p3.2 into(外中断 0) p3.3 int1(外中断 1) p3.4 to(定时/计数器 0) p3.5 t1(定时/计数器 1) p3.6 wr(外部数据存储器写选通) p3.7 rd(外部数据存储器读选通) 单片机系统开发与应用工程实习计报告6此外,p3 口还接收一些用于 flash 闪存编程和程序校验的控制信号。 rst复位输入。当振荡器工作时,rst 引脚出现两个机器周期以上高电平将是单片机复位。 ale/prog当访问外部程序存储器或数据存储器时,ale(地址锁存允许)输出脉冲用于锁存地址的低 8 位字节。一般情况下,ale 仍以时钟振荡频率的
13、 1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个 ale 脉冲。 对 flash 存储器编程期间,该引脚还用于输入编程脉冲(prog) 。 如有必要,可通过对特殊功能寄存器(sfr)区中的 8eh 单元的 d0 位置位,可禁止 ale 操作。该位置位后,只有一条 movx 和 movc 指令才能将 ale 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置 ale 禁止位无效。 psen程序储存允许(psen)输出是外部程序存储器的读选通信号,当at89c52 由外部程序存储器取指令(或数据)时,每个机器周期两次 pse
14、n 有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次 psen 信号。 ea/vpp外部访问允许,欲使 cpu 仅访问外部程序存储器(地址为 0000h-ffffh) ,ea 端必须保持低电平(接地) 。需注意的是:如果加密位 lb1 被编程,复位时内部会锁存 ea 端状态。 如 ea 端为高电平(接 vcc 端) ,cpu 则执行内部程序存储器的指令。 flash 存储器编程时,该引脚加上+12v 的编程允许电源 vpp,当然这必须是该器件是使用 12v 编程电压 vpp。3 3 程序设计程序设计3.13.1 按键过程分析按键过程分析 行信号(key)接到高电平,当没有键按时
15、,行线与列线(keyscan)是断开的,且行线都是高电平(1111) ,行信号作为 fpga 的输入端、列信号作为 fpga 的输出端。可以设置列线初始状态为低电平(0000) 。信号为从上到下的顺序当有键按下时,假如是 k1 按下,行信号与列信号接通,这时相应的行线(key0)变为低电平(01111) ,可以肯定第一行(k1,5,9,13)有键按下。运用扫描的原理:1、因为只知道第一行有键按下,不知道是那个,可以设置列信号为 0111,这时行单片机系统开发与应用工程实习计报告7信号变为(1111) (注:假设时钟周期很短,手还没松开,即键还在按下的状态)2、设置列信号为 1011,行信号也变
16、成(1111)3、设置列信号为 1101,行信号也变成(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 m
17、ain(void) while(1) p3=0 xff; /给 p3 口置 1 p3_4=0; /给 p3.4 这条线送入 0 temp=p3; temp=temp & 0 x0f; /屏蔽低四位 if (temp!=0 x0f) /看是否有按键按下 for(i=50;i0;i-) for(j=200;j0;j-); /延时,消除抖动 temp=p3; temp=temp & 0 x0f; if (temp!=0 x0f) /再次判断按键是否按下 单片机系统开发与应用工程实习计报告8 temp=p3; temp=temp & 0 x0f; switch(temp) /判断与 p3.4 相连的哪
18、个键按下了 case 0 x0e: key=7; break; case 0 x0d: key=8; break; case 0 x0b: key=9; break; case 0 x07: key=10; break; temp=p3; p0=tablekey; /送数到 p0 口显示 temp=temp & 0 x0f; while(temp!=0 x0f) /松手检测,否则跳不出循环 temp=p3; temp=temp & 0 x0f; p3=0 xff; p3_5=0; / /读 p3.5 这条线 temp=p3; temp=temp & 0 x0f; /屏蔽低四位单片机系统开发与应
19、用工程实习计报告9 if (temp!=0 x0f) /判断 p3.5 这条线上是否有按键按下 for(i=50;i0;i-) for(j=200;j0;j-); /延时,消除抖动 temp=p3; temp=temp & 0 x0f; if (temp!=0 x0f) /判断是否真有按键 temp=p3; temp=temp & 0 x0f; 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
20、=11; break; temp=p3; p0=tablekey; /送入 p0 口显示 temp=temp & 0 x0f; while(temp!=0 x0f) /松手检测,否则跳不出循环 temp=p3; 单片机系统开发与应用工程实习计报告10 temp=temp & 0 x0f; p3=0 xff; p3_6=0; / /读 p3.6 这条线 temp=p3; temp=temp & 0 x0f; /屏蔽的低四位 if (temp!=0 x0f) /判断是否有按键按下 for(i=50;i0;i-) for(j=200;j0;j-); /延时,消除抖动 temp=p3; temp=te
21、mp & 0 x0f; if (temp!=0 x0f) /判断是否真有按键按下 temp=p3; temp=temp & 0 x0f; switch(temp) /判断与 p3.6 相连的哪个键按下了 case 0 x0e: key=1; break; case 0 x0d: key=2; break; case 0 x0b: key=3; break; 单片机系统开发与应用工程实习计报告11 case 0 x07: key=12; break; temp=p3; p0=tablekey; /送入 p0 口显示 temp=temp & 0 x0f; while(temp!=0 x0f) /松
22、手检测,否则跳不出循环 temp=p3; temp=temp & 0 x0f; p3=0 xff; p3_7=0; / /读 p3.7 这条线 temp=p3; temp=temp & 0 x0f; /屏蔽的低四位 if (temp!=0 x0f) /判断是否有键按下 for(i=50;i0;i-) for(j=200;j0;j-); /延时,消除抖动 temp=p3; temp=temp & 0 x0f; if (temp!=0 x0f) /判断是否真有键按下 temp=p3; temp=temp & 0 x0f; switch(temp) /判断与 p3.7 相连的哪个键按下了 单片机系统
23、开发与应用工程实习计报告12 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 & 0 x0f; while(temp!=0 x0f) /松手检测,否则跳不出循环 temp=p3; temp=temp & 0 x0f; 4 4 程序调试程序调试 程序刚完成调试后发现并不能在数码管上正常显示数字和字母。经排查发现是程序当中的字型码表不对,经上网查资料
24、后改正,最终能正常显示数字和字母。单片机系统开发与应用工程实习计报告135 5 仿真测试仿真测试 本次课程设计在 proteus,keils 上仿真测试通过。仿真结果如图 4-1,达到设计要求,能在数码管上正常显示 0-9,a-f。 图 5-1 仿真结果图 6 6 实物实现实物实现本次课程设计做出了 4*4 矩阵键盘实物,并实现了预期功能,答辩完后已交给答老师单片机系统开发与应用工程实习计报告14总 结本次课程设计,这是我第一次去作硬件实体。和以往单纯作软件不同,做硬件有其特有的考虑问题的方式。比如,在焊接电路板时,如何布局合理,对最终作出实物来有很重要的影响。我就是开始时布局没布好,导致后面
25、要多接好多导线,增加了犯错和短路的可能性。于是我重头再来,再第二次作的时候,充分考虑到这些问题,结果只用了一个下午的时间就把实物作了出来,但是数码管上 a 线那却不亮,经排查发现可能是排针接触不好,于是用一根导线代替了改排针,最终,数码管得以正常显示,看到自己做出的键盘能实现预期功能,着实让自己兴奋了一把。单片机功能正日渐完善:单片机集成越来越多资源,内部存储资源日益丰富,用户不需要扩充资源就可以完成项目开发,不仅是开发简单,产品小巧美观,同时抗干扰能力加强,系统也更加稳定,使得它更加适合工业控制领域,具有更加广阔的市场前景;通过这次课程设计,我总算对入何作硬件以及以些单片机的知识有了更接近于实际
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车棚管理制度
- 车辆管理制度13篇
- Lagrange方程的变分推导
- 2025《鸿门宴》情节分析课件
- 手术室转运试题及答案
- 学校校园网贷风险防范专项教育方案
- 拉萨驾校电动车考试题及答案
- 浙江省绍兴市2026年中考英语二模附答案
- 2025年临床执业医师《临床医学》阶段测试
- 药物过敏试验试题及答案
- 2026年甘肃事业单位联考笔试易考易错模拟试题(共500题)试卷后附参考答案
- 《化工HSE与清洁生产》课件-项目6 危险化学品
- 2026年六安职业技术学院单招职业适应性考试题库含答案详解(考试直接用)
- 运输企业物流标准化管理制度
- 2026年《禁毒法》知识测试题及答案(全优)
- 2026陕煤集团榆林化学有限责任公司招聘(162人)笔试模拟试题及答案解析
- 人工智能与文学创作的未来
- 【544】人际心理治疗(IPT)
- 2026中国藏语系高级佛学院招聘应届高校毕业生6人考试备考试题及答案解析
- 2026年春季学期统编版三年级下册语文教学计划(含进度表)(2024新教材)
- 2023年边缘计算相关项目实施方案
评论
0/150
提交评论