用c语言编程三个按键对应点亮三个LED灯的程序,AT89S52单片机,最好有原理图,谢谢。急求

如题所述

  这个也求?用按键点亮LED灯这个是51入门最基础的东西,真心想学的话,买块51的开发板,都带有例程,很快就可以入门的。建议你还是多看看资料把基础的东西学好。推荐你看一下《十天学会单片机和C语言编程》的视频教程对入门还是不错的。
  三路抢答器提供你编程思路(按键扫描方式)参考,程序还是要根据你的硬件电路自己编写。

  端口配置:
  1、选择4个端口作为输入端口连接按键(独立按键,按键一端接单片机端口,另一端接地)。 三路为抢答的按键KEY1、KEY2、KEY3,一路为抢答后复位按键KEY0。
  2、选择3个端口作为输出端口连接LED灯(高电平点亮还是低电平点亮要看你电路设计)对应为LED1、LED2、LED3。
  编程思路:
  1、初始设置一个抢答键按下与否的位标志变量:bit flag = 0;(没有抢答按键按下flag = 0,有抢答按键按下flag = 1)。
  2、主程序按键扫描循环。
  3、按键按下程序KEY1、KEY2、KEY3基本相同。以KEY1为列:
  首先判断是否有抢答键按下(KEY1==0),如有抢答按键按下,延时10ms(消抖),再判断是否KEY1==0,如果KEY1==0说明KEY1抢答按键已经按下,然后再判断是否flag = =0,如果flag = =0,则点亮LED1(其他按键按下的话点亮相应的LED灯)、按键按下标志置“1”(flag = 1)。
  4、复位按键程序判断KEY0按下并且flag = =1时,关闭所有LED灯、按键按下标志复位置“0”(flag = 0)。追问

是不是我给你我的51单片机台子你就能帮我编写程序啊,可不可以帮帮忙?是89s52的工作台子

追答

  51的东西基本都收拾起来了,有段时间没玩了。我提供的思路基本和编程差不多了,这个程序很简单的,你可以先试着编程一下,有问题我可以帮你看看程序。按以上编程可以实现抢答器的基本功能,但可能还会存在问题(比如抢答开始键还没按下,就有人按下抢答按键该怎么解决等等)这都需要你在编程的过程中不断完善,希望你按以上思路自己先做出来,然后再分析完善。
  编程就是要先按思路流程编制出来,然后看哪里可能存在问题,再把程序不断优化,自己解决了问题才有乐趣。
  祝你学习愉快!喜欢玩单片机的话,先把51学好了,建议你再去学习一下STM32,这个比51强大很多。

追问

只是自己写程序有点无从下手的感觉

只是自己写程序有点无从下手的感觉

追答

  最基础的东西都还没有掌握,怎么编制程序?别人的程序也只能作为参考,移植过来还要结合自己的硬件电路来修改。按你要实现的项目有目标的学习,仅学习项目所涉及的内容,学习起来很快的。学习还是要循序渐进的,只有掌握了基础知识,才能灵活运用。
  学习单片机最好的方法就是,按列程自己一步一步编程上开发板实验,从点亮第一个LED灯开始。

追问

灯已经可以了。只不过老师布下任务忽然做按钮。有点蒙

追答

具体任务?完成时间?

追问

1三个按键代替三个抢答器,2序号1抢答成功,led第一位灯亮。3复位后重新亮灯。
要求
硬件连接原理图,
程序设计流程图,
。其实就是简单的三个按钮,控制三个灯,只是程序不知该怎么写

最好今天晚上,明天用

追答

硬件搭建好了没?如果搭建好了,可以帮你写个程序,你自己要调试一下,我51开发板都收拾起来了,没法上机验证,不过程序简单,应该不会有什么大问题。

追问

我才学了一个星期。勉强看得懂硬件原理图。怎么可能会自己搭建啊。要不算了吧。

追答

  呵呵,别灰心,单片机其实很简单的。真心想学51的话(不是仅仅为了完成任务),留个QQ,一步一步教你做。

追问

好啊,319852529我的,以后有问题就要麻烦你了哦。

追答

已加你 Q,有问题的话可以和我联系。为提高你学习单片机兴趣,还是按你任务写了个代码供你学习参考,希望对你有所帮助(不要简单的复制、粘贴,把程序读懂才是收获)。程序都写上来,超出了回复的字数要求,故代码分为两部分上传。

第一部分:

/*********************************************************************************
任务要求:
1、三个按键代替三个抢答器,
2、序号1抢答成功,led第一位灯亮。
3、复位后重新亮灯。
任务实现:
设置抢答键按下与否标志为flag,初始化为flag=0,开始抢答。
如果有抢答键按下,则点亮对应的LED灯,并 抢答键按下与否标志位置1,flag=1,其他
按键再按下无效。
按复位、开始抢答按键,关闭所有LED灯,flag=0,开始抢答。

注:此程序可以满足任务要求,但要作为抢答器使用还需完善。帮你编写此程序不是为了
应付任务,希望以此提升学习单片机的兴趣。

说明:
晶振为12M,如选用其他晶振,要调整一下延时函数(你这个任务不调整问题也不大)。
你可以根据我这个接口定义连线,或者结合你的连线,修改一下端口就可以了。
比如sbit  LED1 = P0^0; 如果你连接的P3的4口就改写成sbit  LED1 = P3^4;
此程序为LED低电平点亮,即LED1=0点亮、LED1=1熄灭。如果你的实验室开发系统为
高电平点亮则修改为 LED1=1点亮、LED1=0熄灭就可以了
我的电脑没装支持51单片机编译器,故只是根据任务需要编程。需要你上Keil编译一下。
看是否可以通过编译。

重要提醒:
交任务时,删除以上注释。
*********************************************************************************/

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-24
你可以用三个独立按键分别控制三个led灯,就可以呀,只要你会编写一个灯的,那就会三个灯的追问

刚开始学。程序有点不明白。你能发一下那个程序吗

追答

这个不是一句二句能说明白的,

追问

那三路抢答器的C语言源程序呢?

相似回答