久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2989|回復: 1
收起左側

VB上位機與avr單片機18b20下位機程序

[復制鏈接]
ID:556863 發表于 2020-11-18 11:42 | 顯示全部樓層 |閱讀模式
51hei.png
程序:
#include <iom16v.h>                        //包含型號頭文件
#include <macros.h>                        //包含"位"操作頭文件
#include <stdio.h>
#include <DS18B20.h>
#define uchar unsigned char        
#define uint  unsigned int
#define SEGLK PA3        //數碼管段選鎖存器控制端
#define BITLK PA4        //數碼管位選鎖存器控制端
#define LEDLK PA2        //LED鎖存器控制端

const SEGMENT[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
                           0x7f,0x6f};
/*******************************************
函數名稱: Delayms
功    能: 延時指定毫秒(8M晶振)
參    數: MS--延時的毫秒數
返回值  : 無
********************************************/
void Delayms(uint MS)                  
{
uint i,j;
for( i=0;i<MS;i++)
for(j=0;j<1141;j++);        //1141是在8MHz晶振下,通過軟件仿真反復實驗得到的數值
}
/*******************************************
函數名稱: Board_init
功    能: 初始化實驗板,關閉全部功能
參    數: 無
返回值  : 無
/********************************************/
void Board_init(void)
{
        DDRA=0xFF;        //將四個IO口全部配置為輸出
        DDRB=0xFF;
        DDRC=0xFF;
        DDRD=0xFF;

        SPCR=0x00;        //還原SPI口,使其為正常端口        

        PORTA|=BIT(PA6);//(BEEP)關閉蜂鳴器
        PORTC&=~BIT(PC6);          //(RELAY)初始化繼電器為常閉連接狀態        
        PORTA&=~BIT(PA1);        //關閉SPI總線DA
        PORTB=0xFF;        //關閉LED
        PORTA|=BIT(LEDLK);        //鎖存數據,使LED熄滅
         Delayus(5);               
         PORTA&=~BIT(LEDLK);
        
        PORTB=0x00;           //輸出段選
         PORTA|=BIT(SEGLK);                  
         Delayus(50);                          
         PORTA&=~BIT(SEGLK);            
         
         PORTB=0xFF;           //輸出位選
         PORTA|=BIT(BITLK);                  
         Delayus(50);                                   
         PORTA&=~BIT(BITLK);           
        
        PORTD=0xFF;
        PORTA|=BIT(PA7);
        Delayus(50);
        PORTA&=~BIT(PA7);

        
}

/*******************************************
函數名稱: One_smg_display
功    能: 指定的數碼管顯示指定的內容
參    數: data--顯示的內容(0-15)
                    number--指定的數碼管(1-6)
返回值  : 無
/********************************************/
void One_smg_display(uchar data,uchar number)
{
PORTB|=0x3F;                           //輸出位選
PORTA|=BIT(BITLK);                   //更新位選
Delayus(50);                           //調整時序
PORTA&=~BIT(BITLK);           //鎖存位選

PORTB=SEGMENT[data];           //輸出段選
PORTA|=BIT(SEGLK);                   //更新段選
Delayus(50);                           //調整時序
PORTA&=~BIT(SEGLK);           //鎖存段選

number=~BIT(number-1);           //調整位選(指定時是1~6,而操作的時候是0~5)
PORTB=number;                           //輸出位選
PORTA|=BIT(BITLK);                   //更新位選
Delayus(50);                                   //調整時序
PORTA&=~BIT(BITLK);           //鎖存位選
}

/********************************************/
void uart0_init(void)
{
  UCSRB = 0x00;  //禁止發送
  UCSRA = 0x02;  //倍速
  UCSRC = 0x06;  //8位數據位,1個停止位
  UBRRL = 0x67;  //波特率為9600
  UBRRH = 0x00;
  UCSRB = 0x18;  //允許發送
}
/********************************************************/
void uart0_send(uchar i)  //發送一個字符
{
  while(!(UCSRA&(1<<UDRE))); //等待發送緩沖區為空
    UDR=i;                    //發送數據
  while(!(UCSRA&(1<<TXC)));                 //等待發送完畢
    UCSRA|=1<<TXC;                   //清除發送完畢狀態位
}
/*******************************************/
void str_send(char *s) //發送一串字符
{
while(*s)
{
  uart0_send(*s); //字符串未結束則繼續發送
  s++;
}
}
/*********************************************/
uchar uart0_receive(void) //接收一個字符
{
  while(!(UCSRA&(1<<RXC)));//等待接收數據
  return UDR;               //返回數據
}

/*******************************************
函數名稱: main
功    能: 6個數碼管循環滾動顯示指定的內容
參    數: 無
返回值  : 無
/********************************************/
void main(void)
{         uint t=0;
     uchar temh_d,teml_d,temm_d;
         //uchar RDATA[3];
         uart0_init();
         Board_init();           //初始化開發板
         while(1)
         {
         
          t=Read_temp()*0.625;//得到轉換溫度值
      Delayms(2);
          temh_d=t/100;
          temm_d=(t/10)%10;
          teml_d=t%10;
         
           
                //uart0_send(temh_d+48);
                //Delayms(1);
           // uart0_send(temm_d+48);
                //Delayms(1);
            uart0_send(temh_d+48);
                uart0_send(temm_d+48);
                str_send(".");
                uart0_send(teml_d+48);
                uart0_send(32);
                uart0_send(32);
                uart0_send(32);
                //Delayms(1);
                //str_send(" ");
               
          One_smg_display(teml_d,6);
          Delayms(2);
          One_smg_display(temm_d,5);
          Delayms(2);
          One_smg_display(temh_d,4);
          Delayms(2);
        
         }
}

VB上位機與18b20下位機.zip

32.79 KB, 下載次數: 22, 下載積分: 黑幣 -5

回復

使用道具 舉報

ID:328014 發表于 2020-11-29 03:18 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久草网址 | 91精品国产91久久久久久最新 | 中文字幕国产第一页 | 国产精品久久国产精品 | 欧美视频精品 | 国产精品v | 色婷婷综合久久久中文字幕 | 一级片av| 久久一区二区三区四区 | www.国产精 | 一区二区免费在线观看 | 日韩中文视频 | 欧美一级黄色免费 | 亚洲国产欧美一区二区三区久久 | 日韩精品一区二区三区在线 | 国产黄色网址在线观看 | 中文字幕av网址 | 欧美色性 | 久久这里只有精品首页 | 亚洲一区二区在线免费观看 | 日韩网站免费观看 | 亚洲精品视频一区 | 亚洲视频一区 | 亚洲免费精品一区 | 一本岛道一二三不卡区 | 精品久久香蕉国产线看观看亚洲 | 午夜男人视频 | 国产美女黄色片 | 精品久久久久久久人人人人传媒 | 欧美日本亚洲 | 国际精品久久 | 欧美黄色片在线观看 | 91视频入口| 在线观看视频一区二区三区 | 国产一区二区在线免费 | 天天操夜夜操 | 97精品超碰一区二区三区 | 国产黄色精品 | 爽爽免费视频 | 久久久久久999 | 成人在线视频免费播放 |