找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4596|回复: 12
收起左侧

单片机四个数码管显示的问题

[复制链接]
ID:169181 发表于 2017-5-31 19:37 | 显示全部楼层 |阅读模式
这个是按照老师讲的画出来的图,不让改动,要求四个灯分别显示1234,延时1秒后同时显示0,1秒后再分别显示5678,再1秒后显示0000。这样循环
2.jpg
回复

使用道具 举报

ID:169181 发表于 2017-5-31 19:37 | 显示全部楼层
#include<reg51.h>
#include<intrins.h>
#include<absacc.h>
#define uint unsigned int
#define uchar unsigned char       
#define portA XBYTE[0x00]
uchar code tab_1[]={0x06,0x5b,0x4f,0x66};   //1~4&sup1;&sup2;&Ograve;&otilde;
uchar code tab_2[]={0x6d,0x7d,0x07,0x7f};   //5~8&sup1;&sup2;&Ograve;&otilde;
uchar code tab_3[]={0x3f,0x3f,0x3f,0x3f};   //0&sup1;&sup2;&Ograve;&otilde;
void delayms(uint i)
{
   uint j,k;
   for(j=i;j>0;j--)
    for(k=100;k>0;k--);    //&Ntilde;&Oacute;&Ecirc;±1ms
}
void main()
{
while(1)
{
           P2=0x00;
     P0=0x06;
                 P2=0x20;
                 P0=0x5b;
                 P2=0x40;
                 P0=0x4f;
                 P2=0x60;
                 P0=0x66;
           delayms(1000);
                 P2=0x00;
     P0=0x3f;
                 P2=0x20;
                 P0=0x3f;
                 P2=0x40;
                 P0=0x3f;
                 P2=0x60;
                 P0=0x3f;
                 delayms(1000);
                 P2=0x00;
     P0=0x6d;
                 P2=0x20;
                 P0=0x7d;
                 P2=0x40;
                 P0=0x07;
                 P2=0x60;
                 P0=0x7f;
                 delayms(1000);
                 P2=0x00;
     P0=0x3f;
                 P2=0x20;
                 P0=0x3f;
                 P2=0x40;
                 P0=0x3f;
                 P2=0x60;
                 P0=0x3f;
                 delayms(1000);
                 }
}
回复

使用道具 举报

ID:169181 发表于 2017-5-31 19:40 | 显示全部楼层
我自己写的程序,调试的问题是四个管本来应该显示1234的部分全都显示4,5678那部分也是。不知带该怎么改了
回复

使用道具 举报

ID:111634 发表于 2017-5-31 21:59 | 显示全部楼层
本帖最后由 zl2168 于 2017-5-31 22:49 编辑

程序与电路不符,关键是弄清WR的作用!!!知道为什么老师不让改动电路吗?老师就是为了让学生去理解并行扩展的概念。
推荐一个案例,内有这种电路的原理和程序,去看看吧!
Proteus仿真一下,确认有效。
实例21 并行扩展8-16位TTL输入输出口.rar (99.82 KB, 下载次数: 7)
回复

使用道具 举报

ID:148871 发表于 2017-5-31 22:10 | 显示全部楼层
一定要注意WR!
回复

使用道具 举报

ID:111634 发表于 2017-5-31 23:33 | 显示全部楼层

怎么注意WR?多看看?还是那句话:关键是弄清WR的作用!
回复

使用道具 举报

ID:206555 发表于 2017-6-1 05:06 | 显示全部楼层
用个定时器就行了
回复

使用道具 举报

ID:206559 发表于 2017-6-1 07:47 来自手机 | 显示全部楼层
搞清位选和段选,掌握动态显示,再加个延时就可以了
回复

使用道具 举报

ID:111634 发表于 2017-6-1 16:20 | 显示全部楼层
15277112091 发表于 2017-6-1 07:47
搞清位选和段选,掌握动态显示,再加个延时就可以了

你的方法对这个电路不行!不相信不妨试试看!
回复

使用道具 举报

ID:111634 发表于 2017-6-1 21:19 | 显示全部楼层
seven96 发表于 2017-5-31 19:40
我自己写的程序,调试的问题是四个管本来应该显示1234的部分全都显示4,5678那部分也是。不知带该怎么改了

思路不对!程序与电路不符!
回复

使用道具 举报

ID:208017 发表于 2017-6-5 16:08 | 显示全部楼层

搞清位选和段选,掌握动态显示,再加个延时就可以了
回复

使用道具 举报

ID:208092 发表于 2017-6-5 17:02 | 显示全部楼层
#include<reg51.h> #include<intrins.h> #include<absacc.h> #define uint unsigned int #define uchar unsigned char         #define portA XBYTE[0x00] uchar code tab_1[]={0x06,0x5b,0x4f,0x66};   //1~4&sup1;&sup2;&Ograve;&otilde; uchar code tab_2[]={0x6d,0x7d,0x07,0x7f};   //5~8&sup1;&sup2;&Ograve;&otilde; uchar code tab_3[]={0x3f,0x3f,0x3f,0x3f};   //0&sup1;&sup2;&Ograve;&otilde; void delayms(uint i) {    uint j,k;    for(j=i;j>0;j--)     for(k=100;k>0;k--);    //&Ntilde;&Oacute;&Ecirc;±1ms } void main() {  while(1) {            P2=0x00;      P0=0x06;                  P2=0x20;                  P0=0x5b;                  P2=0x40;                  P0=0x4f;                  P2=0x60;                  P0=0x66;            delayms(1000);                  P2=0x00;      P0=0x3f;                  P2=0x20;                  P0=0x3f;                  P2=0x40;                  P0=0x3f;                  P2=0x60;                  P0=0x3f;                  delayms(1000);                  P2=0x00;      P0=0x6d;                  P2=0x20;                  P0=0x7d;                  P2=0x40;                  P0=0x07;                  P2=0x60;                  P0=0x7f;                  delayms(1000);                  P2=0x00;      P0=0x3f;                  P2=0x20;                  P0=0x3f;                  P2=0x40;                  P0=0x3f;                  P2=0x60;                  P0=0x3f;                  delayms(1000);                  } }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表