好文档 - 专业文书写作范文服务资料分享网站

郭天祥之十天学会单片机视频配套程序-实用!

天下 分享 时间: 加入收藏 我要投稿 点赞

#include

#define uint unsigned int #define uchar unsigned char

/****************12864液晶接口定义********************/ sbit rs = P2^5; sbit std = P2^6; sbit sclk = P2^7; sbit psb = P2^4; sbit rst = P2^2;

sbit D1820 = P3^7; /*************定义18b20总线**********************/ uchar code tab0[]=\ 当前温度 %uchar code tab1[]=\ %uchar code tab2[]=\ ℃ %uchar code tab3[]=\ %uint i,j,s1num,num2; void delay(uint z) {

uint x,y;

for(x=z;x>0;x--) for(y=110;y>0;y--); }

void wr_date(uchar date)//写数据 {

uchar a,p; delay(10); a=date;

rs=1; //数据命令选择=1时读取数据 sclk=0; //串口时钟,未开 std=1; //选择串口方式 for(i=0;i<5;i++) //开启字节 {

sclk=1; sclk=0;

}

std=0; // 写 sclk=1; //开启时钟脉冲 sclk=0;

std=1; //选择数据 sclk=1; sclk=0;

std=0; sclk=1;

sclk=0;

for(p=0;p<2;p++) {

for(i=0;i<4;i++) {

a=a<<1; //左移目的是为了将溢出数据(即0或1)赋予std std=CY; //单片机特殊功能寄存器,“CY”用于存放字符串溢出字符 sclk=1; //一开一锁将数据显示 sclk=0; }

std=0; for(i=0;i<4;i++) {

sclk=1; sclk=0; } } }

void wr_com(uchar com) //写命令 {

uchar a,p; delay(10); a=com;

rs=1; //数据命令选择=1时读取数据 sclk=0; //串口时钟,未开 std=1; //选择串口方式 for(i=0;i<5;i++) //开启字节 {

sclk=1; sclk=0; }

std=0;

sclk=1; //开启时钟脉冲 sclk=0;

std=0; sclk=1; sclk=0;

std=0; sclk=1; sclk=0;

for(p=0;p<2;p++) {

for(i=0;i<4;i++)

{

a=a<<1;//左移目的是为了将溢出数据(即0或1)赋予std

std=CY;//单片机特殊功能寄存器,“CY”用于存放字符串溢出字符 sclk=1;//一开一锁将数据显示 sclk=0; }

std=0;

for(i=0;i<4;i++)//延时一下为下一数据到来做准备 { sclk=1; sclk=0; } } }

void write_lcd() //向液晶写入显示内容 {

uchar num;

wr_com(0x80);

for(num=0;num<16;num++) {

wr_date(tab0[num]); delay(1); }

wr_com(0x90);

for(num=0;num<16;num++) {

wr_date(tab1[num]); delay(1); }

wr_com(0x88);

for(num=0;num<16;num++) {

wr_date(tab2[num]); delay(1); }

wr_com(0x98);

for(num=0;num<16;num++) {

wr_date(tab3[num]); delay(1); } }

void init_lcd()

{

rst=1;

psb=0; //选串口

wr_com(0x30); //30---基本指令动作 wr_com(0x01); //清屏,地址指针指向00H delay(1);

wr_com(0x06); //光标的移动方向即读入或写入数据后指针加一 wr_com(0x0c); //开显示,关游标类似1602 return; } void init() {

init_lcd(); write_lcd(); }

void Delay_xus(uint i)//(16+9*i)us(51) {

while(i--); }

void Delay_100us(uchar j)//(16+9*i)us(51) {

uchar i = 15; i = i*j; while(i--); }

void init_18b20() //18b20初始化 {

uchar i,count=5; D1820 = 1; D1820 = 0;

Delay_100us(5); //500us D1820 = 1;

Delay_xus(2); //35us

i = D1820; //i为0则18b20初始化成功

while(i&&count--); //检测i为0,若为1,count=0后退出循环 D1820 = 1;

Delay_xus(10); //拉高电平,完成初始化

}

void write_18b20(uchar data_1820)//********************写数据********************* {

uchar i=0; D1820 = 1; for(i=0;i<8;i++) {

D1820 = 0; //产生下降沿,进入写时序(15us内送上数据) D1820 = data_1820&0x01; //从低位开始送数

Delay_xus(3); //延时45us,保证18b20采样到数据 D1820 = 1; //拉高电平完成送数

Delay_xus(1); //连续送数要间隔至少1us(这里25us) data_1820>>=1; //移位 } }

uchar read_18b20() //********************读数据***********************

{

uchar i=0 ; uchar temp =0;

D1820 = 1; for(i=0;i<8;i++)

{

D1820 = 0; //拉低电平准备产生读时序

temp>>=1; //先移位,方便i=7时接到最后移位 D1820 = 1; //拉高电平进入读时序

if(D1820) //取18b20传送的数据(先送低位) {

temp|=0x80; }

Delay_xus(1);

D1820 = 1; //拉高电平完成读时序 Delay_xus(1);//与下一位读取间隔一下 }

return(temp); }

uint read_temper() //*******************读取温度值***************************

郭天祥之十天学会单片机视频配套程序-实用!

#include#defineuintunsignedint#defineucharunsignedchar/****************12864液晶接口定义********************/sbitrs=P2^5;sbitstd=P2^6;sbitsclk=P
推荐度:
点击下载文档文档为doc格式
17qzv7ranv9vfqx3dfqk
领取福利

微信扫码领取福利

微信扫码分享