亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lcdshow.c

?? 摩托羅拉的時鐘的原代碼
?? C
字號:
/*文件描述:本文件包含了用HD44780顯示相關的3個子程序    *
*         1. LCDShow:在LCD上顯示32個字符               *
*         2. LcdInit:初始化Lcd                         *
*         3. Lcd_Command:執行給定的cmd命令             *
*-------------《嵌入式應用技術基礎教程》--------------*/
//[以下為子程序源代碼]
//[頭文件]
#include "GP32C.h"         //包含頭文件

#define LcdData PTB        //Lcd顯示數據傳送口
#define LcdData_D  DDRB    //數據口方向寄存器
#define LcdCtrl PTC        //Lcd控制信號傳送口
#define LcdCtrl_D  DDRC    //控制口方向寄存器
#define  LcdRS 0           //Lcd寄存器選擇信號PTC0
#define  LcdRW 1           //讀寫信號接PTC1
#define  LcdE  2           //Lcd使能信號接PTC2

//內部調用子程序
void Lcd_Command(unsigned char cmd);          //命令執行子程序
void LcdInit(void);                           //Lcd初始化子程序
  //在HD44780顯示屏上顯示一個字符子函數
void LcdshowCharacter(unsigned char str,unsigned char m,unsigned char n); 
unsigned char ChangeASCII(unsigned char x);   //轉換數值x為對應的ASCII碼子函數
//外部變量
extern unsigned char time[14];
extern unsigned char alarm[14];
extern unsigned char Ttime[3];
extern int Tdate[3];
extern unsigned char Ttime2[3];
extern int Tdate2[3];





/*LcdshowCharacter:在HD44780顯示屏上顯示一個字符--------------------*
*功能描述:在HD44780顯示屏上第m行,第n列顯示字符str         *
*參  數:str:待顯示字符                                 *
*返  回:無                                             *
*------------------以上為子程序說明-------------------*/
void LcdshowCharacter(unsigned char str,unsigned char m,unsigned char n)  
  {	 	
 	LcdCtrl&=~(1<<LcdRS);      //RS、R/W=00,寫指令
	LcdCtrl&=~(1<<LcdRW);    
  	Lcd_Command(0b10000000|((m-1)*0x40+(n-1))); 
	LcdCtrl|=1<<LcdRS;		 //RS、R/W=10,寫數據到DDRAM中
    LcdCtrl&=~(1<<LcdRW);
   	Lcd_Command(str);
   }

unsigned char ChangeASCII(unsigned char x)   //轉換數值x為對應的ASCII碼
{
    unsigned char y;
    return y=x+0x30;
}

//顯示大小為n字符數組在第m行的子函數
void LcdShowString(unsigned char str[],unsigned char n,unsigned char m)  
{
   unsigned char i;
   LcdInit();
   for(i=0;i<n;i++)
    {
      LcdshowCharacter(str[i],m,(i+1));
    }
}



void Lcdshow(unsigned char temp[])             //顯示日期時間子程序
{   unsigned char i;
    LcdInit();
    for(i=0;i<4;i++)
     {
       LcdshowCharacter(ChangeASCII(temp[i]),1,(i+4));
     }
   
    LcdshowCharacter('-',1,8);
    LcdshowCharacter(ChangeASCII(temp[4]),1,9);
    LcdshowCharacter(ChangeASCII(temp[5]),1,10);
    LcdshowCharacter('-',1,11);
    LcdshowCharacter(ChangeASCII(temp[6]),1,12);
    LcdshowCharacter(ChangeASCII(temp[7]),1,13);
    LcdshowCharacter(ChangeASCII(temp[8]),2,5);
    LcdshowCharacter(ChangeASCII(temp[9]),2,6);
    LcdshowCharacter(':',2,7);
    LcdshowCharacter(ChangeASCII(temp[10]),2,8);
    LcdshowCharacter(ChangeASCII(temp[11]),2,9);
    LcdshowCharacter(':',2,10);
    LcdshowCharacter(ChangeASCII(temp[12]),2,11);
    LcdshowCharacter(ChangeASCII(temp[13]),2,12); 
     
}
   
