当前位置:首页 > 基于单片机的室内甲醛检测系统 - 图文
淮南师范学院本科2012届毕业论文
29
0x00,}; ······文字: 迎 等
// 函数名:写命令到LCD
void write_command(unsigned char cmdcode) {
RS = 0; RW = 0;
P0 = cmdcode; Delay(10); E = 1; Delay(10); E = 0; }
// 函数名:写数据到LCD //
void write_dat(unsigned char Dispdata) {
RS = 1; RW = 0;
P0 = Dispdata; Delay(10); E = 1; Delay(10); E = 0;}
// 函数名:任意位置写入一字节 //
void write_data(unsigned char Page,unsigned char Col,unsigned char Data)//在屏幕的任意位置写待显示的数据 {
if ((Col&0x40)==0)//此处表示如果Col小于64 {
CS1=1;CS2=0;
write_command(Page_Add+Page); write_command(Col_Add+Col); write_dat(Data); } else {
Col-=64;
CS1=0;CS2=1;
write_command(Page_Add+Page); write_command(Col_Add+Col); write_dat(Data); } }
// 函数名:清显示屏 //
基于单片机的室内甲醛检测系统
30
void Clr_Scr(void) {
unsigned char j,k;
CS1=1;CS2=1; // 清全屏 // {
for(k=0;k<8;k++) {
write_command(Page_Add+k); write_command(Col_Add); for(j=0;j<64;j++) write_dat(0x00); }}
// 函数名:指定位置显示16*16图像 //
void Disp_Chr(unsigned char pag,unsigned char col, unsigned char code *zmk) {
unsigned char j=0,i=0; for(i=0;i<16;i++) {
for(j=0;j<2;j++) {
write_data(pag+j,col+i,zmk[16*j+i]); } } }
// 函数名:初始化液晶屏 // void Init_lcd(void) {
RST=0; Delay(10); RST=1; Delay(10); CS2=1; CS1=1; Delay(100);
write_command(Disp_Off); write_command(Page_Add+0); write_command(Start_Line+0); write_command(Col_Add+0); write_command(Disp_On); }
void Disp_lcd_starmenu() {
Init_lcd(); // 初始化液晶屏 Delay(300); // 短延时
淮南师范学院本科2012届毕业论文
31
//Clr_Scr(); // 清屏
Disp_Chr(0,25,huan); //显示 \欢\ Disp_Chr(0,45,ying); Disp_Chr(0,65,shi); Disp_Chr(0,85,yong); Disp_Chr(2,12,jia); Disp_Chr(2,34,quan); Disp_Chr(2,56,jian); Disp_Chr(2,78,ce); Disp_Chr(2,102,yi);
Disp_Chr(4,10,huai); Disp_Chr(4,30,nan); Disp_Chr(4,50,sh); Disp_Chr(4,70,fan); Disp_Chr(4,90,xue); Disp_Chr(4,110,yuan); Disp_Chr(6,5,dian); Disp_Chr(6,20,qi); Disp_Chr(6,35,xin); Disp_Chr(6,50,xi); Disp_Chr(6,65,gong); Disp_Chr(6,80,cheng); Disp_Chr(6,95,xue); Disp_Chr(6,110,yuan); }······ 附录3.ADC0832程序
/*****ADC0832程序***********/ //获取AD转换结果 uchar Get_AD_Result() {
uchar i,dat1=0,dat2=0; //起始控制位 CS=0;
基于单片机的室内甲醛检测系统
32
CLK=0; DIO=1;
Delay(50);
CLK=1;
Delay(50);
//第一个下降沿之前,设Di=1/0
//选择单端/差分(SGL/DIF)模式中的单端输入模式 CLK=0;
DIO=1; Delay(50);
CLK=1;
Delay(50);
//第二个下降沿之前,设DI=0/1,选择CH0/CH1 CLK=0;DIO=0;
Delay(50);
CLK=1;
DIO=1; Delay(50);
//第三个下降沿之前,设DI=1 CLK=0;DIO=1;
Delay(50);
//第4-11,共8个下降沿读数据(MSB=>LSB) for(i=0;i<8;i++) {
CLK=1;
Delay(50);
CLK=0;
Delay(50);
}
dat1=dat1<<1|DIO;
共分享92篇相关文档