单片机汇编语言编程实例之一串行控制七段数码管
- 格式:doc
- 大小:34.00 KB
- 文档页数:1
电气工程学院《单片机原理及其应用》第x次课外设计报告组号:No. xxx组长:xxxxxxxxxxxxxxxxxx组员:xxxxxxxxxxxxxxxxxx组员:xxxxxxxxxxxxxxxxxx设计时间:xxxxxxxxxxxxxxxxxx评定成绩:评定教师:设计内容:利用单片机、1个按钮、4*4矩阵键盘和1位共阳数码管,实现显示闪烁控制功能。
要求:按下数字键,将按下键对应位置值(0~F)显示在数码管上;按下按钮,显示以0.5秒间隔闪烁;再次按下按钮,显示闪烁停止。
摘要:单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。
概括的讲:一块芯片就成了一台计算机。
它的体积小、质量轻、价格便与结构的最佳选择。
单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
从二十世纪九十年代开始,单片机技术就已经发展起来,随着时代的进步与科技的发展,目前该技术的实践应用日渐成熟,单片机被广泛应用于各个领域。
现如今,人们越来越重视单片机在智能电子技术方面的开发和应用,单片机的发展进入到新的时期,无论是自动测量还是智能仪表的实践,都能看到单片机技术的身影。
电子信息技术与单片机技术相融合,有效提高了单片机应用效果。
作为计算机技术中的一个分支,为智能化电子设备的开发和应用提供了新的出路,实现了智能化电子设备的创新与发展。
单片机也被称为单片微控器,属于一种集成式电路芯片。
在单片机中主要包含CPU、只读存储器ROM和随机存储器RAM等,多样化数据采集与控制系统能够让单片机完成各项复杂的运算,无论是对运算符号进行控制,还是对系统下达运算指令都能通过单片机完成。
由此可见,单片机凭借着强大的数据处理技术和计算功能可以在智能电子设备中充分应用。
简单地说,单片机就是一块芯片,这块芯片组成了一个系统,通过集成电路技术的应用,将数据运算与处理能力集成到芯片中,实现对数据的高速化处理。
图1 七段数码管的显示单元图2.1 共阴极图2.2 共阳极a b c d e f g hGnd+5va bcd e f g h七段式数码管就是使用七段点亮的线段来拼成常见的数字和某些字母。
再加上右下角的小数点。
实际上一个显示单元包含了8根控制信号线。
如上图所示,a,b,c,d,e,f,g,h 对应8根控制信号线。
一般数码管有8个如图1所示的显示单元,称为七段八位数码管。
由此引入段码和位码的概念。
段码(seg ):在本文中段码对应单独的显示单元。
或者说段码代表显示单元上显示的具体数值或符号。
位码(sel ):在本文中位码对应8个显示单元。
或者说位码代表相应位置上的显示单元被选通。
为什么数码管需要位码呢?因为数码管利用视觉暂留效应让人们觉得每一位上的数字一直保持着发亮。
其实各个位上的显示单元是按照顺序交替亮灭的,只是频率比较高,看起来就像是一直亮着的。
而位码就是用来按位循环扫描的。
段码与显示内容又是怎样对应的呢? 这就要说到显示原理了。
每一个显示单元中可以被控制亮灭的线段其实是LED 发光二极管。
他们以共阴极或者共阳极的方式接入。
如下图2.1和2.2。
a b c d ef gdclkrstData[31:0] Turn_off[7:0] Seg[7:0] Sel[2:0]如果想显示数字0,图1中的线段a,b,c,d,e,f应当点亮,g,h应该熄灭。
共阴极接入方式的话,输入端接高电平LED才会亮。
abcdefgh对应的电平状态是11111100 。
编码时顺序反过来a对应最低位,h对应最高位。
所以在共阴极接入方式下,显示数字0对应的段码是00111111,即0x3f;在共阳极接入方式下,显示数字0对应的段码是11000000,即0xc0;图2.1和2.2中的a,b,c,d,e,f, g,h称为段选线。
另一边的公共端称为位选线。
以此类推,以共阳极接入方式为例,段码与显示的数字对应关系如下表显示数字高电平信号低电平信号二进制编码段码(16进制)0 gh abcdef 11000000 C01 bc 11111001 F92 abged 10100100 A43 abgcd 10110000 B04 fbgc 10011001 995 afgcd 10010010 926 afgcde 10000010 827 abc 11111000 F88 abcdefg 10000000 809 abcdfg 10010000 90显示字母A,B,C,D,E,F分别对应段码:8’h88, 8’h83, 8’hC6, 8’hA1, 8’h86, 8’h8E;特别的,显示单元全灭对应的段码为:8’b1111_1111即是8’hFF;至此已经可以编写驱动程序的一个模块了,就是把显示数字转成段码的模块。
单片机I/O的应用最典型的是通过I/O口与7段LED数码管构成显示电路,我们从常用的LED显示原理开始,详尽讲解利用单片机驱动LED数码管的电路及编程原理,目的在于通过这一编程范例,让初学者了解I/O口的编程原理,意在起举一反三,抛砖引玉的作用。
LED的发光原理,稍有电子技术基础的人士都很清楚,我们不想作过多的介绍,7段LED数码管,则在一定形状的绝缘材料上,利用单只LED组合排列成“8”字型的数码管,分别引出它们的电极,点亮相应的点划来显示出0-9的数字。
LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。
右图是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。
将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。
以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。
当然,LED的电流通常较小,一般均需在回路中接上限流电阻。
假如我们将"b"和"c"段接上正电源,其它端接地或悬空,那么"b"和"c"段发光,此时,数码管显示将显示数字“1”。
而将"a"、"b"、"d"、"e"和"g"段都接上正电源,其它引脚悬空,此时数码管将显示“2”。
其它字符的显示原理类同,读者自行分析即可。
左图为实验电路图,我们使用80C51单片机,电容C1、C2和CRY1组成时钟振荡电路,这部分基本无需调试,只要元件可靠即会正常起振。
C3和R1为单片机的复位电路,80C51的并行口P1.0-P1.7直接与LED 数码管的"a-f"引脚相连,中间接上限流电阻R3-R10。
实验二七段数码管动态显示控制一、实验目的利用AT89S52和使用两位数码管显示器,循环显示两位数00-99。
其中P2.0和P2.1端口分别控制数码管的个位和十位的供电,当相应的端口变成低电平时,驱动相应的三极管会导通,+5V通过驱动三极管给数码管相应的位供电,这时只要P3口送出数字的显示代码,数码管就能正常显示数字。
二、实验要求1、使用两位数码管显示器,循环显示两位数00-99;2、具有电源开关和指示灯,有复位键;3、数码管动态显示,即扫描方式,每一位每间隔一段时间扫描一次。
字符的亮度及清晰度与每位点亮的停留时间和每位显示的时间内轮换导通次数有关。
三、实验电路四、实验器材AT89S52;动态扫描显示;共阳极数码管;电阻五、实验原理说明图1 AT89S52引脚图图2 共阳极七段数码管引脚图1AT89S52引脚图,说明如下:按照功能,AT89S52的引脚可分为主电源、外接晶体振荡或振荡器、多功能I/O 口、控制和复位等。
1.多功能I/O口AT89S52共有四个8位的并行I/O口:P0、P1、P2、P3端口,对应的引脚分别是P0.0 ~ P0.7,P1.0 ~ P1.7,P2.0 ~ P2.7,P3.0 ~ P3.7,共32根I/O线。
每根线可以单独用作输入或输出。
①P0端口,该口是一个8位漏极开路的双向I/O口。
在作为输出口时,每根引脚可以带动8个TTL输入负载。
当把“1”写入P0时,则它的引脚可用作高阻抗输入。
当对外部程序或数据存储器进行存取时,P0可用作多路复用的低字节地址/数据总线,在该模式,P0口拥有内部上拉电阻。
在对Flash存储器进行编程时,P0用于接收代码字节;在校验时,则输出代码字节;此时需要外加上拉电阻。
②P1端口,该口是带有内部上拉电阻的8位双向I/O端口,P1口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写“1”时,通过内部的上拉电阻把端口拉到高电位,此时可用作输入口。
单片机实验五按键及七段数码管实验第一篇:单片机实验五按键及七段数码管实验实验五按键及七段数码管实验一、实验目的1、熟悉keil软件;2、掌握矩阵式按键的原理;3、掌握七段数码管显示的原理;4、掌握STC单片机的按键及数码管程序编写及下载;二、实验要求1、编写矩阵式按键的读取程序、七段数码管的动态显示程序,并将程序结合在一起,产生某一按键按下,显示对应键值的程序。
2、编写串行通信的发送及接收程序,实现串行口跟PC及的通信,并在PC机上用串口调试工具观察实验结果;3、利用keil软件调试程序,并产生.hex文件;4、将.hex文件利用STC单片机下载工具下载到单片机最小系统中,并观察LED灯的显示状态;5、提交实验报告,报告包含程序及LED的显示结果。
三、实验内容1、打开keil软件,熟悉软件的菜单、工作界面及工具。
然后按照keil的编程步骤编写程序(创建工程----选择单片机AT89C51----新建源文件----保存为C程序----编写完整的C51程序----将文件添加到工程----编译并修改错误----连接产生.hex文件)。
2、打开STC下载软件,将keil生成的.hex文件打开,下载到最小系统板,测试程序并观察实验结果。
3、按键及七段LED的程序,实现更多的LED与按键结合的效果。
四、实验说明1、程序中使用的按键及LED灯的IO端口要与自己的单片机最小系统板对应;2、按键程序注意抗消抖;3、思考计算器程序如何实现;第二篇:单片机数码管显示实验实验一数码管实验一、实验目的1.了解数码管的显示原理;2.掌握JXARM9-2440 中数码管显示编程方法二、实验仪器JXARM9-2440教学实验箱、ADT1000仿真器和ADT IDE集成开发环境、串口连接线、PC机。
三、实验原理7段LED由7个发光二极管按“日”字形排列,所有发光二极管的阳极连在一起称共阳极接法,阴极连在一起称为共阴极接法。
LED显示器的接口一般有静态显示与动态显示接口两种方式。
单片机指令编程实例数码管显示程序设计在单片机的开发中,数码管是一种常见的输出设备。
通过编程控制数码管的显示,我们可以实现各种功能,如计时、计数、温度显示等。
本文将介绍一个简单的单片机指令编程实例,用于设计一个数码管显示程序。
一、概述数码管是一种由七段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芯片的串行数据引脚、时钟引脚和输出使能引脚,来实现数码管的动态显示。
单片机 npn 七位数码管单片机(Microcontroller)是一种嵌入式系统的集成电路芯片,它集成了处理器、存储器和各种外设接口,用于控制各种设备、仪表等。
NPN(Negative-Positive-Negative)是一种晶体管类型,七位数码管则是一种用来显示数字和字母的电子元件。
单片机、NPN和七位数码管常常一起使用,构成各种控制系统和显示系统。
单片机可以通过控制NPN晶体管来控制七位数码管的显示。
具体实现方法如下:1.将单片机的I/O口连接到NPN的基极,NPN的发射极连接到地,NPN的集电极连接到数码管的共阴极(或共阳极)。
2.在单片机中编写程序,控制I/O口向NPN的基极输出高电平或低电平。
当向NPN的基极输出高电平时,NPN导通,集电极就会输出低电平,此时数码管相应位置的LED就会亮起;当向NPN的基极输出低电平时,NPN截止,集电极就会输出高电平,此时数码管相应位置的LED就会熄灭。
3.在单片机中编写程序,控制I/O口向七位数码管的对应引脚输出高电平或低电平。
当向数码管的某个引脚输出高电平时,相应位置的LED就会亮起;当向数码管的某个引脚输出低电平时,相应位置的LED就会熄灭。
通过这种方法,单片机可以控制七位数码管显示任意数字和字母。
例如,要显示数字1234,可以按照以下步骤进行:1.将数字1234转换为二进制码(例如,1234对应的二进制码为000100100011010)。
2.将二进制码分成4个4位的二进制数(例如,0001、0010、0011、0100)。
3.依次向七位数码管的4个数码位输出对应的二进制数。
例如,向第一个数码位输出0001,向第二个数码位输出0010,向第三个数码位输出0011,向第四个数码位输出0100。
通过以上方法,单片机可以实现各种数字和字母的显示,从而构建各种控制系统和显示系统,例如计时器、温度计、电流表等等。
总之,单片机、NPN和七位数码管是嵌入式系统中常见的电子元件,它们可以一起使用,构建各种实用的控制系统和显示系统。
文章标题:深入探究Vivado中七段数码管代码及仿真在数字电路设计中,七段数码管是一种常见的数字显示装置,广泛应用于计时器、计数器、仪表等设备中。
Vivado是Xilinx公司推出的一款集成化开发环境软件,用于FPGA设计和开发。
本文将深入探讨在Vivado中编写七段数码管的代码以及进行仿真的方法,以便读者能够更深入地理解数字电路设计和Vivado软件的应用。
一、七段数码管的基本原理要理解在Vivado中编写七段数码管的代码,首先需要了解七段数码管的基本原理。
七段数码管由7根发光二极管组成,分别对应数码管的a、b、c、d、e、f、g片段,可以显示0-9以及一些字母。
在数字电路设计中,需要通过操纵七段数码管的每一个片段,来显示需要的数字或字符。
编写七段数码管的代码,实质上是利用FPGA来控制这7个片段的亮灭。
二、Vivado中七段数码管的代码编写在Vivado中,可以使用Verilog或VHDL等硬件描述语言来编写数字电路设计的代码。
对于七段数码管的代码编写,以Verilog为例,可以按照以下步骤进行:1. 定义输入信号2. 分配七个片段对应的输出信号3. 使用组合逻辑进行数字与片段的对应4. 使用时序逻辑进行信号的控制和时序处理以下是一个简单的七段数码管代码示例:```verilogmodule seven_segment(input [3:0] sw,output reg [6:0] seg);always @(*)begincase (sw)4'b0000: seg = 7'b1000000; // 数字0 4'b0001: seg = 7'b1111001; // 数字1 4'b0010: seg = 7'b0100100; // 数字2 // 其他数字的对应关系default: seg = 7'b1111111; // 默认不显示 endcaseendendmodule```三、Vivado中七段数码管的仿真方法在编写七段数码管的代码之后,需要对其进行仿真以验证设计的正确性。