求助<如和用单片机实现数码管闪烁实时监控>

求一单片机C语言程序,功能是按键按了几下,过了几秒后LED灯亮。例如按了10下按键,过了10秒后LED才亮。_百度知道
求一单片机C语言程序,功能是按键按了几下,过了几秒后LED灯亮。例如按了10下按键,过了10秒后LED才亮。
at89s52 12M的
我有更好的答案
reg51;&for(i=0;&&&&&&&&&while(K1==0)&&&&&&&&&&&&&&&{&&&&&&&&&&&&i++;&&&&&&&&&&&&if(i&=10)&&&&&&&&&&&&&&&&{&&&&&nbsp.h&#include &&&&&&&&delayms(10*1000);//延迟10秒&&&&&i&120;i++)#include &&&&&&&&&&&}&&&&&&&&}&&&&&&&&&&&&&&&}}void delayms(unsigned char ms) // 延时子程序{&&&&&&&&&&while(ms--)&&&&&{&& //ledsbit K1 =P1^4 ;&&&&&&&&&&&&&&& //按键void delayms(unsigned char ms);void main(){&&&&&unsigned char i=0;&&&&while(1)&&&&{&&&&&&&P2_0=0;//点亮led&&&&&&&&&&&&&&nbsp.h&sbit P2_0=P2^0
你这全是乱码,没看懂啊。LED接P3^7按键接P3^2
#include &reg51.h&#include &intrins.h&sbit P2_0=P3^7;&&&&&&&&&&&&&&& //ledsbit K1 =P3^2 ;&&&&&&&&&&&&&&& //按键void delayms(unsigned char ms);void main(){&&&&&unsigned char i=0;&&&&while(1)&&&&{&&&&&&&&while(K1==0)&&&&&&&&{&&&&&&&&&&&&i++;&&&&&&&&&&&&if(i&=10)&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&delayms(10*1000);//延迟10秒&&&&&&&&&&&&&&&&P2_0=0;//点亮led&&&&&&&&&&&&}&&&&&&&&}&&&&}}void delayms(unsigned char ms) // 延时子程序{&&&&&&&&while(ms--)&&&&&{&&&&&&&&for(i=0;i&120;i++);&&&&&}}你现在看看是不是乱码了
虽然没有达到预期效果,还是很感谢你
采纳率:52%
来自团队:
频率为1HZ。如果晶振频率较高,获取一秒的周期,每触发一次:定义一个变量ct;设置中断0为按键触发原理如下,无法实现,就改为10HZ或100HZ,通过计数分频。在每秒周期里,判断是否ct&0,如为真就将ct--,再判断是否ct==0,ct++;设置定时器0
有具体程序吗?这样讲很难理解
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。自己写的在单片机实现的二进制累加,但是感觉自己写的程序太冗长,想了解更多的方法_百度知道
自己写的在单片机实现的二进制累加,但是感觉自己写的程序太冗长,想了解更多的方法
#include&reg52.h&
#define uint unsigned int
sbit D1=P1^0;
sbit D2=P1^1;
sbit D3=P1^2;
void delay ()
for (x=100;x&0;x--)
for (y=1000;y&0;y--);
void main()
D1=1;D2=0;
我有更好的答案
void&while(t--);&}&=1;&&&&&delay();&&&&&&&&&&&&&}&main(){&&&&&P0=0&&&&while(1){&&&&&&&&&&&&&delay(){&nbsp#include&reg52.h&int&t=5000;P0&&unsigned&void&nbsp
采纳率:66%
来自团队:
为您推荐:
其他类似问题
云盘的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。单片机中 (D&&7)|(D&&1) 是什么意思?? int D= ??? 那结果是怎样得到的??_百度知道
单片机中 (D&&7)|(D&&1) 是什么意思?? int D= ??? 那结果是怎样得到的??
我有更好的答案
或&运算二进制
| 11 0011另外左移相当于乘法
移2位乘4 移3位乘8
........上面 3*8=24右移相当于除法
...要看D原来是几 &&表示右移
&&表示左移
| 表示按位&或&运算如 3&&3
3 二进制是
左移3位变成
即24 17&&3
17 二进制是
右移3位变成
采纳率:88%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。&模拟电子学习1&Multisim 12.0 结构和仿真51最小的单芯片系统
时间: 14:38:55
&&&& 阅读:231
&&&& 评论:
&&&& 收藏:0
周围环境:
&&& 系统环境: win7 64位置
&&& 软件平台:Multisim 12.0
&&& 刚毕业,可是模电知识也忘得差点儿相同了,加之自己想搞搞硬件设计。假设仅仅是看模电书。不实践,还是终觉浅。当做兴趣一样学学模电,仿真仿真。Multisim的MCU少,就拿51来练练手。搭建51单片机仿真系统,配合着记录一下书本的知识。
&& 最后使用Multisim 12.0搭建出来的最小系统为图1-1所看到的,通过编敲代码能够使LED1循环闪烁。
&正常来说。51单片机最小系统一般包含单片机、晶振电路、复位电路,我没有加入复位电路,由于仅仅是模电的Hello World而已,先熟悉仿真流程。
1、建立一个目录MCUDemo。存放所创建的project。我这里路径是&F:\Multisim\MCUDemo
2、打开Multisim 12.0 软件
<img alt="技术分享" src="http://img.blog.csdn.net/45091?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXliZWxpZWYzMjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >
& &软件的首界面为图1-4。能够再左边project栏看到默认创建了一个名字为 Design1的Multisimproject
3、 选择File/Save as或者Ctrl&#43;S,保存一下新project。并改名字为 MCU51Demo。存放在第1步创建的目录,如图1-5所看到的,选择“保存”button
保存完后,软件界面截图例如以下
4、放置单片机。选择菜单条的 Place/Component,弹出“Select a component”对话框,选择 Group为 “MCU”,Family为“805x”,Component为“8051”。如图1-7所看到的
5、在图1-7对话框内,选择好器件后,点击右上角的“OK”button,这时能够将选中的8051器件放置在原理图中。当放置好之后(也即点击鼠标左键)。会弹出MCU Wizard创建向导。如图1-8所看到的
6、在图1-8所看到的中。选择工作空间存放的路径,这里为第1步所创建的目录F:\Multisim\MCUDemo\,工作空间名字取名为 MCU51,例如以下图1-9
<img alt="技术分享" src="http://img.blog.csdn.net/47989?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXliZWxpZWYzMjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >
设置好之后,选择 Next
7、这一步是设置MCU的project的类型以及编译语言、名字,Project Type里有Standard和 External Hex File。前者是标准类型(事实上我也没用后者),后者是导入外部HEX文件。在本实验中,我选择“Standard”;编程语言Programming Language里选择“C”。即用C语言; 编译工具Assembler/compiler tool一栏选择默认;project名字Project name设置为“MCU51Debug”。突然感觉起了好多名字。设置好之后如图1-10所看到的
& 设置好之后,选择“Next”
8、接下来是设置是否创建空project。这里按默认&#20540;,直接加入一个main.c文件,如图1-11所看到的
<img alt="技术分享" src="http://img.blog.csdn.net/16098?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXliZWxpZWYzMjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >
选择“Finish”
9、此时Multisim的project结构如图1-11所看到的
<img alt="技术分享" src="http://img.blog.csdn.net/19875?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXliZWxpZWYzMjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >
10、接下来就是要搭建最小系统了。首先搭建晶振电路,先加入晶振,选择菜单条 Place--&Component,在Multisim中,晶振的所属的GROUP为 Misc。Family为CRYSTAL,如图1-12所看到的,选择 晶振“HC-49/U_11MHz”,我没找到12M的。
点击右上角的OK。将其放置在合适的位置,这里放置好之后。我右键旋转了一下,放置好之后的如图1-13
11、然后放置2个30pf的电容,相同的 Place--&Component,电容的Group为Basic,Family为 CAPACITOR,例如以下图1-14所看到的
&&<img alt="技术分享" src="http://img.blog.csdn.net/49336?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXliZWxpZWYzMjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >
点击“OK”,放置在合适的位置,依照相同的方法再放置一个30pF的电容,如图1-15所看到的
12、然后再放置地 DGND,相同的Place--&Component,如图1-16所看到的
放置后的效果如图1-17
到此。晶振电路就搭建好了,如今能够先将这一部分用线Wire连接,顺带着把单片机的地线也连接,连接后如图1-18所看到的
13、放置电源VCC。放置步骤不再啰嗦,如图1-19
放置并连线,如图1-20
到这里事实上,51单片机的最最最小系统已经搭建好了,注意当中31脚也和VCC连接了,这是由于对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部
ROM的0000H開始运行;当接低电平时,复位后直接从外部ROM的0000H開始运行。这一点是刚開始学习的人easy忽略的。
虽然最小系统已经搭建好了,可是也无法通过仿真看有什么效果。这里加入一个LED灯,来显示仿真结果。
14、相同的加入一个LED,如图1-21。器件对话框。这里选择了一个红色LED
放置在电路图合适的位置,如图1-22
15、此时LED还不能直接连接,须要加入一个电阻。保护二极管LED,加入一个1K的电阻,如图1-23
放置并连接,如图1-24
&我LED灯与单片机连接的引脚是P2.0,引脚能够随便连接。接下来就是Ctrl&#43;S保存一下,再编写51程序
16、双击图1-25所看到的的main.c
此时main.c的内容如图1-26所看到的
17、编敲代码,编写完后的main.c内容例如以下图1-27
注意 Multisim里的51头文件是8051.h ,不是 reg51.h
18、保存一下文件,然后选择工具栏的 MCU--&MCU 8051 U1--&Build,编译程序。如图1-28所看到的
<img alt="技术分享" src="http://img.blog.csdn.net/36985?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXliZWxpZWYzMjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >
& 编译的结果例如以下图1-29。此时 0 Errors 0 Warnings
19、回到原理图界面,点击如图1-30红线圈起的開始button。
<img alt="技术分享" src="http://img.blog.csdn.net/39571?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXliZWxpZWYzMjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >
20、此时,按常理来说,LED1应该不停闪烁,可是我的没有闪烁。这个与LED的工作电流有关系,以下改动一下,首先 停止仿真。即菜单条 Simulator--&Stop。然后双击LED1,弹出LED1的属性对话框,例如以下图1-31
将上图的On Current&#20540;“5”该低一些。这里改为 “2”,例如以下图1-32所看到的
点击OK。然后Ctrl&#43;S保存,再点击“開始仿真”button或者 Simulator--&Start,弹出例如以下对话框
<img alt="技术分享" src="http://img.blog.csdn.net/41131?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXliZWxpZWYzMjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >
点击“Yes”。此时能够看到LED1闪烁
&&<img alt="技术分享" src="http://img.blog.csdn.net/56664?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXliZWxpZWYzMjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >
图1-33 &LED灭 & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &图1-34 LED亮
& &到这里,利用Multisim仿真51单片机点亮LED灯的例程差点儿相同完了。中间的一些细节问题还想再写一写。可是到时间去做运动了。不喜勿喷,纯粹就是个人笔记而已。感觉仿佛回到了初中写博客时,...╮(╯▽╰)╭他来上海是不是easy什么
版权声明:本文博主原创文章,博客,未经同意不得转载。
标签:原文地址:http://www.cnblogs.com/gcczhongduan/p/4843885.html
&&国之画&&&& &&&&chrome插件&&
版权所有 京ICP备号-2
迷上了代码!}

我要回帖

更多关于 单片机实现数码管闪烁 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信