8位8段LED数码管动态扫描显示

更新时间:2023-11-30 22:06:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

项目名称:8位8段LED数码管动态扫描显示 班 级:09电二 姓 名:解健 学 号:09020313

一.实验目的

1. 掌握数码管动态扫描显示原理及实现方法。 2.掌握动态扫描显示电路驱动程序的编写方法。 二.实验电路

三.元器件 元器件编号 U2 U3 U1 RP1 元器件名称 7445 74HC245 AT89C52 RESPACK8 7SEG-MPX8-CC-BLUE 说明 集电极开路的BCD十进制译码器/驱动器 8位总线驱动器 AT89C52单片机 具有公共端的排电阻 共阴极8位7段LED蓝色显示器 四.实验步骤

第一步:先在Proteus软件中设计仿真电路原理图。

第二步:再在Keil C51软件中编写且编译程序,程序后缀必须是.c。然后在打开的“Option for Target‘Target 1’”选项卡,“Target”标签下频率设置为“11.0592”, “Output”标签下,将“Creat HEX File”项打勾选中,设置生成一个.hex文件。

第三步:接着将.hex文件导入原理图中U1芯片。双击U1,打开Edit Component对话框,选择生成的hex文件。

第四步:最后观察设计的电路图是否能得到预想的效果,若不能,进行检查,找到毛病且纠正。

流程图

开始 灭显示器 I=0 延时 Counter=0 Counter=0 选择段 选择段 点亮所有位 按数值点亮位 延时 延时 Counter++ Y Counter<8 N I++ Y N N Counter++ Y Counter<8 N 停止 Y 结束 I<30

实验现象:

显示器点亮所有段,持续约1s,然后灭显示器,持续2s,最后显示“hello-93”,保持。

附:程序

#include #include #define TRUE 1 #define dataPort P0 #define ledConPort P2

unsigned char code ch[8]={0x76,0x79,0x38,0x38,0x3f,0x40,0x6f,0x4f}; void time(unsigned int ucMs); void main(void)

{unsigned char i,counter=0;

for(i=0;i<30;i++){

for(counter=0;counter<8;counter++) { ledConPort=counter; dataPort=0xff; time(5);}}

ledConPort=0xff; time(2000); while(TRUE)

{for(counter=0;counter<8;counter++){ ledConPort=counter; dataPort=ch[counter]; time(5);}}}

void delay_5us(void) {_nop_(); _nop_();}

void delay_50us(void) { unsigned char i; for(i=0;i<4;i++) {delay_5us();}}

void delay_100us(void) {delay_50us(); delay_50us();}

void time(unsigned int ucMs) {unsigned char j; while(ucMs>0){

for(j=0;j<10;j++) delay_100us(); ucMs--;}}

本文来源:https://www.bwwdw.com/article/5adt.html

Top