单片机原理及应用课程设计数字式温度计的设计 - 毕业论文(3)

2019-01-26 21:37

{0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x31,0x00,0x00,0x00,0x00},

//\

{0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00}, //\

{0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x0F,0x01,0x01,0x01}, //\ }; //延时

void delay(uint n) {

uint i;

for(;n>0;n--)

for(i=200;i>0;i--); }

//判断是否忙 void check() {

rs=0;

rw=1; //读 e=1; port=0x00; e=1; while(busy); e=0; }

//写指令

void sendcommand(uchar command) {

check();

rs=0; //指令

rw=0; //写 e=0; port=command; e=1;

e=0; //写入指令 }

//写数据

void writedata(uchar dat) {

11

check();

rs=1; //数据 rw=0; port=dat; e=1; e=0; }

//选屏幕 0--全屏,1--左屏,2--右屏; void select(uint n) {

switch(n) {

case 0:cs1=0;cs2=0;break; case 1:cs1=0;cs2=1;break; case 2:cs1=1;cs2=0;break; } } //页

void setpage(uchar page) {

page=page&0x07; page=page|0xb8; sendcommand(page); } //列

void setcolumn(uchar column) {

column=column&0x3f; column=column|0x40; sendcommand(column); }

//起始行

void setline(uchar line) {

line=line&0x3f; line=line|0xc0; sendcommand(line); }

//屏幕开关显示 0--关,1--开; void seton(uint n) {

n=n|0x3e;

sendcommand(n); }

低电平选中左屏 右屏 12

// //cs1 //cs2//清屏 0--全屏,1--左屏,2--右屏; void clear(uint n) {

uchar i,j; select(n);

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

setpage(i); setcolumn(0);

for(j=0;j<64;j++) writedata(0); //置0清空 } }

//初始化 void init() {

check(); seton(1); clear(0); setline(0); }

//显示汉字 16*16显示

void show16(uchar page,uchar column,uchar screen,uchar method,uchar *str) {

uchar i,j;

select(screen); j=0;

setpage(page);

setcolumn(column); for(i=0;i<16;i++)

{ if(method==1) writedata(~str[j++]); //method为显示方式。当等于1时,反白。

else writedata(str[j++]); }

setpage(page+1); setcolumn(column); for(i=0;i<16;i++)

{ if(method==1) writedata(~str[j++]);

else writedata(str[j++]); } }

//显示数字 8*8显示

void show8(uchar page,uchar column,uchar screen,uchar method,uchar *str)

13

{

uchar i,j;

select(screen);j=0;

setpage(page);

setcolumn(column); for(i=0;i<8;i++)

{ if(method==1) writedata(~str[j++]);

else writedata(str[j++]); }

setpage(page+1);setcolumn(column); for(i=0;i<8;i++)

{ if(method==1) writedata(~str[j++]);

else writedata(str[j++]); } }

//显示时间

void showtime() {

show16(2,24,2,0,time[0]); show16(4,24,2,0,time[1]); show16(6,24,2,0,time[2]); show8(2,40,2,0,sign[5]); show8(4,40,2,0,sign[5]); show8(6,40,2,0,sign[5]); show8(2,48,2,0,num[h/10]); show8(4,48,2,0,num[m/10]); show8(6,48,2,0,num[s/10]); show8(2,56,2,0,num[h]); show8(4,56,2,0,num[m]); show8(6,56,2,0,num[s]); }

//中断服务程序

timer0() interrupt 1 using 1 {

j++;

TH0=15536/256; TL0=15536%6; if(j==20){

j=0;

if(++s==60){

s=0;if(++m==60){

m=0;if(++h==24)h=0;

14

} } } }

//显示个人信息 void welcome() {

show16(0,0,1,0,hz[0]); show16(0,16,1,0,hz[1]); show16(0,32,1,0,hz[2]); show16(0,48,1,0,hz[3]); show16(0,8,2,0,hz[4]); show16(0,40,2,0,hz[5]); show8(2,0,1,0,num[2]); show8(2,8,1,0,num[0]); show8(2,16,1,0,num[0]); show8(2,24,1,0,num[8]); show8(2,32,1,0,num[0]); show8(2,40,1,0,num[4]); show8(2,48,1,0,num[2]); show8(2,56,1,0,num[2]); show8(2,0,2,0,num[3]); show8(2,8,2,0,num[3]); }

//蜂鸣器 void Beep() {

uchar y;

for(y=0;y<200;y++) {

delay(1); P2_6=!P2_6; } }

// *******延时函数****** void delay1(unsigned int i) {

while(i--); }

//*******显示温度并判断是否调用蜂鸣器函数****** void display(int k) {

15


单片机原理及应用课程设计数字式温度计的设计 - 毕业论文(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:遗传和变异

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: