发一个今天我写的显示程序,功能很简单,高手可以拍砖。
程序1:
文件“RTX_EX1.C”内容
#include <rtx51tny.h> /* RTX-51 tiny functions & defines */
#include <main.h>
unsigned char code discod[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
//0 1 2 3 4 5 6 7 8 9 -
unsigned char disCount = 0,disBuf[8]={1,2,3,4,5,6,7,8};
/******************************************************************************/
/* Task 0 'job0': RTX-51 tiny starts execution with task 0 */
/******************************************************************************/
job0 () _task_ 0 {
os_create_task (1); /* start task 1 */
P2 = 0X80;
while (1) { /* endless loop */
os_delete_task(0); //delet itself
}
}
/******************************************************************************/
/* Task 1 'job1': RTX-51 tiny starts this task with os_create_task (1) */
/******************************************************************************/
job1 () _task_ 1 {
while (1) { /* endless loop */
disp();
os_wait(K_TMO,1,0);
}
}
bit disp( void )
{
P2 = 0xff; //关闭显示
P0 = discod[disBuf[disCount]];//写入显示数据
P2 = ~(0x80>>disCount); //打开显示
//为显示下一位做好准备
disCount ++;
//超出显示位数范围,返回第一位
if(disCount >= 8)
disCount = 0;
return 1;
}
文件“main.h”内容
#ifndef __MAIN_H__
#define __MAIN_H__
#include <at89x52.h> //include the device macro file
bit disp(void );
#endif
配置文件“Conf_tny.a51"中
; Define Hardware-Timer tick time in 8051 machine cycles.
INT_CLOCK EQU 10000 ; default is 10000 cycles
;
选择默认配置所显示的效果为:

配置文件“Conf_tny.a51"如果改为如下内容为
; Define Hardware-Timer tick time in 8051 machine cycles.
INT_CLOCK EQU 1000 ; default is 10000 cycles
;
选择默认配置所显示的效果为

手机拍照的原因,两个图片显示效果差不多,但实际观察中会看到第一个配置中,显示闪烁严重,因为任务切换较慢,导致显示不连续;第二个配置解决了上面的问题。
我的元器件采买清单如下
| 器件 | 数量 | 单价 | 备注 |
| STC12C5A16AD | 1 | 9.5 | |
| 1602液晶 | 1 | 10 | 带背光 |
| 四位一体数码管 | 2 | 1 | |
| DS18B20 | 1 | 5 | |
| USB接口 | 1 | 1 | |
| 小按键 | 20 | 0.2 | |
| LED | 14 | 0.1 | |
| 蜂鸣器 | 1 | 1 | |
| DS1302 | 1 | 3.5 | |
| 74HC138 | 2 | 0.5 | 封装:so-16 |
| 74HC573 | 2 | 1 | 封装:SO20 |
| 晶振32.678KHz | 1 | 0.5 | |
| 晶振12MHz | 1 | 1 | |
| AD转换器PCF8591 | 1 | 9 | 封装:SOL-16 |
| 热敏电阻 | 1 | 0.3 | |
| 光敏电阻 | 1 | 0.25 | |
| ULN2003 | 1 | 1 | 封装:so-16 |
| 7805 | 1 | 0.95 | 封装:TO-220W |
| IN4007 | 1 | 0.2 | 封装:DIODE-0.4 |
| 9014 | 1 | 0.2 | 封装:sot-23 |
| USB口 | 1 | 0.3 | |
| 红外接收 | 1 | 1.5 | 封装:三脚直插 |
| 24C02 | 1 | 1.5 | 封装:so-8 |
| 电位器(10K) | 4 | 0.2 | |
| ISP下载接口 | 1 | 0.3 | |
| RS232(DB9RA/F) | 1 | 1.2 | |
| 排阻 | 1 | 0.5 | 330欧姆 |
| 排阻 | 1 | 0.5 | 4.7K |
| 电容 | 3 | 0.2 | 10uF |
| 贴片电阻包 | 1 | 8 | 20种电阻值 |
| 贴片电容包 | 1 | 13 | 32种电容值 |
| 合计 | 82 |
回复
我要赚赏金打赏帖 |
|
|---|---|
| OK1126B-S开发板下以导航按键控制云台/机械臂姿态调整被打赏¥29元 | |
| 【树莓派5】便携热成像仪被打赏¥36元 | |
| 【树莓派5】环境监测仪被打赏¥35元 | |
| OK1126B-S开发板下多时段语音提示型电子时钟被打赏¥27元 | |
| OK1126B-S开发板下函数构建及步进电机驱动控制被打赏¥25元 | |
| 【S32K3XX】LPI2C 参数配置说明被打赏¥20元 | |
| OK1126B-S开发板的脚本编程及应用设计被打赏¥27元 | |
| 5v升压8.4v两节锂电池充电芯片,针对同步和异步的IC测试被打赏¥35元 | |
| 【S32K3XX】S32DS LPI2C 配置失败问题解决被打赏¥22元 | |
| 【S32K3XX】FLASH 的 DID 保护机制被打赏¥19元 | |
我要赚赏金
