/* 项目名称:机顶盒开机后,单片机固定频道(仅限用于华数机顶盒) 日期:2016年01月08日 版本:1.0 作者:chunli 博客:990487026.blog.51cto.com 邮箱:[email protected] 单片机:STC15f104W STC 15F104W ,晶振12M 1 P3.4 2 VCC 3.8--5.5V 3 P3.5 4 GND 5 P3.0 接烧录器的TXD 6 P3.1 接烧录器的RXD 7 P3.2 8 P3.3 */ #include "reg51.h" sbit key_menu = P3^0; //机顶盒的menu按键,发出低电平有效 sbit key_down = P3^1; //机顶盒的down按键,发出低电平有效 sbit key_right = P3^2; //机顶盒的right按键,发出低电平有效 sbit key_ok = P3^3; //机顶盒的ok按键,发出低电平有效 void delay (unsigned int a) { // 毫秒级延时函数 unsigned int i; while ( --a != 0 ) { for (i=0;i<=600;i++); } } void menu(void){ //按一下menu键的操作 函数 key_menu=0; delay(500); key_menu=1; delay(500); } void down(unsigned char down_number){ //按一下down键的操作 函数 unsigned char i; for(i=0;i<down_number;i++){ key_down=0; delay(500); key_down=1; delay(500); } } void right(void){ //按一下rigth键的操作 函数 key_right=0; delay(500); key_right=1; delay(500); } void ok(void){ key_ok=0; delay(500); key_ok=1; delay(500); } void change_channel(unsigned char page,unsigned char number){ // 选择频道的函数 //page 选择频道所在的 第几页 1到21页可选 //number 选择频道所属page的number 1到9可选 menu(); down(2); right(); down(9*(page-1)+number-1); ok(); } void initial (void){ // 开机初始化 unsigned char i; for(;i<60;i++){ // 等待机顶盒开机初始化,70秒,菜单消失,黑屏提示 无信号(无信号源时)。 delay(1000); } change_channel(1,9); //浙江卫视,在第1页,第9个 //change_channel(3,5); //中央新闻,在第3页,第5个 //change_channel(1,1); //华数剧场,在第1页,第1个 //change_channel(1,1); //华数剧场,在第1页,第1个 //change_channel(21,1); //求索旅行,在第21页,第2个 } void main(){ //主函数 initial(); while(1){ } }
时间: 2024-10-25 21:05:30