迪文科技论坛

 找回密码
 立即注册
搜索
查看: 1310|回复: 5

【提问】关于动态曲线显示问题

[复制链接]

8

主题

14

回帖

91

积分

注册会员

Rank: 2

积分
91
发表于 2020-9-2 15:44:22 | 显示全部楼层 |阅读模式
sys_write_vp(0x1000, val, len);
    for(i=0; i<4; i++)
    {        
        buf[0] = (500+500*i) >> 8;
        buf[1] = (500+500*i) & 0xff;
        buf[2] = 500 >> 8;
        buf[3] = 500 & 0xff;
        sys_write_vp(0x300, buf, 2);
        sys_delay_ms(1000);
    }
动态曲线显示,我是用0通道,向地址0x1000写入了2000个点,每次显示500个点,for循环显示4次后,屏幕为什么又重新开始显示,而不是停止,仿佛一直在for循环出不来一样。


回复

使用道具 举报

0

主题

1276

回帖

5622

积分

论坛元老

Rank: 8Rank: 8

积分
5622
发表于 2020-9-2 16:17:05 | 显示全部楼层
楼主用的什么型号的屏  代码是在哪个编译器里面写的 , 能否把完整的代码发上来看看
回复

使用道具 举报

8

主题

14

回帖

91

积分

注册会员

Rank: 2

积分
91
 楼主| 发表于 2020-9-2 16:41:31 | 显示全部楼层
integer_32 发表于 2020-9-2 16:17
楼主用的什么型号的屏  代码是在哪个编译器里面写的 , 能否把完整的代码发上来看看 ...

void sin_chart_draw(u8* val, u16 len)
{
        int i = 0;
        int j = 0;
        int k = -1;
        int flag = 0;
        int num = 0;
        u8 buf[10] = {0};
       
        for(i=0; i<len; i++)
        {
                if(flag == 0)
                {
                        k++;
                        num = k;
                        val[j++] = (u8)num >> 8;
                        val[j++] = (u8)num;
                        if(num == 40)
                                flag = 1;
                }
                else if(flag == 1)
                {
                        k--;
                        num = k;
                        val[j++] = (u8)num >> 8;
                        val[j++] = (u8)num;
                        if(num == 0)
                                flag = 0;
                }
        }
}
void curve_display(u8 val[], u16 len)
{
        int i=0;
        u8 buf[10] = {0};
        u8 buffer[10] = {0};
        sys_write_vp(0x1000, val, len);
        for(i=0; i<4; i++)
        {               
                buf[0] = (500+500*i) >> 8;
                buf[1] = (500+500*i) & 0xff;
                buf[2] = 500 >> 8;
                buf[3] = 500 & 0xff;
                sys_write_vp(0x300, buf, 2);
                sys_delay_ms(1000);
        }
        buffer[0] = 0x00;
        buffer[1] = 0x00;
        sys_write_vp(0x301, buffer, 1);
}

void main(void)
{   
        u8 val[4000] = {0};
        sys_init();//ϵͳ³õʼ»¯
        srand(1);
        {
                 sin_chart_draw(val, 2000);
                 curve_display(val, 2000);
        }
}
用的DMG85480C050_03WTR,是用C51编译器
回复

使用道具 举报

0

主题

1276

回帖

5622

积分

论坛元老

Rank: 8Rank: 8

积分
5622
发表于 2020-9-2 17:48:30 | 显示全部楼层
guo_weiyu 发表于 2020-9-2 16:41
void sin_chart_draw(u8* val, u16 len)
{
        int i = 0;

好, 我先看看
回复

使用道具 举报

8

主题

14

回帖

91

积分

注册会员

Rank: 2

积分
91
 楼主| 发表于 2020-9-3 08:11:07 | 显示全部楼层

多谢大神帮助
回复

使用道具 举报

0

主题

1276

回帖

5622

积分

论坛元老

Rank: 8Rank: 8

积分
5622
发表于 2020-9-3 09:41:08 | 显示全部楼层
本帖最后由 integer_32 于 2020-9-3 09:45 编辑

楼主客气了 不是大神, 楼主可以在main 函数中加一个  while (1); 循环,显示曲线的函数在 while(1)之前调用,这样曲线就只显示一次不会再循环了。
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2026-4-15 06:06 , Processed in 0.031381 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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