51单片机_数码管控制.doc

上传人:sk****8 文档编号:3148879 上传时间:2019-05-23 格式:DOC 页数:6 大小:46.50KB
下载 相关 举报
51单片机_数码管控制.doc_第1页
第1页 / 共6页
51单片机_数码管控制.doc_第2页
第2页 / 共6页
51单片机_数码管控制.doc_第3页
第3页 / 共6页
51单片机_数码管控制.doc_第4页
第4页 / 共6页
51单片机_数码管控制.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、51 系列单片机_数码管控制源文件此程序使用 单片机 89SC52/ 1、 此程序实现数码管的静态显示,在数码管的最低位循环显示 09 这 10 个数#includeunsigned char code BitSet8 = 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f; /用于设置(低电平位选)数码管的位选信号,从低到高对应 8 个数码管unsigned char code NumberCode16 = 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c,

2、0x39, 0x5e, 0x79, 0x71,; /用于设置(共阴极)数码管的段选信号,从 0f 共 16 个数值void delay_ms(unsigned int n) /软件延时函数,延时 n 毫秒unsigned int i, j;for(i=n;i0;i-)for(j=110;j0;j-);void main()int num, i;while(1)num = 3;while(num0)/此循环用于实现 09 这 10 个数码在数码管的最低位循环显示P2 = BitSet7; /选中数码管的最低位,用于显示for(i=0; i0)/此循环用于实现 0f 这 16 个数码在数码管的所有

3、位循环显示P2 = 0; /同时选中数码管的所有位,用于显示for(i=0; iunsigned char code BitSet28 = 0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe; /用于设置(低电平位选)数码管的位选信号,从低到高对应 8 个数码管unsigned char code NumberCode16 = 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71,; /用于设置(共阴极)数码管的段选信

4、号,从 0f 共 16 个数值void delay_ms(unsigned int n) /软件延时函数,延时 n 毫秒unsigned int i, j;for(i=n;i0;i-)for(j=110;j0;j-);void main()int i;while(1)for(i=0; ivoid delay_ms(unsigned int n) /软件延时函数,延时 n 毫秒unsigned int i, j;for(i=n;i0;i-)for(j=110;j0;j-);void display(int num,int rep) /控制数码管按位输出显示数值 num,显示时间为 2*rep 毫

5、秒 char BitSet8 = 0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe; /用于设置(低电平位选)数码管的位选信号,从低到高对应 8 个数码管char NumberCode16 = 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71,; /用于设置(共阴极)数码管的段选信号,从 0f 共 16 个数值int n, r = rep, i;while(r- 0)n = num;i = 0;while(n=0

6、)P0 = 0xff; /关闭数码管当前位的显示,共阳极关闭显示段选信号P2 = BitSeti; /选中数码管对应的位P0 = NumberCoden%10; /向数码管的对应位中送入该位数值对应的段选信号delay_ms(2); /每一位延时显示 2msP2 = 0xff; /关闭所有位选i+; /位标记n=n/10; /取数值 n 的商if(n=0) break; /当取得的商为 0 时退出 while 循环void LeftDisplay(int num,int rep) /控制数码管按位输出显示数值 num,并且靠左显示,显示时间为 2*rep 毫秒char BitSet8 = 0x

7、7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe; /用于设置(低电平位选)数码管的位选信号,从低到高对应 8 个数码管char NumberCode16 = 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71,; /用于设置(共阴极)数码管的段选信号,从 0f 共 16 个数值int n = num, r = rep, i, j = 0;/计算数值 n 的位数if(n=0)j=1;elsewhile(n0)n=n/1

8、0; /取数值 n 的商j+;while(r- 0)n = num;i = 0;while(n=0)P0 = 0xff; /关闭数码管当前位的显示,共阳极关闭显示段选信号P2 = BitSeti+8-j; /选中数码管对应的位P0 = NumberCoden%10; /向数码管的对应位中送入该位数值对应的段选信号delay_ms(2); /每一位延时显示 2msP2 = 0xff; /关闭所有位选i+; /位标记n=n/10; /取数值 n 的商if(n=0) break; /当取得的商为 0 时退出 while 循环/*void LeftDisplay(int num) /用数码管按位输出显

9、示数值 num,并且靠左显示int n = num, i = 0, j = 0;/计算数值 n 的位数if(n=0)j=1;elsewhile(n0)n=n/10; /取数值 n 的商j+;n = num; /得到数值 n 的位数后,恢复其值进行后续操作if(n=0) /当要输出 0 时P0 = 0xff; /关闭数码管当前位的显示,共阳极关闭显示段选信号P2 = BitSet27; /选中数码管最高位P0 = NumberCode0; /向数码管的最低位送入 0 对应的段选信号delay_ms(5); /延时 2msP2 = 0xff; /关闭所有位选elsewhile(n0)P0 = 0x

10、ff; /关闭数码管当前位的显示,共阳极关闭显示段选信号P2 = BitSet2i+8-j; /选中数码管对应的位P0 = NumberCoden%10; /向数码管的对应位中送入该位数值对应的段选信号delay_ms(5); /延时 2msP2 = 0xff; /关闭所有位选i+; /位标记n=n/10; /取数值 n 的商*/void main()int num=0;while(1)if(num12) display(num, 400); /用数码管输出显示 num 0.8 秒else LeftDisplay(num, 400); /用数码管靠左输出显示 num0.8 秒num+;if(num=101) num=0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 建筑建材

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。