欢迎来到天天文库
浏览记录
ID:33534167
大小:97.50 KB
页数:3页
时间:2019-02-26
《四位数码管计数演示》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、·************************************************************************** ·* 标题: 四位数码管计数演示(C51) ·* 作者: wentao http://blog.liuwentao.net · http://wentao.programfan.com ·* 日期: 2007.3.2 ·* 软件: Keil C51 V8.02 ·* 芯片: AT89X51 ·* 说明: 实验板实测通过,数码管为8位共阳 ·* 声明: 自用存档!另仅供需要的朋友
2、参考,请勿用做不道德转载及商业用途! ·**************************************************************************/ · ·#include · ·#define uchar unsigned char · ·void delay_ms(uchar ms); // 延时毫秒@12M,ms最大值255 ·void display(); // 显示子程序 · ·uchar code dis_code[10] = {0xc0,0xf9,0xa
3、4,0xb0,0x99, //段码表 · // 0 1 2 3 4 对应内容 · 0x92,0x82,0xf8,0x80,0x90}; · // 5 6 7 8 9 · ·uchar data dis_0 = 0; // 个位值 ·uchar data dis_1 = 0; // 十位值 ·uchar data dis_2 = 0;
4、 // 百位值 ·uchar data dis_3 = 0; // 千位值 · ·void main() ·{ · P2 = 0xff; // 关所有数码管 · · while(1) · { · display(); // 调用显示子程序 · · dis_0++; // 个位值加1 · if(dis_0 != 10) // 个位未到10则结束此次循环 · continue; ·
5、· dis_0 = 0; // 个位到10清零 · dis_1++; // 十位值加1(个位到10的进位) · if(dis_1 != 10) // 十位未到10则结束此次循环 · continue; · · dis_1 = 0; // 十位到10清零 · dis_2++; // 百位值加1(十位到10的进位) · if(dis_2 != 10) // 百位未到
6、10则结束此次循环 · continue; · · dis_2 = 0; // 百位到10清零 · dis_3++; // 千位值加1(百位到10的进位) · if(dis_3 != 10) // 千位未到10则结束此次循环 · continue; · · dis_3 = 0; // 千位到10清零 · } ·} ·void display() // 显示子
7、程序 ·{ · uchar data i = 50; // 用于延长每四位数的显示时间 · while(i--) // 直到i减为0 · { · P0 = dis_code[dis_0]; // 取个位的段码 · P2 = 0x7f; // 开个位显示(P2.7口控制个位数码管) · delay_ms(1); // 延时1ms使四位数码管动态显示时能看清 · ·
此文档下载收益归作者所有