⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch452_lcd.c~

📁 键盘扫描及LED驱动芯片CH452的例子程序
💻 C~
📖 第 1 页 / 共 3 页
字号:
/*****************************************************
编译器:CodeWizardAVR V1.25.3 Professional

Project : LCD12864(ST7920)Driver
Version : 1.0
Date    : 2007-8-18
Author  :                           
Company :                         
Comments: 

Chip type           : ATmega16L
Clock frequency     : 8.000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 256 

液晶:12864
控制器:ST7920
与单片机连接方式:串行连接  【液晶PSB脚(15脚)接低】
    液晶CS    ----> PB.0
    液晶SID   ----> PB.1
    液晶SCLK  ----> PB.2

键盘控制芯片CH452与单片机连接关系:
    CH452 时钟端口SCL   ---->   PC.0
    CH452 数据端口SDA   ---->   PC.1     
    CH452 中断端口INT   ---->   PD.2

*****************************************************/          
#include "mega16.h"            
#include "Delay.H"   
#include "CH452.h"  

#define uchar unsigned char
#define uint unsigned int 
#define xtal 8

#define Set_CS()    DDRB.0=1;PORTB.0=1
#define Set_SID()   DDRB.1=1;PORTB.1=1
#define Set_SCLK()  DDRB.2=1;PORTB.2=1

#define Clr_CS()    DDRB.0=1;PORTB.0=0
#define Clr_SID()   DDRB.1=1;PORTB.1=0
#define Clr_SCLK()  DDRB.2=1;PORTB.2=0

#define SID_PIN_IN()        DDRB.1 = 0;
#define CLK_PIN_OUT()       DDRB.2 = 1;
#define CS_PIN_OUT()        DDRB.0 = 1;

#define CLR_CLK()           PORTB.2 = 0;
#define SET_CLK()           PORTB.2 = 1;

#define SID_PIN             PINB.1 //read pinx, not port!

 
//==============================函数声明=================================
void Delay(uint ms);
void W_1byte(uchar RW, uchar RS, uchar W_data);
void Write_8bits(uint W_bits);
void LCD_Init(void);
void LCD_Clear(void);
void LCD_set_xy(uchar x, uchar y); 
void LCD_Display(uchar *message);

void input(void);
void save(void); 

void print_root_page(void);
void print_sub1_page(void);
void print_sub2_page(void);
void print_sub3_page(void);
void print_sub4_page(void);
void print_sub1_1_page(void);
void print_sub1_2_page(void);
void print_sub4_1_page(uint X,uint Y);
 
void showXY(uint position_x,uint position_y); 

void Draw_Pic(uchar x, uchar y, flash uchar *Draw);
void Draw_Pic_Clear(void);
void Draw_Pic_Logo(flash uchar *Draw);
void Draw_Pic_LogoBar(void);


//==============================变量定义==================================
//uchar mynew1[]={"7920_3wires_demo"};
//uchar mynew2[]={"Create by:储振斌"};
//uchar mynew2[]={"欢迎进入系统"};
//uchar mynew3[]={"E_mail:chuzhenbi"};
//uchar mynew4[]={"n@163.com"};

uchar menu[]={"系统控制菜单"};
uchar menu1[]={"1.设置"};
uchar menu2[]={"2.画图"};
uchar menu3[]={"3.寻迹"};
uchar menu4[]={"4.监控"};
uchar menu5[]={"5.关于"};
uchar menu6[]={"6.帮助"};

uchar menu10[]={"设置菜单"};
uchar menu11[]={"1.起始坐标设置"};
uchar menu12[]={"2.半径设置"};

uchar menu20[]={"画图菜单"};
uchar menu21[]={"1.直线"};
uchar menu22[]={"2.矩形"}; 
uchar menu23[]={"3.圆形"}; 

uchar menu30[]={"寻迹菜单"};
uchar menu31[]={"1.寻迹"}; 

uchar menu40[]={"监控菜单"};
uchar menu41[]={"1.监控"};


uchar label_x_position[]={"X 坐标:"}; 
uchar label_y_position[]={"Y 坐标:"}; 
uchar label_banjing[]={"半径:"}; 

uchar OK[]={"设定成功!"}; 

