数码管显示程序注释

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/*****************************************************
(本程序基于本人单片机实际电路开发,只需改动个别地方,即可实现)
数码管显示其实就是利用视觉停留来显示
实际上它是一个接着一个亮,但人以为是一起亮的
当然它也可以全部一起亮(不同数字)但物理连接麻烦得多,成本高,所以一般不采用(个人理解)
***************************************************/
#include<reg51.h>
#define unint unsigned int
#define unchar unsigned char
/*****************************************************
位声明
***************************************************/
sbit guan1=P2^4; //位选:第1个数码管io
sbit guan2=P2^5; //位选:第2个数码管io
sbit guan3=P2^6; //位选:第3个数码管io
sbit guan4=P2^7; //位选:第4个数码管io
unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数码管编码
/*****************************************************
函数功能:延时
***************************************************/
void delay(unsigned int i)
{
unsigned char j;
for(;i>0;i--)
for(j=110;j>0;j--);
}
void display(unint num)//带参数显示函数
{
unchar ge,shi,bai,qian,sh,fe; //存储个,十,百,千位的空间
sh=num/100; //将num数的前两位分离并存储在sh
fe=num%100;//将num数的后两位分离并存储在fe
guan1=0;//P2=0Xbf;//11101111 第一个数码管亮位选开
qian=sh/10; //分离千位
P0=table[qian];//段选
delay(60); //延时
guan1=1; //位选关
guan2=0;//P2=0X7f;//11011111
bai=sh%10; //分离百位
P0=table[bai]; //段选
delay(60); //延时
guan2=1; //位选关
guan3=0;//P2=0Xef;//10111111
shi=fe/10; //分离十位
P0=table[shi];
delay(60);
guan3=1;
P0=0xff; delay(10);
guan4=0;//P2=0Xdf;//01111111
ge=fe%10; //分离个位
P0=table[ge];
delay(60);
guan4=1;
P0=0xff;
}
void main()
{
while(1)
{
display(122); //123可以改成任意数,就是在数码管中显示的数
}
}。

相关文档
最新文档