久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
51單片機(jī)6x6矩陣鍵盤(pán)驅(qū)動(dòng)程序
[打印本頁(yè)]
作者:
laojichaoyue
時(shí)間:
2020-3-31 14:07
標(biāo)題:
51單片機(jī)6x6矩陣鍵盤(pán)驅(qū)動(dòng)程序
自學(xué)了一點(diǎn)單片機(jī)知識(shí),寫(xiě)了一個(gè)6x6矩陣鍵盤(pán),用的行列掃描法,P1P3口是鍵盤(pán)口,P0是液晶屏口,按下按鍵液晶屏輸出字符,液晶相關(guān)代碼是百度的,大佬們見(jiàn)笑了
電路原理圖如下:
pro.PNG
(99.76 KB, 下載次數(shù): 58)
下載附件
仿真
2020-3-31 14:08 上傳
單片機(jī)源程序如下:
#include "reg51.h"
#include <math.h>
#include <stdio.h>
sbit rs=P2^6; //指令or數(shù)據(jù) RD
sbit wela=P2^5; //讀or寫(xiě) WR
sbit lcden=P2^7; //使能信號(hào)LCD
unsigned int KeyValue,KeyState;
//************************************************************************/
// 描述: 延時(shí)t us函數(shù)
//************************************************************************/
void LCD_Delay_us(unsigned int t)
{
while(t--); //t=0,退出
}
//************************************************************************/
// 描述: 延時(shí)t ms函數(shù)
//************************************************************************/
void LCD_Delay_ms(unsigned int t)
{
unsigned int i,j;
for(i=0;i<t;i++) //執(zhí)行t次循環(huán)
for(j=0;j<113;j++) //執(zhí)行113次循環(huán)
;
}
//************************************************************************/
// 描述: 1602液晶寫(xiě)指令
//************************************************************************/
void write_com(unsigned char com) //1602液晶寫(xiě)指令
{
rs=0; //寫(xiě)指令
lcden=0; //使能1602
P0=com; //寫(xiě)入指令com
LCD_Delay_ms(1); //延時(shí)1ms
lcden=1; //使能1602
LCD_Delay_ms(2); //延時(shí)2ms
lcden=0; //使能1602
}
//************************************************************************/
// 描述:1602液晶寫(xiě)數(shù)據(jù)
//************************************************************************/
void write_date(unsigned char date) //1602液晶寫(xiě)數(shù)據(jù)
{
rs=1; //寫(xiě)數(shù)據(jù)
lcden=0; //使能1602
P0=date; //寫(xiě)入數(shù)據(jù)date
LCD_Delay_ms(1); //延時(shí)1ms
lcden=1; //使能1602
LCD_Delay_ms(2); //延時(shí)2ms
lcden=0; //使能1602
}
//************************************************************************/
// 描述:指定x,y寫(xiě)入字符函數(shù)
//************************************************************************/
void W_lcd(unsigned char x,unsigned char y,unsigned char Data)
{
if (y == 0){write_com(0x80 + x);} //第一行
else{write_com(0xc0 + x);} //第二行
write_date( Data); //寫(xiě)入數(shù)據(jù)
}
//指定x,y寫(xiě)入字符串函數(shù)
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
{
if (y == 0){write_com(0x80 + x);} //第一行
else{write_com(0xC0 + x);} //第二行
while (*s) //
{write_date( *s); s++;} //寫(xiě)入數(shù)據(jù)
}
//************************************************************************/
// 描述:初始化液晶,及畫(huà)面初始化
//************************************************************************/
void init_lcd(void) //初始化液晶,及畫(huà)面初始化
{
wela=0; //寫(xiě)液晶
lcden=0; //使能1602
write_com(0x38); //8 位總線,雙行顯示,5X7 的點(diǎn)陣字符
LCD_Delay_us(100); //延時(shí)100us
write_com(0x0F); //開(kāi)顯示,有光標(biāo),閃爍
write_com(0x06); //光標(biāo)右移動(dòng)
write_com(0x01); //清屏
write_com(0x80); //DDRAM 地址歸0
}
//鍵盤(pán)輸入函數(shù)**********************************************************************
void KeyDown(void)
{
char a=0;
P3=0x3f;
P1=0x00;
KeyState=0;
if(P3!=0x3f)//讀取按鍵是否按下
{
LCD_Delay_ms(10);//延時(shí)10ms進(jìn)行消抖
if(P3!=0x3f)//再次檢測(cè)鍵盤(pán)是否按下
{
P3=0x3f;
P1=0x00;
KeyState=1;
switch(P3) //P3口選擇
{
case(0x3e): KeyValue=0;break;
case(0x3d): KeyValue=1;break;
case(0x3b): KeyValue=2;break;
case(0x37): KeyValue=3;break;
case(0x2f): KeyValue=4;break;
case(0x1f): KeyValue=5;break;
}
P1=0x3f; //高低電平對(duì)調(diào)
P3=0x00;
switch(P1) //檢測(cè)P1口
{
case(0x3e): KeyValue=KeyValue;break;
case(0x3d): KeyValue=KeyValue+6;break;
case(0x3b): KeyValue=KeyValue+12;break;
case(0x37): KeyValue=KeyValue+18;break;
case(0x2f): KeyValue=KeyValue+24;break;
case(0x1f): KeyValue=KeyValue+30;break;
//default: KeyValue=0;
}
while(P1!=0x3f) //檢測(cè)按鍵松手檢測(cè)
{
LCD_Delay_ms(10);
a++;
}
}
}
}
//***********************************************************************
void main()
{
unsigned char a[]="0123456789abcdefghigklmnopqrstuvwxyz";
init_lcd() ;
while(1)
{
KeyDown();
if(KeyState)
{
write_date(a[KeyValue]);
KeyState=0;
}
}
}
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
中文日韩在线视频
|
一区影院
|
久久久婷
|
国产黄色电影
|
久久99精品久久久久久青青日本
|
91网在线播放
|
91在线视频国产
|
黄色一级免费
|
久久久久国产精品午夜一区
|
午夜精品久久久久久久久久久久久
|
色综合天天天天做夜夜夜夜做
|
久久在线
|
视频一区二区三区在线观看
|
精品国产乱码久久久久久丨区2区
|
午夜看片
|
欧州一区二区三区
|
毛片免费观看视频
|
天天拍天天色
|
日本a级大片
|
成人二区
|
欧美成人手机视频
|
日韩中文字幕一区二区三区
|
高清国产午夜精品久久久久久
|
嫩草一区二区三区
|
欧美日韩高清在线一区
|
欧美日韩电影免费观看
|
秋霞国产
|
国产精品日韩欧美一区二区
|
а天堂中文最新一区二区三区
|
国产线视频精品免费观看视频
|
国产激情网
|
久久一区二区三区四区
|
在线观看免费av网
|
91中文字幕在线观看
|
久久精品视频免费观看
|
国产一区高清
|
亚洲一区在线日韩在线深爱
|
亚洲成人在线免费
|
亚洲视频在线免费
|
日韩精品免费
|
国产欧美日韩在线播放
|