
A07基于51单片机汇编LED台灯Proteus设计
一、设计任务
使用51单片机设计一个开关灯。
1、使用汇编语言设计。
2、使用1个按键开关设计控制LED,当按键按下打开LED,按键断开就关闭LED。
一个按键、一个LED,构成最精简的"台灯"模型。这个设计是学位操作和判转指令的好例子。
二、仿真演示

仿真里按下按键LED点亮,松开按键LED熄灭,和真实台灯开关的逻辑一样。
程序在Keil里用汇编编写,编译生成hex后加载到Proteus的51芯片里运行。工程截图如下:

实物效果:

三、关于程序
整个程序只有七行,但用到了汇编里最常用的两条指令:
`
START: JB P1.7,LIG ;如果开关闭合,则点亮LED
CLR P2.0 ;否则熄灭LED
SJMP START
LIG: SETB P2.0
SJMP START`
1、JB判转指令怎么读
JB是"位判转"指令,意思是:检测某一位,是1就跳转,不是1就顺序执行。
| 检测结果 | 执行路径 | LED结果 |
| P1.7=1(按键断开) | 跳到LIG,执行SETB P2.0 | 点亮 |
| P1.7=0(按键闭合) | 顺序执行CLR P2.0 | 熄灭 |
按键接在P1.7口线上,LED接在P2.0口线上。程序不停循环扫描P1.7的电平,实时决定P2.0的状态,这就是"扫描式"开关控制。
2、为什么看不到延时
这个程序里没有任何DELAY,每圈循环只执行三四条指令,几个微秒就转完一圈。也就是说P1.7的电平每时每刻都在被检测,按键响应是即时的。
好处是响应快;代价是按键的机械抖动没有过滤。按键按下和松开的瞬间,触点会连续通断几毫秒,高速循环下这点抖动会被如实反映出来。对台灯来说肉眼几乎察觉不到,但如果以后做"按一下计数一次"的设计,就必须加消抖延时。
3、占用的口线
| 口线 | 接什么 | 方向 |
| P1.7 | 按键开关 | 输入 |
| P2.0 | LED | 输出 |
如果想把按键或LED换到别的口线,只改程序里这两处的位地址即可,电路其他部分不用动。
特别注意: 如果发现亮灭逻辑和预期相反,检查LED是共阳极还是共阴极接法,把SETB和CLR对调即可。
四、特别注意
特别注意: 仿真跑起来灯不亮,先检查压缩包是否解压完整;Proteus用7.8或8.6版本;改了汇编源码要重新编译生成hex再跑仿真。
五、资料下载
付费后获取下载链接,直接下载到电脑上,然后解压即可!每个链接前面都配了二维码,手机扫码可以直接跳转。
/

