- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
四位数码管计数演示
? ************************************************************************** ? *?标题:?四位数码管计数演示 C51 ? *?作者:?wentao ? ? *?日期:?2007.3.2 ? *?软件:?Keil?C51?V8.02 ? *?芯片:?AT89X51 ? *?说明:?实验板实测通过,数码管为8位共阳 ? *?声明:?自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途! ? **************************************************************************/ ? ? #include ? ? #define?uchar?unsigned?char ? ? void?delay_ms uchar?ms ;??//?延时毫秒@12M,ms最大值255 ? void?display ; //?显示子程序 ? ? uchar?code?dis_code[10]? ? 0xc0,0xf9,0xa4,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; //?百位值 ? uchar?data?dis_3? ?0; //?千位值 ? ? void?main ? ? P2? ?0xff; //?关所有数码管 ? ? while 1 ? ? display ; //?调用显示子程序 ? ? dis_0++; //?个位值加1 ? if dis_0?! ?10 ??//?个位未到10则结束此次循环 ? continue; ? ? 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 ??//?百位未到10则结束此次循环 ? continue; ? ? dis_2? ?0; //?百位到10清零 ? dis_3++; //?千位值加1 百位到10的进位 ? if dis_3?! ?10 ??//?千位未到10则结束此次循环 ? continue; ? ? dis_3? ?0; //?千位到10清零 ? ? ? void?display //?显示子程序 ? ? uchar?data?i? ?50; //?用于延长每四位数的显示时间 ? while i-- //?直到i减为0 ? ? P0? ?dis_code[dis_0];?//?取个位的段码 ? P2? ?0x7f; //?开个位显示 P2.7口控制个位数码管 ? delay_ms 1 ; //?延时1ms使四位数码管动态显示时能看清 ? ? P0? ?dis_code[dis_1];?//?取十位的段码 ? P2? ?0xbf; //?开十位显示 P2.6口控制十位数码管 ? delay_ms 1 ; //?延时1ms作用同上 ? ? P0? ?dis_code[dis_2];?//?取百位的段码 ? P2? ?0xdf; //?开百位显示 P2.5口控制十位数码管 ? delay_ms 1 ; //?延时1ms作用同上 ? ? P0? ?dis_code[dis_3];?//?取千位的段码 ? P2? ?0xef; //?开千位显示 P2.4口控制十位数码管 ? delay_ms 1 ; //?延时1ms作用同上 ? ? ? void?delay_ms uchar?ms //?延时毫秒@12M,ms最大值255 ? ? uchar?i; ? while ms-- ? for i? ?0;?i? ?124;?i++ ; ? ? ? /*?计数部分还可用如下方式实现 ? ? dis_0++; //?个位值加1 ? if dis_0? ?10 //?个位未到10则结束 ? ? dis_0? ?0; //?个位到10清零 ? dis_1++; //?十位值加1 个位到10的进位 ? if dis_1? ?10 //?十位未到10则结束 ? ? dis_1? ?0; //?
文档评论(0)