在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>嵌入式開發>HD44780 LCD源程序

HD44780 LCD源程序

2009-01-19 | rar | 333 | 次下載 | 5積分

資料介紹

/* LCD 型號:HD44780?????? */
/*打印機型號: EPSON M311?? */
#include
#include
#include
#define? uchar???? unsigned char
#define? uint????? unsigned int
?????????????????????????????????? //定義8255I/O端口地址
#define? PCC8255?? XBYTE[0x007f]?? //8255命令口地址
#define? PC8255??? XBYTE[0x007e]?? //8255的PC口地址
#define? PB8255??? XBYTE[0x007d]?? //8255的PC口地址
#define? PA8255??? XBYTE[0x007c]?? //8255的PC口地址

sfr????? RPCTL????? = 0xD8;
sbit???? RPCTL_5??? = RPCTL^5;
sbit???? LS164A???? = P2^5;
sbit???? LS164cp??? = P2^6;
sbit???? Print_busy = P3^3;
sbit???? IC_RST???? = P1^1;
sbit???? IC_CLK???? = P1^0;
sbit???? IC_IO????? = P1^2;
sbit???? IC_PGM???? = P3^2;
uchar code table1[16]="FEDCBA9870123456";
uchar code table2[16]="0000123456789ABC";
void? INIT_8255(void);??????????? /*初始化8255*/

void? LcdInit(void);????????????? /* LCD初始化函數 */
void? LcdCmd(uchar);????????????? /* LCD控制命令函數 */
void? LcdData(uchar);???????????? /* LCD數據輸入函數 */
void? LcdClr(void);?????????????? /* LCD清屏函數 */
void? LcdStr(uchar *);??????????? /* 顯示字符串函數 */
void? LcdDisp(uchar x,uchar d);
void? Delay_msec(uint x);???????? /* 延時函數 */
uchar Getkey(void);?????????????? /*鍵盤函數 */
void? PrintInit(void);??????????? /*打印初始化函數*/
void? PrintData (uchar? d);?????? /*打印函數*/
void? PrintString(uchar *p);????? //打印字符串

void LcdDisp(uchar x,uchar d)??? //指定位置顯示字符 x:LCD位置 d:字符
{
? if(x<9)
? {
???? LcdCmd(0x80 + x);
???? LcdData(d);
? }
? else
? {
???? LcdCmd(0xc0 + x);
???? LcdData(d);
? }
}
void LcdStr(uchar *p)??????? /* 顯示字符串函數 */
{
?? data uchar i;
?? LcdCmd(0x80);???????????? //設置顯示數據RAM
?? for (i=0;i<=7;i++)
?? {
??????? LcdData(*p);???????? /* char of LCM */
??????? p++;
?? }
??
?? LcdCmd(0xc0);???????????? //設置顯示數據RAM
?? for (i=0;i<=7;i++)
?? {
??????? LcdData(*p);??????? /* char of LCM */
??????? p++;
?? }
}
void? LcdClr()?????????????? /* LCD清屏函數?-----通過送0x20清屏*/
{
?? data uchar i;
?? LcdCmd(0x80);???????????? //設置顯示數據RAM
?? for (i=0;i<=7;i++)
??????? LcdData(0x20);??????? /* char of LCM */

?? LcdCmd(0xc0);???????????? //設置顯示數據RAM
?? for (i=0;i<=7;i++)
??????? LcdData(0x20);???????? /* char of LCM */
}
void LcdClr1(void)?????????? /* LCD清屏函數?-----通過控制命令清屏*/?
{
??? LcdCmd(0x01);
}
void LcdCmd(uchar c)??????? /* LCD控制命令函數 */
{
? RPCTL_5 = 1;
? Delay_msec(1);??????????? //延時1ms (1000us)
? PCC8255 = 0x00;
? PCC8255 = 0x02;
? PB8255? = c? ;
? PCC8255 = 0x05;
? PCC8255 = 0x04;
? Delay_msec(1);??????????? //延時1ms (1000us)
? RPCTL_5 = 0;
}
void LcdData(uchar? c)????? /* LCD數據輸入函數 */
{
? RPCTL_5 = 1;
? Delay_msec(1);??????????? //延時1ms (1000us)
? PCC8255 = 0x01;
? PCC8255 = 0x02;
? PB8255? = c;????
? PCC8255 = 0x05;
? PCC8255 = 0x04;
? Delay_msec(1);??????????? //延時1ms (1000us)
? RPCTL_5 = 0;
}

void LcdInit()????????????? /* LCD初始化函數 */
{
? Delay_msec(41);?????????? //延時41ms
? LcdCmd(0x3c);???????????? //設置字符參數
? LcdCmd(0x08);???????????? //設置顯示開/關
? LcdCmd(0x01);???????????? //清除顯示
? Delay_msec(41);?????????? //延時41ms
? LcdCmd(0x06);???????????? //設置輸入方式
? LcdCmd(0x10);???????????? //設置顯示光標移位
? LcdCmd(0x0c);???????????? //設置顯示開/關
}
void Delay_msec(uint x)????? /* 延時函數 */
{
? data uchar i;
? do
? {
??? for (i=0;i<125;i++)????? /*延時 8us x 125 = 1ms? */
???????? ;
? }
? while((x--)!=0);
}
/*-----------------------------------------------------------------*/
void INIT_8255(void)??? /*8255 初始化 */
{
? RPCTL_5 = 1;
??? _nop_ ();
? PCC8255 = 0x80;
??? _nop_ ();
? RPCTL_5 = 0;
}
/*---------------------------------------------------------------*/
uchar Getkey(void)
{
? uchar i,lie,keycode,flag;
? flag=0;
? LS164A=0;???????????????? //向74Ls164移入8個0
? for (i=0;i<8;i++)
? {
?????? LS164cp=0;??
?????? LS164cp=1;
? }
? while((P2&0x1f)==0x1f);???? //是否有鍵閉合?
? Delay_msec(100);??????????? //延時10ms (10,000us)
? while((P2&0x1f)==0x1f);???? //是否有鍵閉合?
? LS164A = 1;???????????????? //向74Ls164移入8個1
? for (i=0;i<8;i++)
? {
??????? LS164cp = 0;??
???????? LS164cp = 1;
? }
? i=0;
? lie = 0;??????????????????????? //lie --列號
? while(i<8)
? {
????? LS164A = 0;???????????????? //向74Ls164移入0
????? LS164cp = 0;??
????? LS164cp = 1;
????? if((P2&0x01)==0)
????? {
????????? keycode=0x00 + lie;????? /*行基數 = 0x00 */
????????? break;
????? }
????? else if((P2&0x02)==0)
????? {
????????? keycode=0x08 + lie;????? /*行基數 = 0x08 */
????????? break;
????? }
????? else if((P2&0x04)==0)
????? {????
????????? keycode=0x10 + lie;????? /*行基數 = 0x10 */
????????? break;
????? }
????? else if((P2&0x08)==0)
????? {
????????? keycode=0x18 + lie;????? /*行基數 = 0x18 */
????????? break;
????? }
????? else if((P2&0x10)==0)
????? {
????????? keycode=0x20 + lie;????? /*行基數 = 0x20 */
????????? break;
????? }
????? else
????? {?? i++;
????????? lie = lie + 1;?????????? /*列號 + 1 ---下一列*/
????????? if(i==8)
???????????? flag=1;
????? }
? }
? if(flag==0)
? {
???? LS164A=0;
???? for (i=0;i<8;i++)
???? {
???????? LS164cp=0;??
?????????? LS164cp=1;
???? }
???? while((P2&0x1f)!=0x1f);???? /*按鍵是否釋放*/
???? return(keycode);??????????? /*返回鍵碼 */
? }
? else
???? return -1;
}
/*-------------------------------------------------------------------*/
void PrintData (uchar? d)????? /*打印函數*/
{
??? while (Print_busy);?????? //Busy=1,循環
??????????? _nop_ ();
??????????? _nop_ ();
??????????? _nop_ ();
??????????? _nop_ ();
??? while (Print_busy);?????? //Busy=1,循環
?????????? RPCTL_5 = 1;
?????????????
?????????? PA8255? = d;
?????????? PCC8255 = 0x08;
?????????? PCC8255 = 0x09;

?????????? RPCTL_5 = 0 ;
}????
void PrintString(uchar *p)???? //打印字符串
{
?? while(*p!='\0')
?? {
???????? PrintData(*p);
???????? p++;
?? }
?? PrintData(0x0a);
}
/*-----------------------------------------------------------------*/
void PrintInit(void)????? /*打印初始化函數*/
{
?? uchar i;
?? uchar code Prninitdata[12] ={0x01,0x1b,0x40,0x1b,0x55,0x25,0x1c,0x26,
??????????????????????????????? 0x1b,0x33,0x02};
?? for (i=0;i<11;i++)
?????? PrintData(Prninitdata[i]);
}
/*-----------------------------------------------------------------*/
void main()
{
? data uchar key;???
? uchar code prn0[]=" 電 腦 中 心";
? uchar code prn1[]="趙俊杰";
/*************************************************************/
?? Delay_msec(41);??????????????? //延時41ms
?? Delay_msec(41);??????????????? //延時41ms
?? Delay_msec(41);??????????????? //延時41ms
?? Delay_msec(41);??????????????? //延時41ms
?? INIT_8255();???????????????? /*8255初始化函數 */?
?? LcdInit();?????????????????? /* LCD初始化函數 */
?? PrintInit();???????????????? /*打印初始化函數
/*************************************************************/???
?? PrintString(prn0);
?? Delay_msec(400);???????????????? //延時400ms
?? PrintString(prn1);
?? LcdStr(table1);
?? Getkey();
?? LcdClr1();
?? key = Getkey()+0x30;
?? LcdDisp(1,key);
?? Getkey();
?? LcdStr(table2);
?? Getkey();
?? LcdClr();
}

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1QW2893應急燈專用檢測芯片
  2. 590.40 KB  |  1次下載  |  免費
  3. 2低功耗藍牙BLE透傳模塊HM-BT4531的技術規格與應用指南
  4. 1.40 MB  |  1次下載  |  免費
  5. 3PC2570低Iq 理想二極管控制芯片中文資料
  6. 1.56 MB   |  1次下載  |  免費
  7. 4AG32VH 系列應用指南
  8. 0.60 MB   |  1次下載  |  免費
  9. 5Claroty-2024年全球CPS安全狀況:中斷對業務的影響
  10. 3.70 MB   |  1次下載  |  免費
  11. 6stm32g070數據手冊和使用手冊
  12. 12.06 MB   |  次下載  |  免費
  13. 7FS312B USB的PD和OC快充協議電壓誘騙控制器中文手冊
  14. 1.35 MB   |  次下載  |  免費
  15. 8SY8201矽力杰高效率快速響應,1A, 27V輸入 同步降壓調節器
  16. 510.16 KB  |  次下載  |  免費

