问下·TX-51单片机中数码管显示如何移位,比如说我按键1在第6个根数码管上显示1。

作者&投稿:捷心 (若有异议请与网页底部的电邮联系)
单片机 51 利用数码管1显示按键1的被按次数,按第10次时数码管显示归零,重新显示。~

1、在主程序中一直扫描显示程序
2、通过按键触发中断 在中断里面进行计数
3、每有一次中断触发 计数指针加一
4、加够10次后指针恢复初始状态 即清零

程序清单如下:
#include // 51单片机头文件
#define uchar unsigned char// 宏定义,用uchar替代无符号字符型
#define uint unsigned int// 宏定义,用uint 替代无符号整数型
sbit Key = P2 ^ 7;
uchar Count = 0;
uchar code DataChar[10] = // 定义数码管的段码 '0'~'9'、'-'、' ' 'P'
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
};//延时N毫秒
void DelayNms( uint N )// 利用x、y作简单的自减运算,消耗单片机指令周期,达到延时的目的
{
uint x,y;
for( x=N; x>0; x-- )
for( y=110; y>0; y-- );
}
//数码管显示 // 显示方式为动态扫描,视觉暂留原理
void Display( uchar Num )// *p指向Main函数中的数组ShowNum的首地址
{
P0 = DataChar[ Num ];// 向P0赋段码值
DelayNms(2);// 短暂的延时
P0 = 0x00;// 让数码管熄灭,否则会造成数字重叠
}
void main( void )
{
while(1)
{
if( Key == 0 )
{
DelayNms(30);
if( Key == 0 )
{
Count += 1;
Count = (Count>9)? 0 : Count;
}
while( !Key );
}
Display( Count );
}
}

扩展资料
8051单片机具有如下功能:
8位CPU·4kbytes程序存储器(ROM) (52为8K)
128bytes的数据存储器(RAM) (52有256bytes的RAM)
32条I/O口线·111条指令,大部分为单字节指令
21个专用寄存器
2个可编程定时/计数器·5个中断源,2个优先级(52有6个)
一个全双工串行通信口
外部数据存储器寻址空间为64kB
外部程序存储器寻址空间为64kB
逻辑操作位寻址功能·双列直插40PinDIP封装
单一+5V电源供电
CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
ROM:用以存放程序、一些原始数据和表格;
I/O口:四个8位并行I/O口,既可用作输入,也可用作输出
T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
五个中断源的中断控制系统;
一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;
片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最佳振荡频率为6M—12M。
参考资料来源:百度百科-51单片机

其实不存在移位问题,只是一个数的显示而已,按键1该数为1,铵键2该数为11……然后即时将该项数在数码管中显示。给你一个函数,作用时将一个数在第几个数码管中显示。
void display(uchar firstbit,uchar Num) //firstbit为要第一位显示数码管,NUM是要显示数的位数
{
uchar s;
for(s=0;s<Num;s++)
{
P0=0xff;
duan=1;
duan=0;
P0=table2[s+firstbit];
wei=1;
wei=0;
P0=tempdata[s];
duan=1;
duan=0;
delay(1);
}
}

重新选择需要点亮的数码管


