单片机 打印曲线_单片机曲线拟合 - CSDN
  • 惠普打印机已经被广泛的应用,但在51单片机和ARM中,由于内存容间太小,cpu速度有限而不能驱动惠普打印机。 U2P-016就可以很好解决这样的问题 特点 1、可以实现画点、画线、画圆等基本操作,还可以画贝赛尔曲线; ...

    惠普打印机已经被广泛的应用,但在51单片机和ARM中,由于内存容间太小,cpu速度有限而不能驱动惠普打印机。

    U2P-016就可以很好解决这样的问题,通过串口就可完成对惠普打印机的控制

    特点
    1、可以实现画点、画线、画圆等基本操作,还可以画贝赛尔曲线;
    2、实现图形填充,图片打印等功能;
    3、支持汉字打印,TRUETYPE字库;
    3、高速USB接口连接,打印速度快;
    4、UART接口,操作简单,波特率115200bit/s;
    5、支持惠普所有激光打印机LaserJet;
    6、支持惠普所有喷墨打印机DeskJet\officejet\inkjet;
    7、工作电压5V;
    8、DB9串口,向外扩展方便

    链接
    https://item.taobao.com/item.htm?id=546397165604


    实物


    打印效果如下




    展开全文
  • STM32F1单片机+四元数欧拉角姿态解算+MPU6050+HMC5883L+MS5611+曲线打印完整工程代码. 燕骏编程规范: ... 燕骏串口打印曲线上位机: https://download.csdn.net/download/zzw5945/10397194
  • 1:应用程序界面 2:实现的功能 (1)常规的串口收发...(4)数据的历史曲线查看 3:实现的方式 串口设置的核心代码 private void SearchAndAddSerialToComboBox(SerialPort MyPort, ComboBox MyBox) { ...

    1:应用程序界面

    2:实现的功能

    (1)常规的串口收发操作

    (2)私有通信协议的格式转化

    (3)数据的定时刷新显示和实时存储(txt)

    (4)数据的历史曲线查看

    3:实现的方式

    串口设置的核心代码

     private void SearchAndAddSerialToComboBox(SerialPort MyPort, ComboBox MyBox)
            {                                                               //将可用端口号添加到ComboBox
                string[] MyString = new string[20];                         //最多容纳20个,太多会影响调试效率
                string Buffer;                                              //缓存
                MyBox.Items.Clear();                                        //清空ComboBox内容
                for (int i = 1; i < 20; i++)                                //循环
                {
                    try                                                     //核心原理是依靠try和catch完成遍历
                    {
                        Buffer = "COM" + i.ToString();
                        MyPort.PortName = Buffer;
                        MyPort.Open();                                      //如果失败,后面的代码不会执行
                        MyString[i - 1] = Buffer;
                        MyBox.Items.Add(Buffer);                            //打开成功,添加至下拉列表
                        MyPort.Close();                                     //关闭
                    }
                    catch
                    {
    
                    }
                }
                MyBox.Text = MyString[0];                                   //初始化
            }
            private void button1_Click_1(object sender, EventArgs e)
            {
                if (serialPort1.IsOpen)                                     //串口打开就关闭
                {
                    try
                    {
                        serialPort1.Close();
                    }
                    catch { }                                               //确保万无一失
                    button1.Text = "打开串口";
                    Button1Statue = false;                                  //按钮状态                
                }
                else
                {
                    try
                    {
                        serialPort1.PortName = comboBox1.Text;              //端口号
                        serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text, 10);//十进制数据转换
                        serialPort1.DataBits = Convert.ToInt32(comboBox3.Text, 10);//十进制数据转换
                        switch (comboBox4.Text)
                        {
                            case "0":
                                serialPort1.StopBits = StopBits.None;
                                break;
                            case "1":
                                serialPort1.StopBits = StopBits.One;
                                break;
                            case "1.5":
                                serialPort1.StopBits = StopBits.OnePointFive;
                                break;
                            case "2":
                                serialPort1.StopBits = StopBits.Two;
                                break;
                            default:
                                MessageBox.Show("Error:参数不正确", "Error");
                                break;
                        }
                        serialPort1.Open();                                 //打开端口
                        button1.Text = "关闭串口";
                        Button1Statue = true;                                //按钮状态
                    }
                    catch
                    {
                        MessageBox.Show("串口打开失败", "错误");
                    }
                }
            }

    定时刷新显示的核心代码:

     private void refresh_curve()
            {
                while (true)
                {
                    string test_time = DateTime.Now.ToString("yyyy-MM-dd-HH:mm:ss");
                    string Path1 = "";
    
                    if (starttime == "")
                    {
                        Path1 = get_latest_file(Datapath);
                    }
                    else
                    {
                        Path1 = @".\data\" + starttime + ".txt";
                    }
                    /*调试代码
                    lstReceiveMsg.Invoke(new EventHandler(delegate
                    {
                        lstReceiveMsg.AppendText(test_time + "-->" + "\r\n");
                        lstReceiveMsg.AppendText(Path1 + "-->" + "\r\n");                                        
                    }));
                     */
                    // 从文件中读取并显示每行
                    string line = "";
                    try
                    {
                        using (StreamReader sr = new StreamReader(Path1))
                        {
                            SortedList sl = new SortedList();
                            while ((line = sr.ReadLine()) != null)
                            {
                                string[] array = line.Split('+');
                                sl.Add(array[0], array[1]);
                            }
                            // 获取键的集合
                            ICollection key = sl.Keys;
                            foreach (string k in key)
                            {
                                //  Console.WriteLine(k + ": " + sl[k]);
                                Time_axis.Add(k);
                                Curve.Add(sl[k].ToString().Split(',')[type_curve]);
                            }
                        }
    
                    }
                    catch
                    {
                        using (StreamReader sr = new StreamReader(get_latest_file(Datapath)))
                        {
                            SortedList sl = new SortedList();
                            while ((line = sr.ReadLine()) != null)
                            {
                                string[] array = line.Split('+');
                                sl.Add(array[0], array[1]);
                            }
                            // 获取键的集合
                            ICollection key = sl.Keys;
                            foreach (string k in key)
                            {
                                //  Console.WriteLine(k + ": " + sl[k]);
                                Time_axis.Add(k);
                                Curve.Add(sl[k].ToString().Split(',')[type_curve]);
                            }
                        }
                        Console.WriteLine("没有当前时间段数据:" + Path1);
                    }
                    
                    //建立委托机制,防止线程间异常
                    chart1.Invoke(new EventHandler(delegate
                    {
                        chart1.Series[0].Points.DataBindXY(Time_axis, Curve);
                        chart1.Series[0].Name = chart_series_name[type_curve];
                    }));
                 
    
                    Thread.Sleep(3000);
                    Time_axis.Clear();
                    Curve.Clear();
                }
            }

     

    展开全文
  • qt写的绘制串口接收到数据的实时曲线单片机串口发送格式为“AAA%-5d”
  • 2019独角兽企业重金招聘Python工程师标准>>> ...

     随着电子技术的发展,打印机已经广泛应用到各个领域,成为各种智能数字化仪器仪表的重要数据输出手段。而其中热敏打印机凭其体积小、重量轻、可靠性高、打印字符清晰、无噪声、走纸均匀等独特能而越来越受到青睐,更是成为小型医疗仪器如心电图机的首先。

      下面以笔者课题组开发的12导同步心电图机为例,介绍以普通52单片机为主控芯片应用串行热敏打印机实现多种方式的心电图形打印,并重点描述了12导联同步打印方式的程序实现方案。

      1 系统硬件设计

      系统配置了一个内置式数字打印机,它主要由热敏打印头(W216-QS)和步进电机组成。W126-QS点阵式热敏打印头打印数据采用串行输入,其内部不仅包含有由C-MOS集成芯片构成的1728位移位寄存器,还包含借助高密度厚膜工艺制成的加热元件。这些加热元件通过锁存和切换晶体管驱动,可在热敏打印纸上产生1728个点,对应的打印宽度为216mm,分辨率为8dot/mm。热敏打印头所需的打印数据为串行数据,数据传输遵循SPI口的通信协议。系统采用了口线模拟SPI的工作方式与打印头通信,电路如图1所示。

      考虑到52单片机内部令有256字节的内部RAM,系统还外扩1片HM628128存储12导心电数据和中间转换结果。

      2 系统软件编写

      数字打印实现的两个关键问题:①如何将心电数据转换成打印数据;②如果将数据输出到数字打印机。通常采用的方法是转换数据同时将其输出到打印机打印。这样节省了存储器空间;缺点是程序实现复杂,通用性差(不同打印方式的数据输出程序不同),系统功能不易扩展,数据转换和输出都要考虑打印点位置,并且每输出一点的数据都要调用一次程序,加大了系统开销。系统软件中没有采有这种方式,而是在内存中开辟216字节打印缓冲区,将热敏打印头1728个点与216×8位数据相对应,每次将要打印的一线数据都转换完再输出。这样只需在数据转换时考虑打印位置和方式,输出程序只需将216字节的数据按位输出即可,并且每打印一线数据只需调用一次输出子程序,字节了系统开销。缺点是占用系统资源,这一点在12导同步打印表现得尤为明显。

      系统程序实现三种打印方式:分两次打印12导联数据,每次打印6导、12导同步打印、纵向打印(打印效果如图2)。在每一种打印程序中实现模拟SPI口将打印数据送至数字打印机的子程序共用,不同处在于如何将心电数据转换成打印数据。

      2.1 I/O口线模拟SPI口

      SPI(Serial Peripheral InteRFace)总线串口是由Motorola公司提出的一种同步串行外设接口,通过四根线进行通信:时钟线(SPKCLK)、数据输出线(SPIMISO)、数据输出线(SPIMOSI)、片选线(CS),内部通过SPIDAT寄存器完成串-并/并-串转换。它主要工作在主从式系统中,一个主器件可以带多个从器件,主器件通过片选线控制总线冲突,使同一时刻只有一个从器件与从器件交换数据。

      系统应用的串行热阵式打印机数据传输采用SPI时序,但普通52单片机无SPI口,所以采用I/O口线模拟SPI时序。考虑到系统中MCU作为主器件总是发送数据,而数字打印机作为唯一从器件又总是接收数据,所以只需用口线模拟SPI口的时钟线(SPIKCLK)、数据输出线(SPIMOSI),程序模拟SPIDAT完成并-串转换即可。如前所提到打印头打印的数据点数为1728点,分辨率为8mm/mV,对应216字节的数据,为此从内部RAM中分配出216字节的空间作为打印缓冲区,程序从缓冲区依次读数据,在模拟时钟线的控制下将并行数据转换成的串行数据按位依次送至打印机的移位寄存器中,结束后送LATCH锁存信号和打印头加热脉冲STROBE,从而在热敏打印纸打印出一线心电图形,驱动步进电机向前走纸即可以连续打印。SPI口模拟程序如下:

      OUTPUT:

      现场保护

      LCALL INTRAM ;初始化内部打印缓冲区

      MOV R0,#Dat_Buff ;初始化R0为缓冲区末位地址

      DAT_OUT:

      MOV A,@R0 ;从缓冲区读数据

      MOV R7,#08H ;初始化R7控制并/串数据转换

      CONT_CHG:

      RRC A ;对ACC循环右移实现并-串转换

      MOV P1.3,C 将串行数据送至打印机

      SETB P1.1 ;模拟SPI时钟

      NOP

      CLR P1.1

      DJNZ R7,CONT_CHG ;判断1字节数据是否转换完

      DEC R0 ;寻址下一字节

      CJNE R0,#15H,DAT_OUT;判断数据是否全部转换完

      CLR P1.2 ;产生数据锁存信号

      NOP

      SETB P1.2

      NOP

      CLR P1.0 ;产生加热脉冲

      LCALL HEATDLY ;调用加热延时程序

      SETB P1.1

      LCALL MOTOR_RUN ;步进电机走纸

      恢复现场

      RET

      2.2 打印算法

      数字打印机实质上实现了数据与打印点的对应,也就是说8位心电数据数值范围为0~255,对应于热敏打印纸上的256点,通过加热敏单元使纸上某点变黑显示数据的大小。这就需要将表征实际心电大小的数据(以下称为原始数据)转换成能够指示加热点位置的数据(以下称为位置数据),通过位置数据的控制将心电数据对应的点依次打印出来,就可获得心电图。但是由于系统模数转换器获得的心电数据是离散的,如果仅将它们对应的点打印出来,得到只是一些离散的点,要想获得连续的心电图形,需要将相邻的离散点按照一定的算法将它们连接起来,对于纵向打印方式和横向打印方式,离散点连线算法是不同的。限于篇幅,在下面介绍打印方式的实现中,仅对横向12导同步打印和纵向打印进行详细阐述,而对6导联打印仅介绍其实现思想。

      2.2.1 横向6导联打印

      心电图纸长度为216mm,为每一导联心电信号分配32mm,对应于打印缓冲区中连续的32字节,打印数据转换后的位置数据存储于这32个字节中。12导联的心电数据被分为两大组,当一组打印完成再打印剩下的6导联的数据。具体的实现过程可参考横向12导联打印方式。

      2.2.2 横向12导联同步打印

      在6导联打印方式实现过程中,注意到在大多情况下一个完事心电波形中仅QRS波主峰较高可以点满整个空间外,其他波段幅值都较小占用空间很少,而这些波段可以提供更多的信息,此外将12导联分开打印,不利于医生对比同一时刻不同导联的心电波形。而采用12导联同步打印,虽然会出现波形部分重叠,但是在一些心脏疾病诊断中影响不大,且可以得取更直观的效果。

      12导联同步打印程序实现的基本思想与6导联同步打印相同,不同在于将12导联的数据同时在216mm宽的打印纸上打印出来,不可避免地出现不同导联心电图形重叠的现象,对应的内存单元也会出现复用的情况。如果简单地套用6导联打印程序,那么前一导联的数据会被相邻导联数据冲掉,从而使图形无法正确显示。图3列出了为各个导联分配的热敏打印纸空间与缓冲内存单元(这里假定缓存地址为0x1DH~0xEDH)。从图3中可以看出除了I导联前16mm空间和V6导联的后16mm空间没有被复用,打印纸的其它空间都是被两个导联共用。内部RAM使用情况也与之类似。为此在外部RAM开辟一个内部打印缓冲区的影像区(大小为216字节,单元地址的低8位与内存相应单元相同,如内部RAM 0x1DH单元与外部RAM 0xXX1DH相对应),将12导联分为两组:一组(I,III,aVL,V1,V3,V5)仍然存储于内部存储器,而另一组(II,aVF,V2,V4,V6)存储于外部影像区,在12导联一线数据转换完要打印时,将两部分按照对应单元相与即可。这样做不但可以解决上述问题,而且节省了内部资源、降低程序编写的难度。

      如前所述不同导联所占的打印空间不同,所以,对于某导联心电信号,先要确定其打印区间,然后再确定打印数据在该区间的相对位置。

      假定某导联所占打印空间的起始字节为第n个字节,而要打印的心电数据为m,将m除以8,得商k,余数为1,则此心电数据对应点对数(n-k)字节的第1位。即该心电数据对应的位置数据为第(n-k)字节(该字节的1位置1,其它位清零)。因此,打印此心电数据时,该导联所要传送的32字节打印数据中只有第(n-k)字节的第1位为1,其他都为0。

      与液晶显示相类似,对于一个导联的心电信号,要实现心电图打印,必须将盯连两个心电数据用线连接。即对于一条心电曲线,起始显示数据点在起始列只显示1点;从第二个数据点开始,要在下一列显示上一数据点到此次数据点之间的线段。在热敏打印纸上表现为将两数据点之间的点都加热,对应于内存则是将两点之间的数据都置1。

      对于—导联的心电信号,先读出第一个心电数据,将其转换成32字节位置数据直接打印。从第二个心电数据开始,除了要转换成位置数据外,还要与上一个数据相比较,用大数对应的位置数据减去小数对应的,然后结果与大数的位置数据相加,结果即为此心电数据应送打的32字节数据,也即完成了与上一心电数据连线的操作。分析发现连线算法只影响相连两个位置数据中非零字节之间的数据,为了简化计算,只需对这些字节进行减法操作,而不必计算所有的32个字节。对于加法,也只需将大数对应位置数据中的非零字节进行加法,即进行单字节加法。

      举例说明,对于导联V6心电信号,前一个数据37H,下一个数据为55H,导联V6分配的打印区间为1DH~3DH,按照位置数据转换算法,37H的位置数据为第37H字节,该字节内容为80H,其他字节都为00H;55H的位置数据为第33H字节,该字节内容为20H,其他字节为00H。由于37H〈55H,因此应是心电数据55H的位置数据减去33H的位置数据,计算如图4所示。

      2.3 纵向打印程序

      纵向打印能够实现将12导联数据无重叠同步显示。这样医生可以参考比较同一时刻的各个波形的变化趋势,为疾病的诊断提供方便。

      热敏打印纸宽度为216mm,分辨率为8dot/mm,这样最多能够打印1728点,将这些点与某一导联连续的1728个心电数据相对应,也就是说导联顺序第n个数据对应于一线图形中的第n个点。与模向打印相比纵向打印仍然要解决将离散的点连接起来的问题;但与横向顺序打印方式,即打印点按时间顺序打印相比,其难点在于需要将不同时刻同一幅值的多个点同时打印出来,即打印点按空间顺序打印。

      首先定义一个内存单元存储扫描值,使其从当前通道数据最大值变化到0,依次与通道的每一个数据进行比较:相同则对应点被描记;小则不被描记;大则需要将当前心电数据相邻的两点与扫描值相比较,只要其中一个比扫描值大,则对应点被描记,要描记的噗将其内存对应的数据位置1。

      举例说明,如果打印内存缓冲区的首字节为n,大小为216字节,而当前某一导联顺序第m个心电数据是v,而此时的扫描值为w:①v>w,则继续比较第m+1个数据;②v=w,则对应点需要被描记;③v。

    转载于:https://my.oschina.net/u/4000302/blog/3048700

    展开全文
  • 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。单片机采用超大规模集成电路技术把具有数据处理...

    单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。单片机采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。
    它最早是被用在工业控制领域,由于单片机在工业控制领域的广泛应用,单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。
    现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。 汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。
    QY-JXSY17万能单片机实验开发系统实验箱
    上海求育QY-JXSY17万能单片机实验开发系统实验箱是MCS-51单片机原理与接口,单片机控制技术,自动化控制,EDA等课程教学的配套实验设备.主板以单片机实验指导书基础实验为主.控制对象为喇叭、温度18B20、IC卡读写、蜂鸣器、小型直流电机、步进电机、压力传感器、继电器等。系统配置2000/xp等操作平台的单片机仿真调试软件,支持汇编、C51语言编译、调试;单片机在线下载软件等。真器外接,配有Keil-c仿真器K51U或其它型号仿真器,仿真C8051F 单片机(SOC),支持EDA开发。
    实验项目
    (一)软件实验
    (1)清零程序;
    (2)拆字程序;
    (3)拼字程序;
    (4)数据区传送子程序;
    (5)数据排序实验;
    (6)查找相同数据个数;
    (7)无符号双字节快速乘法子程序;
    (8)多分支程序;
    (9)脉冲计数实验;
    (10)电脑时钟实验。
    (二)硬件实验
    (1)P1口亮灯实验;
    (2)P1口转弯灯实验;
    (3)P3.3口输入,P1口输出实验;
    (4)工业顺序控制实验;
    (5)8255 A、B、C口输出方波实验;
    (6)8255 PA口控制PB口;
    (7)8255控制交通灯;
    (8)简单I/O扩展实验;
    (9)A/D0809转换实验;
    (10)D/A0832转换实验;
    (11)8279键盘显示实验;
    (12)通用打印机实验;(打印机选配☆)
    (13)微型打印机打印字符、曲线、汉字实验;(打印机选配☆)
    (14)I2C储存卡读写实验;
    (15)继电器控制实验;
    (16)步进电机控制;
    (17)8253方波实验;
    (18)小直流电机调速实验;
    (19)1616 LED点阵显示实验;
    (20)128
    64 LCD液晶显示实验;
    (21)8250可编程异步通讯接口实验(自发自收);
    (22)8251可编程通讯接口实验(与PC机);
    (23)单片机RS232/485串行发送实验(双机通讯);
    (24)单片机RS232/485串行接收实验(双机通讯);
    (25)DS18B20单总线温度测量实验
    (26)压力实验;
    (27)PWM实验
    (28)射极跟随器
    (三)扩展卡实验(选配)☆
    (1)POD1扩展卡主持以下实验:
    ·看门狗实验
    ·红外线遥控收发实验
    ·165并转串
    ·164串转并
    ·查询式键盘
    (2)POD2扩展卡主持以下实验:
    ·LM331 V/F、F/V实验
    ·138译码
    (3)POD3扩展卡主持以下实验:
    ·串行EEPROM 93C46读写实验
    ·I2C AT24C02读写实验
    ·TLC549串行A/D转换实验
    ·TLC5615 10位D/A串行转换实验
    ·PCF8563 I²C日历时钟实验
    (4)POD4扩展卡主持以下实验:
    ·ISD1420 语音录放
    (5)POD5扩展卡:
    ·40芯锁紧大孔引出,扩展主板以外接口芯片用。
    (6)POD1032扩展卡:
    ·主持Lattice公司:ISP1032E芯片实验开发。
    (7)POD1C3扩展卡:
    ·主持Atera公司:EP1C3T144芯片实验开发。
    (8)POD1C6扩展卡:
    ·主持Atera公司:EP1C6T144芯片实验开发。
    (9)CAN卡:CAN总线通讯接口实验
    (10)以太网卡:以太网TCP/IP协议接口实验
    (11)USB2.0卡:USB2.0通讯接口实验。
    说明:实验项目打“☆”号为选配实验。

    展开全文
  • 如果说一个单片机芯片具有哪些功能(比如带串口和定时器功能),则单片机内部肯定具有这些功能的电路或者器件,他们在单片机内部连接到单片机引脚上。当需要使用这些功能(比如串口和定时器)或者实现一些比较复杂的...
  • IAR使用printf()函数 打印输出 1.需要包含头文件:#include <stdio.h> 2.进入仿真调试界面  图(一) 3.调出虚拟终端  图(二) 3.打印输出printf内容  图(三) 转载于:http...
  • MCGS详细例程制作

    2020-07-29 14:20:52
    MCGS组态软件工程例程,包含动画制作,房间远程监控系统,机械手,剪板机控制系统,水位控制系统等等
  • 1、可以实现画点、画线、画圆等基本操作,还可以画贝赛尔曲线; 2、实现图形填充,图片打印等功能; 3、支持汉字打印,TRUETYPE字库; 3、高速USB接口连接,打印速度快; 4、UART接口,操作简单,波特率115200bit/s; 5、...
  • 最近课题需要用单片机来驱动力矩电机。在这里盛赞ELMO驱动器代理商——北京高控科技公司的质量与服务,果然一分价钱一分货。 设备:sol-whia15/100e02; usb-232模块,国产5000线编码器,国产力矩电机,stm32单片机...
  • 关注【电子开发圈】微信公众号,一起学习吧!...电子DIY、Arduino、51单片机、STM32单片机、FPGA…… 电子百科、开发技术、职业经验、趣味知识、科技头条、设备拆机…… 点击链接,免费下载100G+电子设计学习资料! ...
  • 基于PC与单片机串口通信的温度监控系统程序设计  1.系统介绍  1)本系统主要讲解基于PC与单片机串口通信的温度监控系统程序设计(如图1),上位机采用常用的PC机,下位机使用的是STC89C52...
  • 阮工的单片机编程经验集V2.0:如何做稳定单片机程序 ,阮丁远于20191208 : ================================================================================================ 20191207 : 5V等电源输入时...
  • 上一篇使用USB转串口的方式通过ESP8266wifi模块的方式成功连接上了阿里云,现在就要通过单片机来替换电脑上位机了,这样单片机自动的去调用并发送串口数据更加方便,也更加符合一个产品的开发。板载的传感器有NTC...
  •  首先在本设计中采用的步进电机控制方案为,单片机+16位定时器比较匹配中断(最好是16位及其以上)+步进电机驱动+42步进电机。较高的定时器精度能够实现更好的控制。  在步进电机控制中往...
  • MCS-51单片机的编程语言可以是汇编语言也可以是高级语言(如C语言),高级语言编程快捷,但程序长,占用存储空间大,执行慢;汇编语言产生的目标程序简短,占用存储空间小,执行快,能充分发挥计算机的硬件功能。...
  • TeeChart在VC中实时曲线绘制的应用 一:TeeChart介绍TeeChart Pro是一款提供上百种2D和3D图形风格、40种数学和统计功能、加上无限制的轴和22种调色板组件供选择。提供上百种2D和3D图形风格、40种数学和统计功能、...
  • 关于卡尔曼滤波,看看百度百科上的定义 算法的核心思想是,根据当前的仪器"测量值" 和上一刻的 "预测量" 和 "误差",计算得到当前的最优量. 再预测下一刻的量,里面比较突出的是观点是.把误差纳入计算, 而且分为...
1 2 3 4 5 ... 16
收藏数 311
精华内容 124
关键字:

单片机 打印曲线