用for语句使vhdl数码管动态显示示

2272人阅读
51单片机C语言(24)数码管动态显示_百度知道
数码管动态显示
#include&reg51.h&
#define uchar unsigned char
#define uint unsigned int
sbit s1=P3^7;
sbit s2=P3^6;
tag[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
tag1[]={0x08,0x04,0x02,0x01};
uchar ge=0,shi=0,bai=0;
如何让数码管显示负数;求告诉,谢谢!
我有更好的答案
用两个数码管,一个数码管显示符号,负数显示“-”,正数不显示,一个数码管显示数字~如果你一定要用一个数码管,只要利用那个小数点就行了,有点为负,无点为正也可以~
为您推荐:
其他类似问题
您可能关注的内容
动态显示的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。在嵌入式开发里,怎样驱动4位数码管动态循环显示
全部答案(共1个回答)
嵌入式开发-单片机从入门到精通系列讲座--数码管驱动方法 http:wenku.aidu.comlink?ul=jxkjJCJ56O-ID66QOdJ3xURt8OHnf7zY49Z8wIEkni0ei3tUyDzzqJA-vBcffUnCiRSiUEDFU9IztO3BmAdCEqBXDOFLsddACqH8qcS
这个不难啊。
最普通的延时程序即可满足了
我就是学单片机的,其实你所说的“ 1、中断源 2、中断声请 3、开放中断 4、保护现场 5、中断服务 6、恢复现场 7、中断返回 ”。只是中断的内部一些机制,主...
答: 程序执行到不能识别的地方就停止
答: 网络标识就是用IP的二进制与子网掩码的二进制数据作与运算(可用WINDOWS计算器算二进制),所得结果,而不是IP地址前几段相同就表示在同一网段
答: 探测实现技术4.1SNMPAgent的实现目前,已经有一些可用的SNMPAgent开发工具包,它们提供一些基本的框架平台,实现了Agent的通用功能,在其基础上...
大家还关注
Copyright &
Corporation, All Rights Reserved
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:123456789101112131451单片机数码管动态显示,我想让4位数码管显示0-9999所有的数字, - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
51单片机数码管动态显示,我想让4位数码管显示0-9999所有的数字,
16:38:46  
问题是各位循环0-9,,但是十,百 千位上的数只会闪一下就进入个位的循环了,无法让十,百 千位上的数一直亮,我的想法是让十,百 千位的灯是在个位循环的时候不灭,保持示数。请大神们帮帮忙谢谢!
#include &reg52.h&
#include &intrins.h&
#define uchar
sbit wei=P2^7;
sbit duan=P2^6;
uchar code A[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned int ge=0;
unsigned int shi=0;
unsigned int bai=0;
unsigned int qian=0;
void delay(unsigned int i)
&&for(j=100;j&0;j--)
& & for(;i&0;i--);
void main()
& & while(1)
& && && & ge++;
& && & wei=1;
& && && & P0=0xf7;
& && && & wei=0; //位选
& && && & duan=1;
& && && & P0=A[ge];
& && && & duan=0;&&//段选
& && && & delay(30);
& &&&if(ge==9)
& && &&&ge=0;
& && &&&shi++;
& && &&&wei=1;
& && && && &&&P0=0//shi
& && && && &&&wei=0;
& && && && &&&duan=1;
& && && && &&&P0=A[shi];
& && && && &&&duan=0;
& && && && &&&delay(10);
& & if(shi==9)
& && &&&shi=0;
& && &&&bai++;
& && &&&wei=1;
& && && && &&&P0=0//shi
& && && && &&&wei=0;
& && && && &&&duan=1;
& && && && &&&P0=A[bai];
& && && && &&&duan=0;
& && && && &&&delay(10);
&&if(bai==9)
& && &&&bai=0;
& && &&&qian++;
& && &&&wei=1;
& && && && &&&P0=0//shi
& && && && &&&wei=0;
& && && && &&&duan=1;
& && && && &&&P0=A[bai];
& && && && &&&duan=0;
& && && && &&&delay(10);
& & if(qian==9||bai==9||shi==9||ge==9)
& && &&&wei=1;
& && && && &&&P0=0
& && && && &&&wei=0;
& &&&delay(10000);
助理工程师
19:06:26  
参考下这个例子吧,《51单片机轻松入门 基于STC15W4K系列》书上的配套例程。
本帖子中包含更多资源
才可以下载或查看,没有帐号?
19:32:18  
计数值要先分解再显示,改过的程序试试。
/*问题是各位循环0-9,,但是十,百 千位上的数只会闪一下就进入个位的循环了,
无法让十,百 千位上的数一直亮,我的想法是让十,百 千位的灯是在个位循环的时
候不灭,保持示数。请大神们帮帮忙谢谢!*/
#include &reg52.h&
#include &intrins.h&
#define uint unsigned int
#define uchar unsigned char
sbit wei=P2^7;
sbit duan=P2^6;
uchar code A[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar ge=0,shi=0,bai=0,qian=0;
uint k=0,j=0,l=0;
void delay(unsigned int i)
&&for(j=100;j&0;j--)
& & for(;i&0;i--);
void main()
& & & & while(1)
& & & & & & & & k++;
& & & & & & & & if(k&=500)& & & & //可调整延时计数
& & & & & & & & {
& & & & & & & & & & & & k=0;& & & & & & & &
& & & & & & & & & & & & j++;& & & & & & & & //需要显示的数
& & & & & & & & & & & & if(j&=10000)
& & & & & & & & & & & & & & & & j=0;
& & & & & & & & }
/*********分解位数***********/
& & & & & & & & ge& &= j%10;& & & & & & & & & & & & & & & & & & & & // 个位
& & & & & & & & shi&&= (j%100)/10;& & & & & & & & & & & & // 十位
& & & & & & & & bai&&= (j%;& & & & & & & & // 百位
& & & & & & & & qian = j/1000;& & & & & & & & & & & & & & & & // 千位
/*********显示**************/
& & & & & & & & l++;
& & & & & & & & if(l&=4)& & & & & & & & & & & & & & & & & & & & //轮流显示的位
& & & & & & & & & & & & l=0;
& & & & & & & & switch(l)
& & & & & & & & {
& & & & & & & & & & & & case 0:& & & &
& & & & & & & & & & & && & P0=A[ge];& & & & & & & & //显示个位
& & & & & & & & & & & && & duan=1;
& & & & & & & & & & & && & duan=0;
& & & & & & & & & & & &
& & & & & & & & & & & && & P0=0xf7;
& & & & & & & & & & & && & wei=1;
& & & & & & & & & & & && & wei=0;
& & & & & & & & & & & &
& & & & & & & & & & & & case 1:& & & &
& & & & & & & & & & & && & P0=A[shi];& & & & & & & & //显示十位
& & & & & & & & & & & && & duan=1;
& & & & & & & & & & & && & duan=0;
& & & & & & & & & & & &
& & & & & & & & & & & && & P0=0
& & & & & & & & & & & && & wei=1;
& & & & & & & & & & & && & wei=0;
& & & & & & & & & & & &
& & & & & & & & & & & & case 2:& & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & && & P0=A[bai];& & & & & & & & //显示百位
& & & & & & & & & & & && & duan=1;
& & & & & & & & & & & && & duan=0;
& & & & & & & & & & & &
& & & & & & & & & & & && & P0=0
& & & & & & & & & & & && & wei=1;
& & & & & & & & & & & && & wei=0;
& & & & & & & & & & & &
& & & & & & & & & & & & case 3:& & & & & & & & & & & & & & & &
& & & & & & & & & & & && & P0=A[qian];& & & & & & & & //显示千位
& & & & & & & & & & & && & duan=1;
& & & & & & & & & & & && & duan=0;
& & & & & & & & & & & &
& & & & & & & & & & & && & P0=0
& & & & & & & & & & & && & wei=1;
& & & & & & & & & & & && & wei=0;
& & & & & & & & & & & &
& & & & & & & & }
高级工程师
20:11:04  
&&if(ge==9)
& && &&&ge=0;
& && &&&shi++;
& && &&&wei=1;
& && && && &&&P0=0//shi
& && && && &&&wei=0;
& && && && &&&duan=1;
& && && && &&&P0=A[shi];
& && && && &&&duan=0;
& && && && &&&delay(10);
这里确定了只有当ge==9时,才会显示十位,试试改成
& && &&&ge=0;
& && &&&shi++;& && &}
& && &&&wei=1;
& && && && &&&P0=0//shi
& && && && &&&wei=0;
& && && && &&&duan=1;
& && && && &&&P0=A[shi];
& && && && &&&duan=0;
& && && && &&&delay(10);
注意大括号的位置
20:46:23  
& && &&&ge=0;
#include &reg52.h&
#include &intrins.h&
#define uchar
sbit wei=P2^7;
sbit duan=P2^6;
uchar code A[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned int ge=0;
unsigned int shi=0;
unsigned int bai=0;
unsigned int qian=0;
void delay(unsigned int i)
&&for(j=10000;j&0;j--)
& & for(;i&0;i--);
void main()
& & while(1)
& && & {&&
& & & && && & wei=1;
& && && & P0=0xf7;
& && && & wei=0; //位选
& && && & duan=1;
& && && & P0=A[ge];
& && && & duan=0;&&//段选
& && && & delay(3000);
& & & & & & & && & if(ge==9)
& & & & & & & && && &{
& & & & & & & && && & ge=0;
& & & & & & & && && & shi++;}
& & & & & & & && && & wei=1;
& && && && &&&P0=0//shi
& && && && &&&wei=0;
& && && && &&&duan=1;
& && && && &&&P0=A[shi];
& && && && &&&duan=0;
& && && && &&&delay(1000);
& & & & & & & && && &
& & & & & & & && &if(shi==9)
& & & & & & & && && &{
& & & & & & & && && & shi=0;
& & & & & & & && && & bai++; }
& & & & & & & && && & wei=1;
& && && && &&&P0=0//shi
& && && && &&&wei=0;
& && && && &&&duan=1;
& && && && &&&P0=A[bai];
& && && && &&&duan=0;
& && && && &&&delay(1000);
& & & & & & & && && &
& & & & & & & & if(bai==9)
& & & & & & & && && &{
& & & & & & & && && & bai=0;
& & & & & & & && && & qian++; }
& & & & & & & && && & wei=1;
& && && && &&&P0=0//shi
& && && && &&&wei=0;
& && && && &&&duan=1;
& && && && &&&P0=A[bai];
& && && && &&&duan=0;
& && && && &&&delay(1000);
& & & & & & & && && &
& & & & & & & & & & & &&&if(qian==9||bai==9||shi==9||ge==9)
& & & & & & & && && &{
& & & & & & & && && & wei=1;
& && && && &&&P0=0
& && && && &&&wei=0;
& & & & & & & & & & & && &delay(10000);&&
& & & & & & & && && &}
& & & & & & & & & & & &&&ge++;
这样也没实现,还是闪亮的
21:00:18  
& && &&&ge=0;
51单片机上数码管显示电路在数码管于芯片中间还有一个是74hc573.学习资料上面的例程有实现这一功能,但是用了定时器,我想能不能只用循环加判断实现这一功能,而且我想我是不是没理解到74hc573这个芯片的用法
高级工程师
21:45:01  
需要确定几个问题,
一,修改后的闪亮是个位能正常显示,其他位还是偶尔显示一下吗。
二,void delay(unsigned int i)不应该修改,这个是两个数码管切换的时间,应该也是你的例程里的定时器时间,这个时间时候毫秒级的,不能太长。
三,最后贴上来的程序的闪亮状态是不是类似每个数码管单个轮流显示。
四,调试程序的时候不适合一次改动太多的内容,能不改动的尽量不改动。
22:15:56  
需要确定几个问题,
一,修改后的闪亮是个位能正常显示,其他位还是偶尔显示一下吗。
二,void delay(unsigned int i)不应该修改,这个是两个数码管切换的时间,应该也是你的例程里的定时器时间,这个时间时候毫秒级的,不能太长。
个位是正常显示,大括号只包含ge=0;shi++就是轮流显示& &&&我原来那种就是进入判断才亮 出判断就熄灭
高级工程师
22:44:35  
轮流显示的原因就是void delay(unsigned int i)的时间太长,这部分可以恢复成原来的样子。
13:33:11  
轮流显示的原因就是void delay(unsigned int i)的时间太长,这部分可以恢复成原来的样子。
就是就是,延时短点就能实现,虽然只是视觉效果上的,谢谢,现在准备学习定时器了0.0
10:33:03  
把你的程序稍微改动一下就可以满足你的要求,你试试。
#include &reg52.h&
#include &intrins.h&
#define uchar unsigned char
#define uint unsigned int
sbit wei=P2^7;
sbit duan=P2^6;
uchar code A[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar ge=0,shi=0,bai=0,qian=0,j=0,l=0;
void delay(unsigned int i)
&&for(j=100;j&0;j--)
& & for(;i&0;i--);
void main()
& & & & while(1)
& & & & & & & & k++;
& & & & & & & & if(k&=15000)//0~65535调整跳字速度
& & & & & & & & {
& & & & & & & & & & & & k=0;
& & & & & & & & & & & & ge++;
& & & & & & & & & & & & if(ge&=10)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & ge=0;
& & & & & & & & & & & & & & & & shi++;
& & & & & & & & & & & & & & & & if(shi&=10)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & shi=0;
& & & & & & & & & & & & & & & & & & & & bai++;
& & & & & & & & & & & & & & & & & & & & if(bai&=10)
& & & & & & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & bai=0;
& & & & & & & & & & & & & & & & & & & & & & & & qian++;
& & & & & & & & & & & & & & & & & & & & & & & & if(qian&=10)
& & & & & & & & & & & & & & & & & & & & & & & & qian=0;
& & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & }
& & & & & & & & }
& & & & & & & & l++;
& & & & & & & & if(l&=200)//0~255调整数码管刷新速度,过慢闪烁,过快有鬼影
& & & & & & & & {
& & & & & & & & & & & & l=0;
& & & & & & & & & & & & switch(j)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & case 0:
& & & & & & & & & & & & & & & & & & & & wei=1;
& & & & & & & & & & & & & & & & & & & & P0=0xf7;
& & & & & & & & & & & & & & & & & & & & wei=0;
& & & & & & & & & & & & & & & & & & & & duan=1;
& & & & & & & & & & & & & & & & & & & & P0=A[ge];
& & & & & & & & & & & & & & & & & & & & duan=0;&&
& & & & & & & & & & & & & & & & & & & & j=1;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & case 1:
& & & & & & & & & & & & & & & & & & & & wei=1;
& & & & & & & & & & & & & & & & & & & & P0=0
& & & & & & & & & & & & & & & & & & & & wei=0;
& & & & & & & & & & & & & & & & & & & & duan=1;
& & & & & & & & & & & & & & & & & & & & P0=A[shi];
& & & & & & & & & & & & & & & & & & & & duan=0;
& & & & & & & & & & & & & & & & & & & & j=2;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & case 2:
& & & & & & & & & & & & & & & & & & & & wei=1;
& & & & & & & & & & & & & & & & & & & & P0=0
& & & & & & & & & & & & & & & & & & & & wei=0;
& & & & & & & & & & & & & & & & & & & & duan=1;
& & & & & & & & & & & & & & & & & & & & P0=A[bai];
& & & & & & & & & & & & & & & & & & & & duan=0;
& & & & & & & & & & & & & & & & & & & & j=3;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & case 3:
& & & & & & & & & & & & & & & & & & & & wei=1;
& & & & & & & & & & & & & & & & & & & & P0=0
& & & & & & & & & & & & & & & & & & & & wei=0;
& & & & & & & & & & & & & & & & & & & & duan=1;
& & & & & & & & & & & & & & & & & & & & P0=A[qian];
& & & & & & & & & & & & & & & & & & & & duan=0;
& & & & & & & & & & & & & & & & & & & & j=0;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & }
& & & & & & & & }
21:00:20  
把你的程序稍微改动一下就可以满足你的要求,你试试。
恩恩 好的好的 蟹蟹
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司

我要回帖

更多关于 数码管动态显示 的文章

 

随机推荐