uchar temp[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; 
uchar input_position,input_banjing; //输入坐标位置使能,输入半径使能
uchar count;                        //设定坐标、半径值时记录输入数字个数用
uchar menu_statu=100;               //当前所处菜单位置记录  
uchar monitor; 
uint X,Y;                           //存放当前坐标值
uint x_position,y_position;     //存放设定的坐标值以供调用 
uint banjing;     //存放设定的半径值以供调用 

uint temp_x_position,temp_y_position,temp_banjing,postion;


/////////////////////////////////////////////////////////////////////////
// Bitmap点阵数据表                                                    //
// 图片: C:\..面\未命名.bmp,横向取模左高位,数据排列:从左到右从上到下   //
// 图片尺寸: 128 * 32                                                  //
/////////////////////////////////////////////////////////////////////////
flash uchar qidong[] =                  // 数据表
{
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0xF8,0x31,0x80,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0xC0,0x00,0x00,
      0x00,0x00,0xFF,0x80,0x30,0xD8,0x00,0x18,0x06,0x00,0x03,0x30,0x00,0xC0,0x00,0x00,
      0x00,0x00,0x06,0x00,0x67,0xFC,0xFF,0xFC,0x0C,0x18,0x7F,0xF8,0xFC,0xC0,0x00,0x00,
      0x00,0x00,0x0C,0x60,0x78,0xC0,0x03,0x01,0xFF,0xFC,0x60,0x30,0x00,0xD8,0x00,0x00,
      0x00,0x00,0x3F,0xC0,0xD9,0x80,0x03,0x00,0x18,0x00,0x60,0x30,0x03,0xFC,0x00,0x00,
      0x00,0x00,0x07,0x01,0xF3,0x30,0x33,0x00,0x31,0x80,0x7F,0xF1,0xFE,0xD8,0x00,0x00,
      0x00,0x00,0x0C,0x60,0x37,0xF8,0x33,0x30,0x31,0x80,0x60,0x00,0x30,0xD8,0x00,0x00,
      0x00,0x00,0x7F,0xF0,0x63,0x60,0x33,0xF8,0x71,0x80,0x60,0x00,0x30,0xD8,0x00,0x00,
      0x00,0x00,0x03,0x19,0xFB,0x60,0x33,0x00,0xFF,0xF8,0x7F,0xF0,0x6C,0xD8,0x00,0x00,
      0x00,0x00,0x1B,0xC0,0xC3,0x60,0x33,0x01,0xB1,0x80,0x78,0x30,0xCD,0x98,0x00,0x00,
      0x00,0x00,0x33,0x60,0x3B,0x60,0x33,0x00,0x31,0x80,0x78,0x31,0xFF,0x98,0x00,0x00,
      0x00,0x00,0x63,0x39,0xE3,0x6C,0x33,0x00,0x31,0x80,0x78,0x30,0xC3,0x18,0x00,0x00,
      0x00,0x00,0xCF,0x18,0xC6,0x6C,0x33,0x18,0x31,0x80,0xDF,0xF0,0x06,0x78,0x00,0x00,
      0x00,0x00,0x06,0x00,0x1C,0x3D,0xFF,0xFC,0x3F,0xFD,0x98,0x30,0x0C,0x30,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};

/////////////////////////////////////////////////////////////////////////
// Bitmap点阵数据表                                                    //
// 图片: C:\..p\bitlogo.bmp,横向取模右高位,数据排列:从左到右从上到下   //
// 图片尺寸: 128 * 64                                                  //
/////////////////////////////////////////////////////////////////////////
flash uchar hehai[] =                  // 数据表
{
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0x3F,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC6,0x3F,0xFF,
      0xFF,0xF8,0xFF,0xFF,0xFF,0xFF,0xC3,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xC6,0x3F,0xFF,
      0xFF,0xF8,0x7F,0xFF,0xFF,0xF3,0x83,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0x44,0x3F,0xFF,
      0xFF,0xFC,0x3F,0xFF,0xFF,0xF1,0x00,0x7F,0xFF,0xFC,0x3F,0xFF,0xFC,0x44,0x7F,0xFF,
      0xFF,0xFC,0x3F,0xFF,0xFF,0xF0,0x00,0x7F,0xFF,0xFC,0x3F,0xFF,0xFC,0x60,0x7F,0xFF,
      0xFF,0xF0,0x3F,0xC0,0xFF,0xF8,0x00,0x7F,0xFF,0xFE,0x3F,0xFF,0xFC,0x30,0xFF,0xFF,
      0xFF,0xE7,0xE0,0x00,0x7F,0xF0,0x01,0xFF,0xFF,0xFC,0x3F,0xFF,0xFC,0x00,0x0F,0xFF,
      0xFF,0xCF,0x00,0x18,0xFF,0x80,0x03,0xFF,0xFF,0xFC,0x01,0xFF,0xFC,0x00,0x47,0xFF,
      0xFF,0xC6,0x01,0x1F,0xFF,0x94,0xE4,0xFF,0xFF,0xFC,0x00,0xFF,0xF0,0x03,0x03,0xFF,
      0xFF,0xC7,0x1F,0x1F,0xFF,0x9C,0xE0,0x7F,0xFF,0xFC,0x01,0xFF,0xE1,0x1E,0x03,0xFF,
      0xFF,0xC3,0x60,0x1F,0xFF,0x98,0xC0,0x3F,0xFF,0xF8,0x07,0xFF,0xE4,0xF0,0x1F,0xFF,
      0xFF,0xE2,0x40,0x1F,0xFF,0x89,0xC2,0x3F,0xFF,0xF0,0x1F,0xFF,0xE3,0x80,0x7F,0xFF,
      0xFF,0xF2,0x00,0x1F,0xFF,0x89,0x82,0x3F,0xFF,0x80,0x3F,0xFF,0xC3,0x00,0x7F,0xFF,
      0xFF,0xE2,0x00,0x9F,0xFF,0x91,0x80,0x07,0xFF,0x00,0x7F,0xFF,0xC7,0x00,0xFF,0xFF,
      0xFF,0xE0,0x80,0x9F,0xFF,0x90,0x00,0x07,0xFF,0x00,0xFF,0xFF,0xC7,0xE1,0xFF,0xFF,
      0xFF,0xE4,0xC0,0x9F,0xFF,0x80,0x00,0x23,0xFF,0x80,0xFF,0xFF,0xC7,0xE0,0x3F,0xFF,
      0xFF,0xE0,0xC1,0x9F,0xFF,0x80,0x04,0x3F,0xFF,0xE1,0xFF,0xFF,0xCF,0x80,0x1F,0xFF,
      0xFF,0xF8,0xFF,0x9F,0xFF,0xA0,0x00,0x1F,0xFF,0xE0,0x03,0xFF,0xEE,0x00,0x1F,0xFF,
      0xFF,0xC1,0xFF,0x9F,0xFF,0x84,0x00,0x0F,0xFF,0xE1,0xC0,0xFF,0xFC,0x00,0x3F,0xFF,
      0xFF,0xE1,0xFF,0x9F,0xFF,0x80,0x3C,0x0F,0xFF,0xC3,0xE0,0x3F,0xFC,0x78,0x7F,0xFF,
      0xFF,0xE1,0xFB,0x9F,0xFF,0x84,0xD8,0x6F,0xFE,0x83,0xF0,0x3F,0xFC,0xFC,0xFF,0xFF,
      0xFF,0xF1,0xF8,0x1F,0xFF,0x87,0xC0,0x7F,0xFC,0x07,0xF8,0x3F,0xFE,0xF8,0xFF,0xFF,
      0xFF,0xF1,0xFC,0x1F,0xFF,0xC7,0xE0,0xFF,0xFC,0x1F,0xFE,0x3F,0xFF,0x18,0xFF,0xFF,
      0xFF,0xFB,0xFE,0x1F,0xFF,0xFF,0xE0,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0x81,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xC9,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFE,0x43,0xFF,0xFF,0x3F,0x38,0xFF,0xFC,0x0F,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0x0F,0xFF,0x33,0x3F,0x3E,0x7F,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFE,0x00,0x7F,0x33,0x3F,0x3C,0x1F,0x9F,0x3F,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xF0,0xFE,0x7F,0x33,0x3F,0x21,0xFF,0x9F,0x3F,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xF2,0x00,0xFC,0x01,0x3F,0x0E,0x3F,0x93,0x3F,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xF2,0x67,0xFC,0x00,0x3C,0x33,0x9F,0x98,0x7F,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0x0F,0xFC,0x00,0x3F,0x26,0x7F,0x9C,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xC1,0xF9,0x33,0x3E,0x12,0x7F,0x98,0x7F,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFE,0x09,0xFF,0x33,0x3C,0x08,0x7F,0x93,0x3F,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFE,0x49,0xFE,0x73,0x39,0x3C,0xFF,0x87,0x9F,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFE,0x41,0xFE,0x73,0x3F,0x38,0x7F,0x9F,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFE,0x49,0xFC,0xFF,0x3F,0x33,0x1F,0x80,0x0F,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xCF,0xF9,0xFF,0x3F,0x07,0x87,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};


//==============================主函数======================================
void main(void)
{ 
    Clr_CS();
    Clr_SID();
    Clr_SCLK();
    LCD_Init();
    
    //启用外部中断0
    GICR|=0x40;
    MCUCR=0x00;
    MCUCSR=0x00;
    GIFR=0x40;  

    CH452_Display_Init();

    Draw_Pic_Clear();       //画图方式清屏

    Draw_Pic_Logo(qidong);  //启动画面
      
    Draw_Pic_LogoBar();     //进度条
    
    LCD_Clear();//清屏
    Draw_Pic(0,0,hehai);    //显示河海大学开机图片
    Delay(300);
        
    W_1byte(0,0,0x30);      //关闭绘图模式,进入字符模式
    
    print_root_page();      //显示主菜单
    
    #asm("sei")    

    while (1)
    {
        if(monitor==1)
                print_sub4_1_page(X,Y);
    }
}    


/*******************************************************************
函 数 名:CH452_I2C_Start
入口参数:无
出口参数:无
建立日期:2007年8月15日
修改日期:
函数作用:CH452虚拟I2C总线开始部分代码。
说    明:当用虚拟I2C总线读或写时首先调用这个函数。
********************************************************************/
void CH452_I2C_Start(void)
{                                

        CH452_SDA_PORT |= CH452_SDA_PINNum;     //SDA 输出高电平
        CH452_SCL_PORT |= CH452_SCL_PINNum;     //SCL 输出高电平

        delay_us(5); 
        
        CH452_SDA_PORT &= ~CH452_SDA_PINNum;	//SDA 输出低电平,产生启动信号;
        delay_us(5); 
   
        CH452_SCL_PORT &= ~CH452_SCL_PINNum; 	//SCL 输出低电平,启动完成;
        delay_us(5); 
}


/*******************************************************************
函 数 名:CH452_I2C_Stop
入口参数:无
出口参数:无
建立日期:2007年8月15日
修改日期:
函数作用:CH452虚拟I2C总线结束部分代码。
说    明:当用虚拟I2C总线读或写完成时调用这个函数。
********************************************************************/
void CH452_I2C_Stop(void)
{
        CH452_SDA_PORT &= ~CH452_SDA_PINNum;	//SDA置低
        delay_us(5);
        CH452_SCL_PORT |= CH452_SCL_PINNum;		//SCL恢复高电平
        delay_us(5);
        CH452_SDA_PORT |= CH452_SDA_PINNum;		//SDA恢复高电平
        delay_us(5);
}
  

/*******************************************************************
函 数 名:CH452_I2C_WrOneByte
入口参数:c ------ 要写入的一个字节数据。
出口参数:无
建立日期:2007年8月15日
修改日期:
函数作用:本函数用于虚拟I2C总线向外围器件写入一个字节操作。
说    明:
********************************************************************/
void CH452_I2C_WrOneByte(uchar c)
{                                        
        uchar i;
        for(i=0;i<8;i++)										//输出8位数据
        {
                if(c&0x80)
                        CH452_SDA_PORT |= CH452_SDA_PINNum;		//数据为1,置高SDA
                else
                        CH452_SDA_PORT &= ~CH452_SDA_PINNum;	//数据为0,置低SDA
                CH452_SCL_PORT |= CH452_SCL_PINNum;				//向SCL 输出高电平脉冲
                c<<=1;											//准备输出下一位
                delay_us(5);
                delay_us(5);
                CH452_SCL_PORT &= ~CH452_SCL_PINNum;
                delay_us(5);
                delay_us(5);
        }
        delay_us(5);
        CH452_SDA_PORT |= CH452_SDA_PINNum;		//将SDA 恢复为高电平
        CH452_SCL_PORT |= CH452_SCL_PINNum;		//将SCL 恢复为高电平
        delay_us(5);
        delay_us(5);
        CH452_SCL_PORT &= ~CH452_SCL_PINNum;  	//SCL置低
        delay_us(5);
        delay_us(5);
}


/*******************************************************************
函 数 名:CH452_I2C_Write
入口参数:command ------ 要写入的命令或数据。
出口参数:无
建立日期:2007年8月15日
修改日期:
函数作用:本函数用于虚拟I2C总线向外围器件写入一个命令或数据操作。
说    明:
********************************************************************/
void CH452_I2C_Write(uint command)
{
        CH452_I2C_Start();										//开始向I2C总线输出
        CH452_I2C_WrOneByte(((uchar)(command>>7)&0x3E)|0x60);	//输出标志符
        CH452_I2C_WrOneByte((uchar)command);					//输出命令字节
        CH452_I2C_Stop();										//命令输出结束
}
 

/*******************************************************************
函 数 名:CH452_I2C_RdOneByte
入口参数:
出口参数:读到的数据。
建立日期:2007年8月15日
修改日期:
函数作用:本函数用于从虚拟I2C总线读入一个字节操作。
说    明:
********************************************************************/
uchar CH452_I2C_RdOneByte(void)
{
        uchar c,i;
        c=0;
        for(i=0;i<8;i++)
        {
                CH452_SDA_PORT |= CH452_SDA_PINNum;		//SDA置高
                CH452_SCL_PORT |= CH452_SCL_PINNum;		//SCL置高
                delay_us(1);
                delay_us(1);
                c<<=1;     
                CH452_SDA_DDR &= ~CH452_SDA_PINNum;		//SDA为输入
                if(PINC&CH452_SDA_PINNum)c|=0x01;		//如果输入的字符是1,c的当前位置1
                CH452_SCL_PORT &= ~CH452_SCL_PINNum;	//否则置0
                delay_us(1);
                delay_us(1);
        }
        delay_us(1);
        CH452_SDA_PORT |= CH452_SDA_PINNum;				// 发出无效应答
        CH452_SCL_PORT |= CH452_SCL_PINNum;
        delay_us(1);
        delay_us(1);
        CH452_SDA_DDR |= CH452_SDA_PINNum;
        return(c);
}


/*******************************************************************
函 数 名:CH452_I2C_Read
入口参数:
出口参数:读到的数据。
建立日期:2007年8月15日
修改日期:
函数作用:本函数用于从虚拟I2C总线读入数据操作。
说    明:
********************************************************************/
uchar CH452_I2C_Read()
{
        uchar key;	
        CH452_I2C_Start();				//开始向I2C总线输出
        CH452_I2C_WrOneByte(0x6f);		//输出标志符
        key=CH452_I2C_RdOneByte();		//从总线读取一个字节
        CH452_I2C_Stop();				//读操作完成	
        return(key);					//返回键值
}


/*******************************************************************
函 数 名:CH452_Display_Init
入口参数:
出口参数:
建立日期:2007年8月15日
修改日期:
函数作用: 数码管显示的初始化。
说    明:
********************************************************************/                
void CH452_Display_Init()
{
        CH452_SDA_DDR |= CH452_SDA_PINNum;
        CH452_SCL_DDR |= CH452_SCL_PINNum;
        CH452_INT_DDR &= ~CH452_INT_PINNum;
        CH452_INT_PORT |= CH452_INT_PINNum;
        CH452_I2C_Write(CH452_RESET);			//复位显示
        delay_us(30);
        CH452_I2C_Write(CH452_BCD);   			//设置显示方式
        CH452_I2C_Write(CH452_SYSON2);          //打开显示和键盘
        //CH452_I2C_Write(CH452_TWINKLE|0xff); 
        CH452_I2C_Write(0x0909);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -