色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>C/C++語(yǔ)言編程>

自編字型圖案及LCD文字顯示實(shí)驗(yàn)案例

大小:0.1 MB 人氣: 2017-09-06 需要積分:0
自編字型圖案及LCD文字顯示實(shí)驗(yàn)案例

1、自編字型圖案實(shí)驗(yàn)

/*自編字型圖案實(shí)驗(yàn)(ch13-6-2.c)適用於89S51線上燒錄實(shí)驗(yàn)板(USB版)*/
#include?
#define LCDP? P0?// 定義LCM 資料匯流排接至P0
sbit RS = P3^2;??// 暫存器選擇位元(0:指令,1:資料)
sbit RW = P3^1;??// 設(shè)定讀寫位元 (0:寫入,1:讀取)
sbit E =? P3^0;??// 致能位元 (0:禁能,1:致能)
sbit BF = P0^7;??// 忙碌檢查位元(0:不忙,1:忙碌)
char?count=20;?// 中斷次數(shù)計(jì)數(shù),20次*50ms=1秒?
char?time[10];? ?// 顯示時(shí)間陣列(第1行)
/* 聲明自定義字型陣列變量 */
char code am[32] = { ?// 顯示上三角及AM
0x00, 0x00, 0x01, 0x80, 0x03, 0xC0, 0x07, 0xE0,
0x0F, 0xF0, 0x1F, 0xF8, 0x3F, 0xFC, 0x7F, 0xFE,
0x00, 0x00, 0x18, 0x44, 0x24, 0x6C, 0x24, 0x6C,
0x3C, 0x54, 0x24, 0x54, 0x24, 0x44, 0x00, 0x00};
char code pm[32] = {?// 顯示下三角及PM
0x00, 0x00, 0x7F, 0xFE, 0x3F, 0xFC, 0x1F, 0xF8,
0x0F, 0xF0, 0x07, 0xE0, 0x03, 0xC0, 0x01, 0x80,?
0x00, 0x00, 0x38, 0x44, 0x24, 0x6C, 0x24, 0x6C,
0x38, 0x54, 0x20, 0x54, 0x20, 0x44, 0x00, 0x00};
bit? ampm=1;???// 0:上午(am),1:下午(pm),初值下午?
char? hour=11;???// 聲明時(shí),初值為11點(diǎn)?
char? minute=59;??// 聲明分,初值為59分?
char? second=50;??// 聲明秒,初值為50秒?
void transfer(void);?// 轉(zhuǎn)換時(shí)分秒至time陣列中?
void write_inst(char); ?// 寫入指令函數(shù)?
void write_char(char); ?// 寫入字元函數(shù)?
void write_pat(void); ?// 寫入自建字型函數(shù)?
void check_BF(void); ?// 檢查忙碌函數(shù)?
void init_LCM(void); ?// 聲明LCM初始設(shè)定函數(shù)?
//===========主程式=============================
main()
{?char i;
?init_LCM();????// 初始設(shè)定?
?write_pat();????// 寫入自建字型?
?IE=0X82;?????// Timer 0中斷致能?
?TMOD=0x01;?????// T0設(shè)為MODE1
?TH0=(56636-50000) / 256;?// 填入計(jì)時(shí)量之高位元組?
?TL0=(56636-50000) % 256;?// 填入計(jì)時(shí)量之低位元組?
?TR0=1;??????// 啟動(dòng)Timer 0
?while(1)?????// 無(wú)窮循環(huán)?
?{?transfer();????// 轉(zhuǎn)換時(shí)分秒至time陣列中??
??write_inst(0x80);??// 指定第1列位置?
??for (i=0;i<10;i++)??// 循環(huán)?
???write_char(time[i]);// 顯示時(shí)間?????
?}???????// while結(jié)束?
}????????// main() 結(jié)束?
//====轉(zhuǎn)換函數(shù)===================
void transfer(void)
{?time[0]= hour/10 + 0x30;?// 時(shí)數(shù)之十位數(shù)顯示資料?
?time[1]= hour%10 + 0x30;?// 時(shí)數(shù)之個(gè)位數(shù)顯示資料?
?time[2]= ':';????// 顯示冒號(hào)??
?time[3]= minute/10 + 0x30;?// 分?jǐn)?shù)之十位數(shù)顯示資料?
?time[4]= minute%10 + 0x30;?// 分?jǐn)?shù)之個(gè)位數(shù)顯示資料?
?time[5]= ':';????// 顯示冒號(hào)?
?time[6]= second/10 + 0x30;?// 秒數(shù)之十位數(shù)顯示資料?
?time[7]= second%10 + 0x30;?// 秒數(shù)之個(gè)位數(shù)顯示資料?
?time[8]=0x00;????// 自鍵字型之高位元組?
?if (ampm==0)? ????// 判定是否為上午?
??time[9]=0x00;???// 表示上午之自鍵字型?
?else time[9]=0x02;???// 表示下午之自鍵字型??
}????????// transfer()函數(shù)結(jié)束?
//====寫入自建字型函數(shù)===================
void write_pat(void)
{?char i;
?write_inst(0x40);???// 設(shè)定CGRAM的位置?
?for (i=0;i<32;i++)
??write_char(am[i]);??// 寫入上午之自鍵字型?
?for (i=0;i<32;i++)
??write_char(pm[i]);??// 寫入下午之自鍵字型??
}????????// write_pat()函數(shù)結(jié)束?
//===== Timer 0中斷副程式 =======================
void clock(void)?interrupt 1?// T0中斷副程式?
{?TH0=(56636-50000)/256;??// 填入計(jì)時(shí)量?
?TL0=(56636-50000)%256;??// 填入計(jì)時(shí)量?
?if (--count==0) ???// 中斷次數(shù)是否達(dá)到20次?
?{?count=20;????// 重新計(jì)次?
??second++;????// 秒數(shù)加1?
??if (second>=60)???// 是否達(dá)到60秒?
??{?second=0;???// 秒數(shù)歸零?
???minute++;???// 分?jǐn)?shù)加1?
???if (minute>=60)??// 是否達(dá)到60分?
???{?minute=0;??// 分?jǐn)?shù)歸零?
????hour++;???// 時(shí)數(shù)加1?
????if (hour == 13)?// 是否達(dá)到13小時(shí)?
?????hour=1; ?// 時(shí)數(shù)改為1?
????if (hour == 12)?// 是否達(dá)到12小時(shí)?
?????ampm=~ampm;?// 切換上下午?
}?}?}?}?????// 結(jié)束?
//====初始設(shè)定函數(shù)(8位元傳輸模式)===================
void init_LCM(void)
{?write_inst(0x30);?// 設(shè)定功能-8位元-基本指令?
?write_inst(0x30);?// 設(shè)定功能-8位元-基本指令?
?write_inst(0x30);?// 英文LCM相容設(shè)定,中交LCM可忽略?
?write_inst(0x38);?// 英文LCM設(shè)定兩列,中交LCM可忽略?
?write_inst(0x08);?// 顯示功能-關(guān)顯示幕-無(wú)游標(biāo)-游標(biāo)不閃?
?write_inst(0x01);?// 清除顯示幕(填0x20,I/D=1)
?write_inst(0x06);?// 輸入模式-位址遞增-關(guān)顯示幕???
?write_inst(0x0c);?// 顯示功能-開顯示幕-無(wú)游標(biāo)-游標(biāo)不閃?
}??????//?init_LCM()函數(shù)結(jié)束?
//==== 寫入指令函數(shù) ================================
void write_inst(char inst)
{?check_BF();???// 檢查是否忙碌?
?LCDP = inst;??// LCM讀入MPU指令?
?RS = 0; RW = 0; E = 1;?// 寫入指令至LCM
?check_BF();????? // 檢查是否忙碌??
}??????// write_inst()函數(shù)結(jié)束?
//==== 寫入字元資料函數(shù) ============================
void write_char(char chardata)
{?check_BF();???// 檢查是否忙碌?
?LCDP = chardata;?// LCM讀入字元?
?RS = 1; RW = 0 ;E = 1;?// 寫入資料至LCM
?check_BF();???// 檢查是否忙碌?
}??????// write_char()函數(shù)結(jié)束?
//====檢查忙碌函數(shù)================================
void check_BF(void)
{?E=0;????// 禁止讀寫動(dòng)作?
?do?????// do-while循環(huán)開始?
?{ ?BF=1;???// 設(shè)定BF為輸入??
? ??RS = 0; RW = 1;E = 1; ?// 讀取BF及AC
?}while(BF == 1);?// 忙碌繼續(xù)等?
}??????// check_BF()函數(shù)結(jié)束?
?
?
?

