八段数码管滚动显示程序设计.doc

上传人:土8路 文档编号:10372949 上传时间:2021-05-12 格式:DOC 页数:7 大小:629KB
返回 下载 相关 举报
八段数码管滚动显示程序设计.doc_第1页
第1页 / 共7页
八段数码管滚动显示程序设计.doc_第2页
第2页 / 共7页
八段数码管滚动显示程序设计.doc_第3页
第3页 / 共7页
八段数码管滚动显示程序设计.doc_第4页
第4页 / 共7页
八段数码管滚动显示程序设计.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《八段数码管滚动显示程序设计.doc》由会员分享,可在线阅读,更多相关《八段数码管滚动显示程序设计.doc(7页珍藏版)》请在三一文库上搜索。

1、实验三 八段数码管滚动显示程序设计一、实验目的1.掌握数码管动态显示的原理;2.掌握74LS164扩展端口的方法;3.掌握数码管滚动显示的方法。二、实验内容1.验证参考程序中的实验(显示数字05);2.修改程序:(1)使6个数码管从左到右重复滚动的显示一定的信息,比如:日期2008320;(2)滚动显示的速度可以修改。三、实验器材PC机一台, 仿真器一台, 实验箱一台, 导线若干。四、实验原理图显示共有6位,采用动态显示,8段数码管是由8155的PB0、PB1经过74LS164串转并后输出得到,6位位码由8155的PA0口输出,经UA2003反向驱动后,选择相应的显示位。实验中数据输出口地址为

2、0e102h,时钟为输出地址为0e102h,位选通输出地址位0e101h。实验原理图见图4-1。图4-1 实验原理图五、实验步骤1.按照实验一中的建立工程的步骤,建立本实验内容相应的工程;2.运用调试工具,调试软件,观察现象;3.调试修改程序观察现象。六 、参考程序/* “验证式?实验十一 八段数码管显示 */#include#define LEDLen 6 /6个数码灯/以下定义8155为PA、PB为基本I/o模式,PC为输出模式#define mode 0x03;/* 8155的命令状态口寄存器地址 */#define CAddr XBYTE0xe100 /* 8155的PA口地址,用于数

3、码灯的位控制 */#define OUTBIT XBYTE0xe101 /* 8155的PB口地址,其PB0和PB1用于74Ls164串行输入,控制数码管的段 */#define CLK164 XBYTE0xe102 #define DAT164 XBYTE0xe102 /* 段控制口(接164数据位) */* 键盘读入口 */#define IN XBYTE0xe103 /* 显示缓冲 */unsigned char LEDBufLEDLen; /* 八段管显示码 共阴极字符显示*/code unsigned char LEDMAP = 0x3f, 0x06, 0x5b, 0x4f, 0x6

4、6, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71;void Delay(unsigned char CNT) unsigned char i; while (CNT- !=0) for (i=100; i !=0; i-);void DisplayLED() unsigned char i, j; unsigned char Pos; unsigned char LED; /* 6个数码管从左边开始显示,0010 0000 */ Pos = 0x20; for (i = 0; i LEDLen; i+) /*

5、 六个数码管位控制为零,实现关所有八段管 */ OUTBIT = 0; /数码管需要显示的段数据 LED = LEDBufi; /8155通过PB0和PB1向74Ls164送段数据,串行输入,74Ls164并行输出到数码管段 for (j = 0; j 8; j+) /每个数据有8位,开始检测每一位的情况,先检测高位 if(LED & 0x80) DAT164 = 1; else DAT164 = 0; /必须PB1(CLK164)由低位向高位跳变,才能PB0(DAT164)发送一位数据 CLK164 = CLK164|0x02; /CLK164置0 CLK164 = CLK164&0xfd;

6、 /为下一位发送做准备 LED = 1; /* 显示下一位 */ OUTBIT = 0; /* 关所有八段管 */void main() unsigned char i = 0; unsigned char j; CAddr = mode; while(1) /保证数组里面的数据在015中间循环 LEDBuf0 = LEDMAP i & 0x0f; LEDBuf1 = LEDMAP(i+1) & 0x0f; LEDBuf2 = LEDMAP(i+2) & 0x0f; LEDBuf3 = LEDMAP(i+3) & 0x0f; LEDBuf4 = LEDMAP(i+4) & 0x0f; LEDBuf5 = LEDMAP(i+5) & 0x0f; i+; for(j=0; j30; j+) DisplayLED(); /* 延时 */ 七、实验现象当程序正常烧入并全速运行后,发现数码管的显示是从左到右滚动显示,并且显示的值是“0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f”轮流显示,通过延时可以调节滚动的快慢。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1