標題: 要實現(xiàn)一主四從的話,這下面的單片機代碼有什么錯誤嗎 [打印本頁]

作者: ROWEXI    時間: 2024-6-17 22:21
標題: 要實現(xiàn)一主四從的話,這下面的單片機代碼有什么錯誤嗎
  1. #include <reg51.h>
  2. #include "lcd12864.h" // 適用于12864液晶屏的庫

  3. #define BAUD_RATE 9600

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

  11. // 串口接收中斷
  12. void serial_isr() interrupt 4 {
  13.     if (RI) {
  14.         RI = 0;  // 清除接收中斷標志
  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;  // 定時器1模式2,8位自動重載
  35.     TH1 = 256 - (11059200 / 12 / 32) / BAUD_RATE;
  36.     SCON = 0x50;  // 串口模式1,8位數(shù)據(jù),允許接收
  37.     TR1 = 1;      // 啟動定時器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ā)送到主機
  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;  // 定時器1模式2,8位自動重載
  73.     TH1 = 256 - (11059200 / 12 / 32) / BAUD_RATE;
  74.     SCON = 0x50;  // 串口模式1,8位數(shù)據(jù),允許接收
  75.     TR1 = 1;      // 啟動定時器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ā)送到主機
  96.             i++;
  97.             if (i >= 6) {
  98.                 i = 0;  // 重新開始輸入
  99.                 led7seg_clear();  // 清除顯示
  100.             }
  101.         }
  102.     }
  103. }
復制代碼

作者: lxh2002    時間: 2024-6-18 16:00
485,可以實現(xiàn)1主N從




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1