单片机数码管C程序文档格式.docx
- 文档编号:22834886
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:81
- 大小:23.29KB
单片机数码管C程序文档格式.docx
《单片机数码管C程序文档格式.docx》由会员分享,可在线阅读,更多相关《单片机数码管C程序文档格式.docx(81页珍藏版)》请在冰豆网上搜索。
voidmain(void)
{
P1=0xc0;
//二进制为11000000参考数码管排列,
//可以得出0对应的段点亮,1对应的段熄灭,结果显示数字"
0"
while
(1)
{
}
}
单个共阳数码管动态显示变化数字
通过循环赋值给P1,让数码管显示特定的字符或者数字
//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
unsignedcharcodedofly_table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};
//显示数值表0-9
voidDelay(unsignedintt);
//函数声明
/*------------------------------------------------
主函数
unsignedchari;
//定义一个无符号字符型局部变量i取值范围0~255
while
(1)//主循环
for(i=0;
i<
10;
i++)//加入for循环,表明for循环大括号中的程序循环执行10次
P1=dofly_table[i];
//循环调用表中的数值
Delay(60000);
//延时,方便观看数字变化
//主循环中添加其他需要一直工作的程序
}/*------------------------------------------------
延时函数,含有输入参数unsignedintt,无返回值
unsignedint是定义无符号整形变量,其值的范围是
0~65535
voidDelay(unsignedintt)
while(--t);
单个共阳数码管模拟水流
通过循环赋值给P1,让数码管显示特定流动样式
P1=0xfe;
6;
i++)//加入for循环,表明for循环大括号中的程序循环执行6次
Delay(10000);
P1<
<
=1;
P1|=0x01;
通过循环检测P1口按键输入值,然后用数码管输出,
没有按键按下时原值不变
unsignedcharcodedofly_table[10]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,};
//显示数值表0-9
switch(P3)//P3口作为独立按键输入端,检测端口电平并做如下判断
case0xfe:
P1=dofly_table[1];
break;
//0xfe=11111110,
//说明连接在P3.0端口的按键被按下,显示对应的数字然后跳出循环
case0xfd:
P1=dofly_table[2];
//调用表中的第三个
//元素0xa4下标0才表示数组中的第一个元素
case0xfb:
P1=dofly_table[3];
case0xf7:
P1=dofly_table[4];
case0xef:
P1=dofly_table[5];
case0xdf:
P1=dofly_table[6];
case0xbf:
P1=dofly_table[7];
case0x7f:
P1=dofly_table[8];
default:
//如果都没按下,直接跳出
单个共阳数码管指示逻辑电平
通过循环检测P3.2口电平输入值,然后用数码管输出"
H"
or"
L"
,
表示该端口现在连接的是高电平还是低电平
//头文件包含特殊功能寄存器的定义
sbitIO_IN=P3^2;
//定义IO信号输入端
if(IO_IN==1)//如果端口检测到1表示高电平
P1=0x89;
//"
else
P1=0xc7;
//否则表示低电平,这里使用条件语句if。
。
else。
8位数码管显示其中之一
显示8位数码管中任意一位
#defineDataPortP0//定义数据端口程序中遇到DataPort则用P0替换
sbitLATCH1=P2^2;
//定义锁存使能端口段锁存
sbitLATCH2=P2^3;
//位锁存
main()
DataPort=0xfe;
//取位码第一位数码管选通,即二进制11111110
LATCH2=1;
//位锁存
LATCH2=0;
DataPort=0x4F;
//取显示数据,段码“3”共阴字符码
LATCH1=1;
//段锁存
LATCH1=0;
8位数码管显示其中之二
显示8位数码管中任意二位
DataPort=0x7e;
//取位码第一位数码管选通,即二进制01111110
8位数码管动态扫描显示
8位数码管分别显示不同数字,这种扫描显示方式成为动态扫描
unsignedcharcodedofly_DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//显示段码值01234567
unsignedcharcodedofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
//分别对应相应的数码管点亮,即位码
unsignedchari=0;
DataPort=dofly_WeiMa[i];
//取位码
DataPort=dofly_DuanMa[i];
//取显示数据,段码
Delay(200);
//扫描间隙延时,时间太长会闪烁,太短会造成重影
i++;
if(8==i)//检测8位扫描完全结束?
如扫描完成则从第一个开始再次扫描8位
i=0;
//扫描间隙延时,时间太长会闪烁,太短会造成重影,
//这里故意延长时间,方便直观看出动态扫描原理
如扫描完成则从第一个
//开始再次扫描8位
8位数码管动态扫描显示变化数据
8位数码管分别显示不同数字,这种扫描显示方式成为动态扫描,并不停变化赋值
unsignedcharcodedofly_DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//显示段码值0~F
unsignedchari=0,num;
unsignedintj;
DataPort=dofly_DuanMa[num+i];
//扫描间隙延时,时间太长会闪烁,太短会造成重影
j++;
if(j==500)//检测当前数值显示了一小段时间后,需要显示的数值加1,实现数据显示的变化
j=0;
num++;
if(num==9)
num=0;
}
1位数码管动态扫描显示变化数据
1位数码管分别显示不同数字,这种扫描显示方式成为动态扫描,并不停变化赋值
unsignedcharcodedofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//显示段码值0~9
unsignedcharTempData[8];
//存储显示值的全局变量
voidDisplay(unsignedcharFirstBit,unsignedcharNum);
unsignedcharnum;
j++;
if(j==500)//检测当前数值显示了一小段时间后,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 数码管 程序