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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機+8255課程設計遇到的問題,求助!

[復制鏈接]
跳轉到指定樓層
樓主
遇到兩個問題    1.擴展口的PA口無法使用,我設定的程序是當P2.0口為低電平時將PA口循環輸出信號經過光耦和驅動電路使得電機轉動,但是無法實現。已經定義了這些不知道缺少了什么;

#include<reg51.h>
#include<absacc.h>
#include<intrins.h>
#define PA XBYTE[0x0000]#define PB XBYTE[0x0001]
#define PC XBYTE[0x0002]
#define COM XBYTE[0x0003] //PA、PB、PC端口及命令端口地址定義
COM=0x80;//方式0,PA口與PB口均為輸出
2.P2口接了按鈕連了下拉電阻想按下按鈕使得P2口的電平變為低電平,也無法做到。
單片機小白,求助大神!

111.png (71.9 KB, 下載次數: 47)

111.png

2222.png (57 KB, 下載次數: 35)

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

使用道具 舉報

沙發
ID:402376 發表于 2018-9-27 18:23 | 只看該作者
本帖最后由 LonelyLiar 于 2018-9-27 18:25 編輯

還有LCD總是顯示busy,無法顯示..
回復

使用道具 舉報

板凳
ID:402376 發表于 2018-9-27 18:25 | 只看該作者
#include<reg51.h>
#include<absacc.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define PA XBYTE[0x0000]
#define PB XBYTE[0x0001]
#define PC XBYTE[0x0002]
#define COM XBYTE[0x0003] //PA、PB、PC端口及命令端口地址定義
#define motor1 PA
#define        motor2 PB
sbit RS = P3^5;        //液晶引腳定義
sbit RW = P3^3;
sbit EN = P3^4;
sbit Xqj=P2^0;   //電機正轉,X軸前進按鈕
sbit Yqj=P2^1;   //電機正轉,Y軸前進按鈕
sbit Xht=P2^2;   //電機反轉,X軸后退按鈕
sbit Yht=P2^3;   //電機反轉,Y軸后退按鈕
sbit jiting=P2^4;//急停按鈕
sbit dula=P2^6;         
sbit wela=P2^7;         
bit flag1=0;     //x軸正反轉標志位
bit flag2=0;     //Y軸正反轉標志位  
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0xf8,0x80,0x90};//共陽極數碼管編碼
uchar code a1[]={0xf2,0xfa,0xf8,0xf9,0xf1,0xf5,0xf4,0xf6}; //八拍正轉
uchar code a2[]={0xf6,0xf4,0xf5,0xf1,0xf9,0xf8,0xfa,0xf2}; //八拍反轉
uchar temp1=0000,temp2=0000,temp3=0000,temp4=0000;
void delayms(uchar x)//延時程序
{                                                                                               
  uchar c,j;
  for(c=x;c>0;c--)
   for(j=123;j>0;j--);
}

/***********LED寫入命令函數***********/
void write_com(uchar com)
{
  //while(LCD_Check_Busy()); //忙則等待
  RS=0;
  P1=com;
  _nop_();
  RW=0;
  EN=1;
  _nop_();
  EN=0;
  _nop_();
}
/**********LED寫入數據函數**********/
void write_dat(uchar chr)
{
  //while(LCD_Check_Busy()); //忙則等待
  RS=1;
  P1= chr;
  _nop_();
  RW=0;
  EN=1;
  _nop_();
  EN=0;
  _nop_();
}
void write_shuzi(uchar dat)
{  
  uchar t;
  t=dat+'0';
  //while(LCD_Check_Busy()); //忙則等待
  RS=1;
  RW=0;
  P1=t;
  _nop_();
  EN=1;
  _nop_();
  EN=0;
}

void GotoXY(uchar x,uchar y)   
{   
   if(y==0)                         //第一行
     write_com(0x80|x);               //寫地址
   if(y==1)                         //第二行
     write_com(0x80|(x+0x40));   
}
/*****LED初始化函數******/
void LCD_Init()
{
          RW=0;
        dula=0;         //關閉數碼管顯示
        wela=0;         //關閉數碼管顯示
   write_com(0x38); /*顯示模式設置*/
   delayms(5);
   write_com(0x06);/*顯示光標移動設置*/
   delayms(5);
   write_com(0x0C); /*顯示開及光標設置*/
   write_com(0x01);  /*顯示清屏*/
   }


