本人初学单片机,求第一个数码管显示1,1S后第二个数码管 显示2以此类推直到第六个 显示 6的C语言程序。

作者&投稿:楚祁 (若有异议请与网页底部的电邮联系)
关于单片机数码管动态显示的问题。题目是:第一个数码管显示1,0.5s后关闭,立即让第二个数码管显示~

你怎么问了两个?呵呵
交换显示没有影响,但是都要消隐,都要使用的。
比如:你先送位0x01;
再送段:0x02;
下一次循环回来送位的时候,假如你送位选0x04,上一次的段选信号0x02是不是还在?
干扰就出现了,0x02和0x04的交叉,数码管会亮,这是你不需要的。

一种是动态扫描,一种是静态显示,静态显示的简单,略过....


ORG 00H AJMP MAIN MAIN: MOV P1,#10H MOV P3,#09FH LCALL DELAY MOV P1,#20H MOV P3,#25H LCALL DELAY MOV P1,#40H MOV P3,#0DH LCALL DELAY MOV P1,#80H MOV P3,#99H LCALL DELAY AJMP MAIN DELAY: MOV R7,#100 D1: MOV R6,#100 D2: MOV R5,#100 DJNZ R5,$ DJNZ R6,D2 DJNZ R7,D1 RET END

************************************************************/
#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)
{
while(--time); //当time的值为非0时,执行空语句。当time为0时,跳出while语句。
}

/*主程序*/
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文件才有效。
}

首先说明你用的是什么单片机,引脚的连接如何,否则程序和硬件是对不上的

我不清楚初学单片机求这样的程序拿来做什么,如果真是为了学习请献上您编程中遇到的问题和所要得到的信息,就算编个大概也比在这儿求强。。。


本人初学单片机,求第一个数码管显示1,1S后第二个数码管 显示2以此类推...
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,0...

本人初学单片机,请教高手
买个开发板 问题解决 学生为了将来的工作也应该好好学习下单片机 这个开发板带了USB的仿真和编程功能 一板在手就可以开始学习了 shop_avrvi_com\/goods-332.html (麻烦把下划线换成点)

学长,本人自学单片机,求教
1、学习单片机有用吗?有很多初学者有这样的困惑,单片机初学者感觉入门很难,学着学着,就会产生这样的疑问——自己辛辛苦苦学习单片机,将来有用吗?单片机只是一个工具,重要的还是思想,有了自己的想法,电子行业地域辽阔,随便你闯。单片机这个切入点入手还是不错的,可以让你尽快进入电子殿堂的大门,...

