找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 915|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

要實(shí)現(xiàn)一主四從的話,這下面的單片機(jī)代碼有什么錯(cuò)誤嗎

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1125756 發(fā)表于 2024-6-17 22:21 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. #include <reg51.h>
  2. #include "lcd12864.h" // 適用于12864液晶屏的庫

  3. #define BAUD_RATE 9600

  4. // 串口初始化
  5. void uart_init() {
  6.     TMOD = 0x20;  // 定時(shí)器1模式2,8位自動(dòng)重載
  7.     TH1 = 256 - (11059200 / 12 / 32) / BAUD_RATE;
  8.     SCON = 0x50;  // 串口模式1,8位數(shù)據(jù),允許接收
  9.     TR1 = 1;      // 啟動(dòng)定時(shí)器1
  10. }

  11. // 串口接收中斷
  12. void serial_isr() interrupt 4 {
  13.     if (RI) {
  14.         RI = 0;  // 清除接收中斷標(biāo)志
  15.         char data = SBUF;  // 讀取接收到的數(shù)據(jù)
  16.         lcd12864_write_char(data);  // 顯示在12864液晶屏上
  17.     }
  18. }

  19. void main() {
  20.     uart_init();
  21.     lcd12864_init();
  22.     EA = 1;  // 開啟總中斷
  23.     ES = 1;  // 允許串口中斷

  24.     while (1) {
  25.         // 主循環(huán)
  26.     }
  27. }
  28. #include <reg51.h>
  29. #include "lcd1602.h" // 適用于1602液晶屏的庫
  30. #include "keyboard.h" // 適用于4x4矩陣鍵盤的庫

  31. #define BAUD_RATE 9600

  32. // 串口初始化
  33. void uart_init() {
  34.     TMOD = 0x20;  // 定時(shí)器1模式2,8位自動(dòng)重載
  35.     TH1 = 256 - (11059200 / 12 / 32) / BAUD_RATE;
  36.     SCON = 0x50;  // 串口模式1,8位數(shù)據(jù),允許接收
  37.     TR1 = 1;      // 啟動(dòng)定時(shí)器1
  38. }

  39. // 串口發(fā)送數(shù)據(jù)
  40. void uart_send(char data) {
  41.     SBUF = data;
  42.     while (!TI);
  43.     TI = 0;
  44. }

  45. void main() {
  46.     char key;
  47.     char input[6];
  48.     int i = 0;

  49.     uart_init();
  50.     lcd1602_init();
  51.     keyboard_init();

  52.     while (1) {
  53.         key = keyboard_scan();  // 掃描鍵盤輸入
  54.         if (key != 0xFF) {  // 如果有按鍵按下
  55.             input[i] = key;
  56.             lcd1602_write_char(key);  // 顯示在1602液晶屏上
  57.             uart_send(key);  // 發(fā)送到主機(jī)
  58.             i++;
  59.             if (i >= 6) {
  60.                 i = 0;  // 重新開始輸入
  61.                 lcd1602_clear();  // 清除顯示
  62.             }
  63.         }
  64.     }
  65. }
  66. #include <reg51.h>
  67. #include "led7seg.h" // 適用于LED數(shù)碼管的庫
  68. #include "keyboard.h" // 適用于4x4矩陣鍵盤的庫

  69. #define BAUD_RATE 9600

  70. // 串口初始化
  71. void uart_init() {
  72.     TMOD = 0x20;  // 定時(shí)器1模式2,8位自動(dòng)重載
  73.     TH1 = 256 - (11059200 / 12 / 32) / BAUD_RATE;
  74.     SCON = 0x50;  // 串口模式1,8位數(shù)據(jù),允許接收
  75.     TR1 = 1;      // 啟動(dòng)定時(shí)器1
  76. }

  77. // 串口發(fā)送數(shù)據(jù)
  78. void uart_send(char data) {
  79.     SBUF = data;
  80.     while (!TI);
  81.     TI = 0;
  82. }

  83. void main() {
  84.     char key;
  85.     char input[6];
  86.     int i = 0;

  87.     uart_init();
  88.     led7seg_init();
  89.     keyboard_init();

  90.     while (1) {
  91.         key = keyboard_scan();  // 掃描鍵盤輸入
  92.         if (key != 0xFF) {  // 如果有按鍵按下
  93.             input[i] = key;
  94.             led7seg_display(i, key);  // 顯示在LED數(shù)碼管上
  95.             uart_send(key);  // 發(fā)送到主機(jī)
  96.             i++;
  97.             if (i >= 6) {
  98.                 i = 0;  // 重新開始輸入
  99.                 led7seg_clear();  // 清除顯示
  100.             }
  101.         }
  102.     }
  103. }
復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:237471 發(fā)表于 2024-6-18 16:00 | 只看該作者
485,可以實(shí)現(xiàn)1主N從
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表