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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

新人求51單片機串口通訊LED程序的編寫思路

[復制鏈接]
跳轉到指定樓層
樓主
ID:734389 發表于 2020-10-2 14:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
30黑幣
單片機89C52RC    現在只會用P0口控制,無法鎖存,相當于數碼管的顯示
要求PO P1口,用16個0/1口串口通訊控制16個LED燈的開關,可單獨開關互不影響。
求思路,想自己編寫

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

使用道具 舉報

沙發
ID:825447 發表于 2020-10-3 20:13 | 只看該作者
首先你可以規定下P0口控制數碼管位選,P1口控制數碼管段選。分別用十六進制賦值。
eg.
{
  P0=0xfe;   //選定位選
  P1=0xff;   //位選8
  delay(1);    //延時幾短造成是錯覺感覺一直亮
}
當然你也可以先編寫一個數組
uchar code table[]={0x3f,0x06,0x5b,0x4f};
然后位選再段選
voidm main()
{
P0=0xfe;
P1=table[num];
delay(1);
}
再加個中斷在,中斷里面再加上num++;就OK了
可以實現變化
我的89c52無法一起控制8個數碼管,只能一個一個控制P0,再輸入不同的P1,加上幾短延時即可。

回復

使用道具 舉報

板凳
ID:734389 發表于 2020-10-3 21:06 | 只看該作者
#include "reg52.h"
#include "uart.h"


void LED_OFF(u8 char_num) //關閉LED
{
        switch(char_num)//對象碼
        {
                 case '1':               
                         P1|=1<<0;
                         UART_SendStr("LED1_OFF \r\n");
                 break;
                 case '2':               
                         P1|=1<<1;
                         UART_SendStr("LED2_OFF \r\n");
                 break;
                 case '3':               
                         P1|=1<<2;
                         UART_SendStr("LED3_OFF \r\n");
                 break;
                 case '4':               
                         P1|=1<<3;
                         UART_SendStr("LED4_OFF \r\n");
                 break;
                 case '5':               
                         P1|=1<<4;
                         UART_SendStr("LED5_OFF \r\n");
                 break;
                 case '6':               
                         P1|=1<<5;
                         UART_SendStr("LED6_OFF \r\n");
                 break;
                 case '7':               
                         P1|=1<<6;
                         UART_SendStr("LED7_OFF \r\n");
                 break;
                 case '8':               
                         P1|=1<<7;
                         UART_SendStr("LED8_OFF \r\n");
                 break;               
  }
}
void LED_ON(u8 char_num) //打開LED
{
        switch(char_num)//對象碼
        {
                 case '1':               
                         P1&=~(1<<0);
                         UART_SendStr("LED1_ON \r\n");
                 break;
                 case '2':               
                         P1&=~(1<<1);
                         UART_SendStr("LED2_ON \r\n");
                 break;
                 case '3':               
                         P1&=~(1<<2);
                         UART_SendStr("LED3_ON \r\n");
                 break;
                 case '4':               
                         P1&=~(1<<3);
                         UART_SendStr("LED4_ON \r\n");
                 break;
                 case '5':               
                         P1&=~(1<<4);
                         UART_SendStr("LED5_ON \r\n");
                 break;
                 case '6':               
                         P1&=~(1<<5);
                         UART_SendStr("LED6_ON \r\n");
                 break;
                 case '7':               
                         P1&=~(1<<6);
                         UART_SendStr("LED7_ON \r\n");
                 break;
                 case '8':               
                         P1&=~(1<<7);
                         UART_SendStr("LED8_ON \r\n");
                 break;               
  }
}

/*指令說明:
*發送 001  打開LED  (001表示:分類碼='0',功能碼='0',對象碼='1' ,分類碼='0'表示LED控制類,功能碼'0'表示關閉LED,對象碼'1'表示第1個LED)
*發送 011  打開LED  (011表示:分類碼='0',功能碼='1',對象碼='1' ,分類碼='0'表示LED控制類,功能碼'1'表示打開LED,對象碼'1'表示第1個LED)

*無結束符,適用于固定長度的指令,本工程設計為固定長度為2個字符的指令
*第一個字符表示類別碼,即是什么分類
*第二個字符代表功能碼,即是什么功能
*第三個字符代表對象碼,即是什么對象
*可以修改長度來增減指令長度,獲得更多嵌套層數功能控制。
*/
void main(void) //主函數掃描方式
{
  UART_Configure(9600);//配置9600波特率(默認無奇偶校驗,1位停止位,8位數據位)
        while(1)
        {
                if(Uart.RX_COUNT>=3) //判斷串口是否接收到3個以上數據,修改此處的數據可改變指令長度
                {
                         switch(Uart.RX_BUFF[0]) //類別碼
                         {
                                 case '0': //LED控制類
                                         switch(Uart.RX_BUFF[1]) //功能碼
                                         {
                                                 case '0':  //功能碼0 :關閉LED
                                                                        LED_OFF(Uart.RX_BUFF[2]);//將對象碼輸入函數中
                                                 break;               
                                                 case '1':  //功能碼1 :打開LED  
                                                                        LED_ON(Uart.RX_BUFF[2]);//將對象碼輸入函數中
                                                 break;                                         
                                         }
                                 break;
                                 case '1': //其他類

                                 break;
                                 case '2': //其他類

                                 break;                                  
                         }                                 
                         
                         //清除數據必須在處理代碼后面
                         Uart.RX_COUNT=0;  //緩存計數清0
                         UART_RX_BUFF_Clear();//清除接收緩存
                }
        }
}
Build target 'Target 1'
compiling 串口通信控制led亮滅.c...
..\..\..\..\串口通信控制led亮滅.c(3): warning C318: can't open file 'uart.h'
..\..\..\..\串口通信控制LED亮滅.C(6): error C141: syntax error near 'char_num', expected ')'
..\..\..\..\串口通信控制LED亮滅.C(8): error C202: 'char_num': undefined identifier
Target not created
出這樣的錯誤求解答
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产91久久久 | 一道本视频 | 国产精品7777777 | 围产精品久久久久久久 | 国产在线精品一区二区三区 | 精品久久电影 | 国产精品久久久久久久午夜片 | 国产专区在线 | 99久久婷婷 | 日韩中文一区二区三区 | 久在线精品视频 | 一级看片免费视频囗交动图 | 欧美一区在线视频 | 在线欧美激情 | 国产一区二区三区在线 | www.99热这里只有精品 | 欧美日韩大片 | 久久久久国产精品免费免费搜索 | 亚洲成人国产精品 | 欧美久久精品 | 日本 欧美 国产 | 欧美一级www片免费观看 | 亚洲成人自拍网 | 91久久精品日日躁夜夜躁欧美 | 一区二区三区影院 | 午夜影院操 | 欧美一级在线观看 | 日韩中文在线视频 | 日韩一区二区黄色片 | 成人精品一区 | 蜜臀久久99精品久久久久久宅男 | 久久这里只有精品首页 | 一级欧美| 欧美精品一区二区三区在线播放 | 区一区二区三在线观看 | 天堂成人av | 久久只有精品 | 日日操夜夜操天天操 | 伊人精品久久久久77777 | 精品综合久久 | 在线观看国产wwwa级羞羞视频 |