本人初学者,求大侠帮忙调试以下简短的单片机汇编程序(在6个数码管上滑...
第9 行:MOV A,@B,#NUM ; MOV 指令只能一个操作数,如MOV A,#NUM 。第19行:CJNE 只能用于A,如CJNE A,#6,ST0 第25行:这里应该是DJNZ R3,DLY?第27行:NUM后面要加 :号。你还要多看一些基本的例子,试着自己先写,比如先写一位数码管显示。比如 ,MOV A,@B,#NUM MOV P2,A...

新人单片机不懂,求大神指点迷津。
void DigDisplay(); \/\/也不懂函数的声明。函数引用之前必须声明。DisplayData[i]=DIG_CODE[i];\/\/这个想表达什么?不知楼主知不知道数码管是怎么工作的?简单讲一下8段数码管(包括小数点)是由8个led组成的,通过控制这8个led的亮灭来显示数字。比如楼主的贴这个共阳极数码管(1表示亮,共阴的相反...

单片机程序问题 本人初学单片机看到一个例程不知道是什么意思,屏大家帮 ...
这个是最简单的单片机点灯程序,而且是最浪费单片机资源的一种程序,不过也是最初学习者便于理解的一种方式:第一:定义LED1,LED2及LED3分别连接到P1.0 \\P1.1及P1.2口线上。第二:进入主程序后,初始化变量i=0;(便于等会延时使用)第三:LED1=0;如果是单片机P1.0口接LED的负极,则这个...

初学单片机求高人指点 现在写程序的用什么语言多?C、C++、汇编??而且流...
如果你想简单一点的话就用C,因为C的可移植性非常高,不需要刻意去查硬件的指令,根据C的特点就可以写出程序,汇编的话还要先去研究它的指令才行。当然汇编的效率要比C高。至于编程软件,一般的,每种单片机都有代表性的软件,如51的KEIL,MSP430的IAR,PIC的MAPLAB等,...

单片机,本人菜鸟,求详细
1个位能表示2种状态,即高电平1和低电平0;总共有16位,那么就有:2^16==65536BIT \/\/2的16次方为65536,共有65536种组合。65536\/1024==64K \/\/1K==1024B,除一下,就等于64K了 寻址类推。参考资料:亲手码字哦

本人大二学生,想快速入门单片机,希望过来人谈谈自己的单片机入门及深入...
第一讲 锐志电子 RZ-51V2.0开发板的详细介绍 第二讲 锐志开发板 所用驱动及软件的安装介绍 第三讲 单片机C语言开发的预备知识 第四讲 用keilC开始编写单片机程序 第五讲 继电器 蜂鸣器 数码管 编程的编程 第六讲 独立键盘和矩阵键盘的编程 第七讲 中断和定时器系统 第八讲 串口通讯 第九讲 ...

对于初学单片机编程的人那本教程好?
既然是刚开始学就从单片机开始吧,去看郭天祥的《十天学会单片机》,如果只是想先完成这个项目,那你可以只看前面6课就可以,要是以后有兴趣就继续研究,祝成功~

黄岩区13788342938: 本人初学单片机,求第一个数码管显示1,1S后第二个数码管 显示2以此类推直到第六个 显示 6的C语言程序. -
佴爱喜力: ************************************************************/#include<reg52.h> //52单片机头文件,一般不要改动,里面包含特殊功能寄存器的定义#define uchar unsigned char //将unsigned char定义为uchar,简化输写.提高编程速度 #define uint ...

黄岩区13788342938: 求单片机高手帮忙.帮写一个数码管的显示程序.十万火急.谢谢了 -
佴爱喜力: ORG #0000H LJMP #0030H MIAN: MOV DPTR , #TAB ;表头送指针 MOV A, #0HMOV R2,#2AH ;延时一秒 MOV R3,#3BH MC: MOV R4,#4CHDJNZ R3,MC DJNZ R2,MC MOV P0,A+@DPTR ;从表中取值 INC A ;自加一,去下一...

黄岩区13788342938: 单片机89c51,要求在第一个数码管上显示1,谢谢啦 -
佴爱喜力: 让af位显示高电平,剩下几个位显示低电平就行....建议你下个郭天祥的10天学会单片机...keil写的c.....讲解的很详细

黄岩区13788342938: 我在给单片机编程时,想让第一个数码管亮,然后编了下面的程序 -
佴爱喜力: 你好如楼上说的,程序没问题,第一段程序,先把语句顺序调一下: void main() { P0=0xfe; wela=1; wela=0;P0=0x06; dula=1; dula=0; } 还不行的话,查查电源电压,是否在4.5-5.5.第二段程序是扫描速度太快,造成MCU外部芯片跟不上MCU...

黄岩区13788342938: 写一个c51单片机程序,要求使六位数码管上第一个数码管显示2,第二个显示3,要静态显示,要怎么写. -
佴爱喜力: 你的要求是静态如果全靠单片机的IO口控制的话,IO口不够用的的你要加像595这样并行输出的行片才行

黄岩区13788342938: 数码管共阳极,让第一个数码管显示数字1,是先打开“段选”还是“位选”? -
佴爱喜力: 程序如下:Void main(){while(1){dula=1;打开段选P0=table[1];dula=0;P0=0xff; 消影wela=1;打开位选P0=0xfe;wela=0;delay(500)

黄岩区13788342938: 求单片机按键控制数码管程序 -
佴爱喜力: 实现方法有挺多种的,下面介绍一种: 1、按键子程序:实现按第一个键使键值keyvalue=1,第二个键使键值keyvalue=2,第三个键使键值keyvalue=3 2、显示子程序定义3个字节的显示缓存,如dispbuf1,dispbuf2,dispbuf3使dispbuf1的数字显...

黄岩区13788342938: 我是学单片机的新手,求大虾指证,串口输入,数码管显示... -
佴爱喜力: 串口通信,每次收到的,都是8位二进制数,送到P1口,显示一下,就行了. void ser()interrupt 4 { RI=0; flag=1; temp=SBUF; P1 = temp; //当场显示,即可说明通信是否正确. show(); //这是干啥的? }

黄岩区13788342938: 求单片机数码管显示C程序 -
佴爱喜力: 这个就是数码管的动态刷新问题,你直接将要显示的数的对应数码管值从你的p1口输出,然后选择1或者2来显示,再做个几毫秒的延时,再将下一个要显示的数的对应数码管值从你的p1口输出,然后选择2或者1来显示,再做个几毫秒的延时,循环这个过程就行了.当然数码管的1、2也要接到单片机的输出口上,才能选择,而且还要考虑你的数码管是共阴还是共阳的接法,这样才能正确的选择p1口的输出电平和1、2两个接口的输入电平

黄岩区13788342938: 用单片机89C51实现数码管的显示,要求0 - F任意按下一个键,用4个数码管显示它的二进制值,并滚动显示 -
佴爱喜力: 这个很容易,我不给你程序,给你 个建议吧,设置是十六个键,设一个变量'i'每个键按下要存储'i'值,分别为0000,0001......1111.按下k1之后判断前面所存储的值是多少然后给显示出来 显示数码应该会的吧,用动态扫描数码管,四个就可以了,k2更好办,按k2之后执行将i值清零.这个是入门,入门之后你就会喜欢编程了

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网