Tự học 8051: Bài6 - Led đơn & Nút bấm

Поділитися
Вставка
  • Опубліковано 1 лют 2025

КОМЕНТАРІ • 86

  • @meomeo-qm4om
    @meomeo-qm4om 9 років тому

    thầy rất tuyệt ! em cám ơn thầy và mọi người cám ơn thầy mong thầy sẽ có thêm những video cống hiến hay như vậy ! thank you ! forever....

  • @congluccreator
    @congluccreator 9 років тому

    hay quá thầy ơi. trước kia e học assemply nhưng nhờ video này mà thấy keil c dễ hơn nhiều. thank thầy!

  • @truongminhhoa5031
    @truongminhhoa5031 3 роки тому

    Hay lắm thầy ơi. Thầy làm về điều chỉnh tần số out của 8051 bằng biến trở đi thầy. Video của thầy con học được rất nhìu

  • @hungang5257
    @hungang5257 4 роки тому

    Thầy ơi cho e hỏi chỗ đèn sáng từ trái qua phải sao mình k dùng dịch bit cho n gọn ạ

  • @TonFarmer
    @TonFarmer 5 років тому

    Thầy cho em hỏi . Em muốn làm 8 con led . Xếp từ 1-8 . Chạy theo 4 chương trình led1-8 . Led2-7.led3-6. Led4-5 . Sáng từ ngoài vào trong rồi sáng từ trong ra ngoài rồi tắt dần .
    Thì dùng ic nào và lắp mạch như nào ạk

  • @thangnguyenvan9875
    @thangnguyenvan9875 6 років тому

    Viếc chương trình mô phỏng chay trên proteus nạp vào vkd chạy giống như mình chay trên mô phỏng k a ? Hỏi ngu tí mong a thông cảm 😅😅

  • @chasetkd1002
    @chasetkd1002 8 років тому

    mình có thể đổi vị trí các led theo 1 vòng tròn được k a, code y như thế này luôn,thế nó có ổn k a

  • @musiclife1499
    @musiclife1499 6 років тому

    chương trình code chạy trái phải dài quá theo em nên cho P0_0=0x01 rồi dùng vòng lặp while thôi

  • @stthai6983
    @stthai6983 8 років тому

    a cho e hỏi chút ạ...
    -nếu ta ấn và giữ phím lâu hơn thời gian trễ delay(100) thì biến Dem cứ đc cộng lên liên tục vậy ct sẽ không đúng như yều cầu đề ra.
    -a có cách nào khác phục lỗi trên không ạ?
    thanks a.

  • @hieule4255
    @hieule4255 7 років тому

    a oi cho e hoi sao nhan 2 3 cai nk ms nhay qua hieu ung khac co cach nao khac phuc k a e doi mai k thay cai bai huong dan khac phuc cua @@

  • @minhdungnguyen1374
    @minhdungnguyen1374 4 роки тому

    Cảm ơn thầy rất nhiều ạ

  • @daylahale
    @daylahale 8 років тому

    thưa thầy em thử kết hợp điều khiển nút bấm này vào bài quét led 7 thanh của thầy hướng dẫn. Cụ thể với 2 lần bấm đầu là điều khiển 8 led mắc vào cổng P0 với 3 hiệu ứng khác nhau, lần thứ 3 bấm nút thì quét 4 led 7 thanh để hiển thị số. Điều khiển hiệu ứng led thì bình thường nhưng đến khi ấn nút để hiển thị led thì led 7 thanh chỉ chớp và tắt ngay, biến dem trả về 0. Thầy giúp em chỗ này với ạ

  • @bichngocnguyen8089
    @bichngocnguyen8089 7 років тому

    cho hỏi tý ad ơi, sao cái đoạn add to group ấy, mình thấy ad có click vào ccs, sao lại như vậy, chẳng lẽ phải lập trình cả bên ccs nữa à, mình tạo file hex mãi ko dk, ko hiểu sao lại như vậy, vào bên proteus tìm ko thấy file hex của keilC đâu

  • @banhotrosinhvien2523
    @banhotrosinhvien2523 6 років тому

    thầy ơi, em muốn dùng 4 nút bấm cho 4 chế độ: sáng từ led1 đến led8, sáng từ led8 về led1, sáng led1 và led8 rồi led2 và led7... và chế độ cuối là tổng hợp cả 3 chế độ trên. thì biến tấu từ bài trên như thế nào ạ, mong thầy chỉ giúp em

  • @xuanngochoang8735
    @xuanngochoang8735 3 роки тому

    cho em hỏi đoạn P2 = 0xff nghĩa là gì ad

  • @vanhongtran3642
    @vanhongtran3642 8 років тому

    em viết giống trong clip nhưng lúc ấn nút ấn đấy nó ko chuyển hiệu ứng ngay,nhiều lúc phải ấn 2-3 lần mới được, vậy thì khắc phục thế nào ạ?

  • @lycaoduong1
    @lycaoduong1 8 років тому

    Cho em hỏi bấm như vậy code chuyển ngay hay phải chạy hết một hiệu ứng rồi mới chuyển ạ!

    • @nnx96tl
      @nnx96tl 8 років тому

      +Cao Dương Lý khi bấm là chuyển ngay nhé bạn

  • @nguyendu7828
    @nguyendu7828 8 років тому

    Cho em hỏi ạ: Em chạy chương trình trong bài học, khi bấm nút thì thấy không được nhạy. Mình có thể đấu nút bấm vào chân ngắt ngoài để xác định nút đã bấm theo sườn xung không và viết code thế nào ạ? Em cảm ơn.

  • @kienld8535
    @kienld8535 9 років тому

    Cho em hỏi điện trở ở đây có nhiệm vụ gì và không có thì có vấn đề ggì không ạ.

    • @vanquyetho9552
      @vanquyetho9552 9 років тому

      +kien Ld ./dien tro o dcay de han dong cho led..

  • @suongvo2678
    @suongvo2678 8 років тому

    thầy cho e hỏi giờ mình dùng 3 nút bấm với 8 led.
    bấm nút 1 sáng tu trái sang phải
    bấm nút 2 sáng ngược lại
    bấm nút 3 tất cả các led đều tắt.
    thì làm sao thầy..giúp e voi thầy ơi

  • @hoango151
    @hoango151 7 років тому

    a co the cho e biet ro hon ve chuong trinh duoc khong

  • @nope8605
    @nope8605 9 років тому

    anh giải thích cho em dòng 2 và 3 với...nó có liên hệ j với các câu lệnh dưới không...em khó hiểu quá...
    #include
    void delay(int time){
    while(time--);
    }
    void blink(int lan)
    { int i;
    for (i=0;i

    • @nnx96tl
      @nnx96tl 8 років тому

      +men sup void delay(int time){
      while(time--);
      }
      là 1 chương trình con để tạo độ trễ. ví dụ như P2 = 0; delay(3000); có nghĩa là câu lệnh P2=0; sau khi thực hiện xong thì vi điều khiển sẽ tạm ngưng hoạt động trong khoảng thời gian 3000 trước khi chuyển sang câu lệnh tiếp theo.

  • @thanhto9289
    @thanhto9289 10 років тому

    cảm ơn thầy rất nhiều

  • @utran4561
    @utran4561 7 років тому

    cho em hoi sao nhan nut ma k doi dc hieu ung z anh

  • @tungbuixuan2353
    @tungbuixuan2353 9 років тому

    thay oi cho em hoi. khi em ep file sao khong thay file .c la do nguyen nhan gi

  • @KhanhNguyen-sb1dt
    @KhanhNguyen-sb1dt 9 років тому

    Cho em hỏi là con chip nó họat động ở điện ạp 5v vậy cho em hỏi là làm sao để no chạy dc vật tiêu thụ điện áp 220v
    Làm sao để mạch này dùng điện 220v và thay led bằng thứ khác chạy điện 220v
    Em xin cảm ơn

  • @ducanhta1783
    @ducanhta1783 9 років тому

    thầy cho e hỏi ạ, một hiệu ứng nháy của e khá dài, khi đang chạy code của hiệu ứng đó thì phím bấm ko hoạt động ạ, có cách nào cứ bấm nút là đổi ngay chế độ ko ạ?

    • @white_lung
      @white_lung 9 років тому

      +duc anh Ta bạn thêm dòng if (P1_0==0) break; giống vầy nè;
      void traiphai(int lan){
      int i;
      for(i=0;i

    • @ducanhta1783
      @ducanhta1783 9 років тому

      +Hân Kent thanks bạn nhiều nhé ^^

    • @nope8605
      @nope8605 9 років тому

      +Hân Kent bạn xem dùm mình với tớ viết code va nap vao nó không chậy...

  • @huybinhnguyen5349
    @huybinhnguyen5349 8 років тому

    Nếu code như trên sẽ không chạy được! Cần thêm hàm quét phím trong quá trình VĐK chạy code delay.

  • @chungnguyen735
    @chungnguyen735 9 років тому +2

    thưa thầy, cho e hỏi : trong code chỗ 0x là gì đấy ạ

    • @jdhgfhjjfhh3707
      @jdhgfhjjfhh3707 8 років тому

      +Tự Học
      eg g jocv á qbbz r hei để ụ ou cfg fh ffnbb

  • @daohuynhquang3327
    @daohuynhquang3327 10 років тому

    thank rat ky ,de hieu

  • @vanduythuong
    @vanduythuong 8 років тому

    Thưa thầy, cho e hỏi: tải file nguồn và file proteus 8 trên đó thì vào trang nào vậy ạ?

  • @dinhgiaminh5053
    @dinhgiaminh5053 10 років тому

    cảm ơn anh nhìu

  • @toantoanpuocnguyen3379
    @toantoanpuocnguyen3379 9 років тому

    thầy ơi thầy có thể đăng video dạy atmega8 ko thầy .e muốn học mà tìm tài liệu trên mạng dọc ko hiểu j hết thầy ơi

  • @minhtuan3887
    @minhtuan3887 10 років тому

    cảm ơn thầy ạ

  • @chungnguyen6378
    @chungnguyen6378 8 років тому

    Cho em hỏi câu này nữa ạ: em viết giống trong clip nhưng lúc ấn nút ấn đấy nó ko chuyển hiệu ứng ngay,nhiều lúc phải ấn 2-3 lần mới được, vậy thì khắc phục thế nào ạ?

  • @nguyenuckhue1528
    @nguyenuckhue1528 9 років тому

    viết cho 2 nút bấm hoặc 3 nút được không thầy

  • @ChungHoang-qy3xl
    @ChungHoang-qy3xl 6 років тому

    anh có thể giúp em bài này đc k ạ, code c ạ Lập trình và mô phỏng bài toán 2 nút nhấn sau: Sử dụng 2 nút nhấn, 1 LED và đèn Led 7 thanh (1 hoặc 2 chữ số). Mặc định ban đầu Led 7 thanh hiển thị số 0, đèn ban đầu tắt. Nhấn 1 nút thì số hiển thị tăng lên 1 - đèn sáng, nhấn nút kia thì số giảm đi 1 - đèn tắt. Mỗi khi số hiển thị mà chia hết cho 5 thì đèn nhấp nháy.

  • @chungnguyen6378
    @chungnguyen6378 8 років тому

    cho em hỏi là tại sao chương trình khi mô phỏng nó chạy không dừng vậy ạ, có phải là do cấu tạo IC nó thế ko ạ??

    • @chungnguyen6378
      @chungnguyen6378 8 років тому

      nếu bỏ while(1) đi thì vẫn chạy ko dừng ạ

    • @chungnguyen6378
      @chungnguyen6378 8 років тому

      à,í em là bỏ while(1) đi thì chương trình nó vẫn chạy ko dừng đấy ạ. Thì đó là do cấu tạo IC đúng ko ạ?

  • @nguyentuan3046
    @nguyentuan3046 8 років тому +1

    #include
    sbit BUTTON = P3^7;
    sbit LED = P2^7;
    /* Chuong trinh chinh */
    void main (void)
    {
    while(1)
    if(BUTTON == 0)
    {
    while(BUTTON == 0) { }
    LED = !LED;
    }
    }}
    thưa thầy cho em hỏi lệnh if trong đoạn code trên có vai trò gì ạ, thầy có giải thích đoạn code trên đk ko ạ

    • @ientu3605
      @ientu3605 8 років тому

      Đoạn if đó là để kiểm tra xem phím có được bấm hay chưa em ạ, còn while tiếp theo là nếu phím đã bấm thì đợi cho đến khi nào nhả phím thì mới thực hiện lệnh tiếp theo

  • @thuquynhnguyen4651
    @thuquynhnguyen4651 7 років тому +1

    ah ơi, e code y vậy sao khi bấm nút nó chỉ có sáng từ trái qua phải, ấn lần 2,3,4 không được ạ

    • @lowjinguyen3062
      @lowjinguyen3062 7 років тому

      hình như nó phải chạy xong 1 chương trình con thì bám nut mới chuyển đc chế độ thì phải, chứ khi đang chạy giữa 1 chương trình con thì bấm nút không chuyển đc

    • @hoangnguyenvo7757
      @hoangnguyenvo7757 7 років тому

      Thực tế và mô phỏng khác nha em, vì trong mô phỏng, khi các lệnh còn đang chạy, thì mình nhấn nút nó sẽ không chuyển qua chế độ khác trừ khi mình nhấn đúng lúc chế độ cũ vừa mới tắt. Thường thì thực tế dùng phím cơ, nên ấn giữ lâu chút xíu, thì nó sẽ đổi chế độ. Nên lập trình chống nhiễu cho nút nhấn, trước mắt làm như vậy được rồi.

    • @hoangnguyenvo7757
      @hoangnguyenvo7757 7 років тому

      #define Thu Quỳnh Nguyễn pin_S2
      Hiểu ý em, nhưng có một cách sơ khai có thể giải quyết chút đỉnh vấn đề này, cách của anh gợi ý là, mình sẽ nhấn giữ nút đó hơi lâu 1 tí thôi, khi nhấn giữ thì các led tắt hết và khi trạng thái đã chuyển thì thả nút ra. Chỉ cần mình thêm một chút ở trong chương trình con nút nhấn là được rồi. VD nhé:
      void nutnhan() // Tạo chương trình con nút nhấn riêng
      {
      if(MENU==0) // Nếu nút nhấn ( MENU ) được nhấn
      {
      while(MENU==0){delay_ms(10);} // Ở đây a xài vòng lặp while để kiểm tra nút nhấn trong 10 ms (hoặc thấp hơn)
      {
      P2=0xff; // Thêm vào Port này = 0xff để tất cả các led đều tắt , khi nhấn thả nó sẽ chuyển trạng thái êm hơn.
      dem++; // Tăng dần đều biến đếm lên 1 đơn vị
      if(dem>4) // Nếu biến đếm > 4 ( 0 đến 4 là 5 trạng thái)
      {
      dem=0; // Gán phím đếm về 0
      }
      }
      }
      }

    • @thuquynhnguyen4651
      @thuquynhnguyen4651 7 років тому

      e cảm ơn ah nhiều ạ

    • @thuquynhnguyen4651
      @thuquynhnguyen4651 7 років тому +1

      /*Do nhiet do dung LM35 va ADC0808 hoac ADC0809*/
      #include
      #define VREF 5
      //Khai bao chan giao tiep ADC0808
      #define ADC0808_DATA P3
      #define ADC0808_A P2_0
      #define ADC0808_B P2_1
      #define ADC0808_C P2_2
      #define ADC0808_ALE P2_3
      #define ADC0808_START P2_4
      #define ADC0808_EOC P2_5
      #define ADC0808_OE P2_6
      #define ADC0808_CLK P2_7
      //Khai bao chan giao tiep LCD16x2 4bit
      #define LCD_RS P0_0
      #define LCD_RW P0_1
      #define LCD_EN P0_2
      #define LCD_D4 P0_4 //Truyền dữ liệu qua 4 chân
      #define LCD_D5 P0_5
      #define LCD_D6 P0_6
      #define LCD_D7 P0_7
      /*Hàm đọc và điều khiển ADC0808*/
      unsigned char ADC0808_Read(unsigned char channel){
      unsigned char kq;
      ADC0808_A = channel & 0x01;
      ADC0808_B = channel & 0x02;
      ADC0808_C = channel & 0x04;
      ADC0808_ALE = 1;
      ADC0808_START = 1;
      ADC0808_ALE = 0;
      ADC0808_START = 0;
      while(ADC0808_EOC); //Tại sao lại có đoạn code này?
      while(!ADC0808_EOC);
      ADC0808_OE = 1;
      kq = ADC0808_DATA;
      ADC0808_OE = 0;
      return kq;
      }
      /*Ham delay*/
      void delay_us(unsigned int t){
      unsigned int i;
      for(i=0;i>2)&1;
      LCD_D7=(Data>>3)&1;
      }
      void LCD_SendCommand(unsigned char command){
      LCD_Send4Bit(command >>4);/* Gui 4 bit cao hay thấp???? */
      LCD_Enable();
      LCD_Send4Bit(command);
      LCD_Enable();
      }
      void LCD_Clear(){
      LCD_SendCommand(0x01); //Lệnh 0x01 Dùng để làm gì?
      delay_us(10);
      }
      void LCD_Init(){ //Các lệnh được gửi có ý nghĩa ntn?
      LCD_Send4Bit(0x00);
      delay_ms(20);
      LCD_RS=0;
      LCD_RW=0;
      LCD_Send4Bit(0x03);
      LCD_Enable();
      delay_ms(5);
      LCD_Enable();
      delay_us(100);
      LCD_Enable();
      LCD_Send4Bit(0x02);
      LCD_Enable();
      LCD_SendCommand( 0x28 ); // Các lệnh này có ý nghĩa gì???
      LCD_SendCommand( 0x0c);
      LCD_SendCommand( 0x06 );
      LCD_SendCommand(0x01);
      }
      void LCD_Gotoxy(unsigned char x, unsigned char y){
      unsigned char address;
      if(!y) address=(0x80+x); //Ý nghĩa 2 dòng lệnh này?
      else address=(0xc0+x);
      delay_us(1000);
      LCD_SendCommand(address);
      delay_us(50);
      }
      void LCD_PutChar(unsigned char Data){
      LCD_RS=1;
      LCD_SendCommand(Data);
      LCD_RS=0 ;
      }
      void LCD_Puts(char *s){
      while (*s){
      LCD_PutChar(*s);
      s++;
      }
      }
      /*Hiển thị nhiệt độ trên LCD*/
      void TempShow(unsigned char z){ //Hàm này làm gì? Tại sao là 48?
      LCD_Puts("Nhiet do: ");
      LCD_PutChar((z/100)+48);//
      LCD_PutChar((z%100/10)+48);
      LCD_PutChar((z%10)+48);
      LCD_Puts("*C");
      }
      /*Chương trình ngắt timer 0*/
      void INT_Timer0()interrupt 1 {
      //ctr phuc vu ngat tao xung clock cho ADC0808
      ADC0808_CLK=~ADC0808_CLK; //Dao bit
      }
      /*Main Program*/
      unsigned char temp;
      void main(){
      //Tao xung clock cho ADC0808 - sẽ học sau
      TMOD=0x02;
      TH0=TL0=236;
      TR0=1;
      ET0=1;//Ngat timer0
      EA=1;//Cho phep ngat cuc bo
      LCD_Init();//Khoi tao LCD
      delay_ms(200);
      LCD_Puts("Dang do nhiet do...");
      delay_ms(1000);
      LCD_Clear();
      LCD_Gotoxy(0,1); //Ý nghĩa hàm này?
      LCD_Puts("KT.VIXULY - PTIT");
      while(1){
      LCD_Gotoxy(0,0);
      temp=ADC0808_Read(0); //Đọc tín hiệu từ chân nào?
      TempShow(temp);
      delay_ms(500); //Delay để làm gì?
      }
      Anh ơi ah có thể giửi thích từng dòng code cho e đk ko ạ

  • @sinhnguyen6051
    @sinhnguyen6051 4 роки тому

    ko biết e bi lỗi này là sao vậy a e khi e xuất file hex\

  • @nhono4361
    @nhono4361 6 років тому

    code chổ nút nhấn kiểm tra if(P1_0==0 ) thì bắt đầu đếm vậy nếu ko bằng 0 thì sao nhể

  • @chavdahiren6754
    @chavdahiren6754 6 років тому

    Nice work but
    You can store this 5 partten???
    Without eprrom ic 24c04??

  • @duykhanhvo4958
    @duykhanhvo4958 5 років тому

    đây là ngôn ngữ asm hả thầy

  • @vuthuong337
    @vuthuong337 9 років тому +1

    thầy cho e hỏi .. 0x80 nghĩa là gi zj thầy

  • @tuannguyenminh1398
    @tuannguyenminh1398 4 роки тому

    sao ko dạy arduino ạ

  • @TaQuangDat2209
    @TaQuangDat2209 8 років тому

    cho em hỏi sao khi không ấn nút thì dòng chạy từ nguồn vào P1.0 thì P1.0 lại==1 mà khi có dòng chạy qua đèn vào cổng P2.0 thì P2.0 lại ==0 k vậy ạ

    • @TaQuangDat2209
      @TaQuangDat2209 8 років тому

      Tự Học e vẫn chưa hiểu lý do tại sao nó bằng 1 ạ

    • @TaQuangDat2209
      @TaQuangDat2209 8 років тому

      Tự Học e cứ nghĩ là có dòng thì nó = 0

    • @TaQuangDat2209
      @TaQuangDat2209 8 років тому

      Tự Học a có ns là nối vs điện trở 10k nối lên dương nguồn nên nhận mức tín hiệu là 1
      A k ns rõ chỗ đó

  • @nam8176
    @nam8176 7 років тому

    a ơi e không tạo đc file nguồn giờ phải làm sao ạ

  • @ucpham-gk7dc
    @ucpham-gk7dc 6 років тому

    anh ơi chỉ em cách sửa lôi phần mềm với

  • @thuyluong859
    @thuyluong859 10 років тому

    like thay.hihi

  • @nope8605
    @nope8605 9 років тому

    Tại sao mình lại cắm nút bấm vào chân p1 nhỉ mak không phải các chân khác

    • @nnx96tl
      @nnx96tl 8 років тому

      +men sup bạn có thể nối với bất cứ chân nào nhé, ở bài này thầy chọn cổng P1 để nối nhưng bạn có thể chọn 1 cổng khác.

  • @hieuduong2974
    @hieuduong2974 7 років тому

    anh cho em xin facebook được không ạ?. Em không hiểu một số chuyện mong anh giải đáp dùm.

  • @PhuongPham-kt5wr
    @PhuongPham-kt5wr 7 років тому

    cho e hỏi với ạ. sao e viết code theo như vậy mà nó lại báo lỗi nhiều ạ

    • @PhuongPham-kt5wr
      @PhuongPham-kt5wr 7 років тому

      Tự Học ok. tks ad nhiều ạ

    • @PhuongPham-kt5wr
      @PhuongPham-kt5wr 7 років тому

      Tự Học ad có face book không ạ. chứ e viết code sai. e muốn hỏi sao lại sai vậy ạ

  • @quanganmai6785
    @quanganmai6785 4 роки тому

    LÀM SAO ĐỂ LÀM CÁI NÀY Ạ shorturl.at/hCS79