知方号

知方号

51单片机的部分学习内容

51单片机的部分学习内容

一、蜂鸣器

#include "reg52.h" typedef unsigned char u8; typedef unsigned int u16; sbit BEEP=P2^5;                        //定义端口 void delay_10us(u166 ten_us){          //延时函数   while(ten_us--); } void main() { u16 i=2000;                            //控制蜂鸣器响的时间 while(i){ while(i--){ BEEP!=BEEP;          //BEEP=0;             //改变频率来改变音调 T=(1/f)*2; delay_10us(100);     //delay_10us(50); }                    //BEEP=1; i=0;                 //delay_10us(150);    //周期为50+150=200us; BEEP=0; } }

二、动态数码管

人的肉眼可见的显示的时间是20ms-50ms,要是将动态数码管显示的间隔的时间小于20ms,人的肉眼将会误以为数字 是同时出现的。 如图一所示,如果想让最左边的LED8显示,则根据右边的图可知,就是等于Y7,即P22P23P24=111;同理,让LED7显示,就是等于Y6,即P22P23P24=011; 还有重要的一点就是消除重影。 比如LED8=0,他会有一个LED8=1的重影,所以让数码管清零以此来消影。

                                                                  图一

#include "reg52.h" typedef unsigned char u8; typedef unsigned int u16; #define SMG_A_DP_PORT P0 //注意这里是P0 sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; u8 gsmg_code[17]={0x3f,0x06,0x5b,0x4f,0x6d,0x7d,0x07,0x7f}; void delay_10us(u16 ten_us){ while(ten_us--); } void smg_display() { u8 i=0; for(i=0;i

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。