LCD显示的秒表单片机课程设计 - 百度文库

ʱ : һ 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

ϵͬͷxxxxx#qq.com(#滻Ϊ@)