单片机数码管显示系统课程设计

合集下载

单片机教案新部编本(数码管显示器接口技术)[1]123

单片机教案新部编本(数码管显示器接口技术)[1]123

教师学科教案[ 20 – 20 学年度第__学期]任教学科:_____________任教年级:_____________任教老师:_____________xx市实验学校数码管显示器接口技术一、 LED数码管的结构由8段发光二极管组成。

其中7段组成“8”字,1段组成小数点。

通过不同的组合,可用来显示数字0~9、字母A~F及符号“.”。

LED数码管有共阴极和共阳极两种结构。

二、 LED数码管的工作原理发光二极管导通→亮,不导通→暗。

这样就构成了字符的显示。

其十六进制的编码表如下:显示字h g f e d c b a 字形代码符0 0 0 1 1 1 1 1 1 3FH1 0 0 0 0 0 1 1 0 06H2 0 1 0 1 1 0 1 1 5BH三、数码管接口电路1、静态显示方式(硬件接口方法)这就是我们在数字电路中所学的内容,在数据总线上的信号须经I/O接口电路并锁存,然后通过译码器,就可以驱动LED 显示器中的段发光。

这种方式使用的硬件较多(显示器的段数和位数越多,电路越复杂),缺乏灵活性,且只能显示十六进制数。

2、动态显式方式(软件接口方法)这种接口方法是以软件查表来代替硬件译码,既省去了译码器,又能显示更多段的字符和更多位的LED显示器。

所以广泛应用于单片机系统的显示。

⑴连接方式①将单片机的输出送入可编程的8155芯片,然后利用8155的I/O口提供两路输出信号(一路是段控信号,另一路是位控信号)。

②将各位数码管的a~h端分别并在一起(若有6个数码管,则将它们6个a对a,6个b对b......6个h对h相并接),再和上面的一路I/O口输出的8位段控信号相连,以获得显示代码,对应要发光的段。

③将各位数码管的公共端(共阴极或共阳极)分别与上面的另一路I/O口相连(每一位公共端对应I/O口中的一位),以获得位控信号使该位LED发亮。

④为了存放显示的数字或字符,通常在8155的内部RAM中设置显示缓冲区,其存储单元个数与LED显示器的位数相同。

51单片机数码管显示程序设计

51单片机数码管显示程序设计

练习3主程序参考:
ORG 0000H LJMP START ORG 000BH LJMP T0SERV ;T0中断入口 ORG 0030H START: MOV SP,#50H ;初始化堆栈 LCALL INIT ;初始化 MOV DISBUF,#0 MOV DISBUF+1,#1 MOV DISBUF+2,#2 MOV DISBUF+3,#3 MOV DISBUF+4,#4 MOV DISBUF+5,#0 MOV FLASH,#11000000B MOV R0,#0 LOOP: MOV DISBUF+5,R0 LCALL DELAY INC R0 CJNE R0,#10,LOOP MOV R0,#0 AJMP LOOP
恢复现场
返回
动态显示参考程序1:定义变量
;--------------------------------------------------------;动态显示程序 ;--------------------------------------------------------;全局变量定义 FLAG EQU 20H ;标志位 DISSEG EQU P0 ;显示段驱动 DISBIT EQU P2 ;显示位驱动P2.7-P2.2 DISBUF EQU 21H ;显示缓冲区首地址21H-26H DISBITBUF EQU 27H ;当前显示位计数器0-5 FLASH EQU 28H ;闪烁控制xxxxxx00,将x=1闪烁,=0不闪 ;小数点的处理: ;若显示‘3’,缓冲区放‘3’,若显示‘3.’,缓冲区放‘3+80H’, 最高位为1 S_PULSE EQU FLAG.0 ;秒脉冲 CNT_2D5MS EQU 2FH ;2.5MS计数器 CNT_10MS1 EQU 30H ;10MS计数器 CN_0D5S EQU 31H ;0.5秒计数器 ;----------------------------------------------------------

实验四--单片机驱动数码管显示

实验四--单片机驱动数码管显示

实验四单片机驱动数码管显示一实验目的1 学习单片机驱动数码管动态显示的电路设计和编程方法二实验原理1、单片机系统中常用的显示器有:发光二极管LED(Light Emitting Diode)显示器、液晶LCD(Liquid Crystal Display)显示器、CRT显示器等。

LED、LCD显示器有两种显示结构:段显示和点阵显示。

七段数码管显示为了显示数字或字符,必须对数字或字符进行编码。

七段数码管加上一个小数点,共计8段。

因此为LED显示器提供的编码正好是一个字节。

字母一般用米字型。

编码表:0x3f 0x06 0x5b 0x4f 0x66 0x6d0 1 2 3 4 50x7d 0x07 0x7f 0x6f 0x77 0x7c6 7 8 9 A B0x39 0x5e 0x79 0x71 0x00C D E F 无显示七段数码管对应八位由低到高:a,b,c,d,e,f,g,dp例:数码管显示2则要点亮a,b,g,e,d段,对应的八位是01011011数码管动态显示方式是将所有显示位的段选择线并联在一起,有统一的I/O资源来控制。

各个数码管公共端也有I/O资源来控制,分时的选通各个数码管进行动态显示。

每个瞬间只能选通一个数码管,人眼的暂留时间为,每个数码管的选通时间必须在以内,通常选择15ms~20ms。

电路图见实验附图。

三实验内容理解动态显示电路图,参考驱动程序,单片机P0口作段码输出控制,P1口作位码控制,使单片机驱动6个7段数码管输出实验当天年、月、日六位数字。

四、实验步骤(1)单片机最小应用系统1的P0口接段码口a~h,P1口接位码口S1~S6。

(2)在KEIL软件下编写程序并调试,完成实验内容要求。

(3)下载程序,通过实验箱验证设计电路和编写的程序是否达到实验要求。

下载程序,通过实验箱验证设计电路和编写的程序是否达到实验要求。

五参考程序与电路汇编语言参考程序:ORG 0000HLJMP STARTORG 0030HSTART: MOV R0,#30HMOV R1,#40HMOV 30H,#1MOV 31H,#2MOV 32H,#1MOV 33H,#1MOV 34H,#2MOV 35H,#0START1: MOV DPTR,#TABMOV R3,#6LOOP: MOV A,@R0MOVC A,@A+DPTRMOV @R1,AINC R0INC R1DJNZ R3,LOOPMOV R3,#6MOV R1,#40HMOV A,#20HLOOP1: MOV P1,@R1MOV P2,AACALL DELAYMOV P2,#00HRR AINC R1DJNZ R3,LOOP1LJMP START1TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,58H,5EH,7BH,71H,00H,40H DELAY: MOV R4,#100LOOP2: DJNZ R4,LOOP2RETENDC语言参考程序:#include <reg51.h>#include <intrins.h>unsigned char code table[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};unsigned char date[]={1,2,1,1,2,0};void delay(){unsigned char j;for(j=0;j<=100;j++);}void main(){unsigned char i,a;while(1){a=0x40;for(i=0;i<6;i++){P1=table[date[i]];a=_cror_(a,1);P2=a;delay();P2=0x00;}}}数码管动态显示电路图(位选信号为高电平,段选信号为高电平):。

数码管显示课程设计报告

数码管显示课程设计报告

目录一.实验前的准备 (2)二.实验目的 (2)三.实验设备 (2)四.实验内容 (3)五.实验原理 (3)六.管脚分配 (4)七.实验步骤 (4)八.实验原理图: (5)九.实验程序代码: (6)(1)CH452_I2C.h代码 (6)(2)Define.h代码 (8)(3)key.h代码 (9)(4)Key.c代码 (10)(5)Seven_seg.c代码 (12)十.结果分析: (15)十一.个人体会与总结: (16)一.实验前的准备打开实验箱开关,连接好JTAG下载线,将开发平台上的MODUL_SEL组合开关的1、2、7拨上,3、4、5、6、8拨下,使两个共阳极数码管显示为C2。

