找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 906|回复: 1
打印 上一主题 下一主题
收起左侧

通过蓝牙模块将温度数据传递给数码管显示程序咋写

[复制链接]
跳转到指定楼层
楼主
ID:1070602 发表于 2023-4-9 09:16 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
求大佬

1681002946516..jpg (1.3 MB, 下载次数: 41)

1681002946516..jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:13282 发表于 2023-4-15 03:19 | 只看该作者
#include "HT66F0185.h"
#include "LCD.h"
#include "ntc.h"

#define CLED _pa3
#define BEEP  _t1on

#define u8 unsigned char
#define u16 unsigned int

#define bps9600   12  //sys=8m
//#define bps9600   19  //sys=12m

volatile u8 recdata=0;
volatile u8 beeptime=0;

void delay_ms(u16 ms)
{
        while(ms--)
        {
                GCC_DELAY(2000);//编译器自带延时指定个周期,在主频8Mhz下,一个指令周期为0.5us       
                GCC_CLRWDT();
        }
}

void UART_SendChar(u8 data)
{
        if(_txif)                                                //判断发送数据寄存器为空
        {
                _txr_rxr=data;                                //写入TXR--------清标志位TXIF,TXIF=1标志TXR写入TSR,0标志禁止写入TXR中已有数据
                while(!_txif);                                //等待数据写入TSR
                while(!_tidle);                                //等待数据传输结束
        }
}

void pwminit()
{
        _pac7=0;
        _pa7=0;
        _t1cp=1;//设置端口为定时器端口       
        _tm1c0=0x20;//clk=sys/16
        _tm1c1=0xa8;//pwm模式 高电平有效  比较器P匹配清0
        _tm1rpl=125;//f=sys/16/125=4k
        _tm1rph=0;       
        _tm1al=62;//duty=62/125=49.6%
        _tm1ah=0;       
}

void main()
{
        u8 temp;
       
        u16 delaytime=0;
        _wdtc=0xa8;//关闭看门狗
        _csel=0;//
        _cos=1;//
        _acerl=0;//
        //uart init
        _pdc2=0;
        _pd2=1;
        _pdc1=1;
        _pdpu1=1;
        _ucr1=0x80;
        _ucr2=0xc4;
        _brg=bps9600;       
        _ure=1;                        //串口中断使能
        _emi=1;       
        ntcinit();
        lcdinit();
        pwminit();       
        _tbc=0xc4;//时基信号  tbc=fsys/4  溢出周期:t=2^12/tbc=2.048ms
        _tb0e=1;//允许时基中断
        _emi=1;//打开总中断       
        dispnum(0000);       
        while(1)
        {
                if(++delaytime>1000)
                {
                        delaytime=0;
                        temp=GetTemp();
                        dispnum(temp);//显示温度
                        UART_SendChar(temp/10%10+'0');
                        UART_SendChar(temp%10+'0');
                        UART_SendChar(0X0D);
                        UART_SendChar(0X0A);
                }
                if(beeptime>0)
                {
                        beeptime--;
                        BEEP=1;
                }
                else
                {
                        BEEP=0;       
                }               
                delay_ms(1);
        }
}

//时基中断  2.048ms
DEFINE_ISR(tb0,0x1c)
{
        LcdScan();
}

//中断标志位自动清除
DEFINE_ISR(UART_Int,0x2c)
{
        if(_rxif)//RXR寄存器中有数据                                       
        {
                recdata=_txr_rxr;
                if(recdata=='B')
                {
                        beeptime=100;       
                }
        }
}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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