?? 復件 main.c
字號:
#include <pic.h>
#define LCD_RS RD1
#define LCD_RW RD2
#define LCD_E RD3
#define LCD_DATA PORTD
#define BAND1 RE0
#define BAND2 RE1
unsigned long temp;//用來存放臨時輸入數據
const unsigned long cons[]={100000000,10000000,1000000,100000,10000,1000,100,10};
__CONFIG(HS & WDTDIS & PWRTEN & BORDIS & LVPDIS & WRTEN & UNPROTECT);
void wait10()//延時10ms
{
unsigned int d=250;
while(--d){;}
}
void wait2s()//延時2s
{
unsigned long d=280000;
while(--d){;}
}
LCD_BUSY()//顯示屏忙檢測
{
PORTD=0;
TRISD=0xF0;
LCD_RS=0;
LCD_RW=1;
LCD_E=1;
do{;}
while(RD7!=0);
}
void WR_LCD(char cmd,char data)//顯示屏寫命令或數據
{
char tmp;
LCD_BUSY();
tmp=data;
TRISD=0x00;
PORTD=0;
LCD_DATA=data&0B11110000;
if(cmd=='D')LCD_RS=1;
LCD_E=1;
NOP();
LCD_E=0;
tmp=tmp<<4;
LCD_DATA=tmp&0B11110000;
if(cmd=='D')LCD_RS=1;
LCD_E=1;
NOP();
LCD_E=0;
}
LCD_INIT()//顯示屏初始化
{
TRISD=0x00;
WR_LCD(' ',0x38);
wait10();
WR_LCD(' ',0x38);
wait10();
WR_LCD(' ',0x38);
wait10();
WR_LCD(' ',0B00101100);//四位數據、兩行顯示、5*10點陣
WR_LCD(' ',0B00000001);//清屏
WR_LCD(' ',0x08);//關顯示
//WR_LCD(' ',0B00000110);//讀寫一個字符后,地址指針加1,整屏不動
//WR_LCD(' ',0B00000111);//讀寫一個字符后,地址指針加1,整屏左移
WR_LCD(' ',0B00001100);//開顯示
//WR_LCD(' ',0B11010000);//顯示光標移到第二行第16字符
//WR_LCD(' ',0B10000000);//顯示光標移到第一行第1字符
}
void display(unsigned long tt)
{
unsigned char i,j;
unsigned char disp_hr[9]=" ";
for(i=0;i<8;i++)
{
if(tt>=cons[i])
{
tt=tt-cons[i];
disp_hr[i]=0x31;
for(j=i+1;j<9;j++)disp_hr[j]=0x30;
}
while(tt>=cons[i])
{
tt=tt-cons[i];
disp_hr[i]=disp_hr[i]+1;
}
}
disp_hr[i]=0x30+tt;
WR_LCD('C',0B11000000);//顯示光標移到第二行第1字符
for(i=0;i<9;i++)
{
WR_LCD('D',disp_hr[i]);
}
}
//主程序*/
void main()
{
unsigned int k;
TRISA=0x00;
TRISB=0xFF;
TRISC=0x00;
TRISE=0x0F;
RBPU=0;
PORTB=0;
//LCD_INIT();
temp=8000;
display(temp);
wait10();
while(1)
{
if((RB1==0)&&(RB2==1))
{
wait10();
if((RB1==0)&&(RB2==1))
{
for(k=1000;k>0;k--)
{
if((RB2==0)&&(RB1==0))
{
wait10();
if((RB2==0)&&(RB1==0))
{
temp=temp+1000;
break;
}
}
if((RB2==1)&&(RB1==1))
{
wait10();
if((RB2==1)&&(RB1==1))
{
temp=temp-1000;
break;
}
}
}
}
}
display(temp);
}
}
void interrupt itrt(void)
{
if(T0IE &&T0IF)
{
T0IF=0;
}
if(TMR1IE &&TMR1IF)
{
TMR1IF=0;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -