标题: 求各位大佬帮帮小弟啦 3个单片机问题 [打印本页]

作者: KESSEN    时间: 2017-8-11 09:27
标题: 求各位大佬帮帮小弟啦 3个单片机问题
C求各位大佬帮帮小弟啦~


现在我有三个问题:
1.如何用AT89c52控制三个led小灯用不同频率闪烁?我用定时器只能做到两个,第三个定时器我不会开

2.如何用AT89C52做一个按键控制LED1602A显示的程序,这个我是纯小白,学的时间太短了。。
3.程序我烧到单片机里后,如何和三个led小灯连接到一起才不会吧单片机烧掉。。。




感谢各位大佬!!!

作者: yzwzfyz    时间: 2017-8-11 10:16
太浪费资源了,一个定时器就可以搞定了
作者: KESSEN    时间: 2017-8-11 14:13
yzwzfyz 发表于 2017-8-11 10:16
太浪费资源了,一个定时器就可以搞定了

大佬可不可以详细地说一下呢~
我是新手,搞不太懂
作者: 哈2哈哈哈哈哈1    时间: 2017-8-11 17:15
你可以调PWM
作者: hange_v    时间: 2017-8-11 17:56
只用一个定时器计数,再来三个变量每次计数器满了就加一,三个变量达到设定数值(三个设定数值由你的频率决定)就切换灯的状态。第二个问题写好1602的驱动,根据按键显示值。第三个用三极管,单片机IO口接基极。
作者: 小白@    时间: 2017-8-11 18:01
 太浪费资源了,一个定时器就可以搞定了
作者: 小白@    时间: 2017-8-11 18:01
第三个用三极管,单片机IO口接基极
作者: zl2168    时间: 2017-8-11 19:43
一个定时器就可以
作者: hange_v    时间: 2017-8-12 22:02
看我以前传的51自学笔记,里面有1602例程,我自己写的。http://www.51hei.com/bbs/dpj-85237-1.html
作者: 大叔很可爱    时间: 2017-8-12 22:29
用一个定时器,每0.1毫秒加一,对三个小灯设定一个值,用if函数控制,低于相应的值就高电平,超过就低电平。
作者: hawklm    时间: 2017-8-12 22:59
开一个定时器,每10毫秒三个小灯的计数值累加一次,然后判断计数值,到了阈值就变化一次(亮灭)
作者: 微笑达    时间: 2017-8-12 23:38
论坛大神多,帮你顶帖等待。
作者: dzbj    时间: 2017-8-12 23:48
1. 楼上前辈都回答了 同上
2. 网上有很多手把手的教材 你下一个跟着做就行了 我就是这么学的
3. 简单的可以从vcc分别串联3个电阻到3个led 每个10K 这样一个led的电流也就几毫安 三个一起也不会烧片子 复杂一点的就要加驱动 用三极管 mosfet或者2303都可以
作者: 驱蚊灯    时间: 2017-8-13 05:53
//液晶1602(带字库)显示测试程序// #include<reg51.h> #define uint unsigned int #define uchar unsigned char        //宏定义 uchar code table[]=" LU LIE QI "; uchar code table1[]="WWW.LAOWANG.COM"; sbit LCD_RS=P2^6;          //位定义 sbit LCD_RW=P2^5; sbit LCD_EN=P2^7; uchar num;           //定义全局变量 //延时程序===1ms// void delay_1ms(uint mas) {         uint i,j;         for(i=0;i<mas;i++)         for(j=0;j<110;j++); } void write_com(uchar com)  //  写命令 {         LCD_RS=0;         LCD_RW=0;         P0=com;         delay_1ms(5);         LCD_EN=1;         delay_1ms(5);         LCD_EN=0; } void write_data(uchar dadt) //写数据 {         LCD_RS=1;         P0=dadt;         delay_1ms(5);         LCD_EN=1;         delay_1ms(5);         LCD_EN=0;  } void init()  //初始化函数 {         LCD_EN=0;         write_com(0x38);        //显示模式设置16X2,5X7点阵,8位数据口         write_com(0x0f);        //开显示、开关标、关标闪烁         write_com(0x06);        //关标加一         write_com(0x01);        //清屏         write_com(0x80+0x10);        //数据指针位置         } //=====主函数======// void main() {         init();                  for(num=0;num<10;num++)         {                         write_data(table[num]);                         delay_1ms(20);                                          }         write_com(0x80+0x50);         for(num=0;num<15;num++)         {                         write_data(table1[num]);                         delay_1ms(20);                                          }         for(num=0;num<16;num++)         {                 write_com(0x18);                 delay_1ms(500);                 }         while(1); }




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1