登录/注册

单片机编程题及答案

更多

以下是几个典型的单片机编程题及其答案(使用 C 语言,适用于 8051 单片机):


题目1:LED流水灯

要求:使用单片机 P1 口连接 8 个 LED(低电平点亮),实现流水灯效果(从左到右依次点亮,循环不断)。

答案

#include <reg51.h>
#include <intrins.h> // 包含循环移位函数

void delay(unsigned int t) {
    unsigned int i, j;
    for(i = t; i > 0; i--)
        for(j = 110; j > 0; j--);
}

void main() {
    P1 = 0xFE; // 初始值:1111 1110(第一个LED亮)
    while(1) {
        delay(500);       // 延时500ms
        P1 = _crol_(P1, 1); // P1值循环左移1位
    }
}

题目2:按键控制LED

要求:P3.2 连接按键(按下为低电平),P1.0 连接 LED。按下按键时 LED 亮,松开后熄灭。

答案

#include <reg51.h>
sbit KEY = P3^2;
sbit LED = P1^0;

void main() {
    while(1) {
        if(KEY == 0)    // 检测按键按下
            LED = 0;    // LED亮(低电平)
        else
            LED = 1;    // LED灭(高电平)
    }
}

题目3:定时器中断闪烁LED

要求:使用定时器0,每隔 50ms 中断一次,在中断函数中翻转 P1.0 的 LED(亮0.1秒灭0.1秒)。

答案

#include <reg51.h>
sbit LED = P1^0;

void timer0_init() {
    TMOD = 0x01;        // 定时器0,模式1(16位定时)
    TH0 = 0x4C;         // 50ms初值(12MHz晶振)
    TL0 = 0x00;
    ET0 = 1;            // 允许定时器0中断
    EA = 1;             // 开总中断
    TR0 = 1;            // 启动定时器
}

void main() {
    timer0_init();
    while(1);           // 主循环等待中断
}

void timer0_isr() interrupt 1 {
    TH0 = 0x4C;         // 重装初值
    TL0 = 0x00;
    LED = !LED;         // 翻转LED状态
}

题目4:数码管显示计数器

要求:用 P0 驱动共阴数码管,实现 0~9 循环计数(每秒加1)。

答案

#include <reg51.h>
unsigned char code SEG_TAB[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; // 0~9段码

void delay(unsigned int t) {
    unsigned int i, j;
    for(i = t; i > 0; i--)
        for(j = 112; j > 0; j--);
}

void main() {
    unsigned char num = 0;
    while(1) {
        P0 = SEG_TAB[num]; // 显示当前数字
        delay(1000);       // 延时1秒
        num = (num + 1) % 10; // 计数+1(范围0~9)
    }
}

题目5:蜂鸣器播放声音

要求:通过 P2.0 控制蜂鸣器发出 1kHz 频率的声音(持续0.5秒,停0.5秒)。

答案

#include <reg51.h>
sbit BEEP = P2^0;

void delay_us(unsigned int us) {
    while(us--) {
        /* 12MHz晶振下约1μs */
        _nop_(); _nop_(); _nop_(); _nop_();
    }
}

void main() {
    while(1) {
        // 发1kHz声音(周期1ms,半周期500us)
        for(int i = 0; i < 500; i++) {
            BEEP = 1;
            delay_us(500);
            BEEP = 0;
            delay_us(500);
        }
        // 静音500ms
        delay_us(500000);
    }
}

注意事项

  1. 需根据实际硬件修改引脚定义(如LED/按键/数码管连接的端口)。
  2. 延时函数精度依赖晶振频率(示例基于12MHz)。
  3. 中断函数需根据单片机型号调整(如8051的定时器0中断号为 interrupt 1)。

如有具体题目需求,可提供详细信息继续解答!

fpga编程单片机编程的区别

FPGA编程与单片机编程的主要区别体现在以下几个方面。

2024-03-14 17:16:12

5代STC全系列单片机自动编程器免冷启动下载USB转TTL

编程器 5代STC全系列单片机自动编程器免冷启动下载USB转TTL

2023-12-19 10:28:54

单片机编程软件有哪些

单片机作为现代智能电子产品的核心元器件,具备可编程的特性,产品想要实现某些功能,除了设计电路之外,还需要带有程序的单片机。

2022-09-23 10:51:50

关于单片机的习题答案

关于单片机的习题答案下载分享。

资料下载 nsf111 2022-05-05 11:30:40

课程设计三十三:基于单片机的电子钟

课程设计题三十三:基于单片机的电子钟

资料下载 佚名 2021-11-25 17:36:01

"试从微型计算机的硬件组成角度谈谈单片机,单片机原理课程作业答案"

单片机原理课程作业题及答案一、 判断题(在

资料下载 佚名 2021-11-24 16:06:07

单片机为什么一直用C语言,不用其他编程语言?只有学过的知道!

单片机为什么还在用C语言编程?答案是:C语言是最适合单片机

资料下载 佚名 2021-11-23 17:51:32

AVR单片机教程--AVR单片机的ADC

AVR单片机教程--AVR单片机的ADC(实用电源技术答案)-该文档为AVR单片机

资料下载 佚名 2021-09-24 15:49:48

单片机编程的特点是什么

单片机为什么还在用C语言编程?答案是:C语言是最适合单片机

2021-12-03 06:07:03

单片机为什么还在用C语言编程

单片机为什么还在用C语言编程?答案是:C语言是最适合单片机

2021-07-14 08:43:11

单片机原理及应用习题答案

单片机原理及应用(C语言版(周国运)习题答案单片机原理及应用(C语言版)思考题与习题答

2021-07-14 07:21:42

单片机为什么还在用C语言编程

单片机为什么还在用C语言编程?答案是:C语言是最适合单片机

2021-07-14 06:21:36

为什么C语言是最适合单片机编程的高级语言

单片机为什么还在用C语言编程?答案是:C语言是最适合单片机

2020-02-03 16:09:04

如何对IAR单片机编程软件进行编译优化

单片机编程软件是单片机开发不可缺少的工具之一,目前市场流通的单片机

2019-10-31 17:15:42

单片机编程器是什么_单片机编程器应用

单片机编程器(Single-chip programmer products ),是一款低成本开发编程器。它能够对Microchip 的大多数闪

2019-10-25 08:55:51

7天热门专题 换一换
相关标签