问下·TX-51单片机中数码管显示如何移位,比如说我按键1在第6个根数...
其实不存在移位问题,只是一个数的显示而已,按键1该数为1,铵键2该数为11……然后即时将该项数在数码管中显示。给你一个函数,作用时将一个数在第几个数码管中显示。void display(uchar firstbit,uchar Num) \/\/firstbit为要第一位显示数码管,NUM是要显示数的位数 { uchar s;for(s=0;s<...

我想买单片机但不知道买啥样的,是不是所有TX-1C51单片机都一样啊,都...
89C52,一般初学都是这个型号的单片机,实验板却有多种选择,TX-1C是不错的选择,重要的是配有视频详解,1.所以TX-1C51单片机是独一无二的,没有一不一样的说法。2.是个单片机实验板,就必须有和电脑连接的地方,应为要把写好的程序从电脑下载到单片机中。

关于TX-51单片机问题
有可以是你写的程序没有下载成功。你可以先写让一个LED灯亮,程序如下 include<reg52.h> define uint unsigned int define uchar unsigned char sbit led1=P0^0; \/\/第一个LED灯的管脚 sbit ledk = P2^1; \/\/LED灯的使能管脚 void delay(uint z){ uint x,y;for(x=z;x>0;x--)fo...

TX-51单片机开发版上没有温度传感器但想学怎么办?可以外接的吗?_百...
可以,你直接去淘宝买就行了,其实那个东西真的没什么好学的,原理非常简单,就是把每个温度的温敏电阻值记住,然后测量,推出温度

TX-1C 51单片机开发板 USB转串口驱动程序 哪里有下载?
XT-1C 51单片机USB转串口驱动,是郭老师51学习板把,PL2302驱动XP系统和Vista系统驱动。WIN7系统驱动没有,可以到百度搜索很多。WIN7系统下USB转串口驱动下载地址:http:\/\/ishare.iask.sina.com.cn\/f\/14961338.html?from=like

51单片机有几个中断源,分别是什么?
(4)函数名()interrupt 3 {} \/\/对应定时器\/计数器1中断;(5)函数名()interrupt 4 {} \/\/对应串口中断;51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,...

51单片机的tx,rx、12v、G都代表什么意思?
tx 串口发射端 rx 串口接收端 12V 电源不能直接供单片机 G GND 地 单片机和电源的负极

Proteus 怎么模拟郭天祥的TX-1C单片机?急!!!
TX-1C不是单片机,是开发板的总称。这个开发板用的是STC生产的51单片,Proteus里也没有STC的单片机,但它和8051单片机完全一样,找8051或者AT89C51都一样。

TX--1C 51单片机 开发板无法连接至电脑
驱动没安装成功,或者串口驱动安装后电脑桌面是没有什么提示的,只是在设备管理器中多出了一个COM口。死机后,把USB拔掉再插也许就好了。

51单片机有几个中断源
mcs-51单片机有5个中断源,分别为:1、外部中断0(INT0):默认中断级别最高,中断入口地址0003H;2、定时\/计数器0(T1):默认中断级别第2,中断入口地址000BH;3、外部中断1(INT1):默认中断级别第3,中断入口地址0013H;4、串行口中断(TX\/RX):默认中断级别第4,中断入口地址0023H;5、...

商丘市17783409424: 问下·TX - 51单片机中数码管显示如何移位,比如说我按键1在第6个根数码管上显示1. -
赤妮施太: 其实不存在移位问题,只是一个数的显示而已,按键1该数为1,铵键2该数为11……然后即时将该项数在数码管中显示.给你一个函数,作用时将一个数在第几个数码管中显示.void display(uchar firstbit,uchar Num) //firstbit为要第一位显示数码管,NUM是要显示数的位数 { uchar s; for(s=0;s{ P0=0xff; duan=1; duan=0; P0=table2[s+firstbit]; wei=1; wei=0; P0=tempdata[s]; duan=1; duan=0; delay(1); } }

商丘市17783409424: 51单片机数码管显示五位数Z -
赤妮施太: 1,你的数组里面的数有问题,xx[1]=z/10000;xx[2]=z%10000/1000;xx[3]=z%1000/100;xx[4]=z%100/10;xx[5]=z%10;2,全部显示0,也可能是你的段位送的顺序有误,如果是锁存器的话,应该先送位,再送段, 你试下,看能不能正常显示. 3,数码管的显示,必须的一位一位的来,你想想数码管是动态扫描,不一位一位的送肯定不能正常显示地的. 希望能帮到你.

商丘市17783409424: 51单片机C语言程序中如何确定数码管显示内容 -
赤妮施太: 这个就要看希望显示的是什么呢,比如现在要做一个数字时钟,那么,那些时间变量就是要显示的,可以建立一个数组变量,作为显示缓冲,在主程序里,不停的把当前的时间变量放入显示缓冲区, 数码管动态刷新的时候,就直接把显示缓冲区你的数值进行显示就可以了

商丘市17783409424: 在51单片机中1位位数码管显示的编程怎么写啊, -
赤妮施太: 下面这个程序是4x4距阵键盘,LED数码管显示,一共可以到0-F显示,你可以稍微改一下就可以实现你的功能了,如还有问题请发信息,希望能帮上你! #include unsigned char code Dig[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,...

商丘市17783409424: 51单片机怎么点亮数码管? -
赤妮施太: 单片机通过驱动电路给数码管中相应各段的发光二极管加正向电压,该段发光二极管就会被点亮.不同段的发光二极管加正向电压则亮,不加正向电压则灭,这样就可以通过各段的亮灭组合,来显示不同的数字和字符了. 单片机是通过向数码管送段形(即显示编码),来给数码管相应的各段加正向电压来实现的.

商丘市17783409424: 51单片机中如何按下按键时数码管正常显示而不闪烁,并且实现长按连续 -
赤妮施太: 你好,我也遇到这样的问题,经过一周的研究,问之前的前辈得出结果,希望对你有帮助 char scan_k(char k) { int i=0;//定义一个变量用来累计长按的时间 if((KEY1&&KEY2&&KEY3&&KEY4&&KEY5&&KEY6)==0)//如果有按键按下 { while(!KEY...

商丘市17783409424: 51单片机怎样设按键切换数码管显示时间和日期? -
赤妮施太: 你要设置一个标志变量,如flag,在进入按键程序后,flag++; 然后加个控制判断语句 if(flag>3) flag=0; 这样,在显示模块中再加入开关语句; switch(flag) { case 0:...显示时间.. case 1:...显示日期... case 2:...显示温度... }

商丘市17783409424: 51 单片机 怎么切换 程序显示 数码管 -
赤妮施太: 数码管的显示一般是每隔一段时间显示一次.例如要显示4位,先送显示第一位,延时几mS显示第二位,再延时,接着显示第三位,然后延时显示第四位.延时时间很重要,不能太慢,太慢了闪烁,要小于视觉暂留时间.也不能太快,太快了也会闪烁,因为延时短,显示时间就短,时间都浪费在切换显示啦.延时可以用软件延时,简单.也可用中断延时.数码管驱动显示要估算除显示以外的程序时间,不能时间太长影响数码的显示.成败与否就在于您对时间的估算上. 祝您成功.

商丘市17783409424: 51单片机数码管静态显示 -
赤妮施太: ……if(KEY == 0 && LOCK == 1) { //再多加上一个条件Delay(2);if(KEY == 0) i++;Delay(50);} ……当 LOCK = 0 时,就不检查《加一键》.

商丘市17783409424: 用51单片机显示30个数码管,有什么方法? -
赤妮施太: 30个数码管太多,动态驱动的话占用CPU开销太大,串行输出的话,更新数据太慢,静态驱动需要的硬件较多,每个数码管要一个锁存器驱动共30个,,还需5个3/8译码器来选择打开哪一个锁存器,还是用液晶屏吧

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