ʱ : һ LCD显示的秒表单片机课程设计 - 百度文库ϿʼĶ
ߺְҵѧԺ Ϣϵ
ʼڶǵLCDʾλúǵLCDдݺĸǵLCDָʾַ
Sbit K1=P1^0 sbit K2=P2^1,sbit BEEP=3^0, sbit LCD_RS=P2^0, sbit LCD_RW=P2^1, sbit LCD_EN=P2^2;ΪӿK1K2ΪƿأBEEPΪӿڣRSΪĴѡߵƽ1ʱѡݼĴ͵ƽ0ʱѡָĴRSΪдźţߵƽ1ʱѶ͵ƽ0ʱдE(EN)Ϊʹܶˣenable,ƬLCD1602ʾӡ
Uchar KeyCount=0 ;KeyCountΪۼưĴΪͣҸֵΪ0.
uchar code msg1[]={\Watch 0 \uchar code msg2[]={\һά飬protuesУplay1602LCDʾǻеַ
uchar code Prompts[][16]= {
{\ {\ {\ {\
21
ߺְҵѧԺ Ϣϵ
}
һά飬еһάʾ1602LCDϡK1Ϊͣưťһΰʱʼʾ1--? ڶΰʱֹͣʾ\
uchar Time_Buffer[] ={0,0,0,0}uchar LCD_Display_Buffer[] ={\飬һڼʱ壬һʾʱ仺塣 void BeeP() {
uchar i,j=70; for (i=0;i<180;i++) {
while (--j); BEEP=~BEEP; } BEEP=0;
}һ÷ӺFor(i=0;i<180;i++)ڿƷʱ䣬BEEP=~BEEPʹжݵһֲЧΪӵأֻеP3.0ߵƽ1ʱŹһִ֮BEEPֵΪ0ڲͨ״̬졣 void DelayX(uint ms) {
22
ߺְҵѧԺ Ϣϵ
uchar i;
while(ms--) for (i=0;i<120;i++); }һʱӺ
void Show_Second() {
uchar i;
LCD_Set_POS(0X45); LCDʾ for (i=3;i!=0xff;i--) {
λ1100s룬֣ʱתΪ8λַ LCD_Display_Buffer[2*i+1]=Time_Buffer[i]/10+'0'; LCD_Display_Buffer[2*i]=Time_Buffer[i]+'0'; i=3,2,1,0ʱֱʾʱ֣룬1/100s LCD_Write_Data(LCD_Display_Buffer[2*i+1]); LCD_Write_Data(LCD_Display_Buffer[2*i]); LCD_Write_Data(':'); }ʾʱ
} LCD_Set_POS(0X45)úڵʾλúڴӺǶһLCD_Write_Command(Position|0X80)LCD_Write_Command(0X45|0X80) л
23
ߺְҵѧԺ Ϣϵ
45 80 C5 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 õC5LCD_Write_Command(0XC5øúLCDдָLCD_Busy_Check()ڼLCDǷæ״̬紦æ״̬RSΪ0ѡָĴRWΪ1жENΪ1ĴʹܣDelay NOP()ʾʱĸڡResult=(bit)(P0&0X80)P0ijʼ״̬FF. FF 80 80 1 1 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 õĽ80returnΪ8010000000
ENֵΪ0Ĵʹܶ˽ֹáLCDдָӳRS=0(ѡָĴ)RW=0дEN=0ʹܶ˽ֹʹãʱڣcmd0XC5ֵP0ڣʱĸհڡʹܶ1ʱĸհڡEN=0Ĵֹʹá
void Time0() interrupt 1 using 0 {
TH0=-10000/256; TL0=-10000%6;
24