找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 415|回复: 1
收起左侧

要实现一主四从的话,这下面的单片机代码有什么错误吗

[复制链接]
ID:1125756 发表于 2024-6-17 22:21 | 显示全部楼层 |阅读模式
  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位数据,允许接收
  9.     TR1 = 1;      // 启动定时器1
  10. }

  11. // 串口接收中断
  12. void serial_isr() interrupt 4 {
  13.     if (RI) {
  14.         RI = 0;  // 清除接收中断标志
  15.         char data = SBUF;  // 读取接收到的数据
  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.         // 主循环
  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位数据,允许接收
  37.     TR1 = 1;      // 启动定时器1
  38. }

  39. // 串口发送数据
  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);  // 发送到主机
  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数码管的库
  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位数据,允许接收
  75.     TR1 = 1;      // 启动定时器1
  76. }

  77. // 串口发送数据
  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数码管上
  95.             uart_send(key);  // 发送到主机
  96.             i++;
  97.             if (i >= 6) {
  98.                 i = 0;  // 重新开始输入
  99.                 led7seg_clear();  // 清除显示
  100.             }
  101.         }
  102.     }
  103. }
复制代码
回复

使用道具 举报

ID:237471 发表于 2024-6-18 16:00 | 显示全部楼层
485,可以实现1主N从
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表