本科毕业设计--基于单片机的宠物喂食器电路设计 下载本文

内容发布更新时间 : 2024/11/18 18:24:21星期一 下面是文章的全部内容请认真阅读。

基于单片机的宠物喂食器电路设计

4 电路的软件部分

单片的使用除了硬件,同样也要软件的使用,我们写汇编程序编程CPU可执行的机器码有两种方法,一种是手工汇编,一种是机器汇编。机器汇编通过汇编软件变为机器码,用于MSC-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从使用普通汇编语言到高级语言的不断发展,Keil是目前最流行开发MCS-51系列单片机的软件。Keil c51汇编,PLM语言和C语言的程序设计,界面友好。Keil是美国keilsoftware公司出品的52系列兼容单片机c语言开发系统。用过汇编语言后再使用C语言来开发,体会更加深刻。 程序框图:

13

基于单片机的宠物喂食器电路设计

开始 系统初始化 开始倒计时 Y 1号键按下? Y 2号键按下? Y 3号键按下? Y 4号键按下? Y 5号键按下? 1号盒倒计时时间设定 2号盒倒计时时间设定 3号盒倒计时时间设定 4号盒倒计时时间设定 5号盒倒计时时间设定 倒计时完? Y 结束

图2.8 程序框图

源程序如下:

#include #include #define uchar unsigned char #define uint unsigned int sbit b1=P1^0; sbit b2=P1^1; sbit b3=P1^2;

14

基于单片机的宠物喂食器电路设计

sbit b4=P1^3; sbit b5=P1^4; sbit bell=P2^6; sbit s1=P3^0; sbit s2=P3^1; sbit s3=P3^2; sbit s4=P3^3; sbit s5=P3^4; sbit add=P3^6; sbit dec=P3^7; char

second1=1,minute1=1,hour1=1,second2=2,minute2=2,hour2=2,second3=3,minute3=3,hour3=3;

char second4=4,minute4=4,hour4=4,second5=5,minute5=5,hour5=5; uchar g;

unsigned char code table[]={//共阴极0~f数码管编码 0x3f,0x06,0x5b,0x4f, //0~3 0x66,0x6d,0x7d,0x07, //4~7 0x7f,0x6f,0x77,0x7c, //8~b 0x39,0x5e,0x79,0x71 //c~f };

void delay(uint z) {

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

void delay1(uint z) {

15

基于单片机的宠物喂食器电路设计

for(;z>0;z--); }

void display(uchar a,uchar b,uchar c) {

uchar i,j;

i=a/10; j=a;

P2=0xfb; P0=table[i]; delay(2); P2=0xf7; P0=table[j]; delay(2); i=b/10; j=b; P2=0xef; P0=table[i]; delay(2); P2=0xdf; P0=table[j]; delay(2); i=c/10; j=c; P2=0xfe; P0=table[i]; delay(2); P2=0xfd; P0=table[j]; delay(2); }

16

基于单片机的宠物喂食器电路设计

void delay2(uint z) { uint x,y;

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

void init() {

EA=1; //开总中断

ET0=1; //本例中使用的是定时器T0,如果用T1。则为ET1=0,TMOD=0x10。 TMOD=0x01; //定时器工作方式1

TH0=(65535-50000)/256; //因为晶振用的是11.0592MHZ。在取初值时,大概定义为一个中断为50MS

TL0=(65535-50000)%6; TR0=1; P1=0xff; }

void turn_val1(char newval,uchar flag,uchar slnum) {

if(flag) //判断是加一还是减一 {

newval++; switch(slnum) {

case 1:if(newval>23) newval=0; display(hour1,minute1,second1); hour1=newval;

17