‘壹’ 单片机数码管显示的数值编码
昏,你学过数字电路么?关于7段数码管的部分(其实我们用的是8段),数码管中有8断二极管,从最上到小数点,分别是a,b,c,d,e,f,g,h(这个是小数点),8个数码管统一接在地线或者高电平,所以只要看二极管的那一面接为啥,这也就是什么共阳极和共阴极了,你可以手工自己面一下码,比如说你上面所说的共阳极吧,如果想要显示1的话,是不是b段,c段为低电平呀,其他为高呀,对应的编码是不是1111
1001.(最低位是a,次位为b,后c,。。。。)
,那不是0xf9么?。。。。
‘贰’ 单片机数码管动态显示代码
如下:
‘叁’ C语言单片机代码 数码管动态显示
这里的16个元素代表的是从十六进制数0~9、A、B、C、D、E、F的段码,根据什么来填这些数组元素?那就要看你设计程序时定义数组的作用才能确定.table[1]对应的元素为0x06,是十六进制数,转换成二进制数是00000110B,分别对应于数码管的Dp、g、f、e、d、c、b、a 脚,所以在共阴数码管上点亮b、c两段,显示的是数字1,其它同理。
‘肆’ C51 单片机数码管显示
data代表的是单片机内部低128字节的RAM,可以省略
code代表数组写在程序存储器中,可节省宝贵的内存,因这个表格存的是固定数据(常量)
有的单片机内部有256字节RAM,高128字节用idata修饰
如果用外部RAM(或片上超过256字节的RAM),要用xdata修饰
整型变量当然要用uint 了,没见哪里用 uchar
‘伍’ 51单片机的共阴数码管怎么显示数字(c语言)
要让51单片机共阴数码管显示数字,只需要将单片机的P2端口输出数字对应的段码即可。
以显示数字“0”为例,c语言程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
//数码管的段码编码
Uchar table[10] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void main(){//主函数
P0 = table[0];//显示0,大家可以修改里面的数据。
while(1);//程序不再执行其他步骤;
}
(5)单片机数码管显示全部代码扩展阅读:
数字0-9的对应段码:
数字0 0x3f
数字1 0x06
数字2 0x5b
数字3 0x4f
数字4 0x66
数字5 0x6d
数字6 0x7d
数字7 0x07
数字8 0x7f
数字9 0x6f
‘陆’ 单片机 数码管动态显示代码
if(Countnum[3]++=9) 单片机里面判断是否相等是用==的而不是=
你应该写成if(Countnum[3]++==9)
而且你的写法和不规范,这个写法的意思是Countnum[3]是否等于9,然后Countnum[3]加1
其它的错误也是一样
‘柒’ 我想要实现单片机: 数码管每隔1s显示从0-9怎么实现 全部代码。
你要c语言的还是汇编的?
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uchar x); //延时程序
void ds_50ms(void); //50ms定时,中断程序
void Ptime(uchar); //时间处理函数
void Js_Scan(void); //数码管扫描函数
sbit S1=P2^4; //置位P2.4为数码管1控制位
int num=0,m=0; //定义数据类型
//int code LED_Num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管扫描数组,共阴极
int code LED_Num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳极
void main(void) //主函数
{
TMOD=0x01; //定义计时器工作类型
TH0=(65535-50000)/256; //定时器高4位初值
TL0=(65535-50000)%256; //定时器低4位初值
EA=1; //开中断
ET0=1; //开中断
while(1) //建立死循环
{
Js_Scan(); //调用数码管扫描函数
TRO=1;
}
}
void ds_50ms(void) interrupt 1 using 1 //50ms定时中断程序
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
num++; //执行累加,直到50ms
Ptime(num); //调用时间处理函数
}
void Ptime(uchar time) //时间处理函数
{
if(time==20) //判断是否到1000ms,即1秒
{
num=0; //num清零
m++; //m累加
}
if(m==9) //数码管显示9时,m清零,重新计数
{
m=0;
}
}
void Js_Scan() //数码管扫描函数
{
uchar j; //定义j数据类型
for(j=0;j<5;j++) //建立循环
{
S1=1;P0=LED_Num[m];delay(1);S1=0; //扫描显示位,稍作延时(对于单位数码管可直接置高置低,此为扫描的写法,单位不需要延时,不需要写for循环)
}
}
void delay(uchar x) //延时函数,防止数码管显示不稳定
{
uchar k;
while(x--)
for(k=0;k<125;k++);
}
这个是共阳极的,共阴极改变数组就行了。。。。 将前面的//删掉 将后面数组加上// S1=0;S1=1;就行了。
‘捌’ 51单片机怎样用键盘控制数码管显示
51单片机怎样用键盘控制数码管显示的方法。
如下参考:
1.首先,编写代码并点亮数码管。
‘玖’ 共阴极7段数码管显示C程序
单片机7段数码管动态显示程序代码及其说明如下:
#include <reg51.h>
#include <intrins.h>
#include<math.h>
unsigned char data dis_digit; //dis_digit---位选通值, 传送到P2口用于选通当
//前数码管的数值, 如等于0xfe时,选通P2.0口数码管
unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3
(9)单片机数码管显示全部代码扩展阅读:
驱动方式:
直流驱动。
是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。优点是编程简单,显示亮度高,缺点是占用I/O端口多。
动态显示驱动:
是将所有数码管通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示。将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制。
当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
‘拾’ 关于单片机数码管的C语言代码,高分求详解,先谢过
一、LedNumVal%10000/1000
%是模,取余数的意思,%10000,得到的数最大是四位数。
/是整除的意思不带小数,如8/3=2
一个小于10000的数,整除1000结果一定是0到9之间的一个数
二、Disp_Tab
以及LedOut,
dispbit都是数组,根据相应的数可得到对应的字符数据,达到位选的功能。