二.实验目的(1)熟悉并学习运用I2C总线的读写方式。

(2)运用CH452芯片的数码管显示功能,熟悉两线制访问CH452芯片的工作原理。

三.实验设备硬件:PC机GX-CIDE-SOC/SOPC综合创新开发实验平台GX-CIDE-SOC/SOPC综合创新开发实验平台核心板软件:Quartus II 8.0Nios II 8.0四.实验内容用七段数码管前三位显示000-999,计数周期为1s;按F1进行加1操作并用数码管显示。

按F2计数停止,并显示当前数。

按F3进行减1操作;当数从000-999时再加1变为000;当数从999-000时再减1变为999。

五.实验原理根据I2C总线时序要求,对CH452进行操作,送地址,送控制字,送数据。

数码管显示是以BCD译码方式显示。

六.管脚分配七.实验步骤(1)打开Quartus II 8.0,打开工程cide_c2,进行SOPC操作,裁剪所需要的内容,综合一下再分配管脚。

(2)启动Nios II IDE并新建一个空白C/C++工程,命名为smm,在SOPC Builder System中选择之前建立好的硬件系统cide_c2.ptf。

(3)转换工程路径,将提供的参考程序seven_seg.c,CH452_I2C.h,define.h加入到建立好的Nios II工程中,修改程序代码符合实验要求。

51单片机-数码管显示

51单片机-数码管显示
P2=0x00; P0=0x03; delay(400); P0=0x9f; delay(400); P0=0x25; delay(400);
} void delay(int x) {
int i,j; for(i=0;i<x;i++)
for(j=1;j<120;j++); }
LED字型显示代码表
段符号
十六进制代码
显示 dp
g
f
e
d
c
b
a 共阴极 共阳极
0
0
1
0
2
0
3
0
4
0
5
0
6
0
7
0
8
0
9
0
A0
b
0
C0
d
0
E0
F
0
H0
P0
0
1
1
1
1
1
1
3FH
C0H
0
0
0
0
1
1
0
06H
F9H
1
0
1
1
0
1
1
5BH
A4H
1
0
0
1
1
1
1
4FH
B0H
1
1
0
0
1
Hale Waihona Puke 1066H
99H
1
1
0
1
1
0
1
6DH 92H
1
1
1
1
1
0
1
7DH
1. 静态显示的特点
静态显示就是单片机将所要显示的数据送出去后,数码管始终显示 该数据(不变),到下一次显示时,再传送一次新的显示数据。

单片机指令编程实例数码管显示程序设计

单片机指令编程实例数码管显示程序设计

单片机指令编程实例数码管显示程序设计在单片机的开发中,数码管是一种常见的输出设备。

通过编程控制数码管的显示,我们可以实现各种功能,如计时、计数、温度显示等。

本文将介绍一个简单的单片机指令编程实例,用于设计一个数码管显示程序。

一、概述数码管是一种由七段LED组成的显示器件,每个数码管可以显示0-9的数字。

通过合理的控制,可以将多个数码管连接起来并显示多位数值。

在这个实例中,我们将使用AT89C51单片机和共阳数码管进行程序设计。

二、硬件连接将数码管的七段LED引脚依次连接到单片机的GPIO引脚,并将共阳极引脚连接到单片机的VCC。

为了方便控制,可以利用74HC595芯片实现数码管的级联连接,这样只需要使用三个IO口即可控制多个数码管。

三、程序设计程序设计的主要逻辑是通过编写一系列的指令来控制数码管的显示。