void dispose()
{
  uchar a,b,bai1,shi1,ge1,bai2,shi2,ge2;
  a=(temp1-temp3)/8*75/36*5;
  b=(temp2-temp4)/8*75/36*5;
  bai1=a%1000/100;
  shi1=a%100/10;
  ge1=a%10;
  bai2=b%1000/100;
  shi2=b%100/10;
  ge2=b%10;
  write_shuzi(bai1);
  GotoXY(7,1);
  write_shuzi(shi1);
  GotoXY(8,1);
  write_shuzi(ge1);
  GotoXY(9,1);
  write_shuzi(bai2);
  GotoXY(7,2);
  write_shuzi(shi2);
  GotoXY(8,2);
  write_shuzi(ge2);
  GotoXY(9,2);
  write_dat('X');
  GotoXY(4,1);
  write_dat(':');
  GotoXY(5,1);
  write_dat('Y');
  GotoXY(4,2);
  write_dat(':');
  GotoXY(5,2);
  if(a<0)
  {
    write_dat('-');
    GotoXY(6,1);
  }
  if(b<0)
  {
    write_dat('-');
    GotoXY(6,2);
  }
}
void key()
{
  if(Xqj==0)
  {
   delayms(5);
   if(Xqj==0)
   {
     flag1=1;
     while(Xqj==0);
   }
  }
  if(Xht==0)
  {
    delayms(5);
    if(Xht==0)
    {
      flag1=~flag1;
      while(Xht==0);
    }
  }
  if(Yqj==0)
  {
    delayms(5);
    if(Yqj==0)
    {
      flag2=1;
      while(Yqj==0);
    }
  }
  if(Yht==0)
  {
    delayms(5);
    if(Yht==0)
    {
      flag2=~flag2;
      while(Yht==0);
    }
  }
}
void qudong()
{
if(flag1==1)
{
  uchar i;
  for(i=0;i<8;i++)          
  {
    if(jiting==0)
    {break;}
    PA=a1[i];
    temp1++;
  }
  i=0;                                 
}
if(flag2==1)
{
   uchar j;
  for(j=0;j<8;j++)          
  {
    if(jiting==0)
    {break;}
    PB=a1[j];
    temp2++;
  }
  j=0;                                 //八拍正轉子程序
}
if(flag1==0)
{
  uchar k;
  for(k=0;k<8;k++)          
  {
    if(jiting==0)
    {break;}
    if(Xht==0)
    {PA=a2[k];}
    temp3++;
  }
  k=0;               
}
if(flag2==0)               
{          
  uchar u;
  for(u=0;u<8;u++)
  {
    if(jiting==1)
    {break;}
    if(Yht==1)
    {PB=a2[u];}
    temp4++;
  }                                           //八拍反轉轉子程序
  u=0;
}
}
void main()
{
COM=0x80;//方式0,PA口與PB口均為輸出
  Xqj=1;  
  Yqj=1;   
  Xht=1;   
  Yht=1;   
  jiting=1;
while(1)
{
  key();
  dispose();
  qudong();
}
}
這是程序
回復

使用道具 舉報

地板
ID:387733 發表于 2018-9-28 07:22 | 只看該作者
地址鎖存器74S373的輸入端順序接反了,CPU的 P0.0~P0.7 依次連接了 373的 D7~D0,所以8255的地址全錯了。把連線換過來,或者把地址定義改一下:
#define PA XBYTE[0x0000]
#define PB XBYTE[0x0080]
#define PC XBYTE[0x0040]
#define COM XBYTE[0x000C]
這樣也是可以的
回復

使用道具 舉報

5#
ID:402376 發表于 2018-9-28 15:46 | 只看該作者
sxhwdz 發表于 2018-9-28 07:22
地址鎖存器74S373的輸入端順序接反了,CPU的 P0.0~P0.7 依次連接了 373的 D7~D0,所以8255的地址全錯了。把 ...

謝謝       這個問題解決了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 视频一区在线观看 | 日日干日日操 | 91免费电影| 日韩高清av | 手机av在线 | 国产一区二区精 | 亚洲一区中文字幕在线观看 | 国产网站在线免费观看 | 蜜月va乱码一区二区三区 | 久久精品日 | 日韩视频 中文字幕 | 免费一区 | 久久一二 | 午夜影院中文字幕 | 色综合久久久久 | 国产精品国产三级国产aⅴ入口 | 午夜久久久 | 国产一区二区三区在线 | av一区在线观看 | 人人艹人人爽 | 二区视频 | 热久久999| 91在线一区二区三区 | 免费成人av网站 | 日韩欧美在线观看 | 99视频免费看 | 亚洲人成人一区二区在线观看 | 成人精品系列 | 欧洲色综合 | 男女羞羞网站 | 亚洲一区二区 | 国产乱码精品1区2区3区 | 荷兰欧美一级毛片 | 美人の美乳で授乳プレイ | 欧美999| 综合第一页 | 喷水毛片| 国产精品揄拍一区二区久久国内亚洲精 | 国产精品无码永久免费888 | 一区二区中文字幕 | 男女视频在线观看 |