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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3830|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

我學(xué)51單片機(jī)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:33235 發(fā)表于 2012-7-27 16:52 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
學(xué)習(xí)單片機(jī)有段時(shí)間,為了與新人分享,同時(shí)也是對(duì)自己學(xué)習(xí)的一個(gè)總結(jié),特發(fā)此貼,期待大蝦們的指點(diǎn)。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:33235 發(fā)表于 2012-7-27 17:03 | 只看該作者

程序如下:

/*****************************************
函數(shù)名稱:void SMG(uchar n,uchar dat)
函數(shù)功能:給第n個(gè)數(shù)碼管(共陽)寫入數(shù)字dat
輸入?yún)?shù):要顯示數(shù)字的數(shù)碼管n及數(shù)字dat
輸出參數(shù):無
*****************************************/
#include "main.h"
#define SMG_DSP P2
#define SMG_CS  P3

sbit SMG_CS1=P3^0;
sbit SMG_CS2=P3^1;
sbit SMG_CS3=P3^2;
sbit SMG_CS4=P3^3;
sbit SMG_CS5=P3^4;
sbit SMG_CS6=P3^5;
sbit SMG_CS7=P3^6;
sbit SMG_CS8=P3^7;


void smg(uchar n,uchar dat)
{
 uchar i;
 uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99, //0    1    2    3 4
                              0x92,0x82,0xf8,0x80,0x90, //5    6    7    8    9
                              0xa0,0x83,0xa7,0xa1,0x84, //a    b    C    d    E
                              0x8e,0xbf};      //F  -    // 共陽0  -
 for(i=0;i<20;i++)
 {
  SMG_CS=0x00;
  SMG_DSP=table[dat];
  switch(n)
  {
   case 1:  SMG_CS1=1; delay1ms(1); SMG_CS1=0;  break; 
   case 2:  SMG_CS2=1; delay1ms(1); SMG_CS2=0;  break;
   case 3:  SMG_CS3=1; delay1ms(1); SMG_CS3=0;  break;
   case 4:  SMG_CS4=1; delay1ms(1); SMG_CS4=0;  break;
   case 5:  SMG_CS5=1; delay1ms(1); SMG_CS5=0;  break;
   case 6:  SMG_CS6=1; delay1ms(1); SMG_CS6=0;  break;
   case 7:  SMG_CS7=1; delay1ms(1); SMG_CS7=0;  break;
   case 8:  SMG_CS8=1; delay1ms(1); SMG_CS8=0;  break;
  }
 }
}

[此貼子已經(jīng)被作者于2012-7-27 17:05:40編輯過]
回復(fù)

使用道具 舉報(bào)

板凳
ID:33235 發(fā)表于 2012-7-27 17:05 | 只看該作者

程序如下:

/********************************
函數(shù)名稱:uchar key(void)
函數(shù)功能:4*4鍵盤掃描函數(shù)
輸入?yún)?shù):無
輸出參數(shù):鍵盤輸入的數(shù)據(jù)
********************************/
#include "main.h"
#define KEYP P1
uchar code keycode[4][4]={{16,0,16,16},{1,2,3,16},{4,5,6,16},{7,8,9,16}};

uchar key(void)
{
 uchar col,row,scan,keyin,kcode;
 uchar code keytable[4]={0xef,0xdf,0xbf,0x7f};
 //高四位:掃描輸出(列);低四位:鍵盤輸入(行)
 for(col=0;col<4;col++) 
 {
  KEYP=keytable[col];        //逐列輸出掃描信號(hào),逐行輸入
  keyin=(~KEYP)&0x0f;     //高四位:屏蔽;低四位:取反
  if(keyin==0)               //無按鍵按下
   continue;
  else           //有按鍵按下
  {
   delay1ms(20);       //延時(shí)去抖
   if(keyin==0)    
    continue;                //鍵盤抖動(dòng)
   else        //不是抖動(dòng)
   {
    for(row=0;row<4;row++)
     if(keyin==0x01<<row) //只有row列按下
     {
      kcode=keycode[3-row][col];
      break;
     }
     else                 //多列按下
      continue; 
    while((~KEYP)&0x0f!=0);  //等待按鍵釋放   
    }
  }
 }
 return kcode;
}

回復(fù)

使用道具 舉報(bào)

