久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3469|回復: 0
打印 上一主題 下一主題
收起左側

HT67Fxx單片機C語言控制LCD的源程序

[復制鏈接]
跳轉到指定樓層
樓主
/*****************************************************
                Project:        test lcd
                MCU:                HT67F40
                Clock:        4M(Internal)
                Author:        Alex_wu        
                Date:         20111103
                function: edit for segment0~17 + COM0~3 to drive LCD
                option:
                SysVolt: 3.0V        
                OSC: HIRC        
                WDT: enable        
                SysFreq: 4M
                Vlcd: 3.0V
                PB0/RES: I/O pin        
                Others select by user                                       
******************************************************/
#include "HT67F40.h"
#include "lcd.h"

#pragma        vector TM_ISR @0x14            //1ms timer
const u8 DigitCode[16] = {0x28,0x7e,0xa4,0x64,0x72,0x61,0x21,0x7c,0x20,0x60,0x30,0x23,0xa9,0x26,0xa1,0xb1}; //0~f

#pragma rambank0
u8  DISP8;      //display buffer
u8  DISP9;
u8  DISP10;
u8  DISP11;
u8  DISP12;
u8  DISP13;
u8  DISP14;
u8  DISP15;
u8  DISP16;

u8  time2ms;
u8  SENDDATA;
u8  STATE;
u8  t500ms;
u16 t1s;
u8  hour;
u8  min;
u8  index;
u16 time1s_dis;
u16 time1s;
u8  tmin;

bit time2msflag;
bit t500msflag;
bit t1sflag;
bit poweronflag;

