#include <reg51.h>
#include <intrins.h>
#include<ctype.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
#define uchar unsigned char
#define uint unsigned int
#define LCD_data P0
sbit LCD_RS = P3^5;
sbit LCD_RW = P3^6;
sbit LCD_EN = P3^4;
sbit LCD_PSB = P3^7;
uint t=0;
uchar num=0;
uchar t_flag=0;
uchar a_flag=0;
uchar end_flag=0;
uchar code dis[][17]={"祝你好运!","开始抽奖","恭喜你获得:"};
uchar code award[][17]={"特等奖","1等奖","2等奖","3等奖","谢谢参与"};
uchar code time[][17]={"3","2","1"};
void delay(int ms)
{
while(ms--)
{
uchar i;
for(i=0;i<250;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
bit lcd_busy()
{
bit result;
LCD_RS = 0;
LCD_RW = 1;
LCD_EN = 1;
delayNOP();
result = (bit)(P0&0x80);
LCD_EN = 0;
return(result);
}
void lcd_wcmd(uchar cmd)
{
while(lcd_busy());
LCD_RS = 0;
LCD_RW = 0;
LCD_EN = 0;
_nop_();
_nop_();
P0 = cmd;
delayNOP();
LCD_EN = 1;
delayNOP();
LCD_EN = 0;
}
void lcd_wdat(uchar dat)
{
while(lcd_busy());
LCD_RS = 1;
LCD_RW = 0;
LCD_EN = 0;
P0 = dat;
delayNOP();
LCD_EN = 1;
delayNOP();
LCD_EN = 0;
}
void lcd_wstr(uchar* dat)
{
uchar i=0;
while(dat[i] != '\0'&&i<16)
{
lcd_wdat(dat[i]);
i++;
}
}
void lcd_init()
{
LCD_PSB = 1;
lcd_wcmd(0x30);
delay(5);
lcd_wcmd(0x0C);
delay(5);
lcd_wcmd(0x01);
delay(5);
}
void lcd_pos(uchar X,uchar Y)
{
uchar pos;
if (X==0)
{X=0x80;}
else if (X==1)
{X=0x90;}
else if (X==2)
{X=0x88;}
else if (X==3)
{X=0x98;}
pos = X+Y ;
lcd_wcmd(pos);
}
void interrupt_init()
{
EA=1;
EX0=1;
IT0=1;
TMOD=0x11;
ET0=1;
ET1=1;
TR0=0;
TR1=0;
TH0=15535/256;
TL0=15535%256;
TH1=55535/256;
TL1=55535%256;
}
void main()
{
uchar str[17]=" ";
interrupt_init();
delay(10);
lcd_init();
lcd_pos(1,4-strlen(dis[0])/4);
lcd_wstr(dis[0]);
while(1)
{
delay(50);
if(t_flag==1)
{
t_flag=0;
lcd_pos(2,0);
lcd_wstr(str);
delay(5);
lcd_pos(2,4-strlen(time[num])/4);
lcd_wstr(time[num]);
}
else if(a_flag==1)
{
a_flag=0;
lcd_wcmd(0x01);
lcd_pos(2,4-strlen(award[num])/4);
lcd_wstr(award[num]);
if(end_flag==1)
{
end_flag=0;
lcd_pos(0,4-strlen(dis[2])/4);
lcd_wstr(dis[2]);
}
}
delay(10);
}
}
void EX_IT0() interrupt 0
{
lcd_wcmd(0x01);
lcd_pos(1,4-strlen(dis[1])/4);
lcd_wstr(dis[1]);
TH0=15535/256;
TL0=15535%256;
TR0=1;
num=2;
}
void ET_IT0() interrupt 1
{
TH0=15535/256;
TL0=15535%256;
t++;
if(t%20==0)
{
t_flag=1;
num=(num+1)%3;
if(t==60)
{
t=0;
TR0=0;
TH1=15535/256;
TL1=15535%256;
TR1=1;
}
}
}
void ET_IT1() interrupt 3
{
TH1=55535/256;
TL1=55535%256;
t++;
if(t%30==0)
{
a_flag=1;
num=rand()%5;
if(t==600)
{
t=0;
TR1=0;
end_flag=1;
}
}
}
单片机AT89C52摇号抽奖设计.rar
需积分: 5 57 浏览量
2022-03-19
21:55:17
上传
评论 1
收藏 717KB RAR 举报
m0_65968451
- 粉丝: 0
- 资源: 1
最新资源
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0