?? stc12c5a60s2-pdip40+ds18b20+lcd1602?
字號:
/*------------------------------------------------------------------------------*/
//File: LCD1602_8.H
//Note: LCD1602 Mini Driver.
/*------------------------------------------------------------------------------*/
#include <intrins.h>
/*------------------------------------------------------------------------------*/
//LCD接口定義
sfr IO = 0x80; //P0-0x80,P1-0x90,P2-0xA0,P3-0xB0;
sbit RS = P2^0; //LCD數據/命令選擇端(H/L)
sbit RW = P2^1; //LCD讀/寫選擇端(H/L)
sbit E = P2^2; //LCD使能控制
sbit bz = IO^7; //LCD忙標志位
/*------------------------------------------------------------------------------*/
//數據定義
#define uchar unsigned char
#define uint unsigned int
uchar lcdcounter;
uchar m;
/*------------------------------------------------------------------------------*/
//函數聲明
void lcd_busy(void); //測試LCD忙碌狀態程序
void lcd_wcmd(unsigned char cmd); //寫入指令到LCD程序
void lcd_wdat(unsigned char dat); //寫入數據到LCD程序
void lcd_pos (unsigned char x, bit y); //LCD數據指針位置程序
//void printc(unsigned char CHAR); //顯示字符
void prints(unsigned char *string); //顯示字符串
void lcd_init(void); //LCD初始化設定程序
//void lcd_moveto(unsigned char position);//LCD光標移動到指定位
/*------------------------------------------------------------------------------*/
//測試LCD忙碌狀態
void lcd_busy(void)
{
do
{
E = 0;
_nop_();
_nop_();
RS = 0; //指令
_nop_();
_nop_();
RW = 1; //讀出
_nop_();
_nop_();
IO = 0xff;
_nop_();
_nop_();
E = 1;
_nop_();
_nop_();
}while(bz); //bz=1表示忙,bz=0表示空閑
E = 0;
_nop_();
_nop_();
}
/*------------------------------------------------------------------------------*/
//寫入指令到LCD
void lcd_wcmd(unsigned char cmd)
{
lcd_busy(); //檢測忙
RS = 0; //指令
_nop_();
_nop_();
RW = 0; //寫入
_nop_();
_nop_();
E = 1;
_nop_();
_nop_();
IO = cmd; //指令
E = 0; //下降沿有效
_nop_();
_nop_();
}
/*------------------------------------------------------------------------------*/
//寫入數據函數
void lcd_wdat(unsigned char Data)
{
lcd_busy(); //檢測忙
RS = 1; //數據
_nop_();
_nop_();
RW = 0; //寫入
_nop_();
_nop_();
E = 1;
_nop_();
_nop_();
IO = Data; //數據
E = 0; //下降沿有效
_nop_();
_nop_();
}
/*------------------------------------------------------------------------------*/
//LCD數據指針位置程序
void lcd_pos(unsigned char x, bit y)
{
lcdcounter=x;
if(y)
lcd_wcmd(x|0xc0); //y=1,第二行顯示;y=0,第一行顯示 0<=x<16
else
lcd_wcmd(x|0x80); //數據指針=80+地址碼(00H~27H,40H~67H)
}
/*------------------------------------------------------------------------------*/
//顯示字符
/*
void printc(unsigned char CHAR)
{
lcd_wdat(CHAR);
}
*/
/*------------------------------------------------------------------------------*/
//顯示字符串
void prints(unsigned char *string)
{
unsigned char i;
// do{lcd_wdat(string[i]);i++;}while(string[i]!='\0');//生成代碼比for循環大
for(i=0;string[i]!='\0';i++)
lcd_wdat(string[i]);//有時用for循環也好
}
/*------------------------------------------------------------------------------*/
//LCD初始化設定
void lcd_init()
{
lcd_wcmd(0x38); //設置LCD為16X2顯示,5X7點陣,八位數據接口
lcd_wcmd(0x06); //LCD顯示光標移動設置(光標地址指針加1,整屏顯示不移動)
lcd_wcmd(0x0c); //LCD開顯示及光標設置(光標不閃爍,不顯示"_")
lcd_wcmd(0x01); //清除LCD的顯示內容
}
///*------------------------------------------------------------------------------*/
//LCD光標移動到指定位
//void lcd_moveto(unsigned char position)
//{
// lcd_wcmd(0x01);
// register cmd=0x80;
// lcdcounter=position;
// if (position > 59)
// position += 0x18;
// else
// {
// if (position > 39)
// position -= 0x14;
// else
// {
// if (positIOn > 19)
// positIOn += 0x2c;
// }
// }
// cmd=cmd|position;
// lcd_wcmd(cmd);
//}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -