vhdl按键控制数码管显示

vhdl按键控制数码管显示

vhdl按键控制数码管显示

?在传统的硬件电路设计中,主要的设计文件是电路原理图,而采用HDL 设计系统硬件电路时主要使用HDL编写源程序。

?

?

?VHDL的主要优点有:

?

?(1)VHDL支持自顶至下的和基于库的设计方法,而且支持同步电路、异步电路、现场可编程门阵列器件FPGA(field programmable gate array)以及其他随机电路的设计。

?

?

?(2)VHDL语句的行为描述能力和程序结构决定了它具有支持大规模设计的分解和已有设计再利用的功能,它支持系统的数学模型直到门级电路的描述,并且高层次的行为描述与低层次的门级电路描述、结构描述可以混合使用。(3)VHDL的硬件描述与具体的工艺技术和硬件结构无关,当门级或门级以上的描述通过仿真检验后,再利用相应的工具将设计映射成不同的工艺,因此电路的设计与工艺的改变是相互独立的。彼此的改变不会产生不良影响,并且VHDL硬件描述语言的实现目标器件的选择范围广泛,可使用各系列的CPLD、FPGA及各种门阵列器件。

?

?

实验四 数码管显示控制

实验四数码管显示控制 一、实验目的 1、熟悉Keil uVision2软件的使用; 2、掌握LED数码管显示接口技术; 3、理解单片机定时器、中断技术。 二、实验设备及仪器 Keil μVision2软件;单片机开发板;PC机一台 三、实验原理及内容 1、开发板上使用的LED数码管是四位八段共阴数码管(将公共端COM接地GND),其内部结构原理图,如图4.1所示。 图4.1共阴四位八段LED数码管的原理图 图4.1表明共阴四位八段数码管的“位选端”低电平有效,“段选端”高电平有效,即当数码管的位为低电平,且数码管的段为高电平时,相应的段才会被点亮。 实验开发板中LED数码管模块的电路原理图,如图4.2所示。 a~h SP2 SP1 P0.0~P0.3 P0.4~P0.7图4.2 LED数码管模块电路原理图

图中,当P1.0“段控制”有效时,P0.0~P0.7分别对应到数码管的a~h段。当P1.1“位控制”有效时,P0.0~P0.7分别对应到DIG1~DIG8。 训练内容一:轮流点亮数码管来检测数码管是否正常。参考程序: ORG 00H AJMP MAIN MAIN: SETB P1.2;LED流水灯模块锁存器的控制位 MOV P0,#0FFH;关闭LED灯 CLR P1.2 SETB P1.3 ;点阵模块的行控制锁存器 MOV P0,#0 ;关闭点阵行 CLR P1.3 MOV A,#11111110B;数码管“位选信号”初值,低电平有效 LOOP:SETB P1.1;数码管位控制锁存器有效 MOV P0,A CLR P1.1 RL A ;形成新的“位选信号”,为选择下一位数码管做准备 SETB P1.0;数码管段控制锁存器有效 MOV P0,#0FFH ;数码管的所有段点亮,显示“8” CLR P1.0 CALL DELAY SJMP LOOP DELAY:MOV R5,#0;延时子程序 D1: MOV R6,#0 D2:NOP DJNZ R6,D2

用51单片机、8255、138、373等实现数码管显示按键数值的程序

姓名专业

学号 2013年10月28日 随着单片机技术的飞速发展,在其推动下,现代的电子产品几乎渗透到了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高。 单片机具有体积小、功能强、应用面广等优点,目前正以前所未见的速度取代着传统电子线路构成的经典系统,蚕食着传统数字电路与模拟电路固有的领地。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机了解计算机原理与结构的最佳选择。现在,这种单片机的使用领域已十分广泛。彩电、冰箱、空调、录像机、VCD、遥控器、游戏机、电饭煲等无处不见单片机的影子,单片机早已深深地融入我们每个人的生活之中。 单片机能大大地提高这些产品的智能性,易用性及节能性等主要性能指标,给我们的生活带来舒适和方便的同时,在工农业生产上也极大地提高了生产效率和产品质量。单片机按用途大体上可分为两类,一种是通用型单片机,另一种是专用型单片机。

课题要求: 用51单片机、8255、138、373等实现数码管显示按键数值的程序 各芯片资料: 1.8255芯片资料如下 用8255A可编程器件扩展并行接口 8255: 有三个八位的并行口:PA、PB、PC。 有三种工作方式:方式0,方式1,方式2。 逻辑结构图: 包含四个部分:●三个并行数据输入输出端口 ●两个工作方式控制电路

●一个读写逻辑控制电路 ●八位总线缓冲器 ⑴.三个并行数据输入输出端口:A口;B口;C口 一般,A口,B口作为数据输入输出端口, C口作为控制/状态信息口,可以分为两个部分,分别与A口和B口配合使用,作为控制信息输出或状态信息输入。⑵.工作方式控制电路 工作方式控制电路有两个:A组控制和B组控制电路, A组控制用来控制A口和C口的上半部分PC7——PC4; B组控制用来控制B口和C口的下半部分PC3——PC0; 两组控制电路具有一个控制命令寄存器,用来接收来自 CPU的数据(控制字),以决定芯片的工作方式,或对 C口按位进行清“0”或者置“1”。 ⑶.总线缓冲器 三态双向八位缓冲器,作为微处理器数据总线与8255之间的接口,用来传送命令、数据及状态信息。 ⑷.读写逻辑控制电路 读写逻辑控制电路接受CPU来的控制信号:读、写、地址及复位信息,根据控制信号的要求,将数据读出,送往CPU,或者将CPU来的信息写入端口。 引脚说明: CS:片选信号,低电平有效,表示芯片被选中;

独立按键控制数码管

青岛农业大学海都学院 单片机课程设计实习报告 院系工程系 专业 2014级电气Z1班 学号 201471019 姓名隋永博 实习时间第11周 实习课程单片机应用课程设计 2015年11月6日

按键控制数码管加减显示 目录 一、前言 (3) 二、设计要求 (3) 三、系统硬件设计与说明 (4) 3.1系统组成及总体框图 (4) 3.2 AT89C51 (4) 四、系统软件设计与说明 (5) 4.1 软件部分的程序流程图 (5) 4.2 源程序 (5) 五、仿真过程描述 (7) 六、总结 (8)

一、前言 随着电子科技的飞速发展,电子技术正在逐渐改善着人们的学习、生活、工作,因此开发本系统希望能够给人们多带来一点生活上的乐趣。 基于当前市场上的智能数字市场需求量大,其中数码管显示技术就是一个很好的应用方面。单片机技术使我们可以利用软硬件实现数码管准确显示各种数码。以液晶显示技术的发展为背景,选择了比较常用的T6963C内置控制器型图形LCD(液晶显示嚣)模块,从应用角度介绍了该控制器的特点和基本功能,并描述了单片机控制T6963CLCD模块的显示机理。在此前提下以C51硬件开发语言为基础,给出了8051单片机与T6963C 的接口电路框图,并以字符、图形的具体显示方法为例简要介绍了软件的设计流程及实现。 二、设计要求 名称:K1-K4控制数码管移位显示 说明:按下K1时加1计数并增加显示位, 按下K2时减1计数并减少显示位, 按下K3时清零。

三、系统硬件设计与说明 3.1系统组成及总体框图 图1 系统硬件总图 3.2 AT89C51 该课程设计中我们选用的芯片是AT89C51。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 AT89C51是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的Flash

数电课程设计-数码管显示控制器的设计与实现

课程设计任务书 学生姓名:专业班级: 指导教师:工作单位: 题目: 数码管显示控制器的设计与实现 初始条件: 555定时器、74LS160计数器、74LS161计数器、74LS153数据选择器、74LS48译码器、74LS04非门与数码管、电阻、电容等相关元件。 要求完成的主要任务: 1、设计任务 根据已知条件,完成对数码管显示控制器的设计、装配与调试。 2、设计要求 (1)、能自动一次显示出数字 0、1、2、3、4、5、6、7、8、9(自然数列),1、 3、5、7、9(奇数列), 0、2、 4、6、8(偶数列),0、1、0、1、2、3、4、 5、6、7(音乐符号序列);然后再从头循环; (2)、打开电源自动复位,从自然数列开始显示。 时间安排: 1、2012 年 6 月 8 日分班集中,布置课程设计任务、选题;讲解课设具体实施计划与课程设计报告格式的要求;课设答疑事项。 2、2012 年 6 月 9 日至 2012 年 7 月 3 日完成资料查阅、设计、制作与调试;完成课程设计报告撰写。 3、2012 年 7 月 4 日提交课程设计报告,进行课程设计验收和答辩。 指导教师签名:年月日 系主任(或责任教师)签名:年月日

