找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

谁能帮我看看单片机74HC595程序哪里有问题显示乱码

查看数: 3442 | 评论数: 8 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-5-16 17:29

正文摘要:

单片机源程序如下:#include <REG52.H> #define uint unsigned int #define uchar unsigned char sbit sda =P2^0; sbit sclk=P2^2; sbit rclk=P2^1; uchar hou=12,min=32,sec=40; uchar code table[]={0x ...

回复

ID:332444 发表于 2021-5-18 08:03
ID:332444 发表于 2021-5-18 08:03
ID:213173 发表于 2021-5-18 06:27
这里也要改一下
  1. void main(void)
  2. {
  3.         uchar sec1=255;
  4.         init();
  5.         while(1)
  6.         {
  7.                 if(sec1!=sec)
  8.                 {
  9.                         dis_buf[5]=table[sec%10];
  10.                         dis_buf[4]=table[sec/10];
  11.                         dis_buf[3]=table[min%10];
  12.                         dis_buf[2]=table[min/10];
  13.                         dis_buf[1]=table[hou%10];
  14.                         dis_buf[0]=table[hou/10];
  15.                         sec1=sec;
  16.                 }
  17.                 DisplayScan();
  18.         }
  19. }
复制代码
ID:213173 发表于 2021-5-18 06:19
楼主想用4位数码管交替显示不同数据可以这样改显示函数
  1. void DisplayScan()
  2. {
  3.         static uchar i=0;
  4.         shift(wela[i]);//送位码
  5.         if(sec%10<8)//每10秒显示8秒时/分,显示2秒分/秒
  6.         {
  7.                 if(i==1)shift(dis_buf[i]&0x7f);//送段码加点
  8.                 else shift(dis_buf[i]);//送段码不加点
  9.         }
  10.         else
  11.         {
  12.                 if(i==1)shift(dis_buf[i+2]&0x7f);//送段码加点
  13.                 else shift(dis_buf[i+2]);//送段码不加点
  14.         }
  15.         rck();//锁存
  16.         i=++i%4;//循环扫描计数
  17. }
复制代码

ID:824490 发表于 2021-5-17 10:02
本帖最后由 名字不是重点 于 2021-5-17 10:41 编辑

这个有问题:
void DisplayScan()
{
static uchar i=0;
shift(wela[ i]);//送位码  //===>位码i
        shift(dis_buf[ i]);//送段码//====>段码i       //每一个数码管都要插入一个延时
        shift(wela[ i]);//送位码//====>位码还是i,一个数码管显示2个段码?
        shift(dis_buf[i+4]);//送段码//====>段码i+4,段码i+1、i+2、i+3被谁吃了?
        //每一个数码管都要插入一个延时
        rck();//锁存
        i=++i%4;//循环扫描计数
}
ID:824490 发表于 2021-5-17 09:55
动态显示要延时。没有延时感觉上就乱了。。
ID:57657 发表于 2021-5-16 23:00
级联多少片,就执行多少次 shift()  函数,然后锁存一次,不能多也不能少。
ID:390416 发表于 2021-5-16 19:34
两片74HC595 驱动8位数码管 单片机源代码分享 http://www.51hei.com/bbs/dpj-201201-1.html

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

Powered by 单片机教程网

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