久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1335|回復: 3
收起左側

單片機代碼求解釋吶

[復制鏈接]
ID:312422 發表于 2018-4-20 14:54 | 顯示全部樓層 |閱讀模式
單片機源程序如下:
  1. #include <reg52.h>

  2. #define uchar unsigned char

  3. #define uint unsigned int

  4. sbit BEEP = P3^7;


  5. uchar code DSY_CODE[]=

  6. {

  7.     0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00

  8. };

  9. uchar Pre_KeyNO = 16,KeyNO = 16;


  10. void DelayMS(uint ms)

  11. {

  12.     uchar t;

  13.     while(ms--)

  14.     {

  15.         for(t=0;t<120;t++);

  16.     }

  17. }


  18. void Keys_Scan()

  19. {

  20.     uchar Tmp;

  21.     P1 = 0x0f;

  22.     DelayMS(1);

  23.     Tmp = P1 ^0x0f;

  24.     switch(Tmp)

  25.     {

  26.         case1: KeyNO = 0; break;

  27.         case 2:KeyNO = 1; break;

  28.         case 4:KeyNO = 2; break;

  29.         case 8:KeyNO = 3; break;

  30.         default:KeyNO = 16;

  31.     }

  32.     P1 = 0xf0;

  33.     DelayMS(1);

  34.     Tmp = P1>> 4 ^ 0x0f;

  35.     switch(Tmp)

  36.     {

  37.         case1: KeyNO += 0; break;

  38.         case 2:KeyNO += 4; break;

  39.         case 4:KeyNO += 8; break;

  40.         case 8:KeyNO += 12;

  41.     }

  42. }


  43. void Beep()

  44. {

  45.     uchar i;

  46.     for(i=0;i<100;i++)

  47.     {

  48.         DelayMS(1);

  49.         BEEP =~BEEP;

  50.     }

  51.     BEEP = 1;

  52. }


  53. void main()

  54. {

  55.     P0 = 0x00;

  56.     while(1)

  57.     {

  58.         P1 =0xf0;

  59.         if(P1!= 0xf0)

  60.             Keys_Scan();

  61.         if(Pre_KeyNO!= KeyNO)

  62.         {

  63.             P0 =DSY_CODE[KeyNO];

  64.             Beep();

  65.             Pre_KeyNO= KeyNO;

  66.         }

  67.         DelayMS(100);

  68.     }

  69. }
復制代碼

回復

使用道具 舉報

ID:239596 發表于 2018-4-20 18:00 | 顯示全部樓層
這是矩陣按鍵的掃描法,控制蜂鳴器和數碼管的吧
回復

使用道具 舉報

ID:312890 發表于 2018-4-21 10:23 | 顯示全部樓層
開始頭文件、宏定義0----蜂鳴器引腳定義----數碼管顯示初始化----定義變量----延時函數----按鍵控制函數、先將按鍵置為第四位、兩個swtich控制矩陣按鍵的行列-------然后是蜂鳴器函數、取反延時即可----然后是主函數,使用了你定義過的函數、P1按鍵控制功能(按鍵防抖語句)    PS;這按鍵防抖沒看懂。。。。以下是我經常用的=。=嘿嘿,希望對你有幫助
if(!k1)
{
delay_ms(10)
if(!k1)
{
while(!k1)
語句。。。。
}
}
回復

使用道具 舉報

ID:312890 發表于 2018-4-21 11:25 | 顯示全部樓層
weiweioioi 發表于 2018-4-21 10:23
開始頭文件、宏定義0----蜂鳴器引腳定義----數碼管顯示初始化----定義變量----延時函數----按鍵控制函數、 ...

打錯了抱歉,按鍵設置為低四位  0x0f(0000 1111)
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级大片| 欧美一区二区三区视频 | 视频一区中文字幕 | 成人免费大片黄在线播放 | 国产高清视频在线观看 | 成人激情视频在线观看 | 视频在线观看一区 | 欧美在线观看网站 | 91视频中文 | 久久中文网 | 欧美一级毛片久久99精品蜜桃 | 91av在线看 | 欧美成年人 | aaa在线观看 | 精品美女 | 亚洲精品在线免费观看视频 | 日韩视频精品 | 国产区精品视频 | 青青久久 | 无码日韩精品一区二区免费 | 在线黄色网| 精品久久久久久亚洲综合网 | 国产免费高清 | av网站免费观看 | 美女黄网站 | 日韩免费三级 | 狠狠久| 国产精品99久久久久久久久久久久 | 亚洲一区视频 | 午夜视频在线免费观看 | 亚洲一级毛片 | 日韩精品一区二区三区在线观看 | 黄色毛片在线播放 | 在线亚洲免费视频 | 超碰人人人 | 久久人人爽人人爽人人片av免费 | 日韩高清一区 | 中文字幕在线一区二区三区 | 日韩黄色小视频 | 久久久久久成人 | 精品av|