8位8段LED数码管动态扫描显示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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--;}}