标题:
四位七段数码管动态显示,求程序
[打印本页]
作者:
woshibeilili
时间:
2016-1-7 17:08
标题:
四位七段数码管动态显示,求程序
弄了好久就是无法显示
只要显示一个百位数就好了,比如125。
简单的编程就好了
不加锁存器的
QQ图片20160107170613.png
(13.3 KB, 下载次数: 111)
下载附件
2016-1-7 17:07 上传
作者:
398231290
时间:
2016-1-8 09:00
我这里有个例程,你看看吧
#include<reg52.h> //52单片机头文件,一般不要改动,里面包含特殊功能寄存器的定义
#define uchar unsigned char //将unsigned char定义为uchar,简化输写。提高编程速度
#define uint unsigned int //将unsigned char定义为uint,简化输写。提高编程速度
uchar code duma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f, //共阴的数码管段选.将值送给P2口
0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40,0x80,0x00}; //数值''0-F' '-' '熄灭'
uchar code wema[]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7}; //位选,0-7位数码管
void delay(uint time);
void main()
{
uchar i; //定义一个无符号字符变量。
while(1) //做一个死循环,让程序永远在while下面的大括号里面运行。
{
for(i=0;i<8;i++) //for语句判断条
{
P1=wema[i]; //表达式为假时执行括号里面语句。为真时,执行下一句。
P2=duma[i+1]; //要显示1-8.取值从1开始
delay(270); //修改此处的时间,可以明显感觉到动态扫描的原理。时间定的太长会有明显闪烁。
} //参考值270,可以换成500试试。感觉一下。更改值后,要重新编译生成HEX文件才有效。
}
}
void delay(uint time)
{
while(--time); //当time的值为非0时,执行空语句。当time为0时,跳出while语句。
}
作者:
yscydy
时间:
2016-1-8 09:23
这个图 就直接用io口输出 不用限流吗?
作者:
青山外
时间:
2016-1-9 08:46
先静态的显示调试某一位看位选是高电平还是低电平选中,另外,你只有四个数码管,不能同时扫描八个数
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1