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