以下是一个简单的实例程序:```#include <reg51.h>sbit SDA = P1^0; // 74HC595芯片的串行数据引脚sbit SCK = P1^1; // 74HC595芯片的时钟引脚sbit RCK = P1^2; // 74HC595芯片的输出使能引脚unsigned char code num[10] = {0xC0, // 数字0的显示码0xF9, // 数字1的显示码0xA4, // 数字2的显示码0xB0, // 数字3的显示码0x99, // 数字4的显示码0x92, // 数字5的显示码0x82, // 数字6的显示码0xF8, // 数字7的显示码0x80, // 数字8的显示码0x90 // 数字9的显示码};void delay(unsigned int t) {unsigned int i;while (t--) {for (i = 0; i < 1000; i++);}}void writeByte(unsigned char dat) {unsigned char i;for (i = 0; i < 8; i++) {SDA = (dat & 0x80) ? 1 : 0;dat <<= 1;SCK = 0;SCK = 1;}}void display(unsigned char n) {unsigned char i;for (i = 0; i < 8; i++) {writeByte(num[n]);RCK = 1;RCK = 0;delay(1); // 延时一段时间,使数码管显示出来}}void main() {unsigned char i;while (1) {for (i = 0; i < 10; i++) {display(i);delay(500); // 每个数字显示的时间间隔为500ms}}}```以上程序通过将各个数字的显示码存储在一个数组中,然后通过控制74HC595芯片的串行数据引脚、时钟引脚和输出使能引脚,来实现数码管的动态显示。

数码管的课程设计

数码管的课程设计

数码管的课程设计一、课程目标知识目标:1. 让学生理解数码管的基本原理与结构,掌握其显示原理和驱动方式;2. 使学生掌握数码管的连接方式,能正确进行电路设计与搭建;3. 让学生了解数码管在现实生活中的应用,认识到数码管技术的实用价值。

技能目标:1. 培养学生运用所学知识进行数码管电路设计、搭建与调试的能力;2. 培养学生运用编程语言对数码管进行控制,实现简单数字和字符的显示;3. 提高学生动手实践能力和问题解决能力。

情感态度价值观目标:1. 激发学生对电子技术和编程的兴趣,培养其探索精神;2. 培养学生团队协作意识,学会与他人共同解决问题;3. 引导学生关注科技发展,认识到数码管技术在现实生活中的广泛应用,增强社会责任感。

课程性质:本课程为电子技术与编程实践课程,结合理论知识与实际操作,注重培养学生的动手实践能力和问题解决能力。

学生特点:本课程针对初中年级学生,他们对电子技术和编程有一定的基础知识,好奇心强,喜欢动手实践。

教学要求:教师需采用理论与实践相结合的教学方法,注重引导学生自主学习,激发学生的兴趣和积极性,确保课程目标的实现。

在教学过程中,关注学生的个体差异,提供个性化指导,使学生在掌握知识技能的同时,培养良好的情感态度价值观。

通过课程学习,使学生能够达到上述具体的学习成果,为后续相关课程的学习奠定基础。

二、教学内容1. 数码管基本原理与结构:介绍数码管的工作原理、显示原理、类型及特点,结合教材第3章相关内容,让学生对数码管有全面的认识。

- 数码管显示原理- 数码管的类型及特点2. 数码管连接方式与电路设计:讲解数码管的连接方法,指导学生进行电路设计与搭建,参考教材第4章实例。

- 数码管的连接方法- 电路设计与搭建3. 数码管编程控制:学习如何使用编程语言对数码管进行控制,实现数字和字符的显示,结合教材第5章编程实例进行讲解和实践。

- 编程语言控制数码管- 实现数字和字符显示4. 数码管应用案例:介绍数码管在现实生活中的应用,激发学生学习兴趣,参考教材第6章相关案例。

单片机数码管显示课程设计

单片机数码管显示课程设计

单片机数码管显示课程设计班级:机电一班姓名:学号:指导教师:单片机数码管显示课程设计摘要从上世纪70年代第一批单片机问世,短短二三十年时间,单片机技术已经成为计算机技术的一个重要分支,广泛运用到工业控制、仪器、仪表、消费产品,汽车、办公自动化和通信等领域。

