基于单片机4X4矩阵键盘控制数码管显示的Proteus仿真
单片机课设矩阵键盘控制七段数码管闪烁
电气工程学院《单片机原理及其应用》第x次课外设计报告
组号:No. xxx
组长:xxxxxxxxxxxxxxxxxx
组员:xxxxxxxxxxxxxxxxxx
组员:xxxxxxxxxxxxxxxxxx
设计时间:xxxxxxxxxxxxxxxxxx
评定成绩:
评定教师:
设计内容:
利用单片机、1个按钮、4*4矩阵键盘和1位共阳数码管,实现显示闪烁控制功能。要求:按下数字键,将按下键对应位置值(0~F)显示在数码管上;按下按钮,显示以0.5秒间隔闪烁;再次按下按钮,显示闪烁停止。
摘要:
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便
与结构的最佳选择。
单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
从二十世纪九十年代开始,单片机技术就已经发展起来,随着时代的进步与科技的发展,目前该技术的实践应用日渐成熟,单片机被广泛应用于各个领域。现如今,人们越来越重视单片机在智能电子技术方面的开发和应用,单片机的发展进入到新的时期,无论是自动测量还是智能仪表的实践,都能看到单片机技术的身影。电子信息技术与单片机技术相融合,有效提高了单片机应用效果。作为计算机技术中的一个分支,为智能化电子设备的开发和应用提供了新的出路,实现了智能化电子设备的创新与发展。
单片机也被称为单片微控器,属于一种集成式电路芯片。在单片机中主要包含CPU、只读存储器ROM和随机存储器RAM等,多样化数据采集与控制系统能够让单片机完成各项复杂的运算,无论是对运算符号进行控制,还是对系统下达运算指令都能通过单片机完成。由此可见,单片机凭借着强大的数据处理技术和计算功能可以在智能电子设备中充分应用。简单地说,单片机就是一块芯片,这块芯片组成了一个系统,通过集成电路技术的应用,将数据运算与处理能力集成到芯片中,实现对数据的高速化处理。
单片机c语言程序设计---矩阵式键盘实验报告
单片机c语言程序设计---矩阵式键盘实验报告
课程名称:单片机c语言设计实验类型:设计型实验
实验项目名称:矩阵式键盘实验
一、实验目的和要求
1.掌握矩阵式键盘结构
2.掌握矩阵式键盘工作原理
3.掌握矩阵式键盘的两种常用编程方法,即扫描法和反转法
二、实验内容和原理
实验1.矩阵式键盘实验
功能:用数码管显示4*4矩阵式键盘的按键值,当K1按下后,数码管显示数字0,当K2按下后,显示为1,以此类推,当按下K16,显示F。
(1)硬件设计
电路原理图如下
仿真所需元器件
(2)proteus仿真
通过Keil编译后,利用protues软件进行仿真。在protues ISIS 编译环境中绘制仿真电路图,将编译好的“xxx.hex”文件加入AT89C51。启动仿真,观察仿真结果。
操作方完成矩阵式键盘实验。具体包括绘制仿真电路图、编写c源程序(反转法和扫描法)、进行仿真并观察仿真结果,需要保存原理图截图,保存c源程序,总结观察的仿真结果。完成思考题。
三、实验方法与实验步骤
1.按照硬件设计在protues上按照所给硬件设计绘制电路图。
2.在keil上进行编译后生成“xxx.hex”文件。
3.编译好的“xxx.hex”文件加入AT89C51。启动仿真,观察仿真结果。
四、实验结果与分析
void Scan_line()//扫描行
{
Delay(10);//消抖
switch ( P1 )
{
case 0x0e: i=1;
break;
case 0x0d: i=2;
break;
case 0x0b: i=3;
break;
case 0x07: i=4;
(完整word版)基于proteus的AT89C51单片机实现计算器的加减乘数开方等功能
目录
一、任务说明 (2)
二、原理图绘制说明 (3)
三、流程图绘制以及说明 (5)
1显示程序设计 (5)
2键盘识别程序设计 (6)
3运算程序设计 (8)
4风鸣器程序设计 (9)
四、PROTEUS仿真说明 (10)
五、课程设计体会 (15)
附I:计算器电路原理图 (16)
附II:源程序代码 (17)
参考文献 (34)
一、任务说明
本设计是一个实现加、减、乘、除的计算器,它的硬件主要由四部分组成,一个AT89C51单片机芯片,一个八位共阳极的数码管,一个四乘四的键盘,一个排阻做P0口的上拉电阻,它可以实现结果低于65535的加、减、乘、除运算.
采用动态显示,由八位共阳极数码管通过P0口,P2口与单片机相连,数码管的A,B,C,D,E,F,G,DP分别依次与单片机的P0。0—P0.7相连,P0口做为字码控制端,数码管的1,2,3,4,5,6,7,8各引脚分别与单片机的P2.0—P2。7相连,P2口做为数码管的位控制端,动态显示是每次数码管只显示一位,由于人的视觉停留是0.05到0.2秒之间,当数码管依次点亮各个位时,使循环的频率高于人的视觉停留时间,人们就会认为数码管是同时点亮的,就可以达到动态显示的效果。
采用4*4键盘。采用软件识别键值并执行相应的操作,键盘的第0行到第3行依次与单片机的P3.4—P3.7管脚相连,键盘的第0列到第3列依次与单片机的P1。0—P1。3管脚相连,程序运行时依次扫描各行,查询是否有键按下,如果有则进入键盘识别处理程序,实现相应的运算,然后通过数码管输出结果,如果没有按键就调用显示程序显示一个0,等待按键按下,在进入按键扫描程序。这样循环执行。
4×4_矩阵键盘计算器设计
西华大学
课程设计说明书
题目4×4 矩阵键盘计算器设计系(部) 电气信息学院
专业(班级) 自动化3班
姓名
学号
指导教师胡红平
起止日期2012.6.10-2012.6.30
计算机接口及应用课程设计任务书
系(部):电气信息学院专业:09自动化
指导教师:日期:2012-6-20
西华大学课程设计鉴定表
摘要
近几年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面的知识是不够的,还应根据具体硬件结合,加以完善。
本任务是个简易得三位数的减法运算,用4×4 矩阵键盘及计算器设计,利用数码管实现255内的减法运算。程序都是根据教材内和网络中的程序参考编写而成,在功能上还并不完善,限制也较多。本任务重在设计构思与团队合作,使得我们用专业知识,专业技能分析和解决问题全面系统的锻炼。
关键词:单片机,AT89C51,矩阵键盘,数码管
ABSTRACT
In recent years, along with the rapid development of science and technology, the application of SCM is unceasingly thorough, it causes the traditional control test technology increasingly updates. In real-time detection and automatic control of single-chip microcomputer application system, often as a core component to use, only microcontroller aspects of knowledge is not enough, should according to specific hardware combined, and perfects.
单片机4×4矩阵键盘设计方案
1、设计原理
(1)如图14.2所示,用单片机的并行口P3连接4×4矩阵键盘,并以单片机的
P3.0-P3.3各管脚作输入线,以单片机的P3.4-P3.7各管脚作输出线,在数码管上显示每个按键“0-F”的序号。
(2)键盘中对应按键的序号排列如图14.1所示。
2、参考电路
图14.2 4×4矩阵式键盘识别电路原理图
3、电路硬件说明
(1)在“单片机系统”区域中,把单片机的P3.0-P3.7端口通过8联拨动拨码开关JP3连接到“4×4行列式键盘”区域中的M1-M4,N1-N4端口上。
(2)在“单片机系统”区域中,把单片机的P0.0-P0.7端口连接到“静态数码显示模块”区域中的任何一个a-h端口上;要求:P0.0对应着a,P0.1对应着b,……,P0.7对应着h。
4、程序设计内容
(1)4×4矩阵键盘识别处理。
(2)每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。
5、程序流程图(如图14.3所示)
6、汇编源程序
;;;;;;;;;;定义单元;;;;;;;;;;
COUNT EQU 30H
;;;;;;;;;;入口地址;;;;;;;;;;
(完整word版)4×4矩阵键盘原理及其在单片机中的简单应用(基Proteus仿真)
4×4矩阵键盘原理及其在单片机中的简单应用
基于Proteus仿真
1、4×4矩阵键盘的工作原理
如下图所示,4×4矩阵键盘由4条行线和4条列线组成,行线接P3。0-P3。3,列线接P3.4-P3。7,按键位于每条行线和列线的交叉点上.
按键的识别可采用行扫描法和线反转法,这里采用简单的线反转法,只需三步。
第一步,执行程序使X0~X3均为低电平,此时读取各列线Y0~Y3的状态即可知道是否有键按下。当无键按下时,各行线与各列线相互断开,各列线仍保持为高电平;当有键按下时,则相应的行线与列线通过该按键相连,该列线就变为低电平,此时读取Y0Y1Y2Y3的状态,得到列码.
第二步,执行程序使Y0~Y3均为低电平,当有键按下时,X0~X3中有一条行线为低电平,其余行线为高电平,读取X0X1X2X3的状态,得到行码。
第三步,将第一步得到的列码和第二步得到的行码拼合成被按键的位置码,即Y0Y1Y2Y3X0X1X2X3(因为行线和列线各有一条为低电平,其余为高电平,所以位置码低四位和高四位分别只有一位低电平,其余为高电平)。
也就是说,当某个键按下时,该键两端所对应的行线和列线为低电平,其余行线和列线为高电平。比如,当0键按下时,行线X0和列线Y0为低电平,其余行列线为高电平,于是可以得到0键的位置码Y0Y1Y2Y3X0X1X2X3为0111 0111,即0X77。当5键按下时,行线X1和列线Y1为低电平,其余行列线为高电平,于是可得到5键的位置码Y0Y1Y2Y3X0X1X2X3为1011 1011,即0XBB.全部矩阵键盘的位置码如下:
数码管显示键盘号
实验步骤:
1.根据以下电路图,在Proteus中找到相应元器件并接线。
元器件:AT89C51、button、cap、res、sounder、respack-8、7SEG-COM-BLUE、CRYSTAL,分别放入开关、红色LED灯、电阻。
2.在Keil中新建工程,添加C51文件,设置生成Hex文件。
具体的程序如下:
#include
//数码管段码表,共阳极段码表,实际电路用的共阴极数码管
unsigned char code disp_buff[] =
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
{
P1 = 0xf0;
if(P1 != 0xf0) //扫描键盘获得按键序号
{
key_scan();
}
if(pre_keyno != keyno)
{
P0 = ~disp_buff[keyno]; //显示,共阳极段码取反作为共阴极段码 pre_keyno = keyno;
}
delayms(100);
}
}
实验效果:
当按下K1时,数码管显示数字1:
当按下KF时,数码管显示字符F:
4×4矩阵键盘的键值计算及编程
定义 Value_h 行值变量 Value_l 列值变量
特意置: 行线高电平,列线 低电平,去找行值
delay(10); //延时防抖 if((P2&0xf0)!=0xf0) //仍有键按下
{ value_h=P2&0xf0; //读出P2口值给变量value_h
NO 行线高电平有 变化吗?
YES 延时,防抖
P2口接有4×4 键盘,低四位做行线,高四位做列线。
Βιβλιοθήκη Baidu.j
3 键盘的键值
找行线值时,程序使P2=0x0f; P2.0行线上开关按下会使P2口值变为 0x0e, 其余同理。
.j
3 键盘的键值
找列线值时,程序使P2=0xf0; P2.7列线上开关按下会使P2口值变为 0x70, 其余同理。
.j
键盘的键值
(4行,1列) 77 (4行,2列) 7b (4行,3列) 7d (4行,4列) 7e
.j
3 键盘的键值
总结
4×4矩阵键盘的键值 共有16个,计算键值时总是: 先找出行线值,再找出列线值,最后绘出矩阵键盘的键
值。
.j
4 键盘扫描编程__线反转法
/************键盘扫子描函数*******************/ char keyscan(void) //键盘扫描函数,键盘使用P2口 {
4X4矩阵键盘及显示电路设计
4X4矩阵键盘与显示电路设计
FPGA在数字系统设计中的广泛应用,影响到了生产生活的各个方面。在FPGA 的设计开发中,VHDL语言作为一种主流的硬件描述语言,具有设计效率高,可靠性好,易读易懂等诸多优点。作为一种功能强大的FPGA数字系统开发环境,Altera公司推出的Quar-tUSⅡ,为设计者提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程,为使用VHDL语言进行FPGA设计提供了极大的便利。矩阵键盘作为一种常用的数据输入设备,在各种电子设备上有着广泛的应用,通过7段数码管将按键数值进行显示也是一种常用的数据显示方式。在设计机械式矩阵键盘控制电路时,按键防抖和按键数据的译码显示是两个重要方面。本文在QuartusⅡ开发环境下,采用VHDL语言设计了一种按键防抖并能连续记录并显示8次按键数值的矩阵键盘与显示电路。
一、矩阵键盘与显示电路设计思路
矩阵键盘与显示电路能够将机械式4×4矩阵键盘的按键值依次显示到8个7段数码管上,每次新的按键值显示在最右端的第O号数码管上,原有第0~6号数码管显示的数值整体左移到第1~7号数码管上显示,见图1。总体而言,矩阵键盘与显示电路的设计可分为4个局部:
(1)矩阵键盘的行与列的扫描控制和译码。该设计所使用的键盘是通过将列扫描信号作为输入信号,控制行扫描信号输出,然后根据行与列的扫描结果进行译码。
(2)机械式按键的防抖设计。由于机械式按键在按下和弹起的过程中均有5~10 ms的信号抖动时间,在信号抖动时间内无法有效判断按键值,因此按键的防抖设计是非常关键的,也是该设计的一个重点。
4×4矩阵键盘在单片机中的应用(Proteus)
4×4矩阵键盘原理及其在单片机中的简单应用
基于Proteus仿真
1、4×4矩阵键盘的工作原理
如下图所示,4×4矩阵键盘由4条行线和4条列线组成,行线接P3.0-P3.3,列线接P3.4-P3.7,按键位于每条行线和列线的交叉点上。
按键的识别可采用行扫描法和线反转法,这里采用简单的线反转法,只需三步。
第一步,执行程序使X0~X3均为低电平,此时读取各列线Y0~Y3的状态即可知道是否有键按下。当无键按下时,各行线与各列线相互断开,各列线仍保持为高电平;当有键按下时,则相应的行线与列线通过该按键相连,该列线就变为低电平,此时读取Y0Y1Y2Y3的状态,得到列码。
第二步,执行程序使Y0~Y3均为低电平,当有键按下时,X0~X3中有一条行线为低电平,其余行线为高电平,读取X0X1X2X3的状态,得到行码。
第三步,将第一步得到的列码和第二步得到的行码拼合成被按键的位置码,即Y0Y1Y2Y3X0X1X2X3(因为行线和列线各有一条为低电平,其余为高电平,所以位置码低四位和高四位分别只有一位低电平,其余为高电平)。
当0键按下时,行线X0和列线Y0为低电平,其余行列线为高电平,于是可以得到0键的位置码Y0Y1Y2Y3X0X1X2X3为0111 0111,即0X77。当5键按下时,行线X1和列线Y1为低电平,其余行列线为高电平,于是可得到5键的位置码Y0Y1Y2Y3X0X1X2X3为1011 1011,即0XBB。全部矩阵键盘的位置码如下:
2、4×4矩阵键盘在单片机的简单应用举例(一)
如下图所示,运行程序时,按下任一按键,数码管会显示它在矩阵键盘上的序号0~F,并且蜂鸣器发出声音,模拟按键的声音。此处采用线反转法识别按键。
实验四:矩阵按键与数码管显示
switch(P2) { case(0X70): KeyValue=3;break; case(0XB0): KeyValue=2;break; case(0XD0): KeyValue=1;break; case(0XE0): KeyValue=0;break; } //测试行 P2=0X0F; switch(P2) { case(0X07): KeyValue=KeyValue+12;break; case(0X0B): KeyValue=KeyValue+8;break; case(0X0D): KeyValue=KeyValue+4;break; case(0X0E): KeyValue=KeyValue;break; } //此处是流程图中所缺少的部分请尝试理解与运用 while((a<50)&&(P2!=0x0F)) { Delay(1000); a++; } } } return KeyValue; }
图 2 矩阵按键行列扫描法
3.
数码管显示原理:
图 3 数码管及其内部构造
数码管的一种是半导体发光器件, 数码管可分为七段数码管和八段数码管, 区别在于八 段数码管比七段数码管多一个用于显示小数点的发光二极管单元 DP 其基本单元是发光二极 管。 常用八段数码管如图 3 所示,其正常是使用方式为两种: 直流驱动: 是指每个数码管的每一个段码(a-g,dp)都由一个单片机的 I/O 端口进行驱动。优点是编 程简单,显示亮度高,缺点是占用 I/O 端口多。 动态显示驱动: 将所有数码管通过分时轮流控制各个数码管的的 COM 端, 就使各个数码管轮流受控显 示。将所有数码管的 8 个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的 公共极 COM 增加位选通控制电路,位选通由各自独立的 I/O 线控制。 当单片机输出字形码时, 所有数码管都接收到相同的字形码, 但究竟是那个数码管会显 示出字形,取决于单片机对位选通 COM 端电路的控制,所以我们只要将需要显示的数码管 的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。 依次循环点亮多个并列数码管, 并同时更改显示的位数对应的数字, 利用器件的余辉(断 电后仍能短暂的亮一段时间),在很短的时间内进行循环切换显示,达到人眼中看到的同时 显示多位数字的情形。 常用四位共阳数码管如图 4 所示。在图 4 中,我们采用了共阳的数码管,若我们要显示 一个四位数组中的四位数字,其编程思路如实例中所示。 段码说明: 若需要显示数字 0, 依照图 3 中构造显示(以共阳数码管为例), 需要同时点亮: a,b,c,d,e,f LED 等,而不点亮:g,dp LED 灯。当 COM 端链接 Vcc 时,如图 3 中共阳数码管图示,为了 达成点亮数字 0(a-g,dp 对应 P0.0-P0.7),需要为 P0 端口赋值:0000 0011=0x03,0x03 即为 数字 0 的段码。
单片机4X4键盘扫描和显示课程设计
表示任意一个十六进制数)分别表示键盘的第二行、第二行、第四
行;OxXE、OxXD、OxXB、0xX7(X表示任意一个十六进制数)则分别表示键盘的第一列、第二列、第三列和第四列。例如0xD7是键盘的第二行第四列的按键
对于数码管的连接,采用了共阳极的接法,其下拉电阻应保证芯片不会因为电流过大而烧坏。
五、电路设计及功能说明
4X4键盘的十六个按键分成四行四列分别于P1端口的八条I/O 数据线相连;两个七段数码管分别与单片机的P0 口和P2 口的低七位I/O数据线相连。数码管采用共阳极的接法,所以需要下拉电阻来分流。结合软件程序,即可实现 4 X4键盘的接口及显示的设计。当按下键盘其中的一个按键时,数码管上会显示出该按键在4X4键盘上的行值和列值。所以实现了数码管显示按键位置的功能
二、实验内容
"3
■审
■ "X I
►Tf
9
fe
设计并实现一 4 X 4键盘的接口,并在两个数码管上显示键盘所在的行与列。 即将8255单元与键盘及数码管显示单元连接,编写实验程序扫描键盘输入,
并
将扫描结果送数码显示,键盘采用4 X 4键盘,每个数码管值可以为0到F, 16 个数。将键盘进行编号记作0—F 当按下其中一个按键时将该按键对应的编号在 一个数码管上显示出来,当按下下一个按键时便将这个按键的编号在下一个数码 管上显示出来,且数码管上可以显示最近 6次按下按键的编号。
基本原理
1•电路设计及功能说明
2•硬件原理框图及电路图(包括接口芯片简介) 电路图:
叫"11
I —0 - 0
E E
可编辑
2
・q 戟
r :
fQfiWEl
4×4矩阵按键模拟编程及控制仿真(汇编+C语言)
4×4矩阵按键模拟编程及控制仿真(汇编+C语言)
4×4矩阵按键模拟编程及控制仿真(中级实验)
实验介绍:
利用单片机控制一组矩阵按键(4×4)以及一个数码管,当按键按下后,数码管会显示按下按键的序号。共16个按键,序号从0开始,一直到F。(矩阵按键较独立按键更节省I/O口,例如在本例中,共有16个按键,仅仅需要8个I/O 口,而采用独立按键则需要16个I/O 口。在I/O口使用较多,且按键较多的情况下可以采用。但是矩阵按键的程序要比独立按键复杂。)
实验目的:
通过本次实验,理解矩阵按键的结构以及工作原理。能够根据使用需求,独立设计矩阵按键的电路图,能够编程实现对矩阵按键的控制。
通过与独立按键的对比,理解矩阵按键与独立按键的硬件及软件的区别。通过对比的方式,理解各自的优缺点。
仿真原理图:
使用Proteus仿真软件搭建仿真原理图如下图所示。
图1
图2
使用仿真软件Proteus搭建的原理图参考如图1所示。(注意事项:一般情况下,采用矩阵按键的形式来控制单片机时,按键数量较多,所以在摆放按键的时候要成行成列的防止,一方面是比较美观,另外一方面是便于编程控制。另外矩阵按键电路比较复杂,电路连线往往比较多,为了让电路看起来更加简洁,可以采用“Terminal Label”的方式进行连线。如图2所示,电路连接简化很多。)编程思路:
对于独立按键,编程过程较为简单,按照顺序逐个编写就行。主要分为两种编程控制方法:按键扫描的方式以及中断的方式。按键扫描的方式需要实时扫描每个按键是否按下。编程时,首先通过单片机实时判断第一个按键是否按下,如果按下就执行相应的程序。只要编制出来第一个按键的程序,其他按键的程序基本相同,只要稍作修改即可。也可以使用中断的方式实现,这种方式一般需要配合外部的电路来实现。掌握外部中断控制的读者,可以使用。
单片机实验指导
实验五单片机与矩阵键盘的接口技术
班级:学号:姓名:
1. 单片机AT89C51对4*4矩阵键盘进行动态扫描,当按键盘的键时,可将相应按键值(0~F)实时显示在数码管上;
2. 用Proteus设实现该接口的电路设计和程序设计,并进行实时交互仿真。
二、Proteus电路设计
单片机与矩阵键盘的接口电路原理图如图;5-1所示。整个设计都在ISIS平台中进行。
图5-1 矩阵键盘与单片机接口电路原理图
1. 从Proteus库中选取元器件
①AT89C51:单片机;
②RES、PULLUP:电阻、上拉电阻;
③7SEG-COM-AN-GRN:带公共端的七段共阳绿色数码管;
④CAP、CAP-ELEC:电容、电解电容;
⑤CRYSTAL:晶振;
⑥RX8:排电阻。
2. 放置元器件、放置电源和地、连线、元器件属性设置、电气检测
所有操作都是在ISIS中进行(见图5-1),P25.0~P2.6依次与数码管的a~g 引脚相连;P1口的8条I/O与矩阵键盘相接;P1口低4位与键盘的列线相接,
即P1.0~P1.3依次与从右到左的列线相连,P1的高4位与键盘的行相连,即P1.4~P1.7依次与由上至下的第一行、第二行、第三行、第四行相连,排电阻阻值100Ω。
三、源程序设计、生成目标代码文件
1. 源程序设计
通过菜单“Source->Add/Remove Source Files…”,新建源程序文件:
test3.asm。
通过菜单“Source->test5.asm”,打开Proteus提供的文本编辑器SRCEDIT,在其中编辑如下源程序:
基于单片机4X4矩阵键盘控制数码管显示的Proteus仿真
电子与信息工程学院 信息与通信工程系
1. 设计要求
单片机的 P3 口的 P3.0~P3.7 连接 4×4 矩阵键盘,P0 口控制一只数码管,当 4×4 矩 阵键盘中的某一按键按下时,数码管上显示对应的键号。例如,1 号键按下时,数码管显 示“1”, 14 号键按下时,数码管显示“E”等等.
2. 仿真电路图
4x4矩阵键盘控制数码管显示电子与信息工程学院信息与通信工程系设计要求单片机的p3口的p30p37连接44矩阵键盘p0口控制一只数码管当44阵键盘中的某一按键按下时数码管上显示对应的键号
Proteus
4x4 矩阵键盘控制数码管显示
班 级: 姓 名:
成 绩:
电信 13-2 段学亮 邓成智 崔俊杰 邓石磊 陈亮 高金玉
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
39 38 37 36 35 34 33 32
21 22 23 24 25 26 27 P2.6 28 P2.7
10 11 12 13 14 15 16 17
K0
K1
K4
K5
K8
K9
KC
KD
图 3-1:当按下 K0 键时,数码管显示数字‘0’
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
39 38 37 36 35 34 33 32
21 22 23 24 25 26 27 P2.6 28 P2.7
基于proteus的数控恒流源的仿真研究
摘要
随着电子技术的发展、数字电路应用领域的扩展,人们对数控恒定电流器件的需求越来越高。应社会发展的需求,对基于单片机控制的“数控恒流电流源”进行研究论证,并运用Proteus软件进行仿真。设计由两大模块组成:①单片机应用系统模块;②大功率压控电流源模块。设计采用AT89C52单片机应用系统,由TLC2543对精密电阻康铜丝的电压进行监控,由LTC1456直接控制输出电压,单片机、A/D、D/A三者组成控制系统,形成闭环回路,保持恒流。电流源采用4×4矩阵键盘进行设定,并采用LCD显示界面。运用Proteus软件仿真,实现输出电流范围为200mA~2000mA,满足步进10mA,误差的绝对值≤1% +10mA,可以同时显示电流的给定值、仿真测试值、负载电压值、负载电阻值。
关键词:电流源,稳压电源,AT89C52,LCD显示,Proteus
ABSTRACT
The requiements of numerical controlling constant current devices is increasing as development of electronic technology and expanding of digital circuit applicational field. As to satisfy society development, do a study based on "numerical controlling constant current power" of SCM controlling and apply Proteus to simulating software. This design includes two module: ①SCM application system module; ②superpower voltage controls current power module. This design adopts AT89C52 SCM application system, monitoried by precision resistance constantan wire voltage corresponding of TLC2543 and controlled and putout voltage directly by LTC1456, which three aspects consist of controlling system and being closed loop circuit to keep constant cuurent. Current souce adopts 4×4 matrix keyboard to set and LCD display interface. Applying Proteus simulation software to realizing the range of ou tput current as 200mA~2000mA satisfies stepping 10mA, the error's absolute value ≤ 1% +10mA and displaying set-value, simulation values, load voltage value and load load resistance value of current simultaneously.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{ uchar j,k; for(j=0;j<i;j++) for(k=0;k<200;k++);
}
uchar
code
table_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x7f8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,
0x8e,0xff};
图 1:4*4 键盘控制数码管显示
#include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit dula=P2^6; sbit wela=P2^7; uchar disnum,temp,key; void delay(uchar i)
AT89C52
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
2. 仿真电路图
仿真电路图,如图一
C1
22PF
C2
X1
U1
19 XTAL1
18 XTAL2
22PF
R1
10k
9 RST
C3
10u
29 30 31
PSEN ALE EA
1 2 3 4 5 6 7 8
P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
AT89C52
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
39 38 37 36 35 34 33 32
21 22 23 24 25 26 27 P2.6 28 P2.7
10 11 12 13 14 15 16 17
K0
K1
K4
K5
K8
K9
KC
KD
图 3-2:当按下 K4 键时,数码管显示数字‘4’
K2
K3
K6
K7
KA
KB
KE
KF
4
C1
22PF
C2
X1
U1
19 XTAL1
18 XTAL2
22PF
R1
10k
9 RST
C3
Байду номын сангаас10u
29 30 31
PSEN ALE EA
1 2 3 4 5 6 7 8
P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
AT89C52
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
39 38 37 36 35 34 33 32
21 22 23 24 25 26 27 P2.6 28 P2.7
10 11 12 13 14 15 16 17
K0
K1
K2
K3
K4
K5
K6
K7
K8
K9
KA
KB
KC
KD
KE
KF
3.仿真 C51 程序
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
6
7
K2
K3
K6
K7
KA
KB
KE
KF
C1
22PF
C2
X1
U1
19 XTAL1
18 XTAL2
22PF
R1
10k
9 RST
C3
10u
29 30 31
PSEN ALE EA
1 2 3 4 5 6 7 8
P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
AT89C52
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
39 38 37 36 35 34 33 32
Proteus
4x4 矩阵键盘控制数码管显示
班 级: 姓 名:
成 绩:
电信 13-2 段学亮 邓成智 崔俊杰 邓石磊 陈亮 高金玉
电子与信息工程学院 信息与通信工程系
1. 设计要求
单片机的 P3 口的 P3.0~P3.7 连接 4×4 矩阵键盘,P0 口控制一只数码管,当 4×4 矩 阵键盘中的某一按键按下时,数码管上显示对应的键号。例如,1 号键按下时,数码管显 示“1”, 14 号键按下时,数码管显示“E”等等.
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
39 38 37 36 35 34 33 32
21 22 23 24 25 26 27 P2.6 28 P2.7
10 11 12 13 14 15 16 17
K0
K1
K4
K5
K8
K9
KC
KD
图 3-1:当按下 K0 键时,数码管显示数字‘0’
break; case 0xe7 : disnum=12;
break; case 0xd7 : disnum=13;
break; case 0xb7 : disnum=14;
break; case 0x77 : disnum=15;
3
break; } } } P0=table_du[disnum]; } }
21 22 23 24 25 26 27 P2.6 28 P2.7
10 11 12 13 14 15 16 17
K0
K1
K2
K3
K4
K5
K6
K7
K8
K9
KA
KB
KC
KD
KE
KF
图 3-4:当按下 KF 键时,数码管显示数字‘F’
5.总结
电路设计方面,根据书本上还是课堂上老师所讲的知识,很快设计出来此仿真电 路。
break; case 0xbd : disnum=6;
break; case 0x7d : disnum=7;
break; case 0xeb : disnum=8;
break; case 0xdb : disnum=9;
break; case 0xbb : disnum=10;
break; case 0x7b : disnum=11;
软件设计方面,我感觉到在编写循环嵌套程序时非常容易出错,需要反复的查错 和耐心的调试。我虽然能够编写出程序,其可读性却有待于提高。
经过这次仿真设计,我对 51 系统的单片机内部构造的了解认识有了一定程度的提 高。我体会到做设计是一项细致的工作,必须要投入时间及精力,要有耐心有韧性。
我相信这几次的仿真设计会为我以后的发展打下一定的基础,我会更加努力,争取 自己在单片机的开发上有更深层次的提高,与此同时经过此次仿真,锻炼了团队协作 能力。
3.电路图仿真效果
当按下键盘时,所显示的效果如图 3-1 至图 3-4
C1
22PF
C2
X1
U1
19 XTAL1
18 XTAL2
22PF
R1
10k
9 RST
C3
10u
29 30 31
PSEN ALE EA
1 2 3 4 5 6 7 8
P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
void main()
{
disnum=16;
wela=0;
while(1)
{
P3=0xf0;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
temp=temp|0x0f;
P3=temp;
key=P3;
switch(key)
5
C1
22PF
C2
X1
U1
19 XTAL1
18 XTAL2
22PF
R1
10k
9 RST
C3
10u
29 30 31
PSEN ALE EA
1 2 3 4 5 6 7 8
P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
AT89C52
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
{
case 0xee : disnum=0;
2
break; case 0xde : disnum=1;
break; case 0xbe : disnum=2;
break; case 0x7e : disnum=3;
break; case 0xed : disnum=4;
break; case 0xdd : disnum=5;
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
39 38 37 36 35 34 33 32
21 22 23 24 25 26 27 P2.6 28 P2.7
10 11 12 13 14 15 16 17
K0
K1
K2
K3
K4
K5
K6
K7
K8
K9
KA
KB
KC
KD
KE
KF
图 3-3:当按下 K8 键时,数码管显示数字‘8’