- #include <AT89X52.h> //调用51单片机的头文件
- //---------------------------------------
- //数码管字形表,供显示时查询
- unsigned char code LED[10]=
- { //定义表格一定要使用code,这样会做到程序存储区中
- 0x3F, //"0"的字形表,0B00111111
- 0x06, //"1"的字形表,0B00000110
- 0x5B, //"2"的字形表,0B01011011
- 0x4F, //"3"的字形表,0B01001111
- 0x66, //"4"的字形表,0B01100110
- 0x6D, //"5"的字形表,0B01101101
- 0x7D, //"6"的字形表,0B01111101
- 0x07, //"7"的字形表,0B00000111
- 0x7F, //"8"的字形表,0B01111111
- 0x6F, //"9"的字形表,0B01101111
- };
- //---------------------------------------
- //4位数码管相关I/O设置
- sbit U165A0=P1^0; //U165(74HC138)的A0脚接在P1.0口上
- sbit U165A1=P1^1; //U165(74HC138)的A1脚接在P1.1口上
- sbit U165A2=P1^2; //U165(74HC138)的A2脚接在P1.2口上
- //---------------------------------------
- //---------------------------------------
- //名称: 主函数
- void main(void) //主函数,单片机开机后就是从这个函数开始运行
- {
- unsigned int c=0; //定义一个char型变量,做延时用
- unsigned char d=0; //定义一个char型变量,控制显示位置
- unsigned char e=0; //定义一个char型变量,做延时用
- unsigned int f=0; //定义一个int型变量,显示内容用,显示内容0-9999
- //for(c=0;c<50000;c++)
- while(1) //死循环,单片机初始化后,将一直运行这个死循环
- {
- for(c=0;c<5;c++);//做一个0-250的循环,不执行其他操作,只为延时
- if(++e>200) //做一个延时,时间到将显示内容加1
- {
- e=0;
- if(P0_0==1) //清零,为下一次延时做准备
- {if(++f>9999) f=0;}//显示内容加1,因为只有4位显示,超过9999后归零
- }
- P2=0; //关一次显示,以免显示出鬼影
- if(++d>3) d=0; //先将d加1,然后判断是否大于3,大于3归零
- if(d==0) //如果d=0,显示千位
- {
- P1=0x03; //U165A0=1,U165A1=1,U165A2=0选通数码管的千位进行显示
- P2=LED[f/1000]; //将要显示的f的千位提取出来查表后送显示
- }
- else if(d==1) //如果d=1,显示百位
- {
- P1=0x02; //U165A0=0,U165A1=1,U165A2=0选通数码管的百位进行显示
- P2=LED[(f%1000)/100]; //将要显示的f的百位提取出来查表后送显示
- }
- else if(d==2) //如果d=2,显示十位
- {
- P1=0x01; //U165A0=1,U165A1=0,U165A2=0选通数码管的十位进行显示
- P2=LED[(f%100)/10]; //将要显示的f的十位提取出来查表后送显示
- }
- else //如果d=3,显示个位
- {
- P1=0x00; //U165A0=0,U165A1=0,U165A2=0选通数码管的个位进行显示
- P2=LED[f%10]; //将要显示的f的个位提取出来查表后送显示
- }
- }
- }
复制代码
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|
|