久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
12864矩陣任意顯示兩位數
[打印本頁]
作者:
haoren
時間:
2015-9-15 00:07
標題:
12864矩陣任意顯示兩位數
昨天,12單片機12M換24M導致時序錯誤,今天12864鍵值顯示異常。看來短時間內完成工程。必須經驗豐富來著。
/********************************************************** 用矩陣按鍵輸入任意兩位數并顯示在12684上。如先輸入2,再輸入5
液晶上顯示25。用矩陣按鍵0-9共10個按鍵。LCD12864用串行方式操作, 如果用并行,請自行修改。
***********************************************************/
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define NOP _nop_();
sbit LCD_CS=P1^0; //片選,高電平有效(RS)
sbit LCD_SID=P1^1; //串行數據輸入端(R/W)
sbit LCD_SCLK=P1^2; //串行同步時鐘,上升沿讀取SID數據(E) sbit LCD_PSB=P1^3; //并/串選擇 H并行 L串行
sbit LCD_RST=P1^4; //復位,低電平有效
uchar keynum;
uchar code dis1[]={"請輸入任意兩位數"};
uchar code dis2[16]={"0123456789ABCDEF"};
uchar dis_buf[]={0,0};
uchar getkey();
void display();
void delay(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<110;i++);
}
}
/*寫指令程序,指令由3個字節組成,第一個為寫指令*/
/*第二個為指令高4位,第三個為指令低4位*/
void send_cmd(uchar cmd_dat)
{
uchar i;
uchar i_dat;
i_dat=0xf8;
LCD_CS=1;
LCD_SCLK=0;
for(i=0;i<8;i++)
{
LCD_SID=(bit)(i_dat&0x80);
LCD_SCLK=0;
LCD_SCLK=1;
i_dat=i_dat<<1;
}
i_dat=cmd_dat;
i_dat&=0xf0;
for(i=0;i<8;i++)
{
LCD_SID=(bit)(i_dat&0x80);
LCD_SCLK=0;
LCD_SCLK=1;
i_dat=i_dat<<1;
}
i_dat=cmd_dat;
i_dat<<=4;
for(i=0;i<8;i++)
{
LCD_SID=(bit)(i_dat&0x80);
LCD_SCLK=0;
LCD_SCLK=1;
i_dat=i_dat<<1;
}
LCD_CS=0;
delay(10);
}
/*寫數據程序,指令由3個字節組成,第一個為寫數據*/ /*第二個為數據高4位,第三個為數據低4位*/
void send_dat(uchar cmd_dat)
{
uchar i;
uchar i_dat;
i_dat=0xfa;
LCD_CS=1;
for(i=0;i<8;i++)
{
LCD_SID=(bit)(i_dat&0x80);
LCD_SCLK=0;
LCD_SCLK=1;
i_dat=i_dat<<1;
}
i_dat=cmd_dat;
i_dat&=0xf0;
for(i=0;i<8;i++)
{
LCD_SID=(bit)(i_dat&0x80);
LCD_SCLK=0;
LCD_SCLK=1;
i_dat=i_dat<<1;
}
i_dat=cmd_dat;
i_dat<<=4;
for(i=0;i<8;i++)
{
LCD_SID=(bit)(i_dat&0x80);
LCD_SCLK=0;
LCD_SCLK=1;
i_dat=i_dat<<1;
}
LCD_CS=0;
delay(10);
}
void LCD_INIT()
{
LCD_PSB=0; //串行方式操作
send_cmd(0x30); //基本指令操作
delay(5);
send_cmd(0x0c); //顯示開,關游標,游標位置反白禁止 delay(5);
send_cmd(0x06); //光標右移,整體顯示不移動 delay(5);
send_cmd(0x01); //清除LCD顯示內容
delay(5);
}
uchar getkey()
{
unsigned char row,col,k;
for(row=0;row<4;row++) //行值依次為0xfe, 0xfd, 0xfb, 0xf7
{
P2=~(1<<row);
k=0x10;
for(col=0;col<4;col++) //列值掃描
{
if(!(P2&k)) //如果有鍵按下
return (row*4+col); //返回按鍵位置
k<<=1;
}
}
return 99; //無鍵按下返回99
}
void key_dispos() //按鍵處理并顯示程序
{
display(); //顯示第一行和初始鍵值 keynum=getkey(); //獲取鍵值
if(keynum<10) //
{
dis_buf[1]=dis_buf[0]; //第一個鍵值移位顯示 dis_buf[0]=keynum; //獲得第二個鍵值 display(); //顯示改變后的鍵值 while(keynum<10) //松手檢測
{
keynum=getkey();
}
}
}
void main()
{
P1=0xff;
LCD_INIT();
while(1)
{
key_dispos();
}
}
void display()
{
uint i;
send_cmd(0x80); //第一行顯示
i=0;
while(dis1[i]!='\0')
{
send_dat(dis1[i]);
i++;
}
send_cmd(0x90); //第二行顯示數據 send_dat(dis2[dis_buf[1]]);
send_dat(dis2[dis_buf[0]]);
}
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
91九色在线观看
|
四虎成人精品永久免费av九九
|
在线观看特色大片免费网站
|
91精品国产91久久久久久三级
|
国产精品视频久久久
|
国产高清视频一区二区
|
国产精品a久久久久
|
亚洲成人精
|
情侣酒店偷拍一区二区在线播放
|
欧美精品第一页
|
日韩午夜
|
久久精品网
|
国产欧美一区二区三区在线播放
|
免费特级黄毛片
|
中文字幕免费视频
|
成人精品在线观看
|
日本人做爰大片免费观看一老师
|
日日av
|
韩日一区二区三区
|
久久国产区
|
天天久久
|
中文字幕在线观看第一页
|
日韩有码在线观看
|
色综合久久久
|
国产精品综合
|
www.久久艹
|
日本一区二区三区在线观看
|
国产一区二区三区四区三区四
|
中文一区二区视频
|
国产乱码精品一区二区三区忘忧草
|
aaaa网站
|
久久乐国产精品
|
成人av一区
|
欧美在线视频网站
|
99精品国产一区二区三区
|
久久99精品久久久久久
|
激情三区
|
久久网站黄
|
日韩av成人在线
|
亚洲精品乱码久久久久久蜜桃91
|
电影91久久久
|