地板
ID:33235 發(fā)表于 2012-7-28 12:15 | 只看該作者
/************************************************************************************* LCD1602驅(qū)動(dòng)函數(shù) *************************************************************************************/ /*******************************寫命令說明******************************************/ /*0x01----0x03: 光標(biāo)移至左上角,AC歸零(1.64ms)*/ //0x01 DDRAM填入空白 //0x02--0x03 DDRAM內(nèi)容不變 /*0x04----0x07:字符、光標(biāo)與AC控制(40us)*/ //0x04 D1D0=00:字符全部不動(dòng),AC-1,光標(biāo)左移1格 //0x05 D1D0=01:字符全部右移1格,AC-1,光標(biāo)不動(dòng) //0x06 D1D0=10:字符全部不動(dòng),AC+1,光標(biāo)右移1格 //0x07 D1D0=11:字符全部左移1格,AC+1,光標(biāo)不動(dòng) /*0x08----0x0f:字符與光標(biāo)的開關(guān)控制(40us)*/ //0x08--0x0b D2=0,字符不顯示 //0x0c D2=1,字符顯示;D1D0=00,光標(biāo)關(guān) //0x0d D2=1,字符顯示;D1D0=01,光標(biāo)閃爍 //0x0e D2=1,字符顯示;D1D0=10,光標(biāo)顯示“_” //0x0f D2=1,字符顯示;D1D0=11,光標(biāo)顯示“_”與閃爍 /*0x10----0x1f:字符光標(biāo)的移動(dòng)控制(40us)*/ //0x10--0x13 光標(biāo)左移 //0x14--0x17 光標(biāo)右移 //0x18--0x1b 字符左移 //0x1c--0x1f 字符右移 /*0x20----0x3f:數(shù)據(jù)與顯示模式控制(40us)*/ //0x20--0x23 D4=0,數(shù)據(jù)總線為4位,D3=0,顯示1行,D2=0,點(diǎn)陣為5*7 //0x24--0x27 D4=0,數(shù)據(jù)總線為4位,D3=0,顯示1行,D2=1,點(diǎn)陣為5*10 //0x28--0x2b D4=0,數(shù)據(jù)總線為4位,D3=1,顯示2行,D2=0,點(diǎn)陣為5*7 //0x2c--0x2f D4=0,數(shù)據(jù)總線為4位,D3=1,顯示2行,D2=1,點(diǎn)陣為5*10 //0x30--0x33 D4=1,數(shù)據(jù)總線為8位,D3=0,顯示1行,D2=0,點(diǎn)陣為5*7 //0x34--0x37 D4=1,數(shù)據(jù)總線為8位,D3=0,顯示1行,D2=1,點(diǎn)陣為5*10 //0x38--0x3b D4=1,數(shù)據(jù)總線為8位,D3=1,顯示2行,D2=0,點(diǎn)陣為5*7 //0x3c--0x3f D4=1,數(shù)據(jù)總線為8位,D3=1,顯示2行,D2=1,點(diǎn)陣為5*10 /*0x40----0x7f:設(shè)定CGRAM地址(40us)*/ /*0x80----0x8f:設(shè)定DDRAM地址(40us)*/ /*******************************寫命令說明******************************************/ /*--------------------------------------------------------------*/ //所需頭文件 #include #include /*--------------------------------------------------------------*/ //LCD1602與單片機(jī)接口定義 #define LCD_IO P0 //P0-0x80,P1-0x90,P2-0xA0,P3-0xB0; sbit LCD_RS = P3^2; //LCD數(shù)據(jù)/命令選擇端(H/L) sbit LCD_RW = P3^3; //LCD 讀/寫 選擇端(H/L) sbit LCD_EN = P3^4; //LCD使能控制端 sbit LCD_BZ = P0^7; //LCD忙標(biāo)志位 /*--------------------------------------------------------------*/ //檢測(cè)LCD忙狀態(tài) void LCD_busy(void) { LCD_IO = 0xff; //P0口就需要設(shè)置 do { LCD_EN = 0; LCD_RS = 0; //指令 LCD_RW = 1; //讀出 LCD_EN = 1; //高電平讀出 _nop_(); //延遲時(shí)間1us }while(LCD_BZ); //LCD_BZ=1表示忙,LCD_BZ=0表示空閑 LCD_EN = 0; } /*--------------------------------------------------------------*/ //寫入指令 void LCD_cmd(unsigned char cmd) { LCD_busy(); //檢測(cè)忙 LCD_RS = 0; //指令 LCD_RW = 0; //寫入 LCD_EN = 1; LCD_IO = cmd; //傳指令 LCD_EN = 0; //下降沿有效 } /*--------------------------------------------------------------*/ //寫入數(shù)據(jù) void LCD_dat(unsigned char dat) { LCD_busy(); //檢測(cè)忙 LCD_RS = 1; //數(shù)據(jù) LCD_RW = 0; //寫入 LCD_EN = 1; LCD_IO = dat; //傳數(shù)據(jù) LCD_EN = 0; //下降沿有效 } /*--------------------------------------------------------------*/ //定位輸出字符串 void LCD_prints(unsigned char x, unsigned char y, unsigned char *s) { if(x) LCD_cmd(y|0xc0); //x=1第二行顯示,x=0第一行顯示 0<=y<16 else LCD_cmd(y|0x80); //數(shù)據(jù)指針=80+地址碼(00H~27H,40H~67H) while(*s) { LCD_dat(*s); s++; } } /*--------------------------------------------------------------*/ //LCD初始化 void LCD_init(void) { LCD_cmd(0x38); LCD_cmd(0x0c); LCD_cmd(0x06); LCD_cmd(0x01); } /*--------------------------------------------------------------*/
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人不卡 | 精品国产一区探花在线观看 | 午夜av毛片 | 日韩一区二区免费视频 | 一级免费毛片 | 日韩三级 | 美女久久视频 | 99久久久久久久久 | 色资源av| 91精品综合久久久久久五月天 | 日韩在线| 久久久国产一区二区三区四区小说 | 精品一区二区三区在线视频 | 欧美日韩国产在线观看 | 亚洲a视频| 亚洲v日韩v综合v精品v | 亚洲不卡在线观看 | 免费精品 | 日韩国产精品一区二区三区 | 中文字幕精品一区二区三区精品 | 九九精品在线 | 亚洲国产精选 | 3p视频在线观看 | 日日日操| 欧美日韩亚洲国产 | 免费一区二区三区 | 亚洲一区二区电影网 | 日韩视频中文字幕 | 一区二区三区欧美 | 盗摄精品av一区二区三区 | 成人av一区 | 99视频网| 91精品国产综合久久久久蜜臀 | 国产在线观看一区二区 | av大片在线| 二区亚洲 | а_天堂中文最新版地址 | 久久一区二区视频 | 日韩欧美国产不卡 | 亚洲久草 | 欧洲精品码一区二区三区免费看 |