/*LcdInit:初始化Lcd------------------------------------*
*功  能:初始化Lcd(HD44780),設置顯示方式,清屏,AC自動+1  *
*參  數:無                                             *
*返  回:無                                             *
*-----------------------------------------------------*/
void LcdInit(void)
  {
    unsigned char i;
    LcdData_D=0b11111111;     //數據口為輸出
    LcdCtrl_D|=(1<<LcdE);     //控制口低三位為輸出
    LcdCtrl_D|=(1<<LcdRS); 
    LcdCtrl_D|=(1<<LcdRW); 
    LcdCtrl|=(1<<LcdE);       //E=1
    LcdCtrl&=~(1<<LcdRS);     //RS、R/W=00,寫指令
    LcdCtrl&=~(1<<LcdRW);    
    Lcd_Command(0b00111000);  //8位數據接口,2行,5*7點陣
    Lcd_Command(0b00001000);  //關顯示,關光標顯示,不閃爍	
    Lcd_Command(0b00000001);  //清屏
    for(i=0;i<250;i++);       //延時>1.6ms
    for(i=0;i<250;i++); 
    Lcd_Command(0b00001100);  //開顯示,關光標顯示,不閃爍
  }
/*Lcd_Command:執行給定的cmd命令------------------------*
*功  能:執行給定的cmd命令,且延時                       *
*參  數:cmd:待執行的命令                               *
*返  回:無                                             *
*-----------------------------------------------------*/
void Lcd_Command(unsigned char cmd)
  {	 	
    unsigned char i;	 
    for (i=0;i<20;i++);    //等待>40us
    LcdData=cmd;	         //把指令碼送到Lcd數據傳送口
    LcdCtrl|=(1<<LcdE);    //Lcd開始接收數據
    asm("NOP");
    asm("NOP");
    asm("NOP");
    LcdCtrl&=~(1<<LcdE);   //Lcd結束接收數據
    for (i=0;i<20;i++);    //等待>40us
  }
  
void LcdShowCursor(unsigned char m,unsigned char n)    //顯示光標在第m行,第n列
{
   LcdCtrl&=~(1<<LcdRS);     //RS、R/W=00,寫指令
   LcdCtrl&=~(1<<LcdRW);
   Lcd_Command(0b00001111); 
   Lcd_Command(0b10000000|((m-1)*0x40+(n-1)));
}





/*void LcdShowMenu(void)    //顯示菜單
{  
   unsigned char temp[12]="1. Set Time";
   unsigned char temp2[13]="2. Set Alarm";
   unsigned char i;
   LcdInit();
   for(i=0;i<11;i++)
    {
      LcdshowCharacter(temp[i],1,(i+1));
    }
   for(i=0;i<12;i++)
    {
      LcdshowCharacter(temp2[i],2,(i+1));
    }
}*/

//將輸入的鍵值傳送到相應位置的位
void Transmission(unsigned char Keyvalue,unsigned char temp[],unsigned char m,unsigned char n)
{
   if(m==1)    //在第一行
    {
      switch(n)
       {
         case 4:temp[0]=Keyvalue;break;
         case 5:temp[1]=Keyvalue;break;
         case 6:temp[2]=Keyvalue;break;
         case 7:temp[3]=Keyvalue;break;
         case 9:temp[4]=Keyvalue;break;
         case 10:temp[5]=Keyvalue;break;
         case 12:temp[6]=Keyvalue;break;
         case 13:temp[7]=Keyvalue;break;
         
       }
    }
   if(m==2)       //在第二行
    {
      switch(n)
       {
         case 5:temp[8]=Keyvalue;break;
         case 6:temp[9]=Keyvalue;break;
         case 8:temp[10]=Keyvalue;break;
         case 9:temp[11]=Keyvalue;break;
         case 11:temp[12]=Keyvalue;break;
         case 12:temp[13]=Keyvalue;break;
       } 
    } 
}

//判斷按下的鍵是否數字鍵
unsigned char Discriminant(unsigned char m)
{ 
  if(m=='1'||m=='2'||m=='3'||m=='4'||m=='5'||m=='6'||m=='7'||m=='8'||m=='9'||m=='0')
  return 1;
  else return 0;
}

void Delay(void)
  {  unsigned char u;
     unsigned char v; 
    for(u=0;u<=250;u++)
      for(v=0;v<=250;v++);
  }

void Changetime(int temp1[],unsigned char temp2[])  //將數組temp1拆分存儲到數組temp2
{
   time[0]=temp1[0]/1000;
   time[1]=temp1[0]/100%10;
   time[2]=temp1[0]/10%10;
   time[3]=temp1[0]%10;
   time[4]=temp1[1]/10;
   time[5]=temp1[1]%10;
   time[6]=temp1[2]/10;
   time[7]=temp1[2]%10;
   time[8]=temp2[0]/10;
   time[9]=temp2[0]%10;
   time[10]=temp2[1]/10;
   time[11]=temp2[1]%10;
   time[12]=temp2[2]/10;
   time[13]=temp2[2]%10;
}


void Change(void)         //將數組time組合存儲到數組Tdate
{
   Tdate[0]=time[0]*1000+time[1]*100+time[2]*10+time[3];
   Tdate[1]=time[4]*10+time[5];
   Tdate[2]=time[6]*10+time[7];
   Ttime[0]=time[8]*10+time[9];
   Ttime[1]=time[10]*10+time[11];
   Ttime[2]=time[12]*10+time[13];
}


void Change2(void)      //將數組alarm組合存儲到數組Tdate2
{
   Tdate2[0]=alarm[0]*1000+alarm[1]*100+alarm[2]*10+alarm[3];
   Tdate2[1]=alarm[4]*10+alarm[5];
   Tdate2[2]=alarm[6]*10+alarm[7];
   Ttime2[0]=alarm[8]*10+alarm[9];
   Ttime2[1]=alarm[10]*10+alarm[11];
   Ttime2[2]=alarm[12]*10+alarm[13];
}


void Controle(void)           //控制時鐘的日期時間合法
{  
   if(time[12]>5) time[12]=0;
   if(time[10]>5) time[10]=0;
   if(Ttime[0]>=20&&time[9]>=5) time[9]=0;
   if(time[8]>2) time[8]=0;
   if(Tdate[1]==2&&(Tdate[0]%4==0&&Tdate[0]%100!=0||Tdate[0]%400==0))
	 { if(time[6]>2) time[6]=0;}
   if(Tdate[1]==1||Tdate[1]==3||Tdate[1]==5||Tdate[1]==7||
      Tdate[1]==8||Tdate[1]==10||Tdate[1]==12)
	 { if(time[6]==3&&time[7]>1) time[7]=0;}
   if(Tdate[1]==2||Tdate[1]==4||Tdate[1]==6||Tdate[1]==9||Tdate[1]==11)
	 { if(time[6]==3&&time[7]>0) time[7]=0;}
   if(time[6]>3) time[6]=0;
   if(Tdate[1]>10&&time[5]>2) time[5]=0;
   if(time[4]>1) time[4]=0;
   if(time[6]>3) time[6]=0;
   if(Tdate[1]>10&&time[5]>2) time[5]=0;
   if(time[4]>1) time[4]=0;                   
}


void Controle2(void)           //控制鬧鐘的日期時間合法
{  
   if(alarm[12]>5) alarm[12]=0;
   if(alarm[10]>5) alarm[10]=0;
   if(Ttime2[0]>=20&&alarm[9]>=5) alarm[9]=0;
   if(alarm[8]>2) alarm[8]=0;
   if(Tdate2[1]==2&&(Tdate2[0]%4==0&&Tdate2[0]%100!=0||Tdate2[0]%400==0))
	 { if(alarm[6]>2) alarm[6]=0;}
   if(Tdate2[1]==1||Tdate2[1]==3||Tdate2[1]==5||Tdate2[1]==7||
      Tdate2[1]==8||Tdate2[1]==10||Tdate2[1]==12)
	 { if(alarm[6]==3&&alarm[7]>1) alarm[7]=0;}
   if(Tdate2[1]==2||Tdate2[1]==4||Tdate2[1]==6||Tdate2[1]==9||Tdate2[1]==11)
	 { if(alarm[6]==3&&alarm[7]>0) alarm[7]=0;}
   if(alarm[6]>3) alarm[6]=0;
   if(Tdate2[1]>10&&alarm[5]>2) alarm[5]=0;
   if(alarm[4]>1) alarm[4]=0;
   if(alarm[6]>3) alarm[6]=0;
   if(Tdate2[1]>10&&alarm[5]>2) alarm[5]=0;
   if(alarm[4]>1) alarm[4]=0;                   
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久er99热精品一区二区| 欧美国产日产图区| 精东粉嫩av免费一区二区三区| 欧美一区二区日韩一区二区| 国产在线不卡一区| 亚洲男人的天堂在线aⅴ视频 | 蜜桃视频一区二区三区在线观看 | 精品国产凹凸成av人网站| 国产成人av资源| 亚洲午夜一区二区三区| 精品欧美一区二区在线观看| 99re亚洲国产精品| 蜜臀精品一区二区三区在线观看 | 免费成人在线视频观看| 欧美激情综合网| 欧美日本精品一区二区三区| 国产成人日日夜夜| 亚洲电影你懂得| 国产精品美女久久久久高潮| 欧美视频中文一区二区三区在线观看| 国内偷窥港台综合视频在线播放| 狠狠色丁香九九婷婷综合五月| 欧美一区二区视频网站| 国产精品一级片在线观看| 亚洲国产精品久久久男人的天堂| 成人精品国产一区二区4080| 免费国产亚洲视频| 亚洲欧洲日韩在线| 精品久久国产97色综合| 欧美夫妻性生活| 午夜电影一区二区三区| 亚洲人成网站影音先锋播放| 久久久不卡网国产精品二区| 日韩视频免费观看高清完整版| 一本色道久久综合狠狠躁的推荐| 国产一区二区久久| 日日夜夜精品免费视频| 亚洲视频1区2区| 国产日产欧美一区| 精品欧美久久久| 欧美一卡在线观看| 欧美一区二区三区公司| 91精品久久久久久久久99蜜臂| 韩日av一区二区| 亚洲午夜久久久| 亚洲精品日日夜夜| 亚洲人成影院在线观看| 国产精品嫩草久久久久| 国产午夜亚洲精品理论片色戒| 三级在线观看一区二区| 久久精品免费在线观看| 国产福利一区二区三区在线视频| 91麻豆精品国产| av在线这里只有精品| 丝袜美腿亚洲一区| 亚洲成人高清在线| 亚洲成av人片在www色猫咪| 亚洲精品伦理在线| 一区二区三区高清在线| 亚洲激情网站免费观看| 中文字幕日韩av资源站| 欧美日韩精品一区二区天天拍小说| 中文字幕一区在线观看视频| 欧美性受极品xxxx喷水| 欧美亚洲综合久久| 欧美日韩国产区一| 欧美日本在线播放| 欧美久久久一区| 538prom精品视频线放| 777奇米成人网| 欧美一级一级性生活免费录像| 欧美日韩成人一区| 欧美一区二区三区免费观看视频| 日韩欧美资源站| 欧美videos中文字幕| 在线亚洲免费视频| 中文字幕一区二区三| 亚洲人成小说网站色在线 | 从欧美一区二区三区| 卡一卡二国产精品| 国产日产欧美一区| 久久精品二区亚洲w码| 欧美午夜电影网| 欧美一区国产二区| 人人精品人人爱| 国产乱码精品一区二区三| 色屁屁一区二区| 亚洲精品国产品国语在线app| 麻豆一区二区99久久久久| 成人激情免费视频| 91精品在线观看入口| 日韩和欧美一区二区三区| 日韩精品一区二区三区swag| 亚洲综合视频网| 国产99精品在线观看| 久久影院视频免费| 蜜桃视频在线观看一区二区| 欧美亚洲禁片免费| 国产欧美视频在线观看| 国产一区日韩二区欧美三区| 中文字幕精品一区二区三区精品| 美女诱惑一区二区| 91亚洲精品久久久蜜桃| 欧美影片第一页| 99re8在线精品视频免费播放| 免费xxxx性欧美18vr| 99久久久无码国产精品| 国产不卡免费视频| 国产欧美一区二区精品久导航| 国产精品国产三级国产| 一区二区三区中文在线观看| 色婷婷久久一区二区三区麻豆| 国产乱码一区二区三区| 亚洲电影一区二区| 不卡电影一区二区三区| 国产精品伊人色| 日韩区在线观看| 国产精品美女视频| 国产麻豆91精品| 欧美精品高清视频| 蜜桃久久精品一区二区| 日韩高清一级片| 91国在线观看| 亚洲色图一区二区| 国产一区视频导航| 亚洲欧洲中文日韩久久av乱码| 国产一区二区在线视频| 91黄色免费网站| 亚洲一区二区三区自拍| 色香色香欲天天天影视综合网| 国产日韩av一区| 91在线免费看| 亚洲一区在线观看免费| 欧美视频在线播放| 亚洲成人1区2区| 欧美电影免费观看高清完整版在线观看 | 中文字幕在线观看一区二区| 久久99精品久久久久久| 精品久久久久av影院| 日产国产欧美视频一区精品| 国产色爱av资源综合区| 色成人在线视频| 欧美图区在线视频| 一本色道综合亚洲| 久久99热这里只有精品| 激情久久五月天| 亚洲视频在线一区二区| 欧美性猛交xxxxxxxx| 亚洲国产色一区| 久久亚洲捆绑美女| 成人黄色片在线观看| fc2成人免费人成在线观看播放| 91.成人天堂一区| 国产精品99久久不卡二区| 精品一区二区三区免费播放| 欧美一区二区三区在线视频| 亚洲电影你懂得| 奇米色一区二区三区四区| 中文字幕在线不卡国产视频| 亚洲制服丝袜在线| 色婷婷综合视频在线观看| 欧美日韩在线免费视频| 成人黄色小视频| 日韩一二三区不卡| 91精品国产一区二区人妖| 欧美一级爆毛片| 欧美国产一区二区| 裸体一区二区三区| 色综合 综合色| 日韩免费视频一区二区| 欧美电影免费提供在线观看| 一区二区三区欧美| 午夜激情久久久| 中文字幕精品一区二区精品绿巨人| 国产精品一二三四五| 欧美国产精品一区| 日本久久电影网| 亚洲成人免费影院| 精品少妇一区二区三区| 波多野结衣精品在线| 亚洲一区二区在线观看视频 | 久久精品国产99| 亚洲黄色尤物视频| 亚洲成人综合网站| 91美女视频网站| 亚洲成人动漫av| 久久综合久色欧美综合狠狠| 成人一区二区在线观看| 亚洲一区二区欧美激情| 久久久久久久久久久久久女国产乱| 成人午夜电影久久影院| 亚洲尤物在线视频观看| 欧美一三区三区四区免费在线看| 国产成人超碰人人澡人人澡| 亚洲欧美区自拍先锋| 欧美成人伊人久久综合网| 91网上在线视频| 久久99国内精品| 亚洲电影激情视频网站| 中文字幕一区二区三区乱码在线 |