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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3421|回復: 2
打印 上一主題 下一主題
收起左側

用兩塊52單片機,第一塊的P1口接BCD數碼管,另一塊的串口線于第一塊的串口線連接。...

[復制鏈接]
跳轉到指定樓層
樓主
用兩塊52單片機,第一塊的P1口接BCD數碼管,另一塊的串口線于第一塊的串口線連接。第二塊單片機
  向第一塊單片機發送0X37,第一塊接收后將數據加0X05后發送到P1口顯示,如何編程實現

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:123289 發表于 2017-2-2 16:03 | 只看該作者
研讀你的教課書,可以完成。
回復

使用道具 舉報

板凳
ID:149451 發表于 2017-2-9 10:06 | 只看該作者

在網上找了兩個程序,“拼接”了下,能滿足你目前提出的要求(P1口每次設置后,需重新啟動proteus)。

//U1串口接收數據加上P1開關設置的值,在P0口用16進制數碼顯示。
//數碼管動態掃描顯示。
#include<reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint  unsigned  int
sbit D1=P2^0;
sbit D2=P2^1;
sbit D3=P2^2;
sbit D4=P2^3;
char n=0;
unsigned char code LED[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
void delay(unsigned char us)        //延遲函數
{
        for(;us!=0;us--);
}
void init()        //初始化函數
{   
    TMOD=0x20;                     //設置定時器T1工作于方式2
SCON=0x50;                     //串口工作方式1,允許接收數據
TH1=0xfd;                      //波特率為2400b/s
TL1=0xfd;
TR1=1;                         //啟動定時器T1
REN=1;                         //允許接收數據
   
D1=0;        //上電默認是高電平,所以先初始化為低電平
    D2=0;
    D3=0;
    D4=0;
}
void Led_display(unsigned int temp)        //數碼管顯示函數
{
        P0=LED[temp%16];        //a的各位數
        D4=1;        //打開D4,顯示
        delay(20);        //延遲,給硬件有響應時間
        D4=0;        //關閉D4
        P0=0xff;        //P2全部為高電平,以免下次顯示出錯,稱為“消隱”
        delay(20);
        P0=LED[temp/16%16];        //a的十位數
        D3=1;        //打開D3
        delay(20);
        D3=0;        //關閉D3
        P0=0xff;
        delay(20);
        P0=LED[temp/256%16];        //a的百位數
        D2=1;        //打開D2
        delay(20);
        D2=0;        //關閉D2
        P0=0xff;
        delay(20);
        P0=LED[temp/4096];        //a的千位數
        D1=1;       //打開D1
        delay(20);
        D1=0;        //關閉D1        
        P0=0xff;
        delay(20);
}
unsigned char receive(void)         //數據接收函數
{
unsigned char dat;
while(RI==0);                   //數據沒有接收完畢時等待接收
RI=0;                           //接收完畢時清零
dat=SBUF;                       //將接收緩沖器中的數據存入dat
return dat;                     //將接收到的數據返回
}
void main(void)
{
unsigned int temp=0;
    init();        //初始化
temp=receive()+P1;              //將接收到的數據送到P1口顯示

while(1)
{
  Led_display(temp);        //數碼管顯示
}
}


//U2程序如下:
//串口通信,接收、發送數據  這是U2的程序
//U2發送數據給U1,U3\U4控制LED顯示P1口輸入數
//根據U2的P1端口開關閉合情況,發送相應數據  
#include <reg51.h>  
   
unsigned char temp=0;  
   
void main()  
{  
     //設置定時器1  
     TMOD=0x20;//8位自動重裝在  
     TH1=0xFD;  
     TL1=0xFD;//波特率為9600  
      
     SCON=0x50;//1位啟動位,8位數據位,1位停止位,REN開啟,可以接收  
      
     TR1=1;//啟動定時器,開始產生波特率  
   
     while(1)  
     {  
         if(temp!=P1)//如果P1口開關發生變化  
         {  
             temp=P1;//賦值  
             SBUF=P1;//寫入數據  
             while(0==TI);//等待發送完成  
             TI=0;//清除中斷標志  
         }  
     }  
}  


回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产免费黄网 | 日韩欧美中文字幕在线观看 | 97精品国产97久久久久久免费 | 午夜精品久久久久久久久久久久 | 国产精品观看 | 日本在线一区二区三区 | 99国产精品久久久久老师 | 欧美日本在线观看 | 久草视频在 | 福利精品在线观看 | 国产一区日韩在线 | 国内精品伊人久久久久网站 | 在线免费观看黄视频 | 欧美综合在线视频 | 91九色在线观看 | 成人国产精品入口免费视频 | 国产高清精品一区二区三区 | 一级毛片视频 | 成人午夜精品 | 中文字幕亚洲在线 | 日韩一区二区三区在线观看 | 欧美另类日韩 | 国产中文一区二区三区 | 午夜天堂精品久久久久 | 91精品国产综合久久久久蜜臀 | 日本三级电影在线观看视频 | 91高清视频在线观看 | 久久久久久久久久影视 | 91在线免费视频 | 狠狠的干狠狠的操 | 香蕉大人久久国产成人av | 欧美白人做受xxxx视频 | 涩涩操| 99久久精品免费看国产四区 | 丝袜天堂 | 亚洲国产一区视频 | 皇色视频在线 | 九九免费观看视频 | 综合天天久久 | 日韩在线观看中文字幕 | 亚洲精品视频免费观看 |