八位数码管段码显示
秒表-八位数码管显示
秒表-八位数码管显示1;************************************************************************** 2; 标题: 秒表-八位数码管显示(汇编)3; 作者: wentao 4; 5; 日期: 2007.3.36; 软件: Keil A51 V8.007; 芯片: AT89X518; 说明: 实验板实测通过,数码管为8位共阳9; 声明: 自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途!10;************************************************************************** 1112dot_l equ 30h ;30单元存储百分之一秒值13dot_h equ 31h ;31单元存储十分之一秒值14sec_l equ 32h ;32单元存储秒个位值15sec_h equ 33h ;33单元存储秒十位值16min_l equ 34h ;34单元存储分个位值17min_h equ 35h ;35单元存储分十位值18hou_l equ 36h ;36单元存储时个位值19hou_h equ 37h ;37单元存储时十位值2021dot equ 38h ;38单元为百分之一秒计数器(0.00s-0.99s)22sec equ 39h ;39单元为秒计数器(00s-59s)23min equ 40h ;40单元为分计数器(00m-59m)24hou equ 41h ;41单元为时计数器(00h-00h)2526dis_b equ 42h ;dis_b(42单元)作为位码选通数码管27dis_r equ 43h ;dis_r(43单元)为取段码时的偏移量2829key_t equ 44h ;44单元为键按下的次数标记3031K bit p1.4 ;K键与P1.4相连3233 org 0000h34 ajmp start35 org 000bh ;定时器0的中断入口地址36 ajmp time0 ;跳到定时器0的中断服务程序处37 org 001bh ;定时器1的中断入口地址38 ajmp time1 ;跳到定时器1的中断服务程序处39 org 0030h40start:41 mov p2,#0xff ;关所有数码管42 mov p1,#0xff ;p1为准双向口,作输入时先写14344 mov dis_b,#0x7f ;初始选通P2.7口数码管45 mov dis_r,#0 ;初始化偏移量为046 mov dot,#0 ;百分之一秒计数器清零47 mov sec,#0 ;秒计数清零48 mov min,#0 ;分计数清零49 mov hou,#0 ;时计数清零50 mov key_t,#0 ;键按下次数清零5152 mov tmod,#00010001b ;定时/计数器0、1工作于方式153 mov th0,#0xd8 ;预置定时常数55536(d8f0),产生10ms时基信号54 mov tl0,#0xf055 mov th1,#0xfc ;预置定时常数64536(fc18),产生1ms间隔用于动态显示56 mov tl1,#0x185758 setb ea ;开总中断59 setb et0 ;定时/计数器0允许中断60 setb et1 ;定时/计数器1允许中断61 clr tr0 ;关定时/计数器062 setb tr1 ;开定时/计数器16364lop:65 jb K,lop ;键(P1.4)未按下则返回66 lcall d_10ms ;延时10ms消抖67 jb K,lop ;是抖动则返回重新扫描68 jnb K,$ ;等待键松开69 lcall key_to ;调用键处理部分70 ajmp lop ;循环显示7172key_to: ;键处理子程序73 inc key_t ;键按下次数加174 mov a,key_t ;按下次数送入a75 cjne a,#1,key_2 ;不是1次继续检测是否是第2次76 setb tr0 ;第1次按下启动定时器077 ret78key_2: cjne a,#2,key_3 ;也不是2次继续检测是否是第3次79 clr tr0 ;第2次按下关闭定时器080 ret81key_3: cjne a,#3,back ;也不为3则结束82 mov dot,#0 ;第3次按下将四个计数器清零83 mov sec,#084 mov min,#085 mov hou,#086 mov key_t,#0 ;按键次数清零87back: ret88;--------------------------------------------------------------------------------89time0: ;定时器0中断服务程序90 push psw ;保护现场91 push acc9293 inc dot ;百分之一秒计数器加194 mov a,dot ;计数器值送入a95 cjne a,#100,over ;未计到100则返回继续计数96 mov dot,#0 ;计到100后清零97 inc sec ;秒计数器加1(进位10ms*100=1s)98 mov a,sec ;秒计数值送入a99 cjne a,#60,over ;未计到60则返回继续计数100 mov sec,#0 ;计到60后秒计数器清零101 inc min ;分计数器加1(进位60s=1m)102 mov a,min ;分计数值送入a103 cjne a,#60,over ;未计到60则返回继续计数104 mov min,#0 ;计到60后分计数器清零,重新计时105 inc hou ;时计数器加1(进位60m=1h)106 mov a,hou ;时计数器送入a107 cjne a,#100,over ;未计到100则返回继续计数108 mov hou,#0 ;计到100后清零109110over: mov th0,#0xd8 ;重置定时常数111 mov tl0,#0xf0112 pop acc ;恢复现场113 pop psw114 reti ;中断返回115;--------------------------------------------------------------------------------116time1: ;定时器1中断服务程序117 push psw ;保护现场118 push acc119 push b120 ;以下是百分之一秒计数器值个位十位分开121 mov a,dot ;百分之一秒计数器值送入a(被除数)122 mov b,#10 ;除数10送入b123 div ab ;a除以b124 mov dot_l,b ;余数b(百分之一秒值)送入百分之一秒存储单元125 mov dot_h,a ;商a(十分之一秒值)送入十分之一秒存储单元126 ;以下是秒计数器值个位十位分开127 mov a,sec ;秒计数器值送入a(被除数)128 mov b,#10 ;除数10送入b129 div ab130 mov sec_l,b ;余数b(秒个位值)送入秒个位存储单元131 mov sec_h,a ;商a(秒十位值)送入秒十位存储单元132 ;以下是分计数器值个位十位分开133 mov a,min ;分计数器值送入a(被除数)134 mov b,#10 ;除数10送入b135 div ab136 mov min_l,b ;余数b(分个位值)送入分个位存储单元137 mov min_h,a ;商a(分十位值)送入分十位存储单元138 ;以下是时计数器值个位十位分开139 mov a,hou ;时计数器值送入a(被除数)140 mov b,#10 ;除数10送入b141 div ab142 mov hou_l,b ;余数b(小时个位值)送入时个位存储单元143 mov hou_h,a ;商a(小时十位值)送入时十位存储单元144145 mov dptr,#table ;数码管段码表首址送入dptr146147 mov a,#dot_l ;取百分之一秒值的地址148 add a,dis_r ;基址+偏移量149 mov r0,a ;R0为欲显示值的地址150 mov a,@r0 ;取欲显示值送入a151 ; dis_r : 0 1 2 3 4 5 6 7152 ;对应单元: dot_l dot_h sec_l sec_h min_l min_h hou_l hou_h153 movc a,@a+dptr ;取对应值的段码154 mov p2,dis_b ;位码送入P2口155156 mov r0,dis_b ;取位码判断是否为需加小数点的位[liuwentao]157 cjne r0,#0xdf,b3 ;不是P2.5再判断是否为P2.3158 ajmp add_dot ;是P2.5则段码加上小数点显示159b3: cjne r0,#0xf7,b1 ;也不是P2.3再判断是否为P2.1160 ajmp add_dot ;是P2.3则段码加上小数点显示161b1: cjne r0,#0xfd,com ;也不是P2.1则正常送段码162163add_dot: anl a,#0x7f ;是P2.5,P2.3,P2.1则段码和7f做与操作使对应位显示小数点164com: mov p0,a ;段码送入P0口165166 inc dis_r ;偏移量加1,下次中断时显示下个数167 anl dis_r,#0x07 ;dis_r增到8时自动清0(使之在0到7间循环)168169 mov a,dis_b ;位码循环右移,下次中断时选通下个数码管170 rr a171 mov dis_b,a172173 mov th1,#0xfc ;重置定时常数174 mov tl1,#0x18175176 pop b177 pop acc ;恢复现场178 pop psw179 reti180181d_10ms: mov r5,#20 ;1+(1+2*255)*20+2*20=10.261ms@12M182temp1: mov r6,#255 ;1+2*255183 djnz r6,$184 djnz r5,temp1185 ret186187table: db 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf ;段码表188 ; 0 1 2 3 4 5 6 7 8 9 - 对应内容189190end191/************************************************************************** 192* 标题: 八位数码管显示(C51)193* 作者: wentao 194 195* 日期: 2007.3.3196* 软件: Keil C51 V8.02197* 芯片: AT89X51198* 说明: 实验板实测通过,数码管为8位共阳199* 声明: 自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途!200**************************************************************************/ 201202#include <reg51.h>203#include <intrins.h>204#define uchar unsigned char205206void delay_ms(uchar ms); // 延时毫秒@12M,ms最大值255207void key_scan(); // 按键扫描208void key_to(); // 按键处理209210uchar code dis_code[11] = {0xc0,0xf9,0xa4,0xb0,0x99, //段码表211 // 0 1 2 3 4 对应内容212 0x92,0x82,0xf8,0x80,0x90,0xbf};213 // 5 6 7 8 9 -214215uchar data dis[8]; // dis[0]为百分之一秒值,dis[1]为十分之一秒值216 // dis[2]为秒个位值,dis[3]为秒十位值217 // dis[4]为分个位值,dis[5]为分十位值218 // dis[5]为时个位值,dis[6]为时十位值219220uchar data dot = 0; // 百分之一秒计数器(0.00s-0.99s)221uchar data sec = 0; // 秒计数器(00s-59s)222uchar data min = 0; // 分计数器(00m-59m)223uchar data hou = 0; // 时计数器(00h-99h)224225uchar data dis_b; // dis_b为位码选通数码管226uchar data dis_r; // dis_r为取段码时的偏移量227228uchar data key_t = 0; // 按键次数,初始为0229230sbit K = P1^4; // K键与P1.4相连231232void main()233{234 P2 = 0xff; // 关所有数码管235 P1 = 0xff; // p1为准双向口,作输入时先写1236 dis[2] = 10; // '-'在段码表中偏移量为10237 dis[5] = 10; // '-'在段码表中偏移量为10238 dis_b = 0x7f; // 初始选通P2.7口数码管239 dis_r = 0; // 初始化偏移量为0240241 TMOD = 0x11; // 定时/计数器0,1工作于方式1242 TH0 = 0xd8; // 预置定时常数55536(d8f0),产生10ms时基信号243 TL0 = 0xf0;244 TH1 = 0xfc; // 预置定时常数64536(fc18),产生1ms间隔用于动态显示245 TH1 = 0x18;246 EA = 1; // 开总中断247 ET0 = 1; // 定时/计数器0允许中断248 ET1 = 1; // 定时/计数器1允许中断249 TR0 = 0; // 关闭定时/计数器0250 TR1 = 1; // 启动定时/计数器1251 while(1)252 {253 if(K != 1) // 有键按下254 {255 delay_ms(10); // 延时10ms去抖256 if(K != 1) // 确定是有键按下257 {258 while(K != 1); // 等待键松开259 key_to(); // 按键处理260 }261 }262 }263}264void key_to() // 按键处理子程序265{266 key_t++; // 按键次数加1267 if(key_t == 1) // 第一次按下268 TR0 = 1; // 启动定时器0269 else270 {271 if(key_t == 2) // 第二次按下272 TR0 = 0; // 关闭定时器0273 else274 {275 if(key_t == 3) // 第三次按下276 {277 dot = 0; // 四个计数器清零278 sec = 0;279 min = 0;280 hou = 0;281 key_t = 0; // 按键次数清零282 }283 }284 }285286}287void tiem0(void) interrupt 1 // T/C0中断服务程序(产生10ms时基信号) 288{289 dot++; // 百分之一秒计数器加1290 if(dot == 100) // 计数值到100291 {292 dot = 0; // 清零293 sec++; // 秒计数器加1(进位10ms*100=1s)294 if(sec == 60) // 秒计数值到60295 {296 sec = 0; // 秒计数器清零297 min++; // 分计数器加1(进位60s=1m)298 if(min == 60) // 分计数到60299 {300 min = 0; // 分计数器清零301 hou++; // 时计数器加1(进位60m=1h)302 if(hou == 100) // 时计数器到100303 hou = 0; // 时计数器清零304 }305 }306 }307 TH0 = 0xd8; // 重置定时常数308 TL0 = 0xf0;309}310void time1(void) interrupt 3 // T/C1中断服务程序(延时1ms数码管动态显示) 311{312 uchar data t = 0; // 段码临时变量313314 dis[0] = dot % 10; // 百分之一秒计数器个位分离出来赋绐dis[0] 315 dis[1] = dot / 10; // 百分之一秒计数器十位分离出来赋绐dis[1] 316 dis[2] = sec % 10; // 秒计数器个位赋绐dis[2]317 dis[3] = sec / 10; // 秒计数器十位赋绐dis[3]318 dis[4] = min % 10; // 分计数器个位赋绐dis[4]319 dis[5] = min / 10; // 分计数器十位赋绐dis[5]320 dis[6] = hou % 10; // 时计数器个位赋绐dis[6]321 dis[7] = hou / 10; // 时计数器十位赋绐dis[7]322323 t = dis_code[dis[dis_r]]; // 取出段码放入临时变量t324325 // 判断位码如果为显示P2.5,P2.3,P2.1则对应段码应加上小数点显示326 // 和0x7f(01111111)做与操作使原段码加上小数点变为新段码327328 if(dis_b == 0xdf | dis_b == 0xf7 | dis_b == 0xfd)329 t &= 0x7f;330331 P2 = dis_b; // 位码送P2口332 P0 = t; // 段码送P0口333334 dis_r++; // 偏移量加1,下次中断时显示下个数335 dis_r &= 0x07; // dis_r增到8时自动清0(使之在0到7间循环) 336337 dis_b = _cror_(dis_b,1); // 位码循环右移,下次中断时选通下个数码管338339 TH1 = 0xfc; // 重置定时常数340 TL1 = 0x18;341342}343void delay_ms(uchar ms) // 延时毫秒@12M,ms最大值255344{345 uchar i;346 while(ms--)347 for(i = 0; i < 124; i++);348}广州珍珠岩,广州珍珠岩厂 Ce57uICIJeu8。
(VHDL实验报告)数码管显示(一位数码管显示0-9,八位数码管显示学号后八位)
(1)一位数码管显示0-9:
(2)八位数码管显示学号后八位:
9、用下载电缆通过JTAG 口将对应的sof 文件加载到FPGA 中。观察实验 结果是否与自己的编程思想一致。
六、实验现象及结果 以设计的参考示例为例,当设计文件加载到目标器件后,将数字
四、 实验内容
本实验要求完成的任务是在时钟信号的作用下,使一位数码管显示输出 0-9,使八位数码管显示学号后八位。在实验中时,数字时钟选择 1KHZ作为 扫描时钟,实验箱中的拨动开关与 FPGA 的接口电路,以及拨动开关 FPGA 的
管脚连接在实验一中都做了详细说明,这里不在赘述。以下两图分别是数码 管显示模块的电路原理和其数码管的输入与FPGA的管脚连接表。
电子科技大学成都学院学院
标准实验报告
(实验)课程名称 数字电路 EDA 设计与应用
姓名 乱弹的枇杷 学号 专业 指导教师
一、 实验名称 数码管显示(一位数码管显示 0-9,八位数码管显示学号
后八位)
二、 实验目的 1、了解数码管的工作原理。 2、学习七段数码管显示译码器的设计。 3、掌握 VHDL 的 CASE 语句及多层次设计方法。
七段码管位选输入信号 七段码管位选输入信号 七段码管位选输入信号
五、 实验步骤
1、打开 QUARTUSII 软件,新建一个工程。 2、建完工程之后,再新建一个VHDL File,打开VHDL 编辑器对话框。 3、按照实验原理和自己的想法,在VHDL 编辑窗口编写VHDL 程序。其 程序如下所示:
(1)一位数码管显示0-9:
(2)八位数码管显示学号后八位:
51单片机应用:8只数码管同时显示多个不同字符
51单片机应用:8只数码管同时显示多个不同字符设计要求单片机控制8只数码管,同时显示8个字符。
例如,从左至右显示“”,接着显示“”,在接着显示“”,……“”,“”,分析及方案设计:本题可以采用扩展I/O口或直接用单片机自身的I/O口的方法实现。
为节省硬件设施并使电路连线尽量简单,采用直接使用单片机自身I/O口的方式,8个数码管同时显示数字则需采用动态显示方法,初步设定以P0口给出数码管显示字段,P1口选中某一时刻动态点亮的数码管。
软件设计可以有以下几种方案:a)将全部显示状态列出,放在主程序中不断循环b)将显示状态放入8个数组中,每个状态循环一次后主程序重新开始循环c)只设置两个数组,其中一个取值不变,为正序的从1到8的共阳极数码管段码,另一个数组中的数值不断被修改,即每次显示状态改变的时候都相应改变一次,如从的段码改为的段码。
从上述方案可以看出,若设置太多的数组或列出所有显示状态,程序虽然清晰易懂但占用程序存储空间明显较大,且用delay()函数延时的话会不断占用CPU;用两个数组和两个定时器虽然算法略复杂,但程序可以达到最简化。
详细的方案说明:1)采用数码管动态显示方法。
2)8个数码管由P3控制位选,即决定某一时刻哪一个数码管亮,由P0发出的总线控制显示的段码。
3)定时器T0和T1同时工作,定时时间均为0."5毫秒,采用方式1定时,每次溢出后由软件重装初值。
4)设置中间变量temp,用于不断左移并给P3赋值;数组display[]为code 即取之不变的数组,数组show[]中的取值变化。
5)每次T0计数溢出时,temp左移一次,相应的P3左移一次,数码管由第i 个点亮变为第i+1个点亮,与此同时赋给P0口的值由show[i]变为show[i+1],达到动态显示的效果。
6)定时器T1也是每0."5毫秒计数溢出一次,但只有到1秒时才执行定时器1中断中修改数组show[]取值的程序,用变量t记录T1溢出的次数,达到200次时数组show[]中的内容开始进行修改并且t清零。
PLC课程设计:八 段 数 码 显 示
四、工程预算
五、设计反思
六、参考文献
八段数码显示课程设计
一、八段数码显示课程设计
(一)可编程控的概述
可编程控制器是一种数字运算操作的电子系统,专为在工业环境下应用而设计。它采用了可编程序的存储器,用来在其内部存储和执行逻辑运算、顺序控制、定时、计数和算术运算等操作命令,并通过数字式和模拟式的输入和输出,控制各种类型的机械或生产过程。可编程控制器及其有关外围设备,都按易于与工业系统联成一个整体、易于扩充其功能的原则设计。”
A
A段
3
Q0.2
B
B段
4
Q0.3
C
C段
5
Q0.4
D
D段
6
Q0.5
E
E段
7
Q0.6
F
F段
8
Q0.7
G
G段
(三)接线图
1、按图3.1进行实验台面板接线。
图3.2.2八段数码显示实验接线图
(四)程序(含梯形图、语句表)
1、绘出系统梯形图
参考程序见“天塔之光.MWP”。
2、语句表
(五)调试
1、故障分析
硬件调试:接通电源,检查可编程控制器是否可以正常工作,接头是否接触良好,然后把其与电脑的通信口连接。
(二)实现的功能
实现的功能是:任一组抢先按下按键后,八段码显示器能及时显示该组的编号并使蜂鸣器发出响声,同时锁住抢答器,使其它组按键无效,只有按下复位开关后方可再次进行抢答。图3.2.1为抢答器仿真图
图3.2.1
图2.1
(三)所选设备及功能
序号
名称
数量
功能
1
YSXK-PLC8型PLC高级电工综合实训考核装置
八段数码管原理(一)
八段数码管原理(一)八段数码管简介•八段数码管是一种常见的显示器件,用于显示数字和部分字母。
•它由八个LED(发光二极管)组成,每个LED代表一个数字或字母的一段。
八段数码管的原理1.数码管的每一段(A至G)都是由一个LED组成。
2.八段数码管通过不同的灯亮或灭的组合来显示不同的数字和字母。
3.控制八段数码管的亮灭可以通过给每个LED提供合适的电压。
八段数码管的结构1.A至G段位于数码管的中间,共用一个LED。
2.数码管的左右两侧有两个额外的LED,用于显示小数点和其他特殊字符。
3.数码管还包括共阳极和共阴极两种类型。
共阳极数码管通过给段提供正电压即可点亮,共阴极数码管则通过给段提供负电压来点亮。
数字和字母的显示方式1.数字和字母的显示是通过控制每个段LED的亮灭来实现的。
2.为了显示数字0到9,对应的段LED需要亮起或熄灭。
3.要显示字母A到F,数码管需要亮灭相应的段LED,并且关闭其他未使用的段。
控制电路和编码方式1.控制八段数码管的电路通常由微控制器或其他数字电子电路构成。
2.通常使用BCD编码(二进制编码的十进制)来控制数码管的亮灭。
3.BCD编码使用4个位来表示数字0到9,每个位对应一个数字的亮灭状态。
4.编码器通过将输入的十进制数转换为对应的BCD码,并将码值提供给数码管的控制电路。
使用场景1.八段数码管广泛应用于计算机、仪器仪表、电子钟等设备中。
2.它被用于显示时间、温度、测量值等信息。
3.八段数码管因其简洁、清晰的显示效果而受到广泛青睐。
总结•八段数码管是一种常见的显示器件,通过控制不同LED的亮灭来显示数字和字母。
•它有共阳极和共阴极两种类型,常用BCD编码方式控制。
•八段数码管广泛应用于各种计算机和电子设备中,用于显示各种信息。
实验报告 实验七 八段数码管显示实验
实验报告实验七八段数码管显示实验----b46086b6-6eaf-11ec-8071-7cb59b590d7d实验报告--实验七-八段数码管显示实验EDA实验报告七段或八段数码管显示实验1、实验目的1)了解数码管动态显示的原理。
2)了解如何通过总线控制数码管显示器2、实验要求:利用实验仪提供的显示电路,动态显示一行数据.提示:显示显示缓冲区的内容(例如,可以使用60H~65h作为缓冲区)。
修改显示缓冲区的内容时,可以显示修改后的内容(为键盘扫描和显示实验做准备)。
3、实验说明实验仪器提供了一个6位8段编码的LED显示电路。
学生可以控制显示,只要他们根据地址输出相应的数据。
显示器共有6位,以动态方式显示。
8位段码和6位码由两个74ls374芯片输出。
位代码由mc1413或uln2022反相驱动后,选择相应的显示位。
本实验仪中8位段码输出地址为0x004h,位码输出地址为0x002h。
此处x是由key/ledcs决定,参见地址译码。
在进行键盘和led实验时,需要将按键/LEDC连接到相应的地址解码。
以便使用相应的地址进行访问。
例如,如果钥匙/ledcs连接到CS0,则段代码地址为08004h,位代码地址为08002h。
七段数码管的字型代码表如下表:a-----f | | b | |------| g | e | c-----d。
h显示字体gfedcba段代码001111113FH100011006H210110115BH3100111114FH41100111066H51016DH61111017DH70000 1107H81111117FH911011116fha111011177hb11111007chc011100139hd10111105ehe111100179hf111000171h4.原理图和接线5、实验内容1)使用仪器和仪表开发平台模型本实验用到了wave6000软件平台,电脑一台,lab6000实验箱,示波器,若干连线,串行数据线。
硬件实验四--八段数码管显示
硬件实验四 八段数码管显示一、实验要求利用实验箱提供的显示电路,动态显示一行数据.二、实验目的1. 了解数码管动态显示的原理。
2. 了解用总线方式控制数码管显示。
三、实验线路及连线四、实验说明1.本实验箱提供了6 位8段码LED 显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。
显示共有6位,用动态方式显示。
8位段码、6位位码是由两片74LS374输出。
位码经MC1413或ULN2003倒相驱动后,选择相应显示位。
本实验箱中8位段码输出地址为0X004H ,位码输出地址为0X002H 。
此处X 是由KEY/LED CS 决定,参见地址译码。
做键盘和LED 实验时,需将KEY/LED CS 接到相应的地址译码上。
以便用相应的地址来访问。
例如,将KEY/LED CS 接到CS0上,则段码地址为08004H ,位码地址为08002H 。
连线 连接孔1连接孔2 1KEY/LED_CS CS0 位选通信号 (0x002H) 段码输出(0x004H) 数据总线七段数码管的字型代码表如下表:五、程序参考程序、框图OUTBIT equ 08002h ; 位控制口OUTSEG equ 08004h ; 段控制口data segmentLEDBuf db 6 dup(?) ; 显示缓冲Num db 1 dup(?) ; 显示的数据DelayT db 1 dup(?)LEDMAP: ; 八段管显示码db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h data endscode segmentassume cs:code, ds:dataDelay proc nearpush ax ; 延时子程序push cxmov al, 0mov cx,axloop $pop cxpop axretDelay endpDisplayLED proc nearmov bx, offset LEDBufmov cl, 6 ; 共6个八段管mov ah, 00100000b ; 从左边开始显示DLoop:mov dx, OUTBITmov al, 0out dx,al ; 关所有八段管mov al, [bx]mov dx, OUTSEGout dx,almov dx, OUTBITmov al, ahout dx, al ; 显示一位八段管push axmov ah, 1call Delaypop axshr ah, 1inc bxdec cljnz DLoopmov dx, OUTBITmov al, 0out dx,al ; 关所有八段管retDisplayLED endpStart proc nearmov ax, datamov ds, axmov Num, 0MLoop:inc Nummov ch,Nummov ah,0mov cl,6mov bx,offset LEDBufFillBuf:mov si, offset LEDMapmov al,chand al,0fhadd ax,simov si,axmov al,[si] ; 数据转换成显示码 mov [bx], al ; 显示码存入显示缓冲 inc bxinc chdec cljnz FillBufmov DelayT,20DispAgain:call DisplayLED ; 显示dec DelayTjnz DispAgainjmp MLoopStart endpcode endsend start六、实验步骤(1) 在实验箱断电的情况下连好线。
八段数码管的字型代码 -回复
八段数码管的字型代码-回复八段数码管的字型代码指的是一种用来显示数字和部分字母的八段LED 数码管的编码方式。
该编码方式由八个段构成,分别是a、b、c、d、e、f、g和dp(小数点),通过控制每个段的亮灭来显示需要的字符。
这种编码方式广泛应用于电子设备和显示屏中,如时钟、计时器、温度计等。
在本文中,我们将详细解释什么是八段数码管的字型代码,并逐步介绍每个字符的编码方式。
第一步:了解数码管的基本结构和原理数码管是由多个LED灯组成的,在八段数码管中,我们可以看到八个段,分别是a、b、c、d、e、f、g和dp。
这些段可以通过控制电流的通断来显示不同的字符。
每个段的控制是独立的,通过给每个段引脚施加不同的电压,可以点亮或熄灭对应的灯。
通过不同的组合,可以显示数字和一些特定的字母。
第二步:了解八段数码管的字型代码表八段数码管的字型代码表包括了0到9的数字和一些字母的编码方式。
下面是八段数码管的字型代码表:0 = ABCDEF1 = BC2 = ABDEG3 = ABCDG4 = BCFG5 = ACDFG6 = ACDEFG7 = ABC8 = ABCDEFG9 = ABCDFGA = ABCEFGb = CDEFGC = ADEFGd = BCDEGE = ADEFGF = ADEFG在字型代码表中,每个字符都有对应的八个段的亮灭情况。
通过查表,我们可以确定如何控制数码管的段来显示特定的字符。
第三步:控制数码管显示特定字符现在,我们来看一个例子,如何通过八段数码管的字型代码来控制数码管显示数字7。
根据字型代码表,我们可以知道数字7应该显示的亮灭情况是abc。
因此,我们需要给a、b和c三个段施加电流,使其点亮。
通过引脚控制,我们可以将a、b和c三个段的电压拉高,其余段的电压为低电平,从而使数码管显示数字7。
这样,我们就成功通过八段数码管的字型代码来控制数码管显示了数字7。
同样的道理,我们可以通过查找字型代码表来控制数码管显示其他数字和字母。
8段led数码管的段码表
8段led数码管的段码表
8段LED数码管的段码表是用于描述数码管各段亮灭状态的一种编码方式。
根据LED数码管的连接方式不同,段码表也会有所不同。
以下是两种常见的连接方式(共阳和共阴)下的段码表示例:
1. 共阳连接方式:
0:0C0
1:0F9
2:0A4
3:0B0
4:99(或099)
5:92(或092)
6:82(或082)
7:0F8
8:80(或080)
9:90(或090)
注意:这里的编码是16进制表示,且由于不同的制造商或不同的应用,编码可能会略有不同。
2. 共阴连接方式:
0:3F
1:06
2:5B
3:4F
4:66
5:6D
6:7D
7:07
8:7F
9:6F
注意:这里的编码也是16进制表示,与共阳方式相似,编码可能会因制造商或应用而异。
在使用段码表时,需要注意以下几点:
1. 确认LED数码管的连接方式(共阳或共阴),以便选择正确的段码表。
2. 确认段码表的编码方式(通常是16进制),并正确解码以设置数码管各段的亮灭状态。
3. 根据具体的应用需求,可能需要调整段码表的编码以满足特定的显示要求。
4. 在实际应用中,还需要考虑数码管的驱动电路和控制方式等因素。
共阴极八段数码管显示数字0到9
共阴极八段数码管显示数字0到9共阴极八段数码管是一种常用的数码显示器件,广泛应用于数字显示、电子计时、计数器等电子设备中。
它由8个发光二极管(简称LED)组成,分别代表数字的不同部分,通过控制LED的亮灭来显示不同数字。
数码管的工作原理是通过对LED的正向电压加以控制,使其发光。
每个数码管有7个分段加上一个小数点,分别代表数字的不同部分。
这7个分段依次为A、B、C、D、E、F、G,小数点分段为DP。
根据不同数字需要显示的部分,根据真值表将其控制端与共阴极接通或断开,从而实现不同数字的显示。
接下来,我们将从数字0到9逐个分析,用简体中文写出其显示方式以及对应的亮灭情况。
数字0:使用的接线方式:A、B、C、D、E、F接通,G接断。
个闭合的圈。
数字1:使用的接线方式:B、C接通,A、D、E、F、G接断。
显示效果:数码管上只有B和C分段亮灭,形状为一竖线。
数字2:使用的接线方式:A、B、G、E、D接通,C、F接断。
显示效果:数码管上只有A、B、G、E、D分段亮灭,形状为一个倒“L”。
数字3:使用的接线方式:A、B、C、D、G接通,E、F接断。
显示效果:数码管上除了E、F分段,其余分段均亮灭,形状为一个“M”。
数字4:使用的接线方式:B、C、F、G接通,A、D、E接断。
为一个倒“U”。
数字5:使用的接线方式:A、C、D、F、G接通,B、E接断。
显示效果:数码管上除了B、E分段,其余分段均亮灭,形状为一个倒“N”。
数字6:使用的接线方式:A、C、D、E、F、G接通,B接断。
显示效果:数码管上除了B分段,其余分段均亮灭,形状为一个“0”。
数字7:使用的接线方式:A、B、C接通,D、E、F、G接断。
显示效果:数码管上除了D、E、F、G分段,其余分段均亮灭,形状为一个倒“L”。
数字8:使用的接线方式:A、B、C、D、E、F、G接通。
显示效果:数码管上的所有分段均亮灭,形状为一个闭合的圈。
数字9:使用的接线方式:A、B、C、D、F、G接通,E接断。
数码管流动显示12345678
学号天津城建大学嵌入式系统及应用课程设计设计说明书数码管流动显示12345678起止日期:2015 年11月15日至2015 年11月27 日学生姓名班级成绩指导教师(签字)计算机与信息工程学院2015年11 月27 日课程设计报告书题目: 数码管流动显示12345678学生姓名:学生学号:院名:专业:任课教师:目录摘要 (II)第一章课设总述 (1)1.1单片机概述 (1)1.3课题研究的目的和意义 (1)1.4课题的主要研究工作 (1)第二章系统硬件介绍及设计 (2)2.1AT89C51简介 (2)1.2数码管7SEG-COM-AN-BLUE介绍(7段数码管) (3)2.2硬件电路图 (4)2.3元件清单 (4)第三章系统软件设计 (5)3.1程序描述 (6)3.2程序流程图 (6)第四章系统调试 (7)4.1在PROTEUS中仿真 (7)参考文献 (7)摘要1.内容:利用动态扫描让八位数码管稳定的显示1、2、3、4、5、6、7、82.目标:(1)掌握单片机控制八位数码管的动态扫描技术,包括程序设计和电路设计,本任务的效果是让八位数码管稳定的显示12345678。
(2)用PROTEUS进行电路设计和实时仿真3.知识点链接(1)数码管动态扫描(动态扫描的定义以及与静态显示的区别)动态显示的特点是将所有位数码管的段选线s一位数码管有效。
选亮数码管采用动态扫描显示。
所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
(2)总线的应用元器件与总线的连线P0口的接线采用总线方式,详细如电路图1所示。
①选择总线按钮②绘制总线:与普通电线的绘制方法一样,选择合适的起点、终点单击。
如果终点在空白处,左键双击结束连线。
画总线的时候为了和一般的导线区分,我们一般喜欢画斜线来表示分支线。
此时我们需要自己决定走线路径,只需在想要拐点处单击鼠标左键即可。
八段数码管滚动显示程序设计
八段数码管滚动显示程序设计在设计八段数码管滚动显示程序时,首先需要明确程序的功能和要求。
根据题目要求,我们需要设计一个程序,能够实现八段数码管的滚动显示,并能够控制滚动的速度和显示的内容。
在程序设计的过程中,我们需要考虑以下几个方面:1.数码管的显示方式:八段数码管的显示是基于数码管的每个段的开关状态来控制的,我们需要明确每个数字在数码管上的显示方式。
2.滚动的实现方式:滚动的实现方式可以有多种,例如左滚动、右滚动、上下滚动等。
我们需要根据题目要求确定滚动的方式,并设计相应的算法实现。
3.滚动的速度控制:滚动的速度可以通过控制滚动的时间间隔来控制。
我们可以使用定时器或者延时函数来实现速度的控制。
下面是一个八段数码管滚动显示程序的示例代码:```c#include <reg51.h>sbit A = P2^0;sbit B = P2^1;sbit C = P2^2;sbit D = P2^3;sbit E = P2^4;sbit F = P2^5;sbit G = P2^6;sbit DP = P2^7;//数码管的段码定义unsigned char code digit[10] =0xC0,//00xF9,//10xA4,//20xB0,//30x99,//40x92,//50x82,//60xF8,//70x80,//80x90//9};//数码管滚动显示函数void display(unsigned char *num, unsigned char delay) unsigned char i, j;// 滚动显示num数组中的数字for(i = 0; i < 8; i++)for(j = 0; j < delay; j++)A=0;B=0;C=0;D=0;E=0;F=0;G=0;DP=0;P1 = digit[num[i]];P0=0x01<<i;//延时,控制滚动速度// 此处使用延时函数,delayms函数需要自行实现delayms(1);}}void maiunsigned char num[8] = {1, 2, 3, 4, 5, 6, 7, 8}; // 显示的数字unsigned char delay = 100; // 滚动的速度while(1)display(num, delay);}```在上述代码中,我们使用了一个8位的数组来存储要显示的数字。
EDA八段动态数码管显示设计实验报告
第十周动态数码管显示设计报告姓名:学号:专业:班级:指导教师:2012年11月8日目录《EDA技术及应用》课程设计任务书 (3)实验目的 (5)设计要求 (5)实验设备 (5)扫描原理 (5)设计任务 (6)实验程序 (6)时序仿真波形图 (7)仿真结果 (8)模拟电路 (8)设计总结 (8)课程设计评分表 (9)《EDA技术及应用》课程设计任务书一、设计题目动态数码管显示设计二、设计主要内容本课题要求掌握使用Quartus II设计数字系统的设计思路和设计方法。
学习VHDL基本逻辑电路的综合设计应用。
掌握VHDL语言的语法规范,掌握时序电路描述方法。
掌握多个数码管动态扫描显示的原理及设计方法。
设计一个八位数码管共阴极动态扫描显示控制电路,要求显示学生自己的学号。
利用实验室设备完成系统设计并进行运行调试。
1、具体设计内容如下:(1)静止显示学号;(2)动态循环显示学号。
2、提供设计报告,报告要求包括以下内容:设计思路、设计输入文件、设计与调试过程、模拟仿真结果和设计结论。
三、原始资料1、LED显示模块原理LED有段码和位码之分,所谓段码就是让LED显示出“8.”的八位数据,一般情况下要通过一个译码电路,将输入的4位2进制数转换为与LED显示对应的8位段码。
位码也就是LED的显示使能端,对于共阳级的LED而言,高电平使能。
要让8个LED同时工作,显示数据,就是要不停的循环扫描每一个LED,并在使能每一个LED的同时,输入所需显示的数据对应的8位段码。
虽然8个LED是依次显示,但是受视觉分辨率的影响,看到的现象是8个LED同时工作。
多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环点亮多个数码管,并利用人眼的视觉暂留现象,只要扫描的频率大于50Hz,将看不到闪烁现象。
2、系统结构图信号名与芯片引脚对照表3、课程设计使用设备(1)EDA及SOPC综合实验平台;(2)导线若干;(3)PC机;(4)Quartus II开发工具软件。
八段数码管单片机
单片机实验报告(四)实验名称八段数码管显示(51/96/88)一、实验目的1.了解数码管动态显示的原理。
2.了解用总线方式控制数码管显示二、实验原理1.本实验仪提供了 6 位 8 段码 LED 显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。
显示共有 6 位,用动态方式显示。
8 位段码、6 位位码是由两片74LS374 输出。
位码经 MC1413 或 ULN2003 倒相驱动后,选择相应显示位。
本实验仪中 8 位段码输出地址为 0X004H,位码输出地址为 0X002H。
此处 X 是由KEY/LED CS 决定,参见地址译码。
做键盘和 LED 实验时,需将 KEY/LED CS 接到相应的地址译码上。
以便用相应的地址来访问。
例如,将 KEY/LED CS 接到CS0 上,则段码地址为08004H,位码地址为 08002H。
三、实验所用仪器LED 、 89C51 、试验箱、导线四、操作步骤图1-1 实验电路及其连线图1-2 七段数码管的字形代码表图1-3 实验框图五、实验程序1、wave实验箱实验程序ORG 0100HMAIN: MOV SP,#70HMOV 75H,#1MOV 76H,#1MOV 77H,#5MOV 78H,#9MOV 79H,#9MOV 7AH,#1MOV R4,#6ONE: LCALL BRITHDAY ;进入死循环,让数码管都一直亮着 LJMP ONEBRITHDAY:MOV R0,#75H;给R0一个单元地址75HMOV R3,#01H ;位选码只让第一个数码管亮MOV A,R3 ;将R3的值给ALOOP: MOV DPTR,#8002HMOVX @DPTR,AINC DPTRINC DPTRMOV A,@R0ADD A,#0DHMOVC A,@A+PCMOVX @DPTR,AACALL DL1MSINC R0MOV A,R3JB ACC.5,LOOP1RL AMOV R3,AAJMP LOOPLOOP1:RETTABLE:DB 3FH,06H,5BH,4FH,66H,6DH,DB 7DH,07H,7FH,6FH,77H,7CHDL1ms: MOV R7,#02HLOOP2: MOV R6,#0F6H ;1LOOP3: DJNZ R6,LOOP3 ;2DJNZ R7,LOOP2 ;2 1000-1*2-2*2-2*2*2-1*2=948 948%4=246(F6H)RET程序设计思路:在89c51内部的RAM中设置6个缓冲单元,分别存放显示器要显示的6位的数据。
硬件实验6 八段数码管显示实验
硬件实验6 八段数码管显示实验1.实验目的1)了解数码管实现显示字符的7段码编制方法;2)掌握查表法获得0-F的7段码的方法;3)掌握静态显示和动态显示的原理,硬件连接方式和程序编写方法。
2.预习要求1)了解数码管静态显示和动态显示接口电路的设计方法和特点;2)了解数码管动态显示的程序设计方法;3)理解运用串行口工作方式0扩展I/O连接数码管的方法;4)认真预习本节实验内容,设计实验硬件连接电路,编写实验程序。
3.实验说明1)LED数码管显示原理8段LED数码管有共阴极和共阳极两种结构。
对于共阴数码管,其8个LED的阴极连接在一起作为公共COM端;而共阳数码管中8个LED的阳极连接在一起作为公共COM端。
共阴数码管显示的必要条件是其COM端接地或接具有较大灌电流能力的输入端口,此时当某个发光二级管的阳极为高电平时,该发光二极管点亮;共阳数码管显示的必要条件是共阳极接电源或具有较强电流输出能力的输出端口,此时当某个发光二极管的阴极接低电平时,该发光二级管被点亮。
2)LED数码管显示方式A.静态显示方式静态显示的特点是每个数码管需要一个具有锁存功能的8位输出口,用来锁存待显示的段码。
将要显示数的7段码输出到端口,数码管就会显示并一直保持到接收到新的显示段码为止。
静态显示的优点:显示程序简单,占用CPU时间少。
但当数码管数量较多时,就需要外扩较多的输出端口,因此静态显示的缺点是占用硬件资源多,成本较高。
B.动态显示方式动态显示的特点是将多个数码管的相应段码线连在一起,接到一个8位输出端口,该端口称为段码输出口;同时将各个(如8个)数码管的COM端连接到一个8位输出端口,该端口称为位控输出口。
这样的连接使得8个数码管只要2个输出端口就可以实现控制,大大简化硬件电路。
但是由于多个数码管的段码是连在一起的,所以需要结合位控信号,分时输出不同数码管上显示的7段码,即需要采用动态显示扫描,轮流向段码输出口输出段码和向位控输出口输出位选信号,并进行1~2ms的短时延时;8个数码管轮流输出一遍后,约20ms后,就要进行一次显示刷新,这样才能利用发光管的余辉和人眼视觉暂留作用,得到全部数码管同时稳定显示的效果。
单片机课程设计-8位8段LED数码管动态扫描显示
华南理工大学广州汽车学院单片机课程设计题目:8位8段LED数码管动态扫描专业:电子信息工程班级:09电信(1)班姓名:付锦辉学号:200930062745一、内容要求:在8位8段LED数码管显示“8.8.8.8.8.8.8.8.”持续500ms,之后灭显示器200ms;然后显示“WELCOM-1”(由于8位8段LED数码管显示不能显示字母W 和M,所以改为显示“HELLO-93”)二、目的和意义1、掌握数码管动态扫描显示原理及实现方法。
2、掌握动态扫描显示电路驱动程序的编写方法。
三、总体方案设计思路LED数码动态显示的基本做法在于分时轮流选通数码管的公共端,使得各数码管轮流导通,再选通相应的数码管后,即显示字段上得到显示字形码。
这种方式数码管的发光效率,而且由于各个数码管的字段线是并联使用的,从而大大简化了硬件线路。
动态扫描显示接口是单片机系统中应用最为广泛的一种显示方式。
其接口电路是把所有显示器的8个笔画段A-DP同名端并联在一起,而每个显示器的公共极COM各自独立地接受I/O线控制,CPU向字段输出口送出字段形码是,所有显示器由于同名端并连接收到相同的字形码,但究竟是哪个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以就可以自行决定何时显示哪一位了。
而所谓动态扫描是指采用分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。
再轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上个位显示器并非同时点亮,但只要扫描的速度足够快,给人的影响就是一组稳定的显示数据,不会有闪烁感。
采用总线驱动器74HC245提供LED数码管的段驱动,输出高电平时点亮相应段;采用集电极开路的BCD-十进制译码器/驱动器完成LED数码管位驱动,输出低电平时选通相应位。
P2口每个口线输出灌电流不足以驱动一个数码管显示器的位-公共极,所依通过集电极开路的BCD-十进制译码器/驱动器7445驱动,即节约P2口线,又增加驱动能力。
八段数码管显示
实验一八段数码管显示1、实验目的:(1)了解数码管动态显示的原理。
(2)了解74LS164扩展端口的方法。
2、实验要求:利用实验仪提供的显示电路,动态显示一行数据.3、实验电路图LED1LED2LED3LED4LED5LED64、实验器材:(1)超想-3000TB综合实验仪 1 台(2)超想3000仿真器 1 台(3)计算机 1 台5、实验连线无 6、实验说明:(1)本实验仪提供了8段码LED 显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。
显示共有6位,用动态方式显示。
8段数码管是由8155的PB0、PB1经74LS164“串转并”后输出得到。
6位位码由8155的PA0口输出,经Ua2003反向驱动后,选择相应显示位。
74LS164是串行输入并行输出转换电路,串行输入的数据位由8155的PB0控制,时钟位由8155的PB1控制输出。
写程序时,只要向数据位地址输出数据,然后向时钟位地址输出一高一低两个电平就可以将数据位移到74LS164中,并且实现移位。
向显示位选通地址输出高电平就可以点亮相应的显示位。
本实验仪中数据位输出地址为0e102H ,时钟位输出地址为0e102H ,位选通输出地址为 0e101H 。
本实验涉及到了8155 I0/RAM 扩展芯片的工作原理以及74LS164器件的工作原理。
(2)七段数码管的字型代码表显示字形g f e d c b a 段码 0 0 1 1 1 1 1 1 3fh 1 0 0 0 0 1 1 0 06h2 1 0 1 1 0 1 1 6bh3 1 0 0 1 1 1 1 4fh4 1 1 0 0 1 1 0 66h5 1 1 0 1 1 0 1 6dh6 1 1 1 1 1 0 1 7dh7 0 0 0 0 1 1 1 07h8 1 1 1 1 1 1 1 7fh9 1 1 0 1 1 1 1 6fh A 1 1 1 0 1 1 1 77h B 1 1 1 1 1 0 0 7ch C 0 1 1 1 0 0 1 39h D 1 0 1 1 1 1 0 5eh E 1 1 1 1 0 0 1 79h F1111 71hab c def g dp7、程序框图8、实验步骤1.将KEIL仿真器上40芯排线一端和实验箱上51CPU板上的40芯排针连接起来,将仿真器连接的USB或串口线与PC机对应的USB或串口连接起来,打开实验箱电源。