文档详情

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

发布:2017-03-26约1.62千字共3页下载文档
文本预览下载声明
项目名称:8位8段LED数码管动态扫描显示 班 级:09电二 姓 名:解健 学 号 一.实验目的 掌握数码管动态扫描显示原理及实现方法。 2.掌握动态扫描显示电路驱动程序的编写方法。 二.实验电路 三.元器件 元器件编号 元器件名称 说明 U2 7445 集电极开路的BCD十进制译码器/驱动器 U3 74HC245 8位总线驱动器 U1 AT89C52 AT89C52单片机 RP1 RESPACK8 具有公共端的排电阻 7SEG-MPX8-CC-BLUE 共阴极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文件。 第四步:最后观察设计的电路图是否能得到预想的效果,若不能,进行检查,找到毛病且纠正。 流程图 实验现象: 显示器点亮所有段,持续约1s,然后灭显示器,持续2s,最后显示“hello-93”,保持。 附:程序 #includeintrins.h #includeREGX52.H #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;i30;i++){ for(counter=0;counter8;counter++) { ledConPort=counter; dataPort=0xff; time(5);}} ledConPort=0xff; time(2000); while(TRUE) {for(counter=0;counter8;counter++){ ledConPort=counter; dataPort=ch[counter]; time(5);}}} void delay_5us(void) {_nop_(); _nop_();} void delay_50us(void) { unsigned char i; for(i=0;i4;i++) {delay_5us();}} void delay_100us(void) {delay_50us(); delay_50us();} void time(unsigned int ucMs) {unsigned char j; while(ucMs0){ for(j=0;j10;j++) delay_100us(); ucMs--;}} N N N N Y Y Y Y 结束 停止 Counter8 延时 Counter++ Counter=0 按数值点亮位 选择段 延时 灭显示器 I30 I++ I=0 延时 Counter8 Counter++ Counter=0 点亮所有位 选择段 开始
显示全部
相似文档