新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > STC12C5410AD AD的测试LCD12864显示程序

STC12C5410AD AD的测试LCD12864显示程序

作者: 时间:2013-05-11 来源:网络 收藏

//---------------------------------------
//名称: 指定位置写16*16汉字函数

//-----------------------------------------

void write_chinese(unsigned char x,unsigned char y, unsigned char hz)
{
unsigned char j=0,i=0;
for(j=0;j2;j++)
{
werite_x_y(x+j,y);
for(i=0;i16;i++) write_data(han[hz*32+16*j+i]);
}
}


//---------------------------------------
//名称: 写一个字符到LCD函数(8*16点阵)
//参数:x,y:写入字符的地址 c: 写入字符在shuzi表格中的位置
//-----------------------------------------
void write_zifu(unsigned char x,unsigned char y, unsigned char zi)
{
unsigned char j=0,i=0;
for(j=0;j2;j++)
{
werite_x_y(x+j,y);
for(i=0;i8;i++) write_data(shuzi[zi*16+8*j+i]); //
}
}
//---------------------------------------
//名称: 初始化12864函数
//-----------------------------------------
void init_lcd(void)
{

Cs1=1;
Cs2=1;
delay(250);
write_com(Rssp_Off);
write_com(Page_Add+0);
write_com(Start_Line+0);
write_com(Col_Add+0);
write_com(Rssp_On);
}
//---------------------------------------
//名称: 延时约1毫秒函数
//-----------------------------------------
void delay1ms()
{
unsigned int k;
for(k=0;k12000;k++);
}
//---------------------------------------
//名称: 模数转换函数(8位)
//-----------------------------------------
void adpro()
{
ADC_DATA = 0; //清A/D转换结果寄存器
adbuf=0;
ADC_CONTR = ADC_CONTR|0x08; //0000,1000ADCS = 1,启动转换
delay1ms();
do{ ; }
while((ADC_CONTR0x10)==0); //0001,0000等待A/D转换结束
ADC_CONTR = ADC_CONTR0xE7; //1110,0111清ADC_FLAG位,停止A/D转换
adbuf = ADC_DATA;
}
//---------------------------------------
//名称: 初始化函数函数
//-----------------------------------------
void init()
{
P1M0=0x01; //设置P1.0为高阻输入,以准备AD
P1M1=0x00;
ADC_CONTR = ADC_CONTR|0x80; //1000,0000打开A/D转换电源
delay1ms();
delay1ms();
ADC_CONTR = ADC_CONTR0xe0; //1110,0000 清ADC_FLAG,ADC_START位和低3位
}
//---------------------------------------
//名称: AD值转电压值函数
//-----------------------------------------
unsigned int dianya_zhuanhuan()
{
unsigned int k;
float i_val, f_val;
i_val=(float)adbuf;
i_val=i_val/255;
i_val=i_val*500;
f_val = modf(i_val, i_val);
if(i_val>999) i_val=999;
k=(int)i_val;
return k;
}
//---------------------------------------
//名称: 主函数
//作者:huangjianxin
//邮箱:hjx5548@163.com
//日期:2009-12-9
//-----------------------------------------
void main()
{
unsigned int dianyabuf;
init();
init_lcd(); //初始化液晶
Clr_Scr();

while(1)
{
adpro();
write_zifu(0,0,10); //A
write_zifu(0,8,13); //D
write_chinese(0,16,0); //值
write_zifu(0,32,47); //:

write_zifu(0,40,((adbuf%1000)/100)); //
write_zifu(0,48,((adbuf%100)/10)); //
write_zifu(0,56,(adbuf%10)); //

dianyabuf=dianya_zhuanhuan();
write_chinese(2,0,1); //电
write_chinese(2,16,2); //压
write_zifu(2,32,47); //:

write_zifu(2,40,dianyabuf/100);
write_zifu(2,48,45);
write_zifu(2,56,(dianyabuf%100)/10);
write_zifu(2,64,dianyabuf%10);
write_zifu(2,72,31);

write_chinese(4,0,3); // 专
write_chinese(4,16,4); // 注
write_chinese(4,32,5); // 于
write_chinese(4,48,6); // 消
write_chinese(4,64,7); // 费
write_chinese(4,80,8); // 类
write_chinese(4,96,9); // 控
write_chinese(4,112,10); // 制

write_zifu(6,0,26); //q
write_zifu(6,8,26); //q
write_zifu(6,16,47); //:
write_zifu(6,24,2); //2
write_zifu(6,32,7); //7
write_zifu(6,40,9); //9
write_zifu(6,48,0); //0
write_zifu(6,56,6); //6
write_zifu(6,64,8); //8

write_zifu(6,72,0); //0
write_zifu(6,80,7); //7
write_zifu(6,88,9); //9
}
}

万能遥控器相关文章:万能遥控器代码



上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