
1、新建项目,做好准备。
2、数码管段选表。
3、延时函数。
4、uchar i变量i;wk = 1打开位选,P0 = 0xf71111 0111第4位数码管显示,wk = 0关闭位选。
5、while(1) //死循环效果{} 。
6、dk = 1//打开段选,P0 = leddata[i],dk = 0//关闭段选,delay(100)//延时效果。
7、选择效果,限制i值的循环范围。
以下是一份简单的C51程序,能够实现静态数码管的显示:```c
#include <reg51.h>
// 数码管码表
unsigned char code LED[] = {
0xc0, 0xf9, 0xa4, 0xb0, 0x99,
0x92, 0x82, 0xf8, 0x80, 0x90
}
void delay(unsigned int t) {
unsigned int i, j
for (i = 0i <ti++) {
for (j = 0j <1200j++)
}
}
void main() {
unsigned char i, cnt
// 定义P1口为输出端口
P1 = 0x00
while(1) {
cnt = 0
// 循环显示0~9
for (i = 0i <10i++) {
P1 = LED[i]
delay(500)
cnt++
if (cnt == 4) {
cnt = 0
P1 = 0
delay(500)
}
}
}
}
```
这份程序中,首先定义了静态数码管的码表,然后通过循环依次将每个数码管的码值赋值给P1口进行显示,同时控制最后一个数码管不同步显示,即循环显示四个数码管后关闭所有数码管的显示,再等待一段时间后才开始下一轮的显示。
在具体的硬件实现中,需要将P1口连接到数码管的控制芯片的输入口上,同时还需要设置好时钟等系统参数。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)