利用STM32和C51程序实现流水灯

目录

一.C51编程运行

     1、  安装keil5 C51

二.开发环境搭建

三.STM32编程和运行

      1.程序编写

2.仿真结果

四.总结


安装mdk5软件和stm32包,熟悉mdk开发环境,完成一个stm32的简单的通过寄存器方式,用某一个GPIO端口点亮LED等程序。

一.C51编程运行

     1、  安装keil5 C51

       http://t.csdn.cn/qbRVt

      之前单片机下载过,因此可以借鉴上面链接下载 

    2、新建C51工程

 新建工程,选择‘AT89C51'

然后“file”中新建,保存为main.c。

在main.c中编写以下程序

 

3.编译及仿真

点击魔法棒,选择“output”,勾选 “create hex file” ,生成.hex文件 

然后点击左上角“build"进行编译

编译完成后,打开Proteus8.9,新建工程

完成后,连接电路,并将生成的.hex文件放入

用C51单片机设计串口流水灯电路图通常包括以下几个部分: 1. **电源模块**:连接外部电源(如5V),为单片机供电。 2. **单片机(比如8051STM32)**:作为核心控制器,处理串口通信。 3. **LED灯串**:通常串联起来,每个LED代表一位二进制数。 4. **上拉电阻**:用于驱动LED,并防止电流直接流过串口RX/TX引脚。 5. **74HC595移位寄存器**:用来扩展并行输入到串行输出,方便通过串口控制更多的LED。 电路连接时,将单片机的TX引脚连接到595的D0端口,RX引脚连接到595的SRCLK,然后依次连接595的其余端口到LED灯串。 C51代码示例(基于8051): ```c #include <reg52.h> #include <intrins.h> // LED灯配置,假设有8个LED,共用1个数据线 sbit LED_data = P2^0; // 这里P2.0对应595的D0 void delay_ms(unsigned int ms) { unsigned int i; for(i=ms; i>0; --i) _nop_(); } void send_char(char c) { while(!TI); // 等待发送完成 SBUF = c; // 发送字符 TI = 0; // 清除中断标志 } void main() { TR1 = 1; // 启动定时器1,用于波特率设置 TMOD = 0x01; // 设置定时器1工作模式为模式1 TH1 = (65536 / (2*BAUD_RATE)) - 1; ET1 = 1; // 开启异步接收模式 EA = 1; // 开启全局中断 IT1 = 1; // 开启定时器1中断 while(1) { char input = getchar(); // 从串口接收数据 if(input != '\n') { // 排除非换行符 LED_data = ~input & 0xFF; // 将输入的ASCII码转换为LED状态 for(int i=0; i<8; ++i) { delay_ms(1); // 控制灯光闪烁 LED_data >>= 1; // 移位到下一个LED TR0 = 1; // 刷新LED串 delay_ms(1); TR0 = 0; } } } } ``` 注意:这个例子是一个简化版本,实际应用中可能需要根据具体的硬件配置、串口波特率计算以及LED灯的数量适当调整。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值