因此,单片机技术已经成为电子、测控、自动化、通信等许多工科专业学生的必备技能。

我用AT89C51芯片来设计一个简单的数码管显示。

此设计给出了源代码,通过仿真测试,其性能指标达到了设计要求。

关键词:单片机,AT89C51,数码管设计任务和要求2.1 设计目的1.学习基本理论在实践中综合运用的初步经验,掌握模拟电路设计的基本方法、设计步骤,培养综合设计与调试能力。

2.了解AT89C51这个芯片的使用和性能指标测试方法。

3.培养实践技能,提高分析和解决实际问题的能力。

2.2 设计意义为了更好地熟悉和掌握单片机的基本功能和编程,掌握数码管动态扫描显示原理及实现方法。

自我动态扫描显示电路驱动程序的编写方法。

通过课程设计,达到理论与实际应用相结合,提高学生对微机硬件结构的软件设计方法的理解,使学生能够根据实际应用,初步实现硬件及软件的设计,对硬件开发有更深层的认识,为今后打软硬件开发,打下坚实的基础。

3总原理图及及主要模块的流程图3.1 总原理图及元器件清单(1)我用Proteus 7 professional来画出我设计的总原理图,如图3-1。

此电路图就用到AT89C51这个芯片,和一个数码管。

3.2 主要流程图(四号宋体加粗)1.主程序的流程图图3.2-1主流程图2.子程序的流程图图3.2-2子流程图4性能测试与分析主程序和子程序都存放在AT89C51单片机中。

主程序的功能是:显示数字。

子程序的功能有:延时。

程序代码:ORG 0000H ;初始化LJMP START ;转入主程序ORG 0010H ;初始化START:CLR P2.7 ;P2.7←00H MOV R0,#00H ;R0←00HMOV R2,#10 ;R2←10MAIN:MOV DPTR,#TAB ;DPTR←TABMOV A,R0 ;A←(RO)MOVC A,@A+DPTR ;A←((A)+(DPTR))MOV P0,A ;P0←(A)LCALL DELAY ;调用延时程序INC R0 ;RO←(R0)+1DJNZ R2,MAIN ;判断JMP START ;循环DELAY: ;延时程序MOV R3,#11D1: MOV R4,#100D2: MOV R5,#100DJNZ R5,$DJNZ R4,D2DJNZ R3,D1RETTAB:DB 00101000B ;0DB 11101011B ;1DB 00110010B ;2DB 10100010B ;3DB 11100001B ;4DB 10100100B ;5DB 00100100B ;6DB 11101010B ;7DB 00100000B ;8DB 10100000B ;9END我用Proteus 7 professional 软件来测试我设计的电路图。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数码管显示与键盘扫描系统摘要:现如今已经跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。

不过,这种电脑,通常是指个人计算机,简称PC机。

它由主机、键盘、显示器等组成。

还有一类计算机,这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。

这种计算机的最小系统只用了一片集成电路,就可进行简单运算和控制。

因为它体积小,通常都是放置在一个机械装置的内部。

它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。

各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。

现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。

究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。

数码管显示与键盘扫描系统是单片机系统中十分典型的应用,可将4×4键盘的按键对应显示在数码管上。

关键词:单片机数码管一、绪论1. 研究意义用单片机驱动LED数码管有很多方法,按显示方式可分静态显示和动态(扫描)显示;按译码方式可分硬件译码和软件译码。

静态显示数据稳定,占用很少的CPU 时间。

动态显示需要CPU时刻对显示器件进行数据刷新,显示数据有闪烁感,占用的CPU时间多。

LED数码管的外围电路一般需要一个限流电阻和加大驱动电流的晶体管。

LED数码管是由发光二级管显示字段组成的显示器,有“8”字段和“米”字段之分,这种显示器有共阳极和共阴极两种。

实际上不用驱动电路即可达到正常亮度,为了可靠性设计可采用晶体管构成驱动电路。

