动态数码管显示的
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
动态数码管显 示的Proteus 仿真及C语言 程序设计
主讲:应电三班 唐园
设计要求
P0端口接两个74LS373锁存器,其中一个接 数码管字型码笔段,另一个接数码管的数位 选择端,P1.7接一个开关,当开关接高电平时, 显示“12345”字样,当开关接低电平时,显 示“HELLO”字样。
元器件选取
74LS373为三态输出的八 D 透明锁存器 当三态允许控制端 OE 为低电平时,Q0~Q7为正 常逻辑状态,可用来驱动负载或总线。当 OE 为高 电平时,Q0~Q7 呈高阻态,即不驱动总线,也不 为总线的负载,但锁存器内部的逻辑操作不受影响。 当锁存允许端 LE 为高电平时,Q 随数据 D 而变。 当 LE 为低电平时,D 被锁存在已建立的数据电平。 当 LE 端施密特触发器的输入滞后作用,使交流和 直流噪声抗扰度被改善 400mV。
仿真原理图
仿真测试
仿真结果①
仿真结果②
实
物
图
流程图
开始 K1按键识别成功否 否 置显示“12345”字型码首地址 置显示“HELLO”字型码首地址 是
置字型码偏移量和位选码
查表并送出显示
延时2ms并指向下一个偏移量
wenku.baidu.com
否
五个数码管显示完否
是
else { duan=1; P0=table2[i]; duan=0; P0=0xff; delay(1000); wei=1; P0=table3[i]; wei=0; } } } } void delay(unsigned int t) { while(t--); }
(1)AT89C52:单片机 (2)RES:电阻 (3)CRYSTAL:晶振 (4)CAP.CAP-ELEC:电容,电解电容 (5)RESPACK-8:排阻 (6)7SEG-MPX6-CC:7段式6位共阴极数码管 (7)BUTTON:按钮 (8)74LS373:锁存器
74LS373详细说明
C语言程序
#include <reg52.h> void delay(unsigned int t); unsigned char code table1[]={0x06,0x6d,0x66,0x4f,0x5b}; unsigned char code table2[]={0x76,0x3f,0x38,0x38,0x79}; unsigned char code table3[]={0xfe,0xfd,0xfb,0xf7,0xef}; unsigned char i; sbit button=P1^7; sbit wei=P2^0; unsigned int t; sbit duan=P2^1; void main(void) { while(1) { P0=0xff; for(i=0;i<5;i++) { if(button==0) { duan=1; P0=table1[i]; duan=0; P0=0xff; delay(1000); wei=1; P0=table3[i]; wei=0; }
主讲:应电三班 唐园
设计要求
P0端口接两个74LS373锁存器,其中一个接 数码管字型码笔段,另一个接数码管的数位 选择端,P1.7接一个开关,当开关接高电平时, 显示“12345”字样,当开关接低电平时,显 示“HELLO”字样。
元器件选取
74LS373为三态输出的八 D 透明锁存器 当三态允许控制端 OE 为低电平时,Q0~Q7为正 常逻辑状态,可用来驱动负载或总线。当 OE 为高 电平时,Q0~Q7 呈高阻态,即不驱动总线,也不 为总线的负载,但锁存器内部的逻辑操作不受影响。 当锁存允许端 LE 为高电平时,Q 随数据 D 而变。 当 LE 为低电平时,D 被锁存在已建立的数据电平。 当 LE 端施密特触发器的输入滞后作用,使交流和 直流噪声抗扰度被改善 400mV。
仿真原理图
仿真测试
仿真结果①
仿真结果②
实
物
图
流程图
开始 K1按键识别成功否 否 置显示“12345”字型码首地址 置显示“HELLO”字型码首地址 是
置字型码偏移量和位选码
查表并送出显示
延时2ms并指向下一个偏移量
wenku.baidu.com
否
五个数码管显示完否
是
else { duan=1; P0=table2[i]; duan=0; P0=0xff; delay(1000); wei=1; P0=table3[i]; wei=0; } } } } void delay(unsigned int t) { while(t--); }
(1)AT89C52:单片机 (2)RES:电阻 (3)CRYSTAL:晶振 (4)CAP.CAP-ELEC:电容,电解电容 (5)RESPACK-8:排阻 (6)7SEG-MPX6-CC:7段式6位共阴极数码管 (7)BUTTON:按钮 (8)74LS373:锁存器
74LS373详细说明
C语言程序
#include <reg52.h> void delay(unsigned int t); unsigned char code table1[]={0x06,0x6d,0x66,0x4f,0x5b}; unsigned char code table2[]={0x76,0x3f,0x38,0x38,0x79}; unsigned char code table3[]={0xfe,0xfd,0xfb,0xf7,0xef}; unsigned char i; sbit button=P1^7; sbit wei=P2^0; unsigned int t; sbit duan=P2^1; void main(void) { while(1) { P0=0xff; for(i=0;i<5;i++) { if(button==0) { duan=1; P0=table1[i]; duan=0; P0=0xff; delay(1000); wei=1; P0=table3[i]; wei=0; }