找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3160|回复: 2
收起左侧

双51单片机叫号系统源程序+Proteus仿真

[复制链接]
ID:586708 发表于 2020-4-12 17:10 | 显示全部楼层 |阅读模式
两个51单片机采用串口通信,实现叫号系统,附加为代码+Proteus仿真,采用LCD12864显示
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.png

单片机源程序如下:
  1. #include <REG51F.H>
  2. #include <stdlib.h>
  3. #include "uart.h"
  4. #include <stdio.h>
  5. #include "12864.h"
  6. #include "tcs_resource.h"

  7. unsigned char hour = 23;
  8. unsigned char mnt = 59;
  9. unsigned char sec = 50;
  10. sbit KEY1 = P1^0;
  11. sbit KEY2 = P1^1;
  12. void delay(uint ms);
  13. void button();
  14. void Delay10ms(uchar u);
  15. void Timer0Init(void);
  16. void show(void);
  17. void main(void)
  18. {
  19.         num=0;
  20.         TMOD=0x01;
  21.         EA = 1;                        //开总中断
  22.         ES = 1;                        //串口中断标志位
  23.         Timer0Init();
  24.         UartInit();
  25.          
  26.         choose12864(2);                //选择为全屏操作
  27.         init12864();                //初始化12864
  28.         clear12864();                //清屏
  29.         while(1)
  30.         {
  31.                 show();
  32.                 button();
  33.                
  34.         }
  35. }
  36. void show(void)
  37. {
  38.         char j = 0;
  39.         play8(0,0,2,letter[13]);
  40.         play8(0,1,2,letter[20]);
  41.         play8(0,2,2,letter[22]);
  42.         play8(0,3,2,fuhao[0]);
  43.         play8(0,4,2,Number[Number1/10]);
  44.         play8(0,5,2,Number[Number1%10]);
  45.         
  46.         play8(1,0,2,letter[22]);
  47.         play8(1,1,2,letter[15]);
  48.         play8(1,2,2,fuhao[0]);
  49.         play8(1,3,2,Number[num/10]);
  50.         play8(1,4,2,Number[num%10]);
  51.         //显示时分秒
  52.         play8(0,3,1,Number[hour/10]);
  53.         play8(0,4,1,Number[hour%10]);
  54.         play8(0,5,1,fuhao[1]);
  55.         play8(0,6,1,Number[mnt/10]);
  56.         play8(0,7,1,Number[mnt%10]);
  57.         play8(1,0,1,fuhao[1]);
  58.         play8(1,1,1,Number[sec/10]);
  59.         play8(1,2,1,Number[sec%10]);
  60. }

  61. void button()
  62. {
  63.         if(KEY1==0)
  64.         {
  65.                 delay(5);
  66.                 if(KEY1==0)
  67.                 {                        
  68.                         Number1++;
  69.                         num=Number1-1;
  70.                         choose12864(2);        //选择为全屏显示
  71.                         init12864();                //初始化12864
  72.                         clear12864();
  73.                         Delay10ms(1);
  74.                         while(KEY1==0);
  75.                         send();
  76.                 }
  77.         }
  78. }
  79. void delay(uint ms)
  80. {
  81.         uint i,j;
  82.         for(i=ms;i>0;i--)
  83.                 for(j=110;j>0;j--);
  84. }

  85. void Delay10ms(uchar u)               
  86. {
  87.         unsigned char i, j;

  88.         i = 108;
  89.         j = 145;
  90.         while(u--)
  91.         {
  92.         do
  93.         {
  94.                 while (--j);
  95.         } while (--i);}
  96. }

  97. void Timer0Init(void)                //62毫秒@11.0592MHz
  98. {
  99.         TMOD |= 0x01;
  100.         ET0 = 1;
  101.         TR0 = 1;                //定时器0开始计时
  102. }

  103. void T0ISR() interrupt 1
  104. {
  105.         static char n = 0;
  106.         TH0=(65536-62500)/256;//在65.536ms定时器允许的最大范围内取最大值,1000/n=62.5ms,n=16
  107.         TL0=(65536-62500)%256;        
  108.         n++;
  109.         if(n>15)
  110.         {
  111.                 n = 0;
  112.                 sec++;
  113.                 if(sec>59)
  114.                 {
  115.                         sec = 0;
  116.                         mnt++;
  117.                         if(mnt>59)
  118.                         {
  119.                                 mnt = 0;
  120.                                 hour++;
  121.                                 if(hour>23)
  122.                                         hour = 0;
  123.                         }
  124.                 }
  125.         }
  126. }
复制代码
51hei.png
所有资料51hei提供下载:
叫号系统.7z (43.97 KB, 下载次数: 65)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:302325 发表于 2020-5-13 12:38 | 显示全部楼层
感谢分享               
回复

使用道具 举报

ID:377614 发表于 2020-6-15 22:36 | 显示全部楼层
资料文件不全
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表