2. 设计目的在单片机的产品设计中,人机界面是非常重要的部分,而且随着系统的日益复杂,以及人们对产品的人机交互能力的要求不断提升,常握单片机系统中的人机界面基础设计能力成为了学习单片机的基础课程,而4X4键盘的操作和LED数码管的动态显示是人机界面设计的基础内容,掌握这些基础设计能力,加深对人机界面的认识,同时提高人机界面系统设计能力。

3.研究范围及技术要求半导体数码管,4×4键盘。

做此实验用51板,因为51板提供了相应的LED模组,LED显示器是单片机应用中常用的输出器件,4×4键盘的扩展显示也是在MCS-51上进行实验。

给 4×4 键盘的每个键定义一个功能,其中把定义为 0~9 的键盘称为数字键,把定义成 DEL 的键称为删除键,把定义成 ENT 的键成为确认键,其他键称为保留键。

如果是数字键按下,把代表数字显示在数码管上:按键按下时,6 位数码管靠右边显示该键的代表数字;继续按键时,已经显示在数码管上的数字左移一位,按键代表的数字显示在最右边的数码管上。

4.发展及指导思想单片机在开发过程中 ,常常会因为资源不足而不得不大量扩展接口芯片以满足应用系统的需要。

国外主要采用串行接口的键盘显示专用芯片,如BC7280/81、HD7279、CH451等。

这类芯片占用CPU的资源少,传输速度较快,外围器件要求也较少,在中小系统中都可得到广泛的应用。

指导思想主要是用串行接口使得键盘的扩展在LED上显示。

二、方案论述1.数码管工作原理数码管由8 个发光二极管(以下简称字段)构成,通过不同的组合可用来显示数字0~9,字符A~F、H、L、P、R、U、Y 等符号及小数点“.”。

数码管又分为共阴极和共阳极两种类型。

共阳极数码管中8 个发光二极管的阳极(二极管正端)连接一起,即为共阳极接法,简称共阳数码管。

通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。

当某段驱动电路的输入端为低电平时,该端所连接的字段导通并点亮。

根据发光字段的不同组合可显示出各种数字或字符。

此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。

共阴极数码管中8 个发光二极管的阴极(二极管负端)连接在一起,即为共阴极接法,简称共阴数码管。

通常,共阴极接低电平(一般接地),其它管脚接段驱动电路输出端。

当某段驱动电路的输出端为高电平时,该端所连接的字符导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。

同样,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。

单片机数码管显示控制程序设计仿真图2. 4×4行列式键盘的工作原理行列式键盘的工作方式是先用列线发送扫描字,然后读取行线的状态,查看是否有按键按下。

键盘部分提供一种扫描的工作方式,可以和具有64个按键的矩阵键盘相连接,能对键盘不断扫描、自动消抖、自动识别按下的键,并给出编码,能对双键或n个键同时按下的情况实行保护。

在显示部分,它可以为发光二极管、荧光管及其他显示器提供按扫描方式工作的显示接口,而且为显示器提供多路复用信号,可以显示多达16位的字符或数字。

键盘中有无按键按下是由列线送入全扫描字、行线读入行线状态来判断的,其方法是将列线的所有I/O线均置成低电平,然后将行线电平状态读入累加器A中,如果有键按下,总会有一根行线被拉至低电平,从而使行输入不全为1。

键盘中哪一个键按下可由列线逐列置低电平后,检查行输入状态来判断,其方法是依次给列线送低电平,然后检查所有行线状态,如果全为1,则所按下的键不在此列,如果不全为1,则所按下的键必在此列,而且是在与0电平线相交的交点上的那个键。

4×4键盘电路图图中C1~C4为4×4键盘的列扫描线,L1~L4为4×4键盘的行扫描线。

先使行扫描线输出高电平,然后读取列扫描线的状态,得到与按键横向位置对应的4位列码;如果是有键被按下时,则对应的列扫描线必然会被读回高电平,如果是无键盘按下时,则读取的列码必定全是0(低电平)。

这也就可以判断有无按键的按下了。

3.软件流程图程序开始先对第一列进行扫描,如果没有按键,再对第二列、第三列、第四列分别进行扫描,如果没有返回到开始;如果第一列有按键,在分别对第一行、第二行、第三行、地四行,进行扫描,若有按键按下分别显示 0、1、2、3;第二列、第三列、第四列类似第一列,分别对第一行、第二行、第三行、第四行进行扫描,有按键相应的显示出数值。

流程图见附件1。

4.电路硬件说明(1).键盘与单片机连接在“单片机系统”区域中,把单片机的P3.0-P3.7端口通过8联拨动拨码开关JP3连接到“4×4行列式键盘”区域中的M1-M4,N1-N4端口上。

(2).单片机与LED连接在“单片机系统”区域中,把单片机的P0.0-P0.7端口连接到“静态数码显示模块”区域中的任何一个a-h端口上;要求:P0.0对应着a,P0.1对应着b,……,P0.7对应着h。

5.程序设计内容(1).4×4矩阵键盘识别处理(2).按键的行列接法每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。

矩阵的行线和列线分别通过两并行接口和CPU通信。

键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。

键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。

两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。

6.程序#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit BEEP = P3^7;uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa 1,0x86,0x8e,0x00};uchar Pre_KeyNO = 16,KeyNO = 16;void DelayMS(uint ms){uchar t;while(ms--){for(t=0;t<120;t++);}}void Keys_Scan(){uchar Tmp;P1 = 0x0f;DelayMS(1);Tmp = P1 ^ 0x0f;switch(Tmp){case 1: KeyNO = 0; break; case 2: KeyNO = 1; break; case 4: KeyNO = 2; break; case 8: KeyNO = 3; break; default: KeyNO = 16;}P1 = 0xf0;DelayMS(1);Tmp = P1 >> 4 ^ 0x0f;switch(Tmp){case 1: KeyNO += 0; break; case 2: KeyNO += 4; break; case 4: KeyNO += 8; break; case 8: KeyNO += 12;}}void Beep(){uchar i;for(i=0;i<100;i++){DelayMS(1);BEEP = ~BEEP;}BEEP = 1;}void main(){P0 = 0x00;while(1){P1 = 0xf0;if(P1 != 0xf0)Keys_Scan();if(Pre_KeyNO != KeyNO){P0 = ~DSY_CODE[KeyNO]; Beep();Pre_KeyNO = KeyNO;}DelayMS(100);}}7.结果分析结果仿真图8.结论通过这次课程设计,Keilc51软件工作环境的熟悉以及掌握基本的操作,实现电路原理图的绘制及电路仿真的实现,我还认识到理论与实际相结合的重要性,理论知识再丰富,没有实际的操作经验是不行的,这样还可以锻炼我们的实际动手操作能力和独立思考能力。

单片机知识在电子领域越来越重要了,在这次课程设计中我又了解了更多单片机的知识,从而也对单片机仿真软件产生了兴趣,学到了书上没有的东西,为以后工作又做了一层铺垫。

在课程设计过程中遇到的一些问题,通过查询资料和结合平时学到的知识,当然还有和同学的讨论得到了解决。

9.致谢经过这一个周的实训,单片机课程设计也已接近尾声,回顾这星期内和老师、同学们一起努力时的点点滴滴,不经感慨万千。

在此我首先要感谢学校,是学校给我们提供了良好的硬件设施,让我们能顺利的完成实训。

其次,我要感谢我的单片机老师—陈显明老师。

陈老师无论在课程学习、设计上,还是在为人处事上,都给予我许多教诲,这些影响将使我终身受益。

同时我还要感谢和我一起完成这份课程设计的同学康秀梅,我们在学习和实践中一起讨论,一起研究,我在她身上学到了许多东西,同时也学会了做一件事应该坚持,不耻下问。

相关文档
最新文档