用51单片机控制4位一体数码管实现1234轮流显示的程序代码是什么,求!proteus仿真

作者&投稿:沃胜 (若有异议请与网页底部的电邮联系)
~ 下面是使用AT89S51单片机控制4位一体数码管轮流显示1234的程序代码:
```c
#include <reg51.h>
// 数码管显示字型码表
unsigned char code LEDDisplay[] = {
0x3F, // 0
0x06, // 1
0x5B, // 2
0x4F // 3
};
sbit DIO = P1^0; // 串行数据输入
sbit RCLK = P1^1; // 数据锁存时钟
sbit SCLK = P1^2; // 串行数据时钟
unsigned char digit = 0;
void delay(unsigned int time)
{
unsigned int i, j;
for (i = 0; i < time; i++) {
for (j = 0; j < 1000; j++) {
// 延时
}
}
}
void displayDigit(unsigned char num)
{
DIO = 1; // 拉高数据线
SCLK = 0; // 拉低时钟线
// 发送字型码
shiftOut(LEDDisplay[num]);

// 发送位选线
switch (digit) {
case 0:
shiftOut(0x01); // 第1位
break;
case 1:
shiftOut(0x02); // 第2位
break;
case 2:
shiftOut(0x04); // 第3位
break;
case 3:
shiftOut(0x08); // 第4位
break;
default:
break;
}

// 数据锁存
RCLK = 1;
delay(1);
RCLK = 0;

// 数码管刷新延时
delay(5);

// 切换显示的位
digit = (digit + 1) % 4;
}
void shiftOut(unsigned char value)
{
unsigned char i;
for (i = 0; i < 8; i++) {
SCLK = 0;
DIO = (value >> (7 - i)) & 0x01;
SCLK = 1;
}
}
void main()
{
RCLK = 0;
SCLK = 0;
digit = 0;

while (1) {
displayDigit(1);
delay(500);
displayDigit(2);
delay(500);
displayDigit(3);
delay(500);
displayDigit(4);
delay(500);
}
}
```
在Proteus中进行仿真时,需要配置相应的引脚连接和添加仿真模型。按照以下步骤进行配置:
1. 点击Proteus界面的"Library"菜单,选择"Library Manager"。
2. 在"Library Manager"对话框中,搜索并选择"AT89S51"。
3. 点击右侧的"Install"按钮以将AT89S51添加为仿真模型。
4. 在Proteus的主界面中,点击左侧的"Pick From Libraries"按钮,在弹出的对话框中选择并添加一个4位一体数码管模型。
5. 拖动AT89S51和数码管模型到主界面,并设置引脚连接如下:
AT89S51的P1口连接到数码管模型的段选引脚;
AT89S51的P1.0引脚连接到数码管模型的DIO引脚;
AT89S51的P1.1引脚连接到数码管模型的RCLK引脚;
AT89S51的P1.2引脚连接到数码管模型的SCLK引脚。
6. 选择仿真模式并运行仿真。
这样,仿真就会开始运行,你会看到4位一体数码管在数码1、2、3、4之间轮流显示。请注意,以上是一个大致的示例代码,你可能需要根据具体的单片机型号和数码管型号进行一些微调。同时,你还需要根据你的硬件连接情况来


51单片机 四位数码管如何同时显示4位不同的数字?
有两种方式:一可以用类似595转转并芯片用静态显示法驱动数码管,二可以用动态扫描显示法显示数码管。

51单片机4位数码管做秒表,C语言编程含有控制开关开始停止清零。_百度知 ...
include <REG52.H> include <intrins.h> define uchar unsigned char define uint unsigned int define ulint unsigned long int define y4c P2&=0x1f;P2|=0X80 define y5c P2&=0x1f;P2|=0Xa0 define y6c P2&=0x1f;P2|=0Xc0 define y7c P2&=0x1f;P2|=0Xe0 define rst P2&=0x1f ...

51单片机如何利用4个七段数码管采用动态显示显示4位数字,如2035?_百度...
不停地利用人的视觉暂留,在一个合适的速度下依次显示1个2,1个0,1个3,1个5.当显示一个“2”的时候,其他三位都是空的,以此类推。但人眼是看不到短时间内这些变化的,假如这个行为不断循环,那么人看到的就是“2035”,而不是单个的数字。比如说吧:...P1=num[2]; \/\/假设num[2]是...

怎样用51单片机P3.3口外部电平变化做一个4位数码管显示的计数器?要求...
\/*p0口接段选,p1口接位选*\/ include"reg51.h"define uchar unsigned char define uint unsigned int uchar qian,bai,shi,ge;uint num=0;uchar tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};\/\/共阴数码管的编码 void ISR(void)\/\/中断服务程序 { num++;qian=num...

51单片机如何利用4个七段数码管采用动态显示显示4位数字,如2035_百度...
); \/\/延时 P0 = 255;SMG_b=1; \/\/ P0=table[shi];\/\/ 选择十位数码管 SMG_s=0;delay56(); \/\/ P0 = 255;SMG_s=1; \/\/ P0=table[ge];\/\/选择个位数码管,SMG_g=0;delay56(); \/\/ P0 = 255;SMG_g=1; \/\/ } 你想显示什么,分别为qian,bai,shi ,ge ...

51单片机数字秒表设计用4位数码管分别显示十秒,秒,百毫秒,十毫秒计时范 ...
\/***\/ include <reg51.h> sbit Axs=P1^3; sbit Bxs=P1^2; sbit Cxs=P1^1; sbit Dxs=P1^0;\/\/数码管位选端口 char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};\/\/数码管显示编码 void YS(char hs); void XS(int xm,int xs); void Time1(void);...

51单片机低四位数码管位选不影响高四位?
第三个坑,几乎100%的学校是将C语言,单片机作为两门独立课程开设的,这人为增加的难度,非计算机专业的学习C语言都应该放到单片机环境中去学习。很多初学者想学习单片机,但是却不知道怎么入门,该从何学起。其实学习单片机可从以下四个阶段开展入门学习 第一阶段,学会C语言的常用语法,熟悉51单片机开发...

51单片机4位数码管逐个递增程序,第一位0-9加,然后归0,第二位开始从0...
void display(qian_c,bai_c,shi_c,ge_c)\/\/4位显示程序 { P0=table[qian_c]; \/\/显示千位 P0是数据输出口 dula=1;dula=0;P0=0xfb;wela=1;wela=0;delay(2);P0=table[bai_c]; \/\/显示百位 dula=1;dula=0;P0=0xf7;wela=1;wela=0;delay(2);P0=table[shi_c]; \/\/显示十位...

求解读51单片机用四个按键独立控制四个led的c程序
include<reg51.h>\/\/k2~k4 分别控制le1~le4 void delay(unsigned int x) \/\/延时函数{ while(x--); \/\/延时数减一} void key_event (unsigned char d) \/\/根据扫描到的键值,亮相应的LED { switch(d) { case 14: P1^=(1<<0); break; \/\/k1 键按下了 case 13: P1^=...

51单片机led4位数码管动态显示“0123”的程序,急急,,,能帮忙的就快点...
右边的四根线,控制位选,即:控制哪个数码管亮。左边的七根线,控制段选,即:控制一个数码管的七段。明白了吧?在while循环中:1 选第一个数码管,关闭其他数码管,再选让第一个数码管的那些段亮;2 选第二个数码管,关闭其他数码管,再选让第二个数码管的哪些段亮;3 ,4步同理,这样...

新泰市13971639657: 51单片机 控制四位数码管 汇编程序 -
禾纯雌莫: 哦,,数码管 有共阳极,共阴极的,你是那一种 ;显示缓冲单元在72H—75H DISPLAY:MOV DPTR,#TAB CLR P3.3 MOV A,72H MOVC A,@A+DPTR LOP1:MOV P2,A LCALL DL1MS SETB P3.3 CLR P3.2 MOV A,73H MOVC A,@A+DPTR ...

新泰市13971639657: 51单片机 编写4个LED数码管同时循环显示0—9的数字 的程序. -
禾纯雌莫: #include<reg51.h>#define uchar unsigned char uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//0-9 uchar time,scanled,tiao; uchar disdat[6]="201803"; void delay(unsigned int x) {unsigned int i,j;for(i=0;i<x;i++)...

新泰市13971639657: 求由51单片机控制4x4键盘输入,4个数码管(采用动态扫描)显示 C语言编程思路! -
禾纯雌莫: 可以这样写,先计算按了几下了,按下若小于4次,让四个段选端前几个端导通,按下数超过或等于4次你就可以用扫屏的方式来显示就好了.比如第一下按的是8你就可以设置if和else语句组合啊!先有个数组d[]={0xf7;0xfb;0xfd;0xfe}//段选,按了几下设为变量uint a//无符号字符型,if(a<4){if(a=1)P2=d[a-2];P1=data[8];delay();········if(a-1){··········}if(a-2){··········}};else(············)太多了我就不写了.

新泰市13971639657: 51单片机怎么控制四位数码管,有没有汇编程序?我只能控制两位!求详解! -
禾纯雌莫: display:;显示子程序 mov dptr,#numtab;送数据表 mov a,a_bit;送个位 movc a,@a+dptr;查表 mov p1,a;送p0显示 30 setb p3.7;选中第一个数码管 lcall d1ms;显示1ms cpl p3.7;关显示 mov a,b_bit;送10位数据 35 movc a,@a+dptr;查...

新泰市13971639657: 如何使用单片机at89c51驱动4位8段数码管,如果用到芯片来驱动的,电路图如何连接? -
禾纯雌莫: 看你将四位数码管接在单片机的哪一组输出口 例如51单片机一般都是四组八位输i/o口P0,P1,P2,P3口 一般P0口是三态i/o是要接上拉电阻的.其他接口是不用接上拉电阻的.上拉电阻一般选用1k~4k7都可以保证各管脚输出的电流小于500mA就可...

新泰市13971639657: 51单片机如何用汇编语言让4个共阴数码管同时显示1234 P3口是片选 P0是段选 -
禾纯雌莫: 可以用proteus仿真来实现,用四位一体的共阴数码管.仿真图和显示效果如下图. 汇编程序

新泰市13971639657: 用51单片机编程实现集成4位8段数码管显示不同的数字 -
禾纯雌莫: 刷新时间过短可能造成cpu的不响应. char js(char k) {if(k==4) k=0; return k;} void delayy(int k) {int i,j;for (i=0;i<k;i++){for (j=0;j<60;j++){;}} } void main() { for (;;){z=js(z);i=js(i);P0=0; P1=0xff-(0x01<<z);j=time[i];P0=table[j]; delayy(1);z+...

新泰市13971639657: 51单片机(四位数码管的显示)程序基于单片机V1或V2实验系统,
禾纯雌莫: 下面这个程序是4x4距阵键盘,LED数码管显示,一共可以到0-F显示,你可以稍微改一下就可以实现你的功能了,如还有问题请发信息,希望能帮上你!#includeunsigned ...

新泰市13971639657: 51单片机驱动4位一体共阴极数码管,位码驱动如图.p2为高时三极管导通,集电极低数码管亮. -
禾纯雌莫: 画仿真图,位驱动用三极管是一个很麻烦的事,有点自找苦吃啊.P2输出的位码应该是高电平有效.但是,每个三极管的集电极必须要加上拉电阻,就像P0口要加上拉电阻一样的,但是这个电阻必须是模拟的,且阻值选10K才行,阻值不合适就不会显示的,另个三极管基极电阻的阻值也要求在1K,发射极电阻可以不用,但用了,不能太大了,这三个电阻都必须符合要求才能显示.太麻烦啦.如下图 如果非要加反相,还不如把三极管换成非门,74HC04,见下图,很简单.其实,最简单的,就是P2口直接做位驱动,省掉很多的麻烦,这不过就是一个仿真图吗,不必要与实物相同的.但是,位码要变成0有效,与共阴数码管的位完全相符了.这个仿真多简单啦.

新泰市13971639657: 怎么用51单片机驱动4位8段数码管作一个简单的计时器?程序怎么写?要求写出每条语句的解释.要用汇编的! -
禾纯雌莫: 动态显示的要点就是先位选,送段码(这2 个先后也可换一下)延时1~5ms,关显示(即关位选).再下一位.... 我空间里的这个可以参考.http://hi.baidu.com/47okey/blog/item/180367355f735da6d1a2d328.html

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