本月

  1. 1AI智能眼鏡產業鏈分析
  2. 4.43 MB   |  471次下載  |  免費
  3. 2蘇泊爾電磁爐線路的電路原理圖資料合集
  4. 2.02 MB   |  300次下載  |  5 積分
  5. 3貼片三極管上的印字與真實名稱的對照表詳細說明
  6. 0.50 MB   |  95次下載  |  1 積分
  7. 4長虹液晶電視R-HS310B-5HF01的電源板電路原理圖
  8. 0.46 MB   |  91次下載  |  5 積分
  9. 5涂鴉各WiFi模塊原理圖加PCB封裝
  10. 11.75 MB   |  89次下載  |  1 積分
  11. 6錦銳科技CA51F2 SDK開發包
  12. 24.06 MB   |  43次下載  |  1 積分
  13. 7AO4803A雙P通道增強型場效應晶體管的數據手冊
  14. 0.11 MB   |  28次下載  |  2 積分
  15. 8錦銳CA51F005 SDK開發包
  16. 19.47 MB   |  19次下載  |  1 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935127次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191388次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183342次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81588次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73815次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65989次下載  |  10 積分
主站蜘蛛池模板: 国产永久视频夜色资源网 | 久久精品国产免费看久久精品 | 视频一区 在线 | 天堂网中文字幕 | 一区视频在线播放 | sihu永久在线播放地址 | 欧美ggg| 伊人成伊人成综合网2222 | 成人免费精品视频 | 特黄特色大片免费视频播放 | 东京加勒比 | 国产精品福利一区 | www日本高清 | 久久久免费精品视频 | 国产乱码免费卡1卡二卡3卡四 | 九九视频这里只有精品 | 一级特黄aaa大片29 | 黄视频免费在线看 | 日日噜噜噜噜人人爽亚洲精品 | 天堂网 | 黄网站色视频 | 亚洲人成亚洲人成在线观看 | 无遮挡一级毛片视频 | 宅男666在线永久免费观看 | 欧美成人免费网站 | 一级骚片超级骚在线观看 | 女同激情视频 | 伊人久久大香线蕉资源 | 亚洲精品九色在线网站 | 国产成人小视频 | 国产性猛交xx乱 | 欧美网站色 | 天堂在线www网亚洲 天堂在线观看 | 亚洲一区二区在线免费观看 | 国产精品久久久久免费 | 人人草人人干 | 手机看日韩毛片福利盒子 | yy肉戏多纯黄的小说 | 四虎国产永久免费久久 | 国产美女动态免费视频 | 午夜在线视频国产 |