本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
/*************************************************************************************************
项目:数码管飞入显示
版本:升级版
硬件:电子工程师之家论坛学习版
具体描述:第一步:数字1从最右边显示 依次向左边移动 最后显示在最左边的数码管上
第二步:数字2从最右边显示 依次向左边移动 最后显示在左数第二个数码管上
第三步:数字3从最右边显示 依次向左边移动 最后显示在左数第三个数码管上
…………
第七步:数字7从最右边显示 依次向左边移动 最后显示在左数第七个数码管上
第八步:数字8 显示在左数第八个数码管上
最后的效果是 数字1到8依次从最左边 显示到最右边
时间:2009年7月
作者:电子隐者
***************************************************************************************************/
#include<reg52.h>
#include<intrins.h> //包含_crol_()函数
#define uchar unsigned char
#define uint unsigned int
sbit dx=P1^4; //数码管段选控制端口
sbit wx=P1^5; //数码管位选控制端口
sbit led_cs=P1^6; //LED控制端口
uchar code tabledm[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0xFF}; //共阴极数码管0—8段码 最后一个值是数码管灭
uchar code table[36][8]={{9,9,9,9,9,9,9,1},{9,9,9,9,9,9,1,9},{9,9,9,9,9,1,9,9},{9,9,9,9,1,9,9,9},{9,9,9,1,9,9,9,9},{9,9,1,9,9,9,9,9},{9,1,9,9,9,9,9,9},{1,9,9,9,9,9,9,9}, //数据1的移动
{1,9,9,9,9,9,9,2},{1,9,9,9,9,9,2,9},{1,9,9,9,9,2,9,9},{1,9,9,9,2,9,9,9},{1,9,9,2,9,9,9,9},{1,9,2,9,9,9,9,9},{1,2,9,9,9,9,9,9},//数据2的移动
{1,2,9,9,9,9,9,3},{1,2,9,9,9,9,3,9},{1,2,9,9,9,3,9,9},{1,2,9,9,3,9,9,9},{1,2,9,3,9,9,9,9},{1,2,3,9,9,9,9,9}, //数据3的移动
{1,2,3,9,9,9,9,4},{1,2,3,9,9,9,4,9},{1,2,3,9,9,4,9,9},{1,2,3,9,4,9,9,9}{1,2,3,4,9,9,9,9},//数据4的移动
{1,2,3,4,9,9,9,5},{1,2,3,4,9,9,5,9},{1,2,3,4,9,5,9,9},{1,2,3,4,5,9,9,9},//数据5的移动
{1,2,3,4,5,9,9,6},{1,2,3,4,5,9,6,9},{1,2,3,4,5,6,9,9},//数据6的移动
{1,2,3,4,5,6,9,7},{1,2,3,4,5,6,7,9},//数据7的移动
{1,2,3,4,5,6,7,8}};//数据8的移动
/*延时函数*/
Delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=113;y>0;y--);
}
/*主函数*/
main()
{
uchar m;
uchar n;
uchar temp1;
uchar temp2;
led_cs=0;
while(1)
{
for(m=0;m<36;m++)
{
temp1=0x01;
for(n=0;n<8;n++)
{
P0=temp1; //位选数据
wx=1;
wx=0;
temp2=table[m][n]; //段选数据
P0=tabledm[temp2];
dx=1;
dx=0;
temp1=_crol_(temp1,1); //位选数据移位
P0=0xff;
dx=1;
dx=0;
Delay(8);
}
}
}
}
[ 此贴被电子隐者在2009-07-31 19:33重新编辑 ]
|