久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
74HC595驅動LCD1602(主控芯片at328p)
[打印本頁]
作者:
51黑ren
時間:
2015-12-27 03:10
標題:
74HC595驅動LCD1602(主控芯片at328p)
LCD貌似很少用了 太小 這個作為串入并出的一個小實驗罷LCD1602的數據線有8個直接用單片機驅動很費IO口,所以用74hc595(3位控制線串入8位并出)芯片的輸出端連接到LCD1602的數據線上
之前試了幾次都沒有弄好 主要是對數據手冊理解有誤
代碼(電路連接方式很簡單,包含在其中):
#include"Display.h"
#include<avr/pgmspace.h>
//unsigned char dpins[8]={A0,A1,A2,A3,A4,A5,8,9};
void InitLCD1602();
void WriteLCD1602Cmd(unsigned char cmd);
void AllowInput74HC595();
void WriteByte74HC595(byte data);
void AllowOutput74HC595();
void InitDisplay()
{
pinMode(_74HC595_RCK,OUTPUT);
pinMode(_74HC595_SCK,OUTPUT);
pinMode(_74HC595_SI,OUTPUT);
AllowInput74HC595();
WriteByte74HC595(0x00);
AllowOutput74HC595();
InitLCD1602();
}
void InitLCD1602()
{
pinMode(LCD1602_RS,OUTPUT);
pinMode(LCD1602_RW,OUTPUT);
pinMode(LCD1602_EN,OUTPUT);
digitalWrite(LCD1602_EN,HIGH);
digitalWrite(LCD1602_RW,HIGH);
digitalWrite(LCD1602_RS,HIGH);
/*
for(int i=0;i<8;i++)
{
pinMode(dpins[i],OUTPUT);
digitalWrite(dpins[i],LOW);
}*/
LCD1602_ENABLE;
delayMicroseconds(100);
WriteLCD1602Cmd(0x3c);//16*2行顯示,5*10點陣,8數據接口
delayMicroseconds(64);
WriteLCD1602Cmd(0x3c);//16*2行顯示,5*10點陣,8數據接口
delayMicroseconds(50);
WriteLCD1602Cmd(0x3c);
delay(20);
WriteLCD1602Cmd(0x06);//顯示模式,屏幕不動,字符后移
delayMicroseconds(20);
WriteLCD1602Cmd(0x0c); //屏幕開,光標關
delayMicroseconds(20);
WriteLCD1602Cmd(0x01);//清屏
delayMicroseconds(20);
}
void WriteLCD1602Cmd(unsigned char cmd)
{
LCD1602_RS_LOW; //rs=0:讀取/寫入指令模式
LCD1602_RW_WRITE;
delayMicroseconds(1);
LCD1602_ENABLE;
delayMicroseconds(1);
AllowInput74HC595();
WriteByte74HC595(cmd);
AllowOutput74HC595();
//WriteDpins(cmd);
delayMicroseconds(1);
LCD1602_DISABLE;
delayMicroseconds(1);
LCD1602_ENABLE;
delayMicroseconds(1);
}
void WriteLCD1602Data(unsigned char data)
{
LCD1602_RS_HIGH;
LCD1602_RW_WRITE;
delayMicroseconds(1);
LCD1602_ENABLE;
delayMicroseconds(1);
AllowInput74HC595();
WriteByte74HC595(data);
AllowOutput74HC595();
//WriteDpins(data);
delayMicroseconds(1);
LCD1602_DISABLE;
delayMicroseconds(1);
LCD1602_ENABLE;
delayMicroseconds(1);
}
void ClearLCD1602()
{
int i;
WriteLCD1602Cmd(0x80); //寫數據指針地址,0位置顯示
for(i=0;i<16;i++)
{
WriteLCD1602Data(' ');
delay(5);
}
WriteLCD1602Cmd(0xC0); //第二行顯示
for(i=0;i<16;i++)
{
WriteLCD1602Data(' ');
delay(5);
}
}
void Display(unsigned char row,char str[])
{
int i;
if(row==1)
{
WriteLCD1602Cmd(0x80); //寫數據指針地址,0位置顯示
}
else
{
WriteLCD1602Cmd(0xC0); //第二行顯示
}
int len=strlen(str);
for(i=0;i<len;i++)
{
WriteLCD1602Data(str[i]);
delay(5);
}
}
void AllowInput74HC595()
{
digitalWrite(_74HC595_RCK,LOW);//allow input 74HC595
}
void AllowOutput74HC595()
{
digitalWrite(_74HC595_RCK,HIGH);//allow output 74HC595
}
void WriteByte74HC595(unsigned char data)
{
boolean pinState;
unsigned char i;
digitalWrite(_74HC595_SI,LOW);
digitalWrite(_74HC595_SCK,LOW);
for(i=0;i<=7;i++)
{
digitalWrite(_74HC595_SCK,LOW);//before output 1bit must set SCK low
if(data &(0x01<<i))
{
pinState=HIGH;
}
else
{
pinState=LOW;
}
digitalWrite(_74HC595_SI,pinState);//write 1bit
digitalWrite(_74HC595_SCK,HIGH);//74HC595 receive when rising edge occur
}
digitalWrite(_74HC595_SCK,LOW); //stop 74HC595 input
}
/*
void WriteDpins(unsigned char d)
{
int i;
for(i=0;i<8;i++)
{
if(d &(0x01<<i))
{
digitalWrite(dpins[i],HIGH);
}
else
{
digitalWrite(dpins[i],LOW);
}
}
}*/
復制代碼
BTComm.zip
2015-12-27 03:10 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
2.06 KB, 下載次數: 38, 下載積分: 黑幣 -5
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产精品永久
|
盗摄精品av一区二区三区
|
久久精品亚洲
|
精品不卡
|
亚洲欧美中文字幕在线观看
|
国产一级视频免费播放
|
欧美日韩福利视频
|
中国一级大黄大片
|
91污在线
|
国产精品福利网
|
国产免费一区
|
久久久久国产精品免费免费搜索
|
国产精品久久久久久久免费观看
|
成人在线精品视频
|
99在线视频观看
|
精品美女视频在线观看免费软件
|
亚洲一区二区免费视频
|
国产欧美精品一区二区三区
|
欧美极品在线视频
|
久久人人爽人人爽
|
欧美片网站免费
|
欧美在线亚洲
|
午夜一区二区三区视频
|
在线一区二区观看
|
日韩中文字幕一区二区
|
精品一级
|
精品久久久久久亚洲综合网站
|
男人天堂网址
|
亚洲高清一区二区三区
|
日韩一区二区三区四区五区六区
|
欧美日韩视频在线播放
|
欧美国产中文字幕
|
欧美黄色大片在线观看
|
国产精品国产精品国产专区不卡
|
在线精品一区二区
|
五月综合久久
|
一区二区三区中文字幕
|
久久久久国产一区二区三区四区
|
亚洲不卡一
|
精品久久久久久久久久久久久久
|
在线欧美视频
|