介绍
数码管是现代电子产品中最基本的显示器,而单片机则是现代电子产品中最基本的控制器。将数码管与单片机相结合,可以实现各种各样的显示和控制功能。在这篇文章中,我们将讲述如何用单片机控制数码管显示0到99的数字,并循环不停。
硬件组成
要实现这个功能,我们需要以下硬件组成:
- 1个单片机(例如,AT89S52)
- 2个共阳数码管
- 2个220欧姆电阻
- 1个晶振
- 若干个杜邦线
将这些硬件连接好之后,我们就可以开始编写程序了。
程序编写
程序设计的思路如下:
- 在程序开头定义一个整型数组,里面存放0到99这100个数字在数码管中的显示方式
- 写一个循环语句,让单片机不断地显示0到99之间的数字
- 在循环语句中,每隔一段时间刷新一次数码管显示的数字
下面是详细的代码:
```C
#include
typedef unsigned int uint;
typedef unsigned char uchar;
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0xff,0x7f,0x40,0x48,0x03,0x70,0x88,0x1c,0x08,0x09,
0x04,0x01,0x81,0xc2,0x41,0x61,0x86,0x8e,0xc7,0xca,
0xbf,0xb8,0x7d,0x07,0x9e,0x5e,0x4f,0x66,0x6d,0x7c,
0x58,0x5c,0x63,0x58,0x6c,0x46,0x65,0x47,0x77,0x7f,
0x39,0x32,0x0c,0x7d,0x06,0x0e,0xdf,0x46,0x33,0x45,
0x7d,0x3d,0x46,0x5b,0x39,0x64,0x0f,0x7c,0x73,0x67,
0x50,0x6d,0x78,0x3e,0x39,0x66,0x0f,0x5b,0x71,0x0d,
0x76,0x06,0x1f,0x0e,0x6e,0x48,0x00,0x01,0x31,0x48,
0xff,0xff //0-99的显示方式
};
sbit D1=P2^2;
sbit D2=P2^3;
sbit LSA=P2^6;
sbit LSB=P2^5;
sbit LSC=P2^4;
void delay(uint x) //延时函数
{
uint i,j;
for(i=x;i>0;i--)
for(j=112;j>0;j--);
}
void main() //主函数
{
uchar cnt,flag=0;
while(1)
{
for(cnt=0;cnt<99;cnt++)
{
uint i;
for(i=0;i<1000;i++) //显示保持一定时间
{
LSA=0;
LSB=0;
LSC=0;
P0=table[cnt/10];
delay(1);
LSA=1;
P0=table[cnt%10];
delay(1);
LSB=1;
P0=table[11]; //第二个数码管被选中
delay(1);
LSC=1;
}
}
}
}
```
这里的table数组里面存放的是0到99这100个数字在数码管中的显示方式,因为我们使用的是共阳数码管,所以每个数字的显示方式都是相对应的阴码。
总结
在本文中,我们学习了如何用单片机编写程序控制数码管显示0到99的数字,并循环不停。通过这样的学习,我们不仅了解了单片机与数码管的基本原理,同时也提高了我们的编程能力和实际应用能力。
本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/mcu6k5sw.html
郑重声明:
本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
我们不承担任何技术及版权问题,且不对任何资源负法律责任。
如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。
如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!