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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

一.实验目的

1.掌握数码管动态扫描显示原理及实现方法。

2.掌握动态扫描显示电路驱动程序的编写方法。

二.实验电路

三.元器件

四.实验步骤

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

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

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

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

流程图

实验现象:

显示器点亮所有段,持续约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--;}}

相关文档
最新文档