您的位置 首页 电路

8位共阴数码管动态扫描自增自减

includereg52h>包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sbitduan=P2^2;定义P22为段操作,爱设置哪个都

#include//包括头文件,一般状况不需要改动,头文件包括特别功用寄存器的界说

sbit duan=P2^2;//界说P2.2为段操作,爱设置哪个都行
sbit wei=P2^3;//界说P2.3为位操作
/*————————————————
程序首要作用于动态扫描,没什么实践使用
———————-查表表格————————–*/
unsigned char code shuzhi[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
};//数字表0123456789abcdef界说进RAM
unsigned char code weizhi[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f
};//共阴数码管方位表01234567界说进RAM
unsigned char huanchong[8];//界说一个一维数组做为缓冲区
/*—————————界说进入ROM
函数声明
————————————————*/
void yeishi(unsigned int t);//函数声明
/*————————————————
主函数
————————————————*/
main ()
{

unsigned char i,j;
//界说一个char型变量 i 取值规模 0~255,假如界说j为unsigned long int就可以完成0~4294967295

while (1)//主循环
{
j=0;
j++;//j不断加1,直到255溢出,假如改成–j便是自减

for(i=0;i<8;i++)//for循环,i初始为0自加小于8,0-7
{
///////////////拆分数j//////////////////////////
huanchong[0]=shuzhi[j/100];
huanchong[1]=shuzhi[(j/10)%10];
huanchong[2]=shuzhi[j%10];
////////经过数学运算得到每个位的数值并赋值给缓冲区由于只要255三位
只界说三位
别问我为什么要这样算,我数理化英都不好,没看见我的变量界说满是拼音么?并且我都不能确保
拼音是对的
有必定规则:
huanchong[0]=shuzhi[j/10000000];
huanchong[1]=shuzhi[(j/1000000)%10];
huanchong[2]=shuzhi[(j/100000)%10];
huanchong[3]=shuzhi[(j/10000)%10];
huanchong[4]=shuzhi[(j/1000)%10];
huanchong[5]=shuzhi[(j/100)%10];
huanchong[6]=shuzhi[(j/10)%10];
huanchong[7]=shuzhi[j%10];
////////////////////只用P0口,P0的界说已经在头文件里边了////////////*/
P0=weizhi[i];
wei=1;//位开关,1为开,0为关
wei=0;

P0=huanchong[i];//经过前面的运算,调用缓冲区数值
duan=1;//段开关,1为开,0为关
duan=0;
yeishi(300);//延时函数调用设置为300,按状况定,越大没作用,越小有重影
}
}
}
/*————————————————
含有输入参数 unsigned int t,无返回值 unsigned int 是界说无符号整形变量,其值的规模是
0~65535
————————————————*/
void yeishi(unsigned int t)
{
while(–t);
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/dianlu/318076.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部