

发一个今天我写的显示程序,功能很简单,高手可以拍砖。
程序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 |

回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
基于MSPM0L1306的MODBUS-RTU协议通讯实验被打赏50分 | |
每周了解几个硬件知识+485硬件知识分享被打赏10分 | |
【换取手持示波器】树莓派PICOW网页烟花被打赏18分 | |
【换取手持示波器】树莓派PICO逻辑分析仪被打赏16分 | |
【分享评测,赢取加热台】教你五分钟本地部署蒸馏版本的DeepSeekR1-7B被打赏12分 | |
【换取手持示波器】蓝牙音箱更换电池被打赏8分 | |
【换取手持示波器】鼠标更换微动开关被打赏10分 | |
【我要开发板】4.传感器移植被打赏50分 | |
【换取手持数字示波器】RISC-VGCC使用-fno-omit-frame-pointer编译选项实现栈回溯被打赏29分 | |
【分享评测,赢取加热台】+开关电源简述被打赏7分 |