长治学院学士学位论文
的第十个元素,显示到数码管上是:10 */
void display (uchar d,uchar w) {
duan = 0; P0=0xff;
duan = 1; // 打开锁存器的锁存端
P0 = duantable[d]; //将段选信号放进锁存器 duan = 0;// 关闭锁存器的锁存端
P2 &= 0xf8;/*给P2口赋位选值前,先将p2与(1111 1000)逻辑与, // 将P2^0,P2^1,P2^2清零,从而不影响其他位原来的电平*/
P2 |= weitable[w];/*将位选信号放进P2口的低三位, // 只改变P2口低三位的值,不影响其他位*/ delay_display (8); }
void delay_display (uint i) { uchar x,j; for(j=0;j
/*显示一个数字的时候,调用display()即可, 格式:display(段 ,位); */
2.2 display.h
void display (unsigned char ,unsigned char ); void delay_display (unsigned int i);
3串口发送模块代码 3.1 COM.c
/******************************************************************** * 文件名 : 串口发送.c
* 描述 : 该文件实现通过串口把数据从单片机发送到电脑, 。
33
长治学院学士学位论文
***********************************************************************/ #include
#define uchar unsigned char #define uint unsigned int
/******************************************************************** * 名称 : Com_Init()
* 功能 : 初始化串口程序,晶振11.0592, 波特率9600 * 输入 : 无 * 输出 : 无
***********************************************************************/ void Com_Init(void) {
TMOD = 0x20; PCON = 0x00; SCON = 0x50; TH1 = 0xFd; TL1 = 0xFd; TR1 = 1; }
/******************************************************************** * 名称 :COM_Out() * 功能 : 发送数据
***********************************************************************/ void COM_Out(uchar i) { Com_Init(); //初始化串口 SBUF = i; //把传进来的数据放入SBUF while(!TI) //如果发送完毕,硬件会置位TI { _nop_(); } TI = 0; //TI清零 }
34
长治学院学士学位论文
3.2 COM.h
/******************************************************************** * 文件名 : 串口发送.c
* 描述 : 该文件实现通过串口把数据从单片机发送到电脑,
***********************************************************************/ #include
#define uchar unsigned char #define uint unsigned int
/******************************************************************** * 名称 : Com_Init()
***********************************************************************/ void Com_Init(void) {
TMOD = 0x20; PCON = 0x00; SCON = 0x50; TH1 = 0xFd; TL1 = 0xFd; TR1 = 1; }
/******************************************************************** * 名称 :COM_Out()
***********************************************************************/ void COM_Out(uchar i) { Com_Init(); //初始化串口 SBUF = i; //把传进来的数据放入SBUF while(!TI) //如果发送完毕,硬件会置位TI { _nop_(); } TI = 0; //TI清零 }
4.温度测量函数代码
4.1DS18B20.c
/********************************************************************
35
长治学院学士学位论文
* 文件名 : DS18B20.c
* 描述 : 该文件实现了用温度传感器件DS18B20对温度的采集
***********************************************************************/ #include
#define uchar unsigned char #define uint unsigned int
#define jump_ROM 0xCC //总线上只有一个器件,0xcc表示不对ROM编码做出反应 #define start 0x44 //收到只个指令后芯片做一次温度转换 #define read_EEROM 0xBE
sbit DQ = P2^3; //DS18B20数据口
unsigned char TMPH,TMPL;
/******************************************************************** * 名称 : delay() * 功能 : 延时函数
***********************************************************************/ void delay(uint N) { int i; for(i=0; i
/******************************************************************** * 名称 : Reset()
***********************************************************************/ uchar Reset(void) { uchar deceive_ready; DQ = 0; delay(29); DQ = 1; delay(3); deceive_ready = DQ; // 把DQ的值赋给这个变量 delay(25); return(deceive_ready); //返回DQ的电平状态 }
/******************************************************************** * 名称 : read_bit()
***********************************************************************/ uchar read_bit(void) {
36
长治学院学士学位论文
uchar i; DQ = 0; DQ = 1; for(i=0; i<3; i++); return(DQ); }
/******************************************************************** * 名称 : write_bit()
***********************************************************************/ void write_bit(uchar bitval) {
DQ=0;
if(bitval==1) DQ=1; delay(5); DQ=1; }
/******************************************************************** * 名称 : read_byte()
***********************************************************************/ uchar read_byte(void) { uchar i,m,receive_data; m = 1; receive_data = 0; for(i=0; i<8; i++) { if(read_bit()) { receive_data = receive_data + (m << i); } delay(6); } return(receive_data); }
/******************************************************************** * 名称 : write_byte()
*********************************************************/ void write_byte(uchar val) { uchar i,temp; for(i=0; i<8; i++) {
37
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库储油罐实时监测系统的设计与实现 - 图文(8)在线全文阅读。
相关推荐: