湖南工业大学
课 程 设 计
资 料 袋
电气与信息工程 学院(系、部) 2009--2010 学年第 1 学期 课程名称 单片机应用系统 指导教师 贺正芸
学生姓名 专业班级 电子信息科学与技术 学号
题 目 4*4矩阵键盘 成 绩 起止日期 2009 年 11 月 23 日~ 2009 年 12 月 04 日
目 录 清 单
序号 1 2 3 4 5 6 材 料 名 称 课程设计任务书 课程设计说明书 课程设计图纸 资料数量 备 注 张
1
湖南工业大学
课程设计任务书
2009 —2010 学年第 1 学期
电气与信息工程 学院(系、部)电子信息科学与技术 专业 班级
课程名称: 单片机应用系统 设计题目: 4*4矩阵键盘 完成期限:自 2009 年 11 月 9 日至 2009 年 11 月 20 日共 2 周 内 容 及 任 务 由P1.0—P1.3(列)和P1.4—P1.7(行)组成4*4矩阵键盘,P0口接LED静态显示电路。由于P0口内部无上拉电阻,因此必须外部接上上拉电阻,其阻值的选择可以根据LED数码管发光电流及其亮度来决定,参考值为560欧姆。编写4*4键盘的驱动程序。 编写主程序,当按键按下时,能够在数码管显示器与按键的键值对应的数字。 起止日期 进 度 安 排 2009.11.23-2009.11.24 设计内容及基本原理 2009.11.25-2009.11.27 2009.11.28-2009.12.04 进行系统的软件设计, 进行系统的硬件设计 工作内容 主 要 参 考 资 料 [1] 欧伟明. 单片机原理与应用. 电子工业出版社,2009年 指导教师(签字): 年 月 日 系(教研室)主任(签字): 年 月 日
2
单片机应用系统
4*4矩阵键盘设计说明书
学班学成
生姓名 级 号 绩
电科072
指导教师(签字)
起止日期:2009 年 11 月 23 日 至 2009 年 12 月4 日
电气与信息工程学院(部)
3
年 月 日
单片机设计题目:矩阵式键盘数显设计
一、设计要求及任务
1、设计要求
(1)由P1.0—P1.3(列)和P1.4—P1.7(行)组成4*4矩阵键盘,P0口接LED静态显示电路。由于P0口内部无上拉电阻,因此必须外部接上上拉电阻,其阻值的选择可以根据LED数码管发光电流及其亮度来决定,参考值为560欧姆。编写4*4键盘的驱动程序。
(2)编写主程序,当按键按下时,能够在数码管显示器与按键的键值对应的数字
2、设计任务
(1)以ATS51为核心,设计系统硬件电路,并根据所设计的电路制作实物。 (2)分析任务要求,绘制程序流程图,编写相应的软件程序。
(3)编写设计说明书,内容包括:电路原理图;程序流程图,源程序清单;电路实测波形、电路原理分析、硬件调试分析;软件调试分析;结论和体会。
序号 1 2 3 4 5 6 7 8 9 10 11
器件名称 ATS51 插座 万能板 1位数码管 12MHZ晶振 30pF电容 20uF电容 9脚排阻(470*8) 按钮 10K电阻 1K电阻 200欧姆电阻 电源插孔 电源开关 发光二极管 下载接口 实验电源(220V转5V) 电烙铁 焊锡丝 1 1 1 1 1 2 1 1 17 4 1 2 1 1 1 1 1 1 若干 器件数量 4
二、任务分析
导线若干 若干 根据任务要求知此课程设计是做一个4*4的矩阵键盘P1口接键盘,P0口接数码管。19脚和18脚接晶振电路,9脚接复位电路,P1.5—P1.7要接下载接口。 应先画出电路原理图,根据原理图列出报目表,编写程序,进行软件仿真,软件仿真成功后开始做硬件。 编写程序时,步骤如下: 1、判断是否有键按下 2、识别被按下的键 3、查数码显示编码表
三、报目表
根据任务分析列出报目表,如表一所示
三、总体设计 1、软件设计 (1)电路原理图
VCCP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7123456ATS514039383736353433323130292827262524232221VCCP0.0560P0.1560P0.2560P0.3560P0.4560P0.5560P0.6560P0.7560EA/VPPALE/PROGPSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0gfcomab表一
10K10K10K10K048C159D26AE37BFedcdpcomP1.6RESTGNDGNDGND24681013579P1.5P1.7VCCRESTGNDVCC下载口接线20022uF30pFREST30pF1K78REST9P3.0P3.11011P3.212P3.3P3.41314P3.515P3.6P3.71617XTAL218XTAL119GND2012MHZ
(2)程序流程图
5
入口扫描一行扫描下一行扫描一列Y延时10ms去抖动4列全部扫描完?再次扫描原列扫描下一行N与原值扫描值相符?4行全部扫描完?Y返回0xFF表示无键按下NY按键释放Y扫描下一行该行该列是否有键按下?N扫描下一行N根据行号和列号查键码表求键值根据键值查数码显示编码表返回
(3)源程序
#include #include Unsigned;char key_code[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1,0x00};unsigned char ksp0[4]={0xfe,0xfd,0xfb,0xf7}; unsigned char ksp1[4]={0xef,0xdf,0xbf,0x7f}; unsigned char k=1; void delay(void) {
unsigned char i,j; for(i=0;i<5;i++)
for(j=0;j<255;j++); }
//键盘扫描
unsigned char key_scan() {
unsigned char i,j,key; P1=0x0f;
while(P1!=0x0f) {delay();
P1=0x0f;
while(P1!=0x0f) {
6
for(i=0;i<=3;i++) {
P1=ksp1[i];
if(P1!=ksp1[i]) break; }
for(j=0;j<=3;j++) {
P1=ksp0[j];
if(P1!=ksp0[j]) break; } key=i*4+j;
return(key); }return(16); }return(16); }
void main()
{unsigned char key=0; while(1) {while(k)
{P1=0x0f; if(P1!=0x0f) {k=0;
key=key_scan();
if(key!=16) P0=key_code[key]; } } while(!k)
{P1=0x0f;
if(P1==0x0f) k=1; } } }
(4)PROTEUS 仿真图
7
2、硬件设计
8
9
心得体会:
通过这次单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地
应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。 这个设计过程中,我们由P1.0—P1.3(列)和P1.4—P1.7(行)组成4*4矩阵键盘,P0口接LED静态显示电路。由于P0口内部无上拉电阻,因此必须外部接上上拉电阻,其阻值的选择可以根据LED数码管发光电流及其亮度来决定,参考值为560欧姆。编写4*4键盘的驱动程序。编写主程序,当按键按下时,能够在数码管显示器与按键的键值对应的数字。 设计结果能够符合题意,成功完成了此次实习要求,我们不只在乎这一结果,更加在乎的,是这个过程。这个过程中,我们花费了大量的时间和精力,更重要的是,我们在学会创新的基础上,同时还懂得合作精神的重要性,学会了与他人合作。
10