
51单片机(Keil5和Proteus)
文章平均质量分 58
主要简单记录一下我的at89c52单片机(与51单片机类似)的学习过程,以简单代码、仿真图、基本原理为例,内容包括流水灯led、按键button、点阵、数码管segment、中断interrupt、定时器timer、计数器counter、串口通信、I2C总线,AD和DA转换等等。
paid星!亦舒!
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
按下不同按键k1-k4,分别实现计数,清零,保存数据,恢复数据的功能(I2C和24C02芯片)
I2C(Inter Interface Circuit)全称为芯片间总线,是目前使用广泛的芯片间串行扩展总线。目前世界上采用I2C总线有两个规范,荷兰飞利浦公司和日本索尼公司,现多采用飞利浦公司I2C总线技术规范,已成为电子行业认可的总线标准。采用I2C技术单片机以及外围器件种类很多,已广泛用于各类电子产品、家用电器及通信设备中。I2C串行总线只有两条信号线,一条是数据线SDA,另一条是时钟线SCL。SDA和SCL是双向的,I2C总线上各器件数据线都接到SDA线上,各器件时钟线均接到SCL线上。原创 2023-12-22 22:05:43 · 1445 阅读 · 0 评论 -
TLC549(8位A/D转换器)实现将输入的模拟电压显示到数码管上
在单片机测控系统中,非电量如温度、压力、流量、速度等,经传感器先转换成连续变化的模拟电信号(电压或电流),然后再将模拟电信号转换成数字量后才能在单片机中进行处理。实现模拟量转换成数字量的器件称为ADC(A/D转换器)。单片机处理完毕的数字量,有时根据控制要求需要转换为模拟信号输出。数字量转换成模拟量的器件称为DAC(D/A转换器)。本章从应用的角度,介绍典型的ADC、DAC芯片与AT89S51单片机的硬件接口设计以及接口驱动程序设计。原创 2023-12-23 14:25:36 · 3848 阅读 · 2 评论 -
TLC2543(12位A/D转换器)实现将输入的模拟电压显示到数码管上
在单片机测控系统中,非电量如温度、压力、流量、速度等,经传感器先转换成连续变化的模拟电信号(电压或电流),然后再将模拟电信号转换成数字量后才能在单片机中进行处理。实现模拟量转换成数字量的器件称为ADC(A/D转换器)。单片机处理完毕的数字量,有时根据控制要求需要转换为模拟信号输出。数字量转换成模拟量的器件称为DAC(D/A转换器)。本章从应用的角度,介绍典型的ADC、DAC芯片与AT89S51单片机的硬件接口设计以及接口驱动程序设计。单片机扩展AD转换。原创 2023-12-23 18:51:04 · 3770 阅读 · 0 评论 -
串行口通信:利用串行口中断配合74LS164移位寄存器,来完成流水灯
一、工作方式的选择:SM0 = SM1 = 0 (同步移位寄存器方式)二、开启中断:总中断EA和串行口中断ES。四、发送中断标志TI和接收中断标志RI。三、interrupt后面数字的选择。TI——发送中断标志位。RI—接收中断标志位。原创 2023-12-21 20:24:37 · 1289 阅读 · 0 评论 -
利用51单片机制作流水灯
使用两种方法实现流水灯原创 2023-12-11 13:54:09 · 456 阅读 · 1 评论 -
四段数码管从左到右显示1-4
/ 位码最好在段码的前面。for (i = 0;i++){ // 显示四个数字。// 这个是1~4的共阴极代码,还有位码,位码给0才亮。原创 2023-12-12 11:00:00 · 925 阅读 · 0 评论 -
使用两个开关,去控制四个led灯
/一个按下,一个松开。state = P1;// 将P1口状态(即开关状态)给state。// 获取低二位的数据,屏蔽高六位。// 开关的四个状态。原创 2023-12-11 21:30:00 · 1775 阅读 · 1 评论 -
LM016L液晶显示屏
/ 第一个参数是写入的位置,第二个是待写入的字符串。void delay(unsigned int n){ // 延时 n ms。原创 2023-12-15 22:23:38 · 2162 阅读 · 0 评论 -
外部中断嵌套,实现不同中断不同花样(外部中断1优先级高)
/ 位操作,外部中断0为低优先级,外部中断1为高优先级。// 局部变量定义要放在函数里的第一行。当PX0 = 0,PX1 = 1时,外部中断1的优先级比外部中断0的优先级高。当PX0 = 1,PX1 = 0时,外部中断1的优先级比外部中断0的优先级低。// 设置外部中断0跳沿触发。// 设置外部中断1跳沿触发。// 开启外部中断0。// 开启外部中断0。// 关闭外部中断0。当PX0和PX1同为0或1时,两者的优先级相同。// 中断后执行的操作。// 中断后执行的操作。原创 2023-12-18 13:18:46 · 847 阅读 · 1 评论 -
使用定时器T0以工作方式1, 延时为1s循环展示数码管0~9
TR0=1,启动定时器/计数器T1计数的必要条件。该位可由软件置“1”或清“0”。TR0=0,停止定时器计数器计数。3. 设置TH0和TL0。原创 2023-12-19 13:44:24 · 2390 阅读 · 1 评论 -
使用计数器0,以工作方式2,每按三次按钮就实现循环自增(0-9)
TH0 = 256 - X // X即为按键多少次。TR1=1,启动定时器/计数器T1计数的必要条件。该位可由软件置“1”或清“0”。一、TMOD选择0x06,计数器,工作方式2(自动重新装载)TR1=0,停止定时器计数器计数。二、开启中断,开启计数器。三、设置按键中断溢出初值。原创 2023-12-20 22:30:02 · 1231 阅读 · 1 评论 -
单个数码管显示0-9
/ 共阴的引用方法 共阳:~seg[i]// 共阴极 0~9 若是想改为共阳极,仅需对引用的数据取反即可~, 而不是0xff-for (i = 0;i++){ // 显示十个数字。原创 2023-12-12 09:00:00 · 1017 阅读 · 0 评论 -
点阵 上下滚动循环显示0和1
for (j = 0;j++){ // 这里改了一下,为了终值,0x00,0x10...0x38 7个所以加7。// 数组最大为索引15,所以为了终值就改成了%// 将这个序列反向引用即可完成从下到上的输出。原创 2023-12-13 19:40:54 · 467 阅读 · 1 评论 -
启用外部中断0,中断后实现一次流水灯
/ 设置外部中断0为跳沿触发。// 防止重复触发外部中断0。// 允许外部中断0中断。// 中断后执行的操作。原创 2023-12-18 12:53:38 · 620 阅读 · 1 评论 -
数码管静态显示1-4
delay(500);// 当延时足够小时,就会有`视觉暂留`P3 = bit_code[i];// 位码最好在段码的前面。// 这个是1~4的共阴极代码,还有位码,位码给0才亮。原创 2023-12-12 19:52:46 · 520 阅读 · 0 评论 -
点阵循环显示0和1
/ 这里跃迁的为八个,换成一个后,进行其他操作即可滚动啦。for (n = 0;n++){ // 让每个数字显示50次,以保证 "视觉暂留"效果。for (i = 0;i++){ // 展示八行。for (j = 0;j++){ // 两个数字。原创 2023-12-13 19:33:31 · 513 阅读 · 1 评论 -
点阵显示数字0
/ 这个数组放最上面,更容易让自己知道目的是什么!可以加code也可以不加。原创 2023-12-12 22:12:31 · 579 阅读 · 0 评论 -
矩阵键盘:实现数码管最右端按键不同显示不同数字0-F
#include "reg51.h"// 数码管共阴极字符数组 0-funsigned char seg_code[16] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};void delay(){ // 延时 n ms unsigned int i = 10000; while (i--);}void display(unsigne原创 2023-12-15 22:21:03 · 1315 阅读 · 0 评论