闪烁LED灯的程序_第1页
闪烁LED灯的程序_第2页
闪烁LED灯的程序_第3页
闪烁LED灯的程序_第4页
闪烁LED灯的程序_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-. z.闪烁LED灯软件描述:/*文件描述:使用的是P1.0口,可以用其他的端口,如果用其他的端口只需把程序里的P1.0改成相应的端口,程序实现的功能是单片机通过对端口上下电平的控制实现led灯的亮和灭。赋值1就是高电平,0是低电平,具体赋什么值才亮要结合硬件局部,看led灯的接法。这里是赋0就会亮。*/#includesbit LED=P10;/ 用sbit 关键字 定义 LED到P1.0端口, /LED是自己任意定义且容易记忆的符号void Delay(unsigned int t); /函数声明 c语言有void main (void)while(1)LED =1; /P1.0口置1

2、led灯灭Delay(50000); /延时50ms 更改数可以更改延时时间LED=0;/ P1.0口置0 led灯亮Delay(50000); /延时50ms 更改数可以更改延时时间void Delay(unsigned int t)/延时程序 t的值代表几us while(-t);程序编译过程:下面就建立一个工程:点击project菜单下的new project按钮,出现下列图然后键入文件名自己起名字比方 流水灯。点击保存按钮。选择单片机型号 一般选择ATMEL下面的AT89C52.点击确定就好了。之后就需要在工程里面添加文件了就是写程序代码的地方。点击file菜单下的new按钮就建立了新

3、文件;键入程序 点击保存按钮。键入文件名但必须以 .c为后缀,因为你写的是c语言文件。如果是汇编就是.asm了。一般用c语言写,这里我就用test1.了,点击保存。然后就是设置了。右击target1,选择第一项的options for target target1。选择output在create HE*前勾上对号。点击确定。之后就是添加文件了,就是把c语言文件添加到工程里面去。右击上图灰色的局部,再左击Add files to source group 1,点击文件名te*t1.c,点击Add;文件添加完毕,关闭对话框就可以了。下面就是编译了,就是安从左到右的3个按键即可。创立了he*文件,这

4、个文件就是烧写到单片机的文件;下面就是烧写程序了。翻开烧写程序选择单片机型号一般不用该默认c52.翻开需要下载的文件即点击open file按钮;选择下载的文件;点击翻开即可;选择端口。一般这个电脑就是1.点击下载即可。给单片机上电;硬件描述:硬件局部就是一个led灯。但是需要串联一个限流电阻,如果只参加一个led灯就是烧掉,限流电阻的选择要适宜,这个自己百度看看 很简单的在这里就不必说了,应该串联个500R左右的电阻,因为办公室里没有所以就用了2个1K的并联。我建议同学自己焊下电路板,然后下载上程序看看。下载后的状态:定时器/*文件描述:这个led口用的也是是P1.0口,可以用其他的端口,如

5、果用其他的端口只需把程序里的P1.0改成相应的端口,这个程序实行的功能是利用定时器0的计数功能实现上面闪烁led灯的功能。*/#include sbit LED= P10;unsigned char Time=0; /计时次数int main(void)LED =1; /P1.0口置1 熄灭led灯TMOD=0*01; /定时器0工作方式1TH0=0*db; /T0赋初值,延时0.01秒 赋值有计算公式TL0=0*ff; ET0=1; /开定时器0中断EA=1;/开总中断TR0=1; /开场计数while(1) /等待定时器中断 什么也不做 相当与while1;void timer0_int(

6、) interrupt 1 /定时器0中断TH0=0*db; /T0赋初值,延时0.01秒 如果不赋值就会从0计数 TL0=0*ff;Time+;if(Time=100) /判断是否计时到1秒Time=0; LED = LED;与上面的一样,在这里就不必多说了。串口中断/*文件描述:串口实现的功能就是对串口进展测试,单片机发送字符到电脑,在由电脑发送回来,*/#include void main() TMOD= 0*20; /定时器工作方式2 TH1=0*FD; /有公式 TL1=0*FD; TR1=1; SCON= 0*50;/串口工作方式1 EA = 1; /*翻开总中断*/ ES = 1

7、; /*翻开串口中断*/ while(1); /等待串口中断 void UART_SER (void) interrupt 4 /串行中断效劳程序 unsigned char Temp; /定义临时变量 if(RI) /判断是接收中断产生 RI=0; /标志位清零 Temp=SBUF; /读入缓冲区的值 SBUF=Temp; /把接收到的值再发回电脑端 if(TI) /*如果是发送标志位,清零 应该是先接收了数据才可以发送 如果先发送的话没有数据直接清零*/ TI=0; 程序的编译跟烧写跟上面的流水灯的类似在这不必在说了。请同学们仿照前面的例子。下面的是将程序烧写在单片机上能实现什么样的功能。

8、因为发送数据我们无法直接看到所以借助一个串口调试程序。上面的设置就默认这样就可以注意波特率设定的值必须跟你程序中设定的那个波特率一致,否则发不过去。因为程序都是9600所以默认为9600.还有串口号根据情况可以改变。在下方写入你要发送的字符看看上面的方框收到什么。写入a得到了E1.这是为什么呢。这是因为接收区设置为十六进制显示。所以得到的是a的十六进制代码值。串口查询/*文件描述:对串口进展测试,单片机发送字符到电脑,在由电脑发送回来*/#include int main(void) /主函数 unsigned char Temp; /定义变量用来发送或接收数据 TMOD=0*20; /定时器T1使用工作方式2 TH1=253; /设置初值 TH0=253; TR1=1; /开场计时 定时器不能开中断 PCON=0*00; /SMOD=0; SCON=0*50; /工作方式1,波特率9600bit/s,允许接收 TI=1; /TI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论