资源简介
基于AT89S52芯片四位抽奖机的设计,包括程序源代码,可以实现逐位抽奖和四位抽奖,以及时钟设置与显示
代码片段和文件信息
#include
#include
#define uint unsigned int
#define uchar unsigned char
#define disport P0// 数据端口
uchar data key1; // 定义键值寄存器
uchar data key2;
uchar bdata ekey1; //状态键
uchar bdata ekey2; //时间设定位转换
uchar bdata lastkey1; //键去抖后的键值存放
uchar bdata lastkey2;
uchar f70cnt; //一位抽奖280ms一个随机数
uchar msta; // 定义状态寄存器
uchar flasta; //一位抽奖中的哪位抽
uchar fmiao; //秒计数
uchar wei;//时间设定模块设定位标志位
uchar bufs;//显示指针
uchar ld;//LED发光管码值
uchar yimiao;//秒计数
uchar f500cnt;//闪烁时间计数
uchar f24cnt;//累计定时5ms的次数
uchar f32cnt;
uchar f41cnt;
uchar f47cnt;
uchar f300cnt;
uchar gg; //四位抽奖方式个位抽奖值
uchar ss; //四位抽奖方式十位抽奖值
uchar bb; //四位抽奖方式百位抽奖值
uchar qq; //四位抽奖方式千位抽奖值
uchar g;
uchar s;
uchar b;
uchar q; //一位抽方式奖抽奖值
sbit cs0=P2^7; //数码管位选信号
sbit cs1=P2^6;
sbit cs2=P2^5;
sbit cs3=P2^4;
sbit sw1=P1^0; //独立按键端口
sbit sw2=P1^1;
sbit sw3=P3^7;
sbit esw1=ekey2^0;
sbit esw2=ekey2^1;
sbit esw3=ekey1^7;
bit flag; //设置时钟初值标志位
bit flaflag; //定义闪烁标志
bit miao; //秒标志秒计数器
bit f500flag; //闪烁亮暗标志位
bit flag1; //一位抽方式开始奖抽标志位
bit flag4; //四位抽方式开始奖抽标志位
unsigned char led7[16]={0xC00xF90xA40xB00x990x920x820xF80x800x900xff}; //数码管七段码
unsigned char buf[4]={0000};//显示数据缓冲单元 ,初始为0000
//-----------------函数申明------------------------------------
void t0_init(void);//定时器初始化
void disp(void);//显示
void keyscan(void);//读独立按键及矩阵键盘
void flaply(void);//数码管闪烁函数
//----------------主函数--------------------------------
void main()
{
t0_init();
while(1)
{
while(!TF0); //4ms到了?
TF0=0;
TH0=0xf0; //4毫秒延时
TL0=0x60;
keyscan();
disp();
yimiao++; //一秒计时
if(yimiao==250)
{
miao=1; //秒标志位
yimiao=0;
}
switch(msta)
{
case 0: if(f24cnt++>=24) //四位一起抽奖
{
f24cnt=0;
gg+=3;
if(gg==30)gg=0;
}
if(f32cnt++>=32)
{
f32cnt=0;
ss+=3;
if(ss==30)ss=0;
}
if(f41cnt++>=41)
{
f41cnt=0;
bb+=3;
if(bb==30)bb=0;
}
if(f47cnt++>=47)
{
f47cnt=0;
qq+=3;
if(qq==30)qq=0;
}
if(esw1)flag4=1; //sw1开始抽奖
if(flag4==1)
{
buf[3]=gg%10;
buf[2]=ss%10;
buf[1]=bb%10;
buf[0]=qq%10;
}
if(esw2)flag4=0; //sw2停止抽奖
if(esw3)msta=1; //sw3转入逐位抽奖
break;
case 1: f300cnt++;
if(esw2)flasta+=1; //sw2控制每一位停止
if(f300cnt>=24)
{
f300cnt=0;
g+=1;
s+=3;
b+=7;
q+=9;
if(g==10)g=0;
if(s==30)s=0;
if(b==70)b=0;
if(q==90)q=0;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-05-31 22:09 四位抽奖机的课程设计\
文件 56970005 2012-09-24 15:20 四位抽奖机的课程设计\11111.doc
文件 356352 2012-05-20 08:51 四位抽奖机的课程设计\单片机PCB.DDB
文件 231424 2012-05-20 08:52 四位抽奖机的课程设计\单片机原理图.ddb
目录 0 2012-05-31 22:09 四位抽奖机的课程设计\课程设计源程序代码\
文件 11857 2012-05-20 10:09 四位抽奖机的课程设计\课程设计源程序代码\main
文件 7539 2012-05-20 10:09 四位抽奖机的课程设计\课程设计源程序代码\main.c
文件 3011 2012-05-20 10:09 四位抽奖机的课程设计\课程设计源程序代码\main.hex
文件 40 2012-05-20 10:09 四位抽奖机的课程设计\课程设计源程序代码\main.lnp
文件 17842 2012-05-20 10:09 四位抽奖机的课程设计\课程设计源程序代码\main.LST
文件 16122 2012-05-20 10:09 四位抽奖机的课程设计\课程设计源程序代码\main.M51
文件 14624 2012-05-20 10:09 四位抽奖机的课程设计\课程设计源程序代码\main.OBJ
文件 370 2012-05-20 10:09 四位抽奖机的课程设计\课程设计源程序代码\main.plg
文件 55218 2012-05-20 10:09 四位抽奖机的课程设计\课程设计源程序代码\main.uvopt
文件 13236 2012-05-20 10:09 四位抽奖机的课程设计\课程设计源程序代码\main.uvproj
文件 51350 2012-05-20 10:05 四位抽奖机的课程设计\课程设计源程序代码\main_uvopt.bak
文件 0 2012-05-20 10:07 四位抽奖机的课程设计\课程设计源程序代码\main_uvproj.bak
目录 0 2012-05-31 22:09 四位抽奖机的课程设计\软件部分\
文件 7654 2012-05-23 16:27 四位抽奖机的课程设计\软件部分\com_fct.h
文件 9936 2012-05-23 22:14 四位抽奖机的课程设计\软件部分\main.c
文件 16752 2012-05-23 20:30 四位抽奖机的课程设计\软件部分\main.LST
文件 39304 2012-05-23 20:30 四位抽奖机的课程设计\软件部分\main.OBJ
文件 15655 2012-05-23 16:11 四位抽奖机的课程设计\软件部分\music.h
文件 3728 2012-05-23 22:14 四位抽奖机的课程设计\软件部分\vadef.h
文件 32686 2012-05-23 20:30 四位抽奖机的课程设计\软件部分\投篮机
文件 13005 2012-05-23 20:30 四位抽奖机的课程设计\软件部分\投篮机.hex
文件 42 2012-05-23 20:30 四位抽奖机的课程设计\软件部分\投篮机.lnp
文件 31352 2012-05-23 20:30 四位抽奖机的课程设计\软件部分\投篮机.M51
文件 8617 2012-05-23 22:14 四位抽奖机的课程设计\软件部分\投篮机.plg
文件 56742 2012-05-23 22:14 四位抽奖机的课程设计\软件部分\投篮机.uvopt
文件 13573 2012-05-23 17:07 四位抽奖机的课程设计\软件部分\投篮机.uvproj
............此处省略2个文件信息
- 上一篇:射频电路设计及信号处理
- 下一篇:操作系统精髓与设计原理 第六版 习题答案
评论
共有 条评论