单片机数码管C程序.docx

上传人:b****1 文档编号:2769095 上传时间:2023-05-04 格式:DOCX 页数:81 大小:23.29KB
下载 相关 举报
单片机数码管C程序.docx_第1页
第1页 / 共81页
单片机数码管C程序.docx_第2页
第2页 / 共81页
单片机数码管C程序.docx_第3页
第3页 / 共81页
单片机数码管C程序.docx_第4页
第4页 / 共81页
单片机数码管C程序.docx_第5页
第5页 / 共81页
单片机数码管C程序.docx_第6页
第6页 / 共81页
单片机数码管C程序.docx_第7页
第7页 / 共81页
单片机数码管C程序.docx_第8页
第8页 / 共81页
单片机数码管C程序.docx_第9页
第9页 / 共81页
单片机数码管C程序.docx_第10页
第10页 / 共81页
单片机数码管C程序.docx_第11页
第11页 / 共81页
单片机数码管C程序.docx_第12页
第12页 / 共81页
单片机数码管C程序.docx_第13页
第13页 / 共81页
单片机数码管C程序.docx_第14页
第14页 / 共81页
单片机数码管C程序.docx_第15页
第15页 / 共81页
单片机数码管C程序.docx_第16页
第16页 / 共81页
单片机数码管C程序.docx_第17页
第17页 / 共81页
单片机数码管C程序.docx_第18页
第18页 / 共81页
单片机数码管C程序.docx_第19页
第19页 / 共81页
单片机数码管C程序.docx_第20页
第20页 / 共81页
亲,该文档总共81页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机数码管C程序.docx

《单片机数码管C程序.docx》由会员分享,可在线阅读,更多相关《单片机数码管C程序.docx(81页珍藏版)》请在冰点文库上搜索。

单片机数码管C程序.docx

单片机数码管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模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2