//----------------------main-------------------
void main()
{   
    Chip_Init();

    for(_mp0 = 0x80; _mp0 < 0xff; _mp0++)
          {        
                  _iar0=0;
          }
         
          _dmbp0=1;
          for(_mp1 = 0x80; _mp1 < 0xa0; _mp1++)
          {        
                  _iar1=0;
          }
          _dmbp0=0;
         
    poweronflag=1;
         
    while(1)
    {
            clrwdt1;
            clrwdt2;
      if(time2msflag)
      {
              time2msflag=0;
              DIS_P();
              
              _dmbp0=1;
              _mp1 = 0x88;
              _iar1= DISP8;
              _mp1 = 0x89;
              _iar1= DISP9;
              _mp1 = 0x8a;
              _iar1= DISP10;
              _mp1 = 0x8b;
              _iar1= DISP11;
              _mp1 = 0x8c;
              _iar1= DISP12;
              _mp1 = 0x8d;
              _iar1= DISP13;
              _mp1 = 0x8e;
              _iar1= DISP14;
              _mp1 = 0x8f;
              _iar1= DISP15;
              _mp1 = 0x90;
              _iar1= DISP16;
              _dmbp0=0;
              
              timer_p();
      }
    }        
}
//---------------------------------------------
void Chip_Init()
{
        _cp0c=0;
        _cp1c=0;
        _acerl=0;
        
        _lcdout0=0;          //seg0~7
        _lcdout1=0;          //seg8~15
        _lcdout2=0b11111100; //seg16~17
        _lcdctrl=0b01001111; //1/3 bias1/4 duty
        
        _t0ae=1;
        _ade=0;
        _mf0e=1;
        _tm0c0=0;
        _tm0al=0b11101000;  //1ms
        _tm0ah=0b00000011;
        _tm0c1=0b11000001;
        _t0on=1;
        
        _emi=1;
}
//---------------------------------------------
void timer_p()
{
        if(t1sflag)
        {
                t1sflag=0;
                if(++tmin>=60)
                {
                        tmin=0;
                        if(++min>=60)
                        {
                                min=0;
                                if(++hour>=24)
                                 hour=0;
                        }
                }
        }
}
//---------------------------------------------
void DIS_P()
{  
          if(STATE)
          {
                  index=hour/10;
                  SENDDATA = ~DigitCode[index];
                  dis_p3();
                  
                  index=hour%10;
                  SENDDATA = ~DigitCode[index];
                  dis_p4();
                  
                  index=min/10;
                  SENDDATA = ~DigitCode[index];
                  dis_p5();
                  
                  index=min%10;
                  SENDDATA = ~DigitCode[index];
                  dis_p6();
                  
                  if(!t500msflag)
                    COL_C;
                  else
                    COL_S;  
          }
          else
          {
                  if(poweronflag)
                  {
                          F3_S;
                          G3_S;
                          E3_S;
                          DISP9=0x0f;
                          F4_S;
                          G4_S;
                          E4_S;
                          DISP11=0x0f;
                          COL_S;
                          F5_S;
                          G5_S;
                          E5_S;
                          DISP14=0x0f;
                          F6_S;
                          G6_S;
                          E6_S;
                          DISP16=0x0f;
                  }
                  else
                  {
                    DISP8=0;
                    DISP9=0;
                    DISP10=0;
                    DISP11=0;
                    DISP12=0;
                    DISP13=0;
                    DISP14=0;
                    DISP15=0;
                    DISP16=0;
                    STATE=1;
                  }
          }   
}
//-------------------
void dis_p3()
{
    if(SENDDATA & 0x80)
           C3_S;
          else
           C3_C;
           
          if(SENDDATA & 0x40)
           E3_S;
          else
           E3_C;
           
          if(SENDDATA & 0x10)
           D3_S;
          else
           D3_C;  
           
          if(SENDDATA & 0x08)
           G3_S;
          else
           G3_C;   
           
          if(SENDDATA & 0x04)
           F3_S;
          else
           F3_C;   
           
          if(SENDDATA & 0x02)
           A3_S;
          else
           A3_C;  
           
          if(SENDDATA & 0x01)
           B3_S;
          else
           B3_C;   
}
//-------------------
void dis_p4()
{
    if(SENDDATA & 0x80)
           C4_S;
          else
           C4_C;
           
          if(SENDDATA & 0x40)
           E4_S;
          else
           E4_C;
           
          if(SENDDATA & 0x10)
           D4_S;
          else
           D4_C;  
           
          if(SENDDATA & 0x08)
           G4_S;
          else
           G4_C;   
           
          if(SENDDATA & 0x04)
           F4_S;
          else
           F4_C;   
           
          if(SENDDATA & 0x02)
           A4_S;
          else
           A4_C;  
           
          if(SENDDATA & 0x01)
           B4_S;
          else
           B4_C;   
}
//-------------------
void dis_p5()
{
    if(SENDDATA & 0x80)
           C5_S;
          else
           C5_C;
           
          if(SENDDATA & 0x40)
           E5_S;
          else
           E5_C;
           
          if(SENDDATA & 0x10)
           D5_S;
          else
           D5_C;  
           
          if(SENDDATA & 0x08)
           G5_S;
          else
           G5_C;   
           
          if(SENDDATA & 0x04)
           F5_S;
          else
           F5_C;   
           
          if(SENDDATA & 0x02)
           A5_S;
          else
           A5_C;  
           
          if(SENDDATA & 0x01)
           B5_S;
          else
           B5_C;   
}
//-------------------
void dis_p6()
{
    if(SENDDATA & 0x80)
           C6_S;
          else
           C6_C;
           
          if(SENDDATA & 0x40)
           E6_S;
          else
           E6_C;
           
          if(SENDDATA & 0x10)
           D6_S;
          else
           D6_C;  
           
          if(SENDDATA & 0x08)
           G6_S;
          else
           G6_C;   
           
          if(SENDDATA & 0x04)
           F6_S;
          else
           F6_C;   
           
          if(SENDDATA & 0x02)
           A6_S;
          else
           A6_C;  
           
          if(SENDDATA & 0x01)
           B6_S;
          else
           B6_C;   
}
//---------------------------------------------
//1ms timer
//---------------------------------------------
void TM_ISR()
{
        _t0af=0;
                 
        if(++time2ms>=2)
        {
                time2ms=0;
                time2msflag=1;
               
         if(poweronflag)
         {
                  if(++time1s_dis>=1000) //筿陪2S
                  {
                           time1s_dis=0;
                           poweronflag=0;
                  }
         }
         else
         {
                  if(++t500ms>=250)
           {
                    t500ms=0;
                    t500msflag = ~t500msflag; //皗
                    
                    if(++t1s>=2)
             {
                      t1s=0;
                      t1sflag=1;
             }
           }
         }
        }        
}




全部資料51hei下載地址:
HT67FxxC語言控制LCD.zip (22.31 KB, 下載次數: 15)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人精品免高潮在线观看 | 国产精品精品 | 免费九九视频 | 国产美女一区二区三区 | 曰批视频在线观看 | 成人小视频在线观看 | 精品久久99 | 范冰冰一级做a爰片久久毛片 | 正在播放一区二区 | 鸡毛片 | 日韩欧美高清 | 毛片国产 | 亚洲一区视频在线播放 | 视频在线一区二区 | av天天干 | 免费黄色片视频 | 欧日韩在线 | 国产三级在线观看播放 | 日韩精品免费看 | 国产黄色麻豆视频 | 国产精品久久性 | 91大神在线看| 国产精品资源在线 | 日韩高清中文字幕 | 国产精品一区二区在线 | 99精品国自产在线 | 久久久久久久久国产成人免费 | 国产精品免费av | 视频一区二区三区中文字幕 | 91久久国产综合久久91精品网站 | 欧美成人一级视频 | 精品国产乱码久久久久久图片 | 日韩成人在线免费视频 | 久久久www成人免费无遮挡大片 | 久久久久久久av | 国产精品精品视频一区二区三区 | 国产在线精品一区二区三区 | 91精品久久久久久久久中文字幕 | 国产成人福利在线观看 | 亚洲一区二区三区四区五区午夜 | 精品亚洲一区二区 |