欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于51单片机随机数产生.docx

    • 资源ID:5711872       资源大小:44.11KB        全文页数:14页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于51单片机随机数产生.docx

    1、基于51单片机随机数产生基于51单片机随机数产生一:系统主要功能与设计方案 功能:可以根据需要产生给定范围内的任何数字(0-999),显 示 于数码管上。 设计方案:利用51单片机内部的定时器与中断结合,来模仿随机数的产生;单片机编程上电后,定时器便启动开始计数,计数范围可以 预先设置,其设置的上限值被储存在24c02中;当中断0口产生低电平,进入中断函数读取定时器所跑的数值,经处理送入数码管显示。二:电路的硬件 电路搭建如下图,这里我们采用74ls595来驱动数码管,另外,为了防止电流过大这里串联一个75欧电阻用于限流;当操控启动按键后,三个数码管开始跑数字,操控“选择”锁定当前显示的数字,

    2、达到随机数产生的目的;考虑到,不同的人对随机数产生的范围要求不同,这里,通过操控“储存,加1,加10,”预设的上限值存储在24c02中。三:软件设计#include #include #define uchar unsigned char #define uint unsigned int #define delay _nop_() /* 定义空指令 */ sbit ds0= P20; /74ls595移位寄存器 sbit st0=P21; sbit sh0=P22; sbit ds1= P23; sbit st1=P24; sbit sh1=P25; sbit ds2= P26; sbit

    3、st2=P27; sbit sh2=P07;sbit p30=P30; / 启动 sbit p31=P31; / 加1 sbit p32=P32; / 选择sbit p35=P35; / 存储sbit p36=P36; / 加10 sbit scl=P00; /I2C 时钟 sbit dat=P01; /I2C 数据 bit ack; /*应答标志位*/ uchar temp,a,j,aa,flag,flag1,flag2,flag3; uchar b,c,d; uchar bb,cc,dd; uchar x,y,z,f,xx; uchar code tab = 0xfc,0x60,0xda,

    4、0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6 ; /共阴 void delay1 (uint Z) uint x,y; for(x=Z;x0;x-) for(y=110;y0;y-); void write0(unsigned char a) unsigned char i; st0=0; for (i=0;i=1; st0=1; void write1(unsigned char a) unsigned char i; st1=0; for (i=0;i=1; st1=1; void write2(unsigned char a) unsigned char i; s

    5、t2=0; for (i=0;i=1; st2=1; void init () scl=1; dat=1; a=0; p30=1; p31=1; p32=1;p35=1;p36=1;bb=0; temp=0; TMOD=0x02; TH0=0x00; TL0=0x00; EA=1; ET0=1; TR0=1;IT0=1;EX0=1; void start24() dat=1; delay; scl=1; delay; delay; delay; delay; delay; dat=0;delay; void stop24() dat=0; delay; delay; scl=1; delay;

    6、 delay; dat=1; delay;delay;delay;delay;delay;void respons24()uchar i;scl=1; delay;while (dat=1) &(i255);scl=0;delay;delay;delay;void write24(uchar a) uchar i,temp; temp=a; scl=0; delay; delay; for (i=0;i8;i+) temp=temp1; dat=CY; delay;delay;delay;delay; delay; scl=1; delay; delay;delay;delay; scl=0;

    7、 delay;delay; dat=1;/释放总线 delay; delay;delay;delay;uchar read24()uchar i,j,k;scl=0;delay;delay;delay;delay;dat=1;/释放总线delay;delay;delay;for (i=0;i8;i+) scl=1; delay;delay;delay;delay; j=dat; k=(k1)|j; delay; scl=0; delay; delay;delay;delay; return k; void writein(uchar address,uchar date) start24();

    8、 write24(0xa0); respons24(); write24(address); respons24(); write24(date); respons24(); stop24(); uchar readout(uchar address) start24(); write24(0xa0); respons24(); write24(address); respons24(); start24(); write24(0xa1); respons24(); temp=read24(); return temp; void main () init () ;/ 初始化 temp=rea

    9、dout(0) ;/ 读取24c02内数值 delay1(20); / 等待读出 cc=(temp&0xf0)/16; dd=(temp&0x0f)%16; temp=cc*16+dd; while (1) if(p31=0) /加1while(p31!=1) flag=0; flag1=1; flag2=0; if(flag1=1) temp+; x=temp/100;y=temp%100/10;z=temp%10; write0(tabz); write1(taby); write2(tabx); flag1=0; if(p36=0)/加10while(p36!=1) flag=0;fla

    10、g1=0;flag2=1; if(flag2=1) temp=f*10; x=temp/100;y=temp%100/10;z=temp%10; write0(tabz); write1(taby); write2(tabx); flag2=0; f+; if (p30=0) /启动 while (p30!=1); flag=1; if (flag=1) write0(tabj); delay1 (20); write1(tab10-j); delay1 (30); write2(tabj); delay1 (30); j+; if (j=9) j=0; if(p35=0) /存储用户设置的随

    11、机数产生范围到24c02 while(p35!=1) flag=0;flag1=0;flag2=0;flag3=1; if(flag3=1) xx=temp; writein(0,(xx/16)4|(xx%16); delay1(2000); flag3=0; flag=1; void timer0() interrupt 1 TH0=0; TL0=0; aa+; if (aa=temp) aa=0; void int0() interrupt 0 flag=0; d=aa/100; c=aa%100/10; b=aa%10; write0(tabb); write1(tabc); write2(tabd);


    注意事项

    本文(基于51单片机随机数产生.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开