bestwu.net
当前位置:首页>>关于51单片机数码管显示的资料>>

51单片机数码管显示

void delay (int t) //延时函数,tms { int i,j; for (i=124;i>0;i++) for (j=t;j>0;j++); } void display (uint number) //数码管显示函数;显示四位数,要想显示多位稍微修改即可 { p1=0xff; //数码管段选接在p0口,具体情况可修改;此步作用是消影,必要的 p2

你要数码管依次显示的话,我推荐有求余的方式即“%”.

按S1将3,6单独调用,松S1将1,2,4,5,7,8依次移位.

这个要看你的硬件电路是怎么做的,因为要区别动态或是静态扫描,可以帮你理下思路,如果动态的话,用两个锁存器如74HC573 .一个锁段字形码,一个锁位选哪一个数码管亮.有键值也是这样,如下简单的写法: duan=1; //开段锁存 P0=table[字型表];///送字型 duan=0; //段锁住 wei=1; //开位锁存, P0=tablewe[数码管的表];///选中哪个码管 wei=0; //位锁住

要静态显示你两个8管得用14个io口,控制io口输出好低就好

以四个数码管为例,每个数码管都有一个公共端,共阴或共阳,这个公共端就类似于开关了,四个数码管还共用8跟数据线,应该共12根线……开始后,让第一个开关打开,8位数据线输入第一个数码管要显示的数字的编码,保持几十毫秒的延时后,把开关关闭(这步挺重要的),然后打开第二个开关,输入第个数码管要显示的数字编码……一直到第四个,再到第一个,不停的循环……由于两个数码管点亮的时间间隔太小,人眼是分辩不出来的,叫人眼的视觉暂留现象.这种数码管显示方法叫动态扫描显示,可以节省数据借口,但耗费CPU…… 这样理解,四个喝醉的人,站在一起,都不稳,你看到一个要倒了,赶快去扶一下,然后扶下一个,来回的扶四个人,你扶的够快的话,四个人是可以站在那儿的……

#include<REG51.H> char led_mod[]={0xf9,0xa4,0xb0,0x99}; void delay (unsigned int time); void main(){ char led_point=0; while(1){ switch(led_point) { case 0:P3=0x08;P2=led_mod[led_point];break; case 1:P3=0x04;P2=led_mod[led_point];break;

我写过8位的,带有删除功能,这是自己写的东西.我单片机有外接753芯片的,相当于io口扩展,所以可以用8个io口控制8跟数码管.输出为P1,程序里的LATCH1和LATCH2是用来控制753芯片的.我的数码管是动态扫描显示的,不知道你单

正常扫描动态显示就可以了,注意的是总的一帧扫描时间 不要超过40毫秒,但扫描间隔时间也不能低于3毫秒.

这主要取决于需求: (1)我做过pic数码管静态显示(spi方式)点亮一个数码管,它需要一个驱动芯片 74hc595d ,其工作方式是“串入并出”锁存的方式.即数码管的8个码段从pic的rc5口出来后,给595一个锁存信号(高低电平变换一下),

网站首页 | 网站地图
All rights reserved Powered by www.bestwu.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com