第一篇:單片機實訓
#include
//#include
//注意那個LCD_Wait()函數,它是判“忙”標志的,在實際硬件要把注掉的那種打開
//Port Definitions********************************************************** sbitLcdRs = P2^0;sbit:特殊功能寄存器,位尋址,位變量名=特殊功能寄存器名^位位置
sbitLcdRw = P2^1;sbitLcdEn = P2^2;sfrDBPort = 0x80;//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.數據端口
sfr特殊功能寄存器名=特殊功能寄存器地址常數
sfr16: 16位特殊功能寄存器,字尋址,低位在低字節,高
位在高字節
//內部等待函************************************************************************** unsigned char LCD_Wait(void){ LcdRs=0;LcdRw=1;_nop_();LcdEn=1;_nop_();
數 //while(DBPort&0x80);//在用Proteus仿真時,注意用屏蔽此語句,在調用GotoXY()時,會進入死循環,//可能在寫該控制字時,該模塊沒有返回寫入完備命令,即DBPort&0x80==0x80
//實際硬件時打開此語句
LcdEn=0;returnDBPort;} //向LCD寫入命令或數據************************************************************ #define LCD_COMMAND
0
// Command #define LCD_DATA
// Data #define LCD_CLEAR_SCREEN 0x01
// 清屏 #define LCD_HOMING
0x02
// 光標返回原點 voidLCD_Write(bit style, unsigned char input){ LcdEn=0;LcdRs=style;LcdRw=0;_nop_();
} DBPort=input;_nop_();//注意順序 LcdEn=1;_nop_();//注意順序 LcdEn=0;_nop_();LCD_Wait();
//設置顯示模式************************************************************ #define LCD_SHOW
0x04
//顯示開 #define LCD_HIDE
0x00
//顯示關
#define LCD_CURSOR
0x02 //顯示光標 #define LCD_NO_CURSOR 0x00
//無光標
#define LCD_FLASH
0x01
//光標閃動 #define LCD_NO_FLASH 0x00
//光標不閃動
voidLCD_SetDisplay(unsigned char DisplayMode){ LCD_Write(LCD_COMMAND, 0x08|DisplayMode);}
//設置輸入模式************************************************************ #define LCD_AC_UP
0x02 #define LCD_AC_DOWN 0x00
// default
#define LCD_MOVE
0x01
// 畫面可平移 #define LCD_NO_MOVE 0x00
//default
voidLCD_SetInput(unsigned char InputMode){ LCD_Write(LCD_COMMAND, 0x04|InputMode);}
//初始化LCD************************************************************ voidLCD_Initial(){ LcdEn=0;LCD_Write(LCD_COMMAND,0x38);
//8位數據端口,2行顯示,5*7點陣
LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);
//開啟顯示, 無光標
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);
//清屏
LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);
//AC遞增, 畫面不動 } //************************************************************************ voidGotoXY(unsigned char x, unsigned char y){ if(y==0)
LCD_Write(LCD_COMMAND,0x80|x);if(y==1)
LCD_Write(LCD_COMMAND,0x80|(x-0x40));}
void Print(unsigned char *str){ while(*str!=' 主站蜘蛛池模板: 国产一区二区在线影院| 久久免费无码高潮看片a片| 亚洲精品国产精品国产自2022| 高清一区二区三区免费视频| 国内精品久久久久久久97牛牛| 九九九免费观看视频| 亚洲va无码手机在线电影| 免费无码专区毛片高潮喷水| 欧美熟妇色ⅹxxx欧美妇| 男人进女人下部全黄大色视频| 国产成a人片在线观看视频下载| 成人精品视频一区二区三区尤物| 无码精品不卡一区二区三区| 婷婷久久香蕉五月综合加勒比| 日韩午夜福利无码专区a| 人人狠狠综合久久亚洲| 精品一区二区三区免费视频| 麻豆精品国产精华液好用吗| 丰满熟女高潮毛茸茸欧洲视频| 久久麻豆成人精品av| 韩国19禁无遮挡啪啪无码网站| 比比资源先锋影音网| 99久久综合精品五月天| 国产乱子伦农村xxxx| 少妇高潮灌满白浆毛片免费看| 国产精品久久久影视青草| 红桃av一区二区三区在线无码av| 曰批全过程免费视频在线观看无码| 人妻少妇乱孑伦无码专区蜜柚| 欧美黑人又粗又硬xxxxx喷水| 熟女少妇在线视频播放| 欧美成人视频| 97超级碰碰碰碰久久久久| 亚洲妇女自偷自偷图片| 精品久久久久久久久久久aⅴ| 久久久久久久性潮| 久久日本三级韩国三级| 丁香五月天综合缴情网| 伊人久久大香线蕉av网禁呦| 欧美乱妇高清无乱码| 久久久人人人婷婷色东京热|