2、LCD文字顯示實(shí)驗(yàn)

/*LCD文字顯示實(shí)驗(yàn)(ch13-6-1.c)適用於89S51線上燒錄實(shí)驗(yàn)板(USB版)*/
#include
#define LCDP? P0?//?定義LCM 資料匯流排接至P0
sbit RS?=?P3^2;?//?暫存器選擇位元(0:指令,1:資料)
sbit RW?=?P3^1;?//?設(shè)定讀寫位元 (0:寫入,1:讀取)
sbit E?=?P3^0;?//?致能位元 (0:禁能,1:致能)
sbit BF?=?P0^7;?//?忙碌檢查位元(0:不忙,1:忙碌)
char line1[]="LCM test program";// 第1次顯示字串(第1行)
char line2[]="Everything is OK";// 第1次顯示字串(第2行)
char line3[]="中文LCM 測(cè)試程序";// 第2次顯示字串(第1行)
char line4[]="一切正常歡迎使用";// 第2次顯示字串(第2行)
void init_LCM(void);?//?初始設(shè)定函數(shù)?
void write_inst(char);?//?寫入指令函數(shù)?
void write_char(char);?//?寫入字元資料函數(shù)?
void check_BF(void);?//?檢查忙碌函數(shù)?
void delay1ms(int);??//?延遲函數(shù) ?
// ============ 主程序 ===========================
main()
{?char i;???????// 聲明變量?
?init_LCM();??????// 初始設(shè)定?
?while(1)??????// 無(wú)盡循環(huán)?
?//=====LCM test program ======
?{?write_inst(0x80);???// 指定第一列位置?
??for (i=0;i<16;i++)???// 循環(huán)?
???write_char(line1[i]);?// 顯示16個(gè)字?
?//=====Everything is OK ======
??write_inst(0x90);???// 指定第二列位置?
??for (i=0;i<16;i++)???// 循環(huán)?
???write_char(line2[i]);?// 顯示16個(gè)字?
??delay1ms(2000);????// 延遲2秒?
??//===== 中文LCM 測(cè)試程序 ======
??write_inst(0x80);???// 指定第一列位置?
??for (i=0;i<16;i++)???// 循環(huán)?
???write_char(line3[i]);?// 顯示16個(gè)字?
??//===== 一切正常歡迎使用 ======
??write_inst(0x90);???// 指定第二列位置?
??for (i=0;i<16;i++)???// 循環(huán)?
???write_char(line4[i]);?// 顯示16個(gè)字?
??delay1ms(2000);????// 延遲2秒?
?}????????// while結(jié)束?
}?????????// 主程序main()結(jié)束?
//====初始設(shè)定函數(shù)(8位元傳輸模式)===================
void init_LCM(void)
{?write_inst(0x30);?// 設(shè)定功能-8位元-基本指令?
?write_inst(0x30);?// 設(shè)定功能-8位元-基本指令?
?write_inst(0x30);?// 英文LCM相容設(shè)定,中交LCM可忽略?
?write_inst(0x38);?// 英文LCM設(shè)定兩列,中交LCM可忽略?
?write_inst(0x08);?// 顯示功能-關(guān)顯示幕-無(wú)游標(biāo)-游標(biāo)不閃?
?write_inst(0x01);?// 清除顯示幕(填0x20,I/D=1)
?write_inst(0x06);?// 輸入模式-位址遞增-關(guān)顯示幕?
?write_inst(0x0c);?// 顯示功能-開顯示幕-無(wú)游標(biāo)-游標(biāo)不閃??
}??????// init_LCM()函數(shù)結(jié)束?
//==== 寫入指令函數(shù) ================================
void write_inst(char inst)
{?check_BF();????// 檢查是否忙碌?
?LCDP = inst;???// LCM讀入MPU指令?
?RS = 0; RW = 0; E = 1;?// 寫入指令至LCM
?check_BF();????// 檢查是否忙碌?
}???????// write_inst()函數(shù)結(jié)束?
//==== 寫入字元資料函數(shù) ============================
void write_char(char chardata)
{?check_BF();????// 檢查是否忙碌?
?LCDP = chardata;??// LCM讀入字元?
?RS = 1; RW = 0 ;E = 1;?// 寫入資料至LCM
?check_BF();????// 檢查是否忙碌?
}???????// write_char()函數(shù)結(jié)束?
//====檢查忙碌函數(shù)================================
void check_BF(void)
{?E=0;?????// 禁止讀寫動(dòng)作?
?do??????// do-while循環(huán)開始?
?{ ?BF=1;????// 設(shè)定BF為輸入?
? ?RS = 0; RW = 1;E = 1;?// 讀取BF及AC
?}while(BF == 1);??// 忙碌繼續(xù)等?
}???????//?check_BF()函數(shù)結(jié)束?
//==== 延遲函數(shù) ================================
void delay1ms(int x)
{?int i,j;????// 聲明變量?
?for (i=1;i ??for (j=1;j<120;j++);// 執(zhí)行120次,延遲1ms
}???????// delay1ms()函數(shù)結(jié)束?
?

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?
      主站蜘蛛池模板: 肉色欧美久久久久久久蜜桃 | 99热都是精品 | 国产成人拍精品免费视频爱情岛 | 国产成人免费观看在线视频 | 九九九精品国产在线 | 亚洲午夜精品A片久久软件 亚洲午夜精品A片久久不卡蜜桃 | 99热在线视频 | 岛国精品在线观看 | 久草色在线 | 免费看毛片的网址 | 国产精品久久久久婷婷五月色婷婷 | 婷婷五月久久精品国产亚洲 | 黄页免费观看 | 男女作爱在线播放免费网页版观看 | 国产在线视频分类精品 | 4438成人情人网站 | 国产一区免费在线观看 | 国产 亚洲 另类 欧美 在线 | 污到湿的爽文免费阅读 | 亚洲精品天堂在线 | 免费在线视频a | 黄色小说在线 | 国产午夜人做人免费视频中文 | 青青草原亚洲 | 国产精品99AV在线观看 | 2017必看无码作品 | 亚洲 欧美 制服 校园 动漫 | 国产精品手机在线视频 | 99视频免费在线 | 公和熄洗澡三级中文字幕 | 免费毛片播放 | 被送到黑人性奴俱乐部 | 青青久在线 | 久久亚洲午夜牛牛影视 | 99精品国产免费观看视频 | jizzxxxx18中国内地 | 99在线这精品视频 | 欧美另类jizzhd | 国产亚洲精品线观看不卡 | 伊人网综合在线观看 | 亚洲高清毛片一区二区 |