学校网站怎么建设,黑客怎么入侵网站,建设监理继续教育网站,网站备案账号密码今天在QQ群上一个初学单片机的人提了一个关于数码管的问题#xff0c;主要是程序的问题#xff0c;由于对基础知识掌握不够#xff0c;花了比较长的时间才解决#xff0c;现总结一下其中的细节。 电路中8位数码管是由两个74HC573锁存器分别控制位选和段选的。 原程序大致如…今天在QQ群上一个初学单片机的人提了一个关于数码管的问题主要是程序的问题由于对基础知识掌握不够花了比较长的时间才解决现总结一下其中的细节。 电路中8位数码管是由两个74HC573锁存器分别控制位选和段选的。 原程序大致如下省去了include和sbit定义目的是要实现第一个数码管显示“1但是后面有几个数码管也有显示
程序1
void main()
{WELA1;//1P10xFE;//2WELA0;//3DULA1;//4P10x06;//5DULA0;//6
}由于程序没有while(1)循环导致单片机不断循环重新执行程序执行1时段选锁存器为0x06P1为0x06位选刚打开时位选锁存器值为0x06所以六个数码管显示数字“1”执行2时位选锁存器值变为0xFE第一个数码管显示“1”执行3时位选值0xFE锁存起来第一个数码管显示“1”执行4时位选锁存器为0xFEP1为0xFE段选刚打开时段选锁存器值为0x06所以第一个数码管显示如图1形状执行5时段选锁存器值变为0x06第一个数码管显示“1”执行6时段选值0xFE锁存起来第一个数码管显示“1”我原本是想让他在程序结尾加一个while(1)空循环结果加错了成了这样
程序2
void main()
{while(1) {WELA1; //1P10xFE; //2WELA0; //3DULA1; //4P10x06; //5DULA0; //6}
}程序2和1效果相近由于while(1)的原因切换更快显示亮度更高 后来有人说中间加一个P10xFF看上去好了一些后面几个数码管不亮了实际上第一个数码管显示不正常还是没有完全解决问题 程序3
void main()
{DULA1; //1P10x06; //2DULA0; //3P10xFF; //4WELA1; //5P10xFE; //6WELA0; //7
}执行1时位选锁存器为0xFEP1为0xFE段选刚打开时段选锁存器值为0xFF所以第一个数码管显示如图1形状时间很短所以亮度低执行2时段选锁存器值变为0x06第一个数码管显示“1”执行3时段选值0xFE锁存起来第一个数码管显示“1”执行4时P1变为0xFF执行5时段选锁存器为0x06P1为0xFF位选刚打开时位选锁存器值为0xFF所以八个数码管都不显示执行6时位选锁存器值变为0xFE第一个数码管显示“1”执行7时位选值0xFE锁存起来第一个数码管显示“1” 如果按照我原先的理解结尾处加一个while(1)空循环最后是可以正常显示的
程序4
void main()
{WELA1; //1P10xFE; //2WELA0; //3DULA1; //4P10x06; //5DULA0; //6while(1); //7
}执行到3时位选锁存器为0xFE执行到6时段选锁存器为0x06执行到7时锁存值不再改变第一个数码管显示“1”显示正确为了使程序更加完善以下写法更加可靠
程序5 void main()
{P10xFE; //1WELA1; //2WELA0; //3P10x06; //4DULA1; //5DULA0; //6while(1); //7
}执行2、3时位选锁存值为0xFE执行5、6时段选锁存值为0x06执行到7时锁存值不再改变第一个数码管显示“1”附注573的 LE锁存使能引脚 高电平时输出和输入相同低电平时 输出不再改变即下降沿锁存也就是低电平锁存。