?? shiyan3.c
字號:
//*****液晶顯示程序設計(HD44780)*******
//*****設計者*******************展凌***
//****程序實現功能:簡單的顯示字符******
#include<reg52.h>
#define uchar unsigned char
sbit rs=P1^5;//寫信號
sbit rw=P1^6;//讀信號
sbit en=P1^7;//使能信號
sbit flag=ACC^7;//忙標志,flag=1(正在忙),flag=0(空閑)
uchar idata fttp[13]="www.heart.com";//要顯示的字符
uchar idata host[16]="ZhanLing welcome";
//*****************************************
void delay()//延時函數
{//用于讀寫數據要保持的時間
//時序圖要求是120ns,長點沒關系
uchar i;
for(i=200;i>0;i--);
}
//*****************************************
void busy_flag()//檢查忙標志函數
{//如果正在處理數據,則等待
do
{//這段要按照時序圖來寫
en=0;
rw=1;
rs=0;
en=1;
ACC=P0;
en=0;
}while(flag==1);
}
//*****************************************
void write_com(uchar com)//寫命令函數
{//向液晶寫入命令
//要按照時序圖來寫
busy_flag();//檢查忙
en=0;
rw=0;
rs=0;
en=1;
P0=com;//寫入命令
en=0;
delay();//延時一會
}
//******************************************
void write_dat(uchar dat)//寫數據函數
{//向LCD寫入數據,LCD會顯示出來的
//嚴格按照時序圖來寫
busy_flag();//檢查忙
en=0;
rw=0;
rs=1;
en=1;
P0=dat;//寫入數據
en=0;
delay();//延時一會
}
//*****************************************
void intc()//初始化函數
{
write_com(0x01);//LCD清屏
write_com(0x02);//LCD光標復位
write_com(0x06);//寫入一數據,光標自動右移
write_com(0x0c);//不顯示光標
write_com(0x38);//P0的8位數據線都有效(必須)
}
//*********************************************
void main()//主函數
{
uchar i;
intc();//初始化
for(i=0;i<13;i++)
{
write_dat(fttp[i]);
//第1行頂格顯示13個字符
}
write_com(0x80+0x40);//改變光標位置
//0x80表示第1行頂格,0x80+0x40第2行頂格
//0x80+0x41表示第2行第2個位置
for(i=0;i<16;i++)
{
write_dat(host[i]);
//第2行頂格顯示16個字符
}
while(1);//循環
}
//**************************************************
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -