电站滤水器系列 | PLC编程全自动滤水器 | 手动滤水器 | 自动反冲洗滤水器 | 电动滤水器 | ||
|
AT89S51单片机是Atmel工司生产的8位单片机。它由以下功能部件组成:
1)中央处理单元(8位) 数据处理、测试位,置位,复位 位操作
2)只读存储器(4KB或8KB) 永久性存储应用程序,掩模ROM、EPROM、EEPROM
3)随机存取内存(128B、128B SFR) 在程序运行时存储工作变量和资
4)并行输入/输出口(I / O)32位 作系统总线、扩展外存、I / O接口芯片
5 )串行输入/输出口(2条) 串行通信、扩展I / O接口芯片
6)定时/计数器(16位、加1计数) 计满溢出、中断标志置位、向CPU提出中断请求,与CPU之间独立工作
7)时钟电路 内振、外振。
8)中断系统 五源中断、2级优先。
本课设所使用到的单片机资源有:并行输出口13位,外部中断P3.2。13位并行输出口用于计数值的显示,外部中断用于排污次数的计数。单片机通过中断程序对排污次数进行计数,然后将计数值通过5位数码管显示出来,****显示数值为99999。数码管选共阳型数码管。
3.2 计数显示程序设计
以下为数码管显示的C语言程序。
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
//5共阳数码管,数字从0-9代码
Uchar code Num[]={0x03,0x
uchar code Segbit[] = {0xfe,0xfd,0xfb,0xf7,0xef}; //位选从高位到低位
unsigned long int Count; //计数用
//延时子程序
void delay( uint cnt )
{
uchar i,j;
for(i = cnt; i; i--)
for(d = 120; d; d--);
}
void main( void )
{
Count = 0; //设计数初值
IT0 = 1; //下降沿触发方式
EX0 = 1; //中断允许
EA = 1; //开总中断
while(1)
{
P1 = Segbit[0];
P2 = Num[Count/10000]; //显示万位
delay(550);
P1 = Segbit[1];
P2 = Num[(Count/1000)%10]; //显示千位
delay(550);
P1 = Segbit[2];
P2 = Num[(Count/100)%10]; //显示百位
delay(550);
P1 = Segbit[3];
P2 = Num[(Count/10)%10]; //显示十位
delay(550);
P1 = Segbit[4];
P2 = Num[Count%10]; //显示个位
delay(550);
}
}
//中断计数程序
void PLCCount( void ) interrupt 0 using 0
{
Count++;
if (Count >= 99999)
{
Count = 0;
}
}