资源简介
很好的源代码,ATT7022计量芯片,C编程,很好用,希望大家喜欢
代码片段和文件信息
#include
#include
#include
#include
///////////////////头文件包含/////////////////////
//////////////////////////////////////////////////
#define uchar unsigned char
#define uint unsigned int
/////////////////////////////////////////////////
uchar table[]={“welcome to use饫趐lease wait.........“};
uchar tablea[]={“校正中......please wait“};
uchar tableb[]={“校正完毕please choose“};
uchar tablec[]={“丈量中......please wait“};
uchar tablee[]={“丈量完毕please choose“};
uchar tablef[]={“please insert your password“};
void delay(uint ms)//通用延时函数,8M外部晶振下,延时nms
{
uint ij;
for(i=0;i
for(j=0;j<1141;j++);
}
///////////////下面是用于128*64液晶显示的子程序///////////////
#define RS (1<<4)
#define RW (1<<5)
#define EN (1<<6)
void s_ms(uint ms)//用于液晶的延时函数
{
for(;ms>1;ms--);
}
//写数据
void WriteDataLCM(unsigned char WDLCM)
{
s_ms(100);
PORTA|=RS;//RS=1
s_ms(100);
PORTA&=~RW;//RW=0
s_ms(100);
PORTA|=EN;//EN=1
s_ms(100);
PORTB=WDLCM;//输出数据
s_ms(100);
PORTA&=~EN;//EN=0
s_ms(100);
}
//写指令
void WriteCommandLCM(unsigned char WCLCM)
{
s_ms(100);
PORTA&=~RS;//RS=0
s_ms(100);
PORTA&=~RW;//RW=0
s_ms(100);
PORTA|=EN;//EN=1
s_ms(100);
PORTB=WCLCM;//输出指令
s_ms(100);
PORTA&=~EN;//EN=0
s_ms(100);
}
void LCMInit(void)//液晶初始化
{
DDRB=0XFF;
DDRA=0XFF;//数据口于液晶控制口配置为输出
WriteCommandLCM(0x38);//三次显示模式设置,不检测忙信号
s_ms(1000);
WriteCommandLCM(0x38);
s_ms(1000);
WriteCommandLCM(0x38);
s_ms(1000);
WriteCommandLCM(0x38);//显示模式设置开始要求每次检测忙信号
WriteCommandLCM(0x08);//封闭显示
WriteCommandLCM(0x01);//显示清屏
WriteCommandLCM(0x06);//显示光标移动设置
WriteCommandLCM(0x0C);//显示开及光标设置
}
void sz(unsigned long int szchar adresschar i)//指定地址并且显示八位数字
{
char j;
char shuma[8];
shuma[0]=sz%10;//最低位
shuma[1]=sz/10%10;
shuma[2]=sz/10/10%10;
shuma[3]=sz/10/10/10%10;
shuma[4]=sz/10/10/10/10%10;
shuma[5]=sz/10/10/10/10/10%10;
shuma[6]=sz/10/10/10/10/10/10%10;
shuma[7]=sz/10/10/10/10/10/10/10%10;//最高位
WriteCommandLCM(adress);//写进数据显示地址
delay(1);
for(j=8;j--;j>=0)
{
if(j==(i-1))
{
WriteDataLCM(0x2e);
delay(1);
}
WriteDataLCM(0X30+shuma[j]);
//delay(1);
}
}
///////////////液晶显示函数结束///////////////////////
///////////////矩阵键盘扫描检测函数///////////////////
/////由于硬键盘接口接上软键盘后不能用,矩阵按键子程序重新编写,无消抖检测///////
uchar key_value(void)
{
uchar key;
char tem1tem2remi;
rem=0;//不清零会返回一个不可预知的值
DDRD=0x0f;//D口高四位输出低四位输进
PORTD=0xf0;//输进有上拉电阻输出低电平
s_ms(1);
tem1=PIND;//读取端口D
tem1=tem1&0xf0;
if(tem1!=0xf0)//判定是否有键被按下
{
s_ms(200);//延时
tem2=PIND;//读取端口D
tem2=tem2&0xf0;
if(tem1==tem2)//判定是否为干扰
{
DDRD=0xf0;//D口高四位输进低四位输出
PORTD=0x0f;//反相输出
s_ms(50);//换向后要延时
rem=PIND;//读取端口D
rem=rem&0x0f;//取高四位
rem=rem+tem1;//合并
rem=~rem;//反向输出
}
}
key=rem;
switch(key)
{
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 14775 2010-11-17 20:21 ATT7022电能计量程序\diannengjiliang.c
文件 0 2010-11-17 20:43 ATT7022电能计量程序\diannengjiliang.cof
文件 114 2010-11-17 20:43 ATT7022电能计量程序\diannengjiliang.dp2
文件 0 2010-11-17 20:43 ATT7022电能计量程序\diannengjiliang.hex
文件 0 2010-11-17 20:43 ATT7022电能计量程序\diannengjiliang.i
文件 283473 2010-11-17 20:22 ATT7022电能计量程序\diannengjiliang.lis
文件 20 2010-11-17 20:43 ATT7022电能计量程序\diannengjiliang.lk
文件 569 2010-11-17 20:43 ATT7022电能计量程序\diannengjiliang.mak
文件 76873 2010-11-17 20:22 ATT7022电能计量程序\diannengjiliang.o
文件 883 2010-11-17 20:43 ATT7022电能计量程序\diannengjiliang.prj
文件 109847 2010-11-17 20:22 ATT7022电能计量程序\diannengjiliang.s
文件 52 2010-11-17 20:20 ATT7022电能计量程序\DIANNENGJILIANG.SRC
文件 2 2010-11-17 20:20 ATT7022电能计量程序\diannengjiliang._c
目录 0 2010-11-17 20:43 ATT7022电能计量程序
----------- --------- ---------- ----- ----
486608 14
评论
共有 条评论