目录 摘要 (3) Abstact (4) 引言 (5) 1设计背景 (6) 1.1设计任务 (6) 1.2设计要求 (6) 1.3指导思想 (6) 2方案论证 (7) 2.1方案说明 (7) 2.2方案原理 (7) 3电路的设计与分析 (8) 3.1电路的总体设计 (8) 3.2电路的原理框图 (9) 3.3元电路的设计与分析 (9) 3.3.1多谐振荡电路的设计与分析 (9) 3.3.2计数电路的设计与分析 (11) 3.3.3译码显示电路的设计与分析 (13) 4电路仿真、调试与分析 (16) 4.1脉冲产生电路的仿真 (16) 4.2总电路的仿真 (17) 4.3运行结果分析 (17) 5心得与体会 (18) 附录1元器件清单 (19) 附录2参考文献 (20)

4乘4矩阵键盘输入数码管显示四位数

综合课程设计三相步进电机控制器电路的设计 学生姓名__________

指导教师_________ 课程设计任务书 一、设计说明 步进电机是工业过程控制及仪表控制中的主控元件之一,作为执行元件其特点为能够快速起启停、精度高且能直接接收数字量,由于这些特点使其在定位场合得到了广泛的应用。 设计一个三相步进电机控制器,使其能够控制步进电机的工作状态,如步进电机正、反转,步进电机的工作方式等。 用键盘设定步进电机的工作频率,工作方式,并用数码管显示设定值,可以通过按键来更换显示内容。用示波器观测三相的输出波形,并用数码管显示电路的工作状态。 二、技术指标 步进电机的工作频率为:<10kHz 三、设计要求 1.进行方案论证,提出一个合理的设计方案并进行理论设计; 2.对所设计的方案部分进行调试; 3.在选择器件时,应考虑成本。 4.设计测量调试电路。 四、实验要求 1.根据技术指标制定实验方案;验证所设计的电路。 2.进行实验数据处理和分析。 五、推荐参考资料 1?谢自美?电子线路设计?实验?测试.[M]武汉:华中理工大学出版社,2000 年 2. 阎石. 数字电子技术基础. [M] 北京:高等教育出版社,2006年 3. 童诗白、华成英.模拟电子技术基础. [M] 北京:高等教育出版社,2006年 4..付家才. 电子实验与实践. [M] 北京:高等教育出版社,2004年 5.沙占友、李学芝著.中外数字万用表电路原理与维修技术. [M] 北京:人民 邮电出版社,1993年

六、按照要求撰写课程设计报告成绩评定表

一、概述 本次毕设的题目是:三相步进电机控制电路的设计。本次毕设使用80C51单片机作为主控芯片,利用ULN2003A集成电路作为三相步进电机的驱动电路,采用单极性驱动方式,使三相步进电机能在(1)三相单三拍,(2)三相双三拍, (3)三相六拍三种工作方式下正常工作;能实现的功能有:启动/停止控制、方向控制;速度控制;用LED数码管显示工作方式。键盘输入工作频率。本次课程设计采用80C51单片机作为主控芯片,程序采用C语言来编写,驱动电路采用ULN2003A集成电路,显示采用 7SEG-MPX4-CC卩四位共阴数码管,P0接段码,并用8只1K欧左右电阻上拉。P2的4位10 口接位选码。正转,数码管显示1。反转,数码管显示2.不转,数码管显示0.采用Proteus软件进行仿真。在Keil uVsuon3编程环境下编程和编译生成HEX文件,导入到 80C51单片机,实现对各个模块的控制,实现我们所需要的功能。 本次课程是对毕业设计的基础设计,即实现4x4键盘输入,数码管显示输入数字的设计。 二、方案论证 1步进电机驱动方案选择 方案1 :使用功率三极管等电子器件搭建成功率驱动电路来驱动电机的运行。这种方案的驱动电路的优点是使用电子器件联接,电路比较简单,但容易受 干扰,信号不够稳定,缺点是器件较大而不便电路的集成,使用时很不方便,联接时容易出错误。 方案2:使用专门的电机驱动芯片ULN2003A来驱动电机运行。驱动芯片的优点是便于电路的集成,且驱动电路简单,驱动信号很稳定,不易受外界环境的干扰,因而设计的三相步进电机控制系统性能更好。 通过对两种方案的比较,我选择方案2使用ULN2003A S机驱动芯片来作为驱动。 2数码管显示方案选择 方案1:把所需要显示的数据通过专用的七段显示译码器(例如7448)的转换输出给LED显示屏。优点是输出比较简单,可以简化程序,但增加了芯片的费用,电路也比较复杂。 方案2:通过程序把所要的数据转化为七段显示的数据,直接通过单片机接 口来显示,其优点是简化了电路,但增加了软件编写的负担。 通过对两种方案进行比较,我选择通过软件编写来输出显示信号,即单片机直接和显示器相连。 3控制状态的读取 方案1:把按键接到单片机的中断口,若有按键按下,单片机接收到中断信 号,再通过软件编写的中断程序来执行中断,优点是接线简单,简化了电路,但软件编写较为复杂,不易掌握。

51单片机按键控制数码管程序

#define uint unsigned int #define uchar unsigned char uchar c; sbit p10=P1^0; sbit p11=P1^1; sbit p12=P1^2; sbit p13=P1^3; sbit p14=P1^4; sbit p15=P1^5; sbit p16=P1^6; sbit p17=P1^7; void delay(uint z); int b[]={0,1,2,3,4,5,6,7};//设置每一位显示的数字 unsigned char code Tab[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//共阳极数码管 int a[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; void main() { EA=1; EX0=1; IT0=1; P1=0xff; while(1) { for(c=0;c<8;c++)//数码管扫描显示

P2=a[c]; P0=Tab[b[c]]; delay (1); } } } void delay(uint z) { uint a,b; for(a=z;a>0;a--) for(b=110;b>0;b--); } int_0()interrupt 0 { EA=0; if(p10==0) b[0]=(b[0]+1)%10; if(p11==0) b[1]=(b[1]+1)%10; if(p12==0) b[2]=(b[2]+1)%10; if(p13==0) b[3]=(b[3]+1)%10; if(p14==0) b[4]=(b[4]+1)%10; if(p15==0) b[5]=(b[5]+1)%10; if(p16==0) b[6]=(b[6]+1)%10; if(p17==0) b[7]=(b[7]+1)%10;

按键控制数码管加减程序

#include #define dataport P1 #define uchar unsigned char #define uint unsigned int sbit latch1=P2^2; //段锁存 sbit latch2=P2^3; //位锁存 sbit key1=P3^2; sbit key2=P3^3; unsigned int duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79}; unsigned int weima[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char display[8]; void suocun(uchar firstbit,uchar num); void delay(uchar z) //延时程序 { uchar i,j,k; for(i=0;i<50;i++) for(j=0;j<50;j++) for(k=0;k

if(num==0) num=9; } } display[0]=duanma[num%10]; suocun(2,1); } } void suocun(uchar firstbit,uchar num) { uchar i ; for(i=0;i

51单片机控制4个数码管显示

. //使用AT89c51单片机控制四个数码管动态显示0-9999 ,12MHz #include void jiayi();//加1函数 void chufa();//除法函数 void xianshi();//显示函数 void delay();//延时函数 sbit P2_0=P2^0;//个位位码 sbit P2_1=P2^1;//十位位码 sbit P2_2=P2^2;//百位位码 sbit P2_3=P2^3;//千位位码 unsigned char qianwei,baiwei,shiwei,gewei; unsigned int count=0; unsigned char code dis[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳极0-9 void main() { while(1) { jiayi(); chufa(); xianshi(); } } void chufa()//将数字的各个位拆开 { qianwei=count/1000;//千位数 baiwei=count%1000/100; //百位数 shiwei=count%100/10; //十位数 gewei=count%10; //个位数 } void jiayi() { count=count+1; if(count==10000) count=0; } void delay()//延时 { unsigned int i,j; for(i=0;i<10;i++) { for(j=0;j<200;j++); } }

单片机实验报告——矩阵键盘数码管显示

单片机实验报告 信息处理实验 实验二矩阵键盘 专业:电气工程及其自动化 指导老师:高哲 组员:明洪开张鸿伟张谦赵智奇 学号:152703117 \152703115\152703118\152703114室温:18 ℃日期:2017 年10 月25日

矩阵键盘 一、实验内容 1、编写程序,做到在键盘上每按一个键(0-F)用数码管将该建对应的名字显示出来。按其它键没有结果。 二、实验目的 1、学习独立式按键的查询识别方法。 2、非编码矩阵键盘的行反转法识别方法。 3、掌握键盘接口的基本特点,了解独立键盘和矩阵键盘的应用方法。 4、掌握键盘接口的硬件设计方法,软件程序设计和贴士排错能力。 5、掌握利用Keil51软件对程序进行编译。 6、会根据实际功能,正确选择单片机功能接线,编制正确程序。对实验结果 能做出分析和解释,能写出符合规格的实验报告。 三、实验原理 1、MCS51系列单片机的P0~P3口作为输入端口使用时必须先向端口写入“1”。 2、用查询方式检测按键时,要加入延时(通常采用软件延时10~20mS)以消除抖动。 3、识别键的闭合,通常采用行扫描法和行反转法。行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然

后读取列值,如读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。 行反转法识别闭合键时,要将行线接一并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口在各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上输入值,那么,在闭合键所在行线上的值必定为0。这样,当一个键被接下时,必定可以读得一对唯一的行线值和列线值。 由于51单片机的并口能够动态地改变输入输出方式,因此,矩阵键盘采用行反转法识别最为简便。 行反转法识别按键的过程是:首先,将4个行线作为输出,将其全部置0,4个列线作为输入,将其全部置1,也就是向P1口写入0xF0;假如此时没有人按键,从P1口读出的值应仍为0xF0;假如此时1、4、7、0四个键中有一个键被按下,则P1.6被拉低,从P1口读出的值为0xB0;为了确定是这四个键中哪一个被按下,可将刚才从P1口读出的数的低四位置1后再写入P1口,即将0xBF写入P1口,使P1.6为低,其余均为高,若此时被按下的键是“4”,则P1.1被拉低,从P1口读出的值为0xBE;这样,当只有一个键被按下时,每一个键只有唯一的反转码,事先为12个键的反转码建一个表,通过查表就可知道是哪个键被按下了。

按键控制1位LED数码管显示0-9

单片机课程设计 姓名:陈素云 班级:09电力方向2班学号:2

设计题目: 按键控制1位LED数码管显示0-9 设计要求: 通过单片的I/O口与LED数码管所构成的单片机系统的软件编程,使学生掌握简单的单片机系统的设计,同时初步学全用汇编语言和C语言两种方式编程的基本方法。学生必须采用单片机AT89C51为LED显示屏的控制为核心,分别置“1”或“0”,让某些段的LED 发光,其它的熄灭,然后达到显示不同的字符和图符号的目的. 学生根据前期设计的步骤按照设计报告内容的具体要求,选择前期设计的一个典型题目,写出详尽的课程设计报告,重点内容包括方案论证、完整的电路图、软件系统流程图及开发程序、组装调试内容和总结等。

目录 第1节引言 (3) 1.1 LED数码显示器概述 (3) 1.2 设计任务 (5) 1.3设计目的 (6) 第2节AT89C51单片机简介 (6) 2.1 AT89C51单片机 (6) 2.2 单片机管脚图 (7) 2.3管脚说明 (7) 2.4振荡器特性 (9) 第3节设计主程序与硬件电路设计 (9) 3.1设计的主程序 (10) 3.2系统程序所需硬件 (10) 3.2.1所需的硬件 (10) 3.2.2所需硬件的结构图 (11) 3.3 硬件电路总连接图 (12) 第4节程序运行过程 (12) 4.1分析步骤 (12) 4.2 程序执行过程 (13) 第5节程序运行结果 (13) 总结 参考文献

第1节引言 还记得我们小时候玩的“火柴棒游戏”吗,几根火柴棒组合起来,能拼成各种各样的图形,LED数码管显示器实际上也是这么一个东西。在单片机系统中,常常用LED数码数码管显示器来显示各种数字或符号。LED 数码显示器是单片机嵌入式系统中经常使用的显示器件。一个“8”字型的显示模块用“a、b、c、d、e、f、g、h” 8 个发光二极管组合而成。每个发光二极管称为一字段。LED 数码显示器有共阳极和共阴极两种结构形式。由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。 1.1 LED数码显示器概述 八段LED数码管显示器由8个发光二极管组成。基中7个长条形的发光管排列成“日”字形,另一个贺点形的发光管在数码管显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。LED数码管显示器有两种不一样的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED数码管显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极LED 数码管显示器。如下图所示。` 共阴和共阳结构的LED数码管显示器各笔划段名和安排位置是相同的。

单片机课设数码管显示滚动控制

《单片机设计与实训》 设计报告 题目:数码管滚动显示控制姓名:王伟杰 班级:自动化四班 学号: 2014550430 指导老师:张莹 提交日期: 2016年10月29日

目录 一、设计题目与要求 (4) 1.1设计题目 (4) 1.2设计要求 (4) 二、系统方案设计 (4) 2.1硬件电路设计 (5) 1.单片机最小系统简介 (5) 2.数码管显示电路 (7) 2.3硬件选型及说明 (8) 1. ST89C51单片机 (8) 2. 四位一体七段共阴极显示数码管 (10) 三、系统原理图设计与仿真 (11) 3.1系统仿真图 (11) 3.2系统仿真结果 (12) 四、程序设计 (13) 4.1程序设计 (13) 4.2程序流程图 (15) 五、系统调试 (16) 5.1系统硬件调试 (16) 5.2系统软件调试 (16) 六、总结与体会 (17)

附录一 (19) 附录二 (20) 附录三 (34)

一、设计题目与要求 单片机课程设计是一门实践课程,要求学生具有制作调试单片机最小系统及外设的能力,能够掌握单片机内部资源的使用。单片机课程设计内容包括硬件设计、制作及软件编写、调试,学生在熟练掌握焊接技术的基础上,能熟练使用单片机软件开发环境Keil C51编程调试,并使用STC ISP调试工具采用串口下载方式联调制作的单片机最小系统。单片机课程设计题目包含基本部分及扩展部分,基本部分即单片机最小系统部分,扩展部分是对单片机内部资源及外部IO口的功能扩展,使制作的单片机系统具有一定的功能。 1.1设计题目 数码管滚动显示控制 1.2设计要求 自制一个单片机最小系统,包括串口下载、复位电路,采用两个四位一体数码管作为显示器件,通过按钮选择实现四种滚动显示模式,例如从左至右,从右至左,内缩,外扩等,滚动信息可以是数字或有意义的英文字符。 二、系统方案设计

数码管动态显示教案

电子综合设计实训 题目数码管动态显示 _ 姓名 专业 学号 指导教师 郑州科技学院电气工程学院

目录 摘要.................................................................................................. I 1背景. (1) 1.1介绍 (1) 1.2设计步骤 (2) 2 设计思路 (3) 2.1方案对比 (3) 3元件的选择 (6) 3.1单片机 (6) 3.2 显示元器件的选择 (6) 4 设计原理及功能说明 (8) 4.1 各部分功能说明 (8) 5 装配与调试 (14) 5.1装配 (14) 5.2调试 (14) 6 总结 (15) 附录 (17) 附录一:元件清单 (17) 附录二:电路源程序 (17)

数码管动态显示的设计 摘要 本文介绍了一种基于AT89C51单片机的8个数码管滚动显示单个数字的设计,让八位数码管滚动显示0、1、2、3、4、5、6、7,我们以液晶显示技术的发展为背景,选择了比较常用的液晶数码管显示模块,利用了单片机控制数码管模块的显示机理。研究学习AT89C51单片机其功能,对学习过的单片机,C语言课程进行巩固,设计一款在8只数码管上流动显示单个数字的程序,并用PROTEUS进行电路设计和实时仿真。该电路有两部分组成:AT89C51单片机和显示模块组成。AT89C51单片机具有超低功耗和CPU外围的高度整合性;显示模块数码管是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极,方便易用。实际应用中不需要外部任何元器件即可实现,具有接口电路简单、可靠,易于编程的特点,抗干扰性好等特点。 单片机技术使我们可以利用软硬件实现数码管准确显示各种数码。而且这种技术相对简单,性价比较高,在我们生活中应用很广泛,具有一定的发展前景。 关键词:AT89C51单片机;数码管;滚动显示

LED+按键+数码管程序测试

题号所用器件实现功能 1 前4个LED,4个按键 #include sbit s1=P3^2; sbit s2=P3^3; sbit s3=P3^4; sbit s4=P3^5; void delayms(unsigned char m) { unsigned char i; while(m--) { for(i=0;i<120;i++); } } void main() { while(1) { if(s1==0) { delayms(10); //防止机械抖动 if(s1==0) { while(s1==0); P1=0xf0; delayms(250); P1=0xff; } } if(s2==0) { delayms(10); if(s2==0) { while(s2==0); P1=0xf0; delayms(250); P1=0xff; delayms(250); P1=0xf0; 刚上电LED全灭; 按下P32按键,LED灯亮灭闪烁一次;按下P33按键,LED灯亮灭闪烁二次;按下P34按键,LED灯亮灭闪烁三次;按下P35按键,LED灯亮灭闪烁四次;

delayms(250); P1=0xff; } } if(s3==0) { delayms(10); if(s3==0); { while(s3==0); P1=0xf0; delayms(250); P1=0xff; delayms(250); P1=0xf0; delayms(250); P1=0xff; delayms(250); P1=0xf0; delayms(250); P1=0xff; } } if(s4==0) { delayms(10); if(s4==0); { while(s4==0); P1=0xf0; delayms(250); P1=0xff; delayms(250); P1=0xf0; delayms(250); P1=0xff; delayms(250); P1=0xf0; delayms(250); P1=0xff; delayms(250); P1=0xf0; delayms(250); P1=0xff;

基于51单片机的LED数码管动态显示

基于51单片机的LED数码管动态显示 LED数码管动态显示就是一位一位地轮流点亮各位数码管,对于每一位LED数码管来说,每隔一段时间点亮一次,利用人眼的“视觉暂留"效应,采用循环扫描的方式,分时轮流选通各数码管的公共端,使数码管轮流导通显示。当扫描速度达到一定程度时,人眼就分辨不出来了。尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,认为各数码管是同时发光的。若数码管的位数不大于8位时,只需两个8位I/O口。 1 硬件设计 利用51单片机的P0口输出段码,P2口输出位码,其电路原理图如下所示。 在桌面上双击图标,打开ISIS 7 Professional窗口(本人使用的是v7.4 SP3中文版)。单击菜单命令“文件”→“新建设计”,选择DEFAULT模板,保存文件名为“DT.DSN”。在器件选择按钮中单击

“P”按钮,或执行菜单命令“库”→“拾取元件/符号”,添加如下表所示的元件。 51单片机AT89C51 一片 晶体CRYSTAL 12MHz 一只 瓷片电容CAP 22pF 二只 电解电容CAP-ELEC 10uF 一只 电阻RES 10K 一只 电阻RES 4.7K 四只 双列电阻网络Rx8 300R(Ω) 一只 四位七段数码管7SEG-MPX4-CA 一只 三极管PNP 四只 若用Proteus软件进行仿真,则上图中的晶振和复位电路以及U1的31脚,都可以不画,它们都是默认的。 在ISIS原理图编辑窗口中放置元件,再单击工具箱中元件终端图标,在对象选择器中单击POWER 和GROUND放置电源和地。放置好元件后,布好线。左键双击各元件,设置相应元件参数,完成电路图的设计。 2 软件设计 LED数码管动态显示是一位一位地轮流点亮各位数码管的,因此要考虑每一位点亮的保持时间和间隔时间。保持时间太短,则发光太弱而人眼无法看清;时间太长,则间隔时间也将太长(假设N位,则间隔时间=保持时间X(N-1)),使人眼看到的数字闪烁。在程序中要合理的选择合适的保持时间和间隔时间。而循环次数则正比于显示的变化速度。 LED数码管动态显示的流程如下所示。

51单片机键盘数码管显示_利用8255和51单片机实现数码管显示按键数值的程序(带程序)

期 中 大 作 业 学院:物理与电子信息工程学院

课题: 【利用8255和51单片机实现数码管显示按键数值的程序】要求: 【4*4矩阵键盘,按0到15,数码管上分别显示0~9,A~F】 芯片资料: 8255: 8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。其各口功能可由软件选择,使用灵活,通用性强。8255可作为单片机与多种外设连接时的中间接口电路。 8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口A、B、C口。由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制部分。 8255特性: 1.一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口。 2.具有24个可编程设置的I/O口,即3组8位的I/O口,分别为PA口、PB口和PC 口。它们又可分为两组12位的I/O口:A组包括A口及C口(高4位,PC4~PC7),B组包括B口及C口(低4位,PC0~PC3)。A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I/O三种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定.

引脚说明 RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。 CS:芯片选择信号线,当这个输入引脚为低电平时,即CS=0时,表示芯片被选中,允许8255与CPU进行通讯;CS=1时,8255无法与CPU做数据传输。RD:读信号线,当这个输入引脚为低电平时,即CS=0且RD=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。WR:写入信号,当这个输入引脚为低电平时,即CS=0且WR=0时,允许CPU将数据或控制字写入8255。 D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。 PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。 PB0~PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。 PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。 A1,A0:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器。 当A1=0, A0=0时,PA口被选择; 当A1=0, A0=1时,PB口被选择; 当A1=1, A0=0时,PC口被选择; 当A1=1. A0=1时,控制寄存器被选择。 74ls373芯片资料: 74ls373是常用的地址锁存器芯片,它实质是一个是带三态缓冲输出的8D 触发器,在单片机系统中为了扩展外部存储器,通常需要一块74ls373芯片.本文将介绍74ls373的工作原理,引脚图(管脚图),内结构图、主要参数及在单片机系统中的典型应用电路.

51汇编按键数码管程序

51单片机汇编按键数码管程序 1、硬件设计 本设计实现用按键控制数码管从0到9显示。首先设计硬件电路,连接晶振电路、按键连接到外部中断引脚P3.2、数码管使用共阴数码管连接P2.0~P2.6,如图1。 图1 硬件电路 2、程序设计 ORG 0000H LJMP MAIN ;跳转到主函数 ORG 0003H ;中断入口 LJMP INT0SUB ;中断服务函数 ORG 0040H ;程序存放起始地址 MAIN: MOV SP,#30H ;堆栈指针指向30H MOV A,#81H ;赋值81H,用于配置外部中断 MOV IE,A ;使能外部中断 MOV A,#01H ;用于配置触发方式 MOV TCON,A ;触发方式选择下降沿触发 MOV R0,#00H ;按键初始值为零 MOV DPTR,#TABLE ;数据表首地址 LCALL DISPLAY ;调用显示函数 JMP MAIN ;共阴数码管0~9数据表 TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

DISPLAY: MOV A,R0 ;取出按键值 MOV B,#0AH ;用于按键值处理 DIV AB ;A除以B MOV A,B ;将余数放到累加器A MOVC A,@A+DPTR ;取出数据对应数码管数据 MOV P2,A ;数码管显示 JMP DISPLAY ;显示循环 INT0SUB: ;按键外部中断服务函数 INC R0 ;R0自加1 RETI ;中断返回 DELAY30: MOV R7,#0FFH ;延时函数 D0: MOV R6,#0FFH D00: MOV R5,#0FFH D1: DJNZ R5,D1; D10: DJNZ R6,D10; DJNZ R7,D0 RET END ;结束

数码管动态显示实验报告

实验四数码管动态显示实验一 一、实验要求 1.在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路 2.在电路中增加四个7段数码管(共阳/共阴自选),将P1口作数据输出口与7段数码 管数据引脚相连,P2.0~P2.3引脚输出选控制信号 3.在Keil软件中编写程序,采用动态显示法,实现数码管分别显示数字1,2,3,4 二、实验目的 1.巩固Proteus软件和Keil软件的使用方法 2.学习端口输入输出的高级应用 3.掌握7段数码管的连接方式和动态显示法 4.掌握查表程序和延时等子程序的设计 三.实验说明 本实验是将单片机的P1口做为输出口,将四个数码管的七段引脚分别接到P1.0至P1.7。由于电路中采用共阳极的数码管,所以当P1端口相应的引脚为0时,对应的数码管段点亮。程序中预设了数字0-9的段码。由于是让四个数码管显示不同的数值,所以要用扫描的方式来实现。因此定义了scan函数,接到单片机的p2.0至p2.3 在实验中,预设的数字段码表存放在数组TAB中,由于段码表是固定的,因此存储类型可设为code。 在Proteus软件中按照要求画出电路,再利用Keil软件按需要实现的功能编写c程序,生成Hex文件,把Hex文件导到Proteus软件中进行仿真。为了能够更好的验证实验要求,在编写程序时需要延时0.5s,能让人眼更好的分辨;89C51的一个机器周期包含12个时钟脉冲,而我们采用的是12MHz晶振,每一个时钟脉冲的时间是1/12us,所以一个机器周期为1us。在keil程序中,子函数的实现是用void delay_ms(int x),其中x为1时是代表1ms。 四、硬件原理图及程序设计 (一)硬件原理图设计 电路中P1.0到P1.7为数码管七段端口的控制口,排阻RP1阻值为220Ω,p2.0到p2.3为数码管的扫描信号。AT89c51单片机的9脚(RST)为复位引脚,当RST为高电平的时间达到2个机器周期时系统就会被复位;31引脚(EA)为存取外部存储器使能引脚,当EA为高电平是使用单片机内部存储器,当EA为低电平时单片机则使用外部存储器。18、19引脚是接晶振脚。而接地和电源端在软件中已经接好,所以不用在引线。 如下图所示:

51单片机定时器数码管30秒倒计时(三个按键控制开始暂停复位)

51单片机定时器数码管30秒倒计时(带三个按键控制开始,暂停,复位) 程序: #include "" unsigned char code led[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; unsigned char code addr[2]={0xef,0xdf}; unsigned char xx[2]; unsigned char time=30; unsigned char flag=0; void delay(void); void sys(void) { TMOD=0x01; TH0=(65536 - 50000) / 256; TL0=(65536 - 50000) % 256; ET0=1; TR0=1; EA=1; EX0=1; IT0=1; } void ftimer0(void) interrupt 1 { static unsigned char cnt; TH0=(65536-50000)/256;

TL0=(65536-50000)%256; cnt++; if(cnt>20) { if(flag==1) { time--; cnt=0; if(time==0) { ET0=0; TR0=0; } } } } void int0(void) interrupt 0 { if(P2_0==0) { flag=1; ET0=1; } else if(P2_1==0) { ET0=0; }

else if(P2_2==0) { time=30; ET0=0; TR0=1; } } void main() { unsigned char a; sys(); for(;;) { for(a=0;a<2;a++) { xx[0]=time/10; xx[1]=time%10; P0=led[xx[a]]; P1=addr[a]; delay(); P1=0xff; } } } void delay(